diff --git a/README.md b/README.md index 541f2b1..145fe79 100644 --- a/README.md +++ b/README.md @@ -30,7 +30,7 @@ add a cursor to each line: When you want to add multiple cursors not based on continuous lines, but based on keywords in the buffer, use: - (global-set-key (kbd "C->") 'mc/mark-next-like-this) or (global-set-key (kbd "C->") 'mc/mark-next-like-this-word) + (global-set-key (kbd "C->") 'mc/mark-next-like-this) (global-set-key (kbd "C-<") 'mc/mark-previous-like-this) (global-set-key (kbd "C-c C-<") 'mc/mark-all-like-this) @@ -50,6 +50,7 @@ You can [watch an intro to multiple-cursors at Emacs Rocks](http://emacsrocks.co - `mc/mark-next-like-this`: Adds a cursor and region at the next part of the buffer forwards that matches the current region. - `mc/mark-next-like-this-word`: Adds a cursor and region at the next part of the buffer forwards that matches the current region, if no region is selected it selects the word at the point. + - `mc/mark-next-like-this-symbol`: Adds a cursor and region at the next part of the buffer forwards that matches the current region, if no region is selected it selects the symbol at the point. - `mc/mark-next-word-like-this`: Like `mc/mark-next-like-this` but only for whole words. - `mc/mark-next-symbol-like-this`: Like `mc/mark-next-like-this` but only for whole symbols. - `mc/mark-previous-like-this`: Adds a cursor and region at the next part of the buffer backwards that matches the current region. @@ -102,8 +103,9 @@ You can [watch an intro to multiple-cursors at Emacs Rocks](http://emacsrocks.co - Try pressing `mc/mark-next-like-this` with no region selected. It will just add a cursor on the next line. -- Try pressing `mc/mark-next-like-this-word` with no region selected. It will mark the word and - add a cursor at the next occurance +- Try pressing `mc/mark-next-like-this-word` or + `mc/mark-next-like-this-symbol` with no region selected. It will + mark the word or symbol and add a cursor at the next occurance - Try pressing `mc/mark-all-like-this-dwim` on a tagname in html-mode. diff --git a/features/step-definitions/multiple-cursors-steps.el b/features/step-definitions/multiple-cursors-steps.el index a3864e5..4d3fc09 100644 --- a/features/step-definitions/multiple-cursors-steps.el +++ b/features/step-definitions/multiple-cursors-steps.el @@ -4,6 +4,9 @@ (When "^I mark next like this word$" (lambda () (call-interactively 'mc/mark-next-like-this-word))) +(When "^I mark next like this symbol$" + (lambda () (call-interactively 'mc/mark-next-like-this-symbol))) + (When "^I mark previous like this$" (lambda () (call-interactively 'mc/mark-previous-like-this))) diff --git a/features/support/env.el b/features/support/env.el index b7dfaa6..35b9cd7 100644 --- a/features/support/env.el +++ b/features/support/env.el @@ -21,7 +21,8 @@ (multiple-cursors-mode 0) (rectangular-region-mode 0) (global-set-key (kbd "C->") 'mc/mark-next-like-this) - (global-set-key (kbd "C-S-c C->") 'mc/mark-next-like-this) + (global-set-key (kbd "C-S-c C->") 'mc/mark-next-like-this-word) + (global-set-key (kbd "C-S-c M->") 'mc/mark-next-like-this-symbol) (global-set-key (kbd "C-<") 'mc/mark-previous-like-this) (global-set-key (kbd "M-!") 'mc/mark-all-like-this) (global-set-key (kbd "M-$") 'mc/mark-all-like-this-dwim) diff --git a/mc-mark-more.el b/mc-mark-more.el index ee5eb5f..68addce 100644 --- a/mc-mark-more.el +++ b/mc-mark-more.el @@ -156,6 +156,23 @@ With zero ARG, skip the last one and mark next." (mc/mark-more-like-this (= arg 0) 'forwards))) (mc/maybe-multiple-cursors-mode)) +(defun mc/mark-next-like-this-symbol (arg) + "Find and mark the next part of the buffer matching the currently active region +If no region is active, mark the symbol at the point and find the next match +With negative ARG, delete the last one instead. +With zero ARG, skip the last one and mark next." + (interactive "p") + (if (< arg 0) + (let ((cursor (mc/furthest-cursor-after-point))) + (if cursor + (mc/remove-fake-cursor cursor) + (error "No cursors to be unmarked"))) + (if (region-active-p) + (mc/mark-more-like-this (= arg 0) 'forwards) + (mc--select-thing-at-point 'symbol) + (mc/mark-more-like-this (= arg 0) 'forwards))) + (mc/maybe-multiple-cursors-mode)) + ;;;###autoload (defun mc/mark-next-word-like-this (arg) diff --git a/multiple-cursors-core.el b/multiple-cursors-core.el index 23115df..7e919cc 100644 --- a/multiple-cursors-core.el +++ b/multiple-cursors-core.el @@ -597,6 +597,7 @@ for running commands with multiple cursors.") mc/edit-beginnings-of-lines mc/mark-next-like-this mc/mark-next-like-this-word + mc/mark-next-like-this-symbol mc/mark-next-word-like-this mc/mark-next-symbol-like-this mc/mark-previous-like-this diff --git a/multiple-cursors.el b/multiple-cursors.el index c56f5c3..645c713 100644 --- a/multiple-cursors.el +++ b/multiple-cursors.el @@ -42,7 +42,7 @@ ;; When you want to add multiple cursors not based on continuous lines, but based on ;; keywords in the buffer, use: -;; (global-set-key (kbd "C->") 'mc/mark-next-like-this) or (global-set-key (kbd "C->") 'mc/mark-next-like-this-word) +;; (global-set-key (kbd "C->") 'mc/mark-next-like-this) ;; (global-set-key (kbd "C-<") 'mc/mark-previous-like-this) ;; (global-set-key (kbd "C-c C-<") 'mc/mark-all-like-this) @@ -62,6 +62,7 @@ ;; - `mc/mark-next-like-this`: Adds a cursor and region at the next part of the buffer forwards that matches the current region. ;; - `mc/mark-next-like-this-word`: Adds a cursor and region at the next part of the buffer forwards that matches the current region, if no region is selected it selects the word at the point. +;; - `mc/mark-next-like-this-symbol`: Adds a cursor and region at the next part of the buffer forwards that matches the current region, if no region is selected it selects the symbol at the point. ;; - `mc/mark-next-word-like-this`: Like `mc/mark-next-like-this` but only for whole words. ;; - `mc/mark-next-symbol-like-this`: Like `mc/mark-next-like-this` but only for whole symbols. ;; - `mc/mark-previous-like-this`: Adds a cursor and region at the next part of the buffer backwards that matches the current region. @@ -101,8 +102,9 @@ ;; - Try pressing `mc/mark-next-like-this` with no region selected. It will just add a cursor ;; on the next line. ;; -;; - Try pressing `mc/mark-next-like-this-word` with no region selected. It will mark the word and -;; add a cursor at the next occurance +;; - Try pressing `mc/mark-next-like-this-word` or +;; `mc/mark-next-like-this-symbol` with no region selected. It will +;; mark the symbol and add a cursor at the next occurance ;; ;; - Try pressing `mc/mark-all-like-this-dwim` on a tagname in html-mode. ;;