mirror of
https://github.com/magnars/multiple-cursors.el.git
synced 2025-10-13 13:03:03 +00:00
Add mc/insert-letters function and test cases
* README.md: Add to readme, under special section. * features/insert-letters.feature: Add scenarios. * features/step-definitions/multiple-cursors-steps.el: Add call. * features/support/env.el: Add keybinding for insert-letters to H-3. * mc-separate-operations.el: Add function and helper functions. * multiple-cursors-core.el: Add insert-letters to functions that run once. * multiple-cursors.el: Add to readme.
This commit is contained in:
parent
97e5db17c5
commit
ca822cd0d0
@ -85,6 +85,7 @@ You can [watch an intro to multiple-cursors at Emacs Rocks](http://emacsrocks.co
|
|||||||
- `set-rectangular-region-anchor`: Think of this one as `set-mark` except you're marking a rectangular region.
|
- `set-rectangular-region-anchor`: Think of this one as `set-mark` except you're marking a rectangular region.
|
||||||
- `mc/mark-sgml-tag-pair`: Mark the current opening and closing tag.
|
- `mc/mark-sgml-tag-pair`: Mark the current opening and closing tag.
|
||||||
- `mc/insert-numbers`: Insert increasing numbers for each cursor, top to bottom.
|
- `mc/insert-numbers`: Insert increasing numbers for each cursor, top to bottom.
|
||||||
|
- `mc/insert-letters`: Insert increasing letters for each cursor, top to bottom.
|
||||||
- `mc/sort-regions`: Sort the marked regions alphabetically.
|
- `mc/sort-regions`: Sort the marked regions alphabetically.
|
||||||
- `mc/reverse-regions`: Reverse the order of the marked regions.
|
- `mc/reverse-regions`: Reverse the order of the marked regions.
|
||||||
|
|
||||||
|
19
features/insert-letters.feature
Normal file
19
features/insert-letters.feature
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
Feature: Insert increasing letters
|
||||||
|
|
||||||
|
Scenario: Three cursors, a-b-c
|
||||||
|
Given I have cursors at "text" in "This text contains the word text thrice (text)"
|
||||||
|
When I press "H-3"
|
||||||
|
And I press "SPC"
|
||||||
|
Then I should see "This a text contains the word b text thrice (c text)"
|
||||||
|
|
||||||
|
Scenario: Three cursors, j-k-l
|
||||||
|
Given I have cursors at "text" in "This text contains the word text thrice (text)"
|
||||||
|
When I press "C-9 H-3"
|
||||||
|
And I press "SPC"
|
||||||
|
Then I should see "This j text contains the word k text thrice (l text)"
|
||||||
|
|
||||||
|
Scenario: Three cursors, z-aa-ab
|
||||||
|
Given I have cursors at "text" in "This text contains the word text thrice (text)"
|
||||||
|
When I press "C-u 2 5 H-3"
|
||||||
|
And I press "SPC"
|
||||||
|
Then I should see "This z text contains the word aa text thrice (ab text)"
|
@ -16,6 +16,9 @@
|
|||||||
(When "^I insert numbers$"
|
(When "^I insert numbers$"
|
||||||
(lambda () (call-interactively 'mc/insert-numbers)))
|
(lambda () (call-interactively 'mc/insert-numbers)))
|
||||||
|
|
||||||
|
(When "^I insert letters$"
|
||||||
|
(lambda () (call-interactively 'mc/insert-letters)))
|
||||||
|
|
||||||
(When "^I reverse regions$"
|
(When "^I reverse regions$"
|
||||||
(lambda () (call-interactively 'mc/reverse-regions)))
|
(lambda () (call-interactively 'mc/reverse-regions)))
|
||||||
|
|
||||||
|
@ -27,6 +27,7 @@
|
|||||||
(global-set-key (kbd "C-$") 'mc/mark-all-dwim)
|
(global-set-key (kbd "C-$") 'mc/mark-all-dwim)
|
||||||
(global-set-key (kbd "M-#") 'mc/mark-all-in-region)
|
(global-set-key (kbd "M-#") 'mc/mark-all-in-region)
|
||||||
(global-set-key (kbd "H-0") 'mc/insert-numbers)
|
(global-set-key (kbd "H-0") 'mc/insert-numbers)
|
||||||
|
(global-set-key (kbd "H-3") 'mc/insert-letters)
|
||||||
(global-set-key (kbd "H-1") 'mc/reverse-regions)
|
(global-set-key (kbd "H-1") 'mc/reverse-regions)
|
||||||
(global-set-key (kbd "H-2") 'mc/sort-regions)
|
(global-set-key (kbd "H-2") 'mc/sort-regions)
|
||||||
(global-set-key (kbd "C-S-c C-S-c") 'mc/edit-lines)
|
(global-set-key (kbd "C-S-c C-S-c") 'mc/edit-lines)
|
||||||
|
@ -53,6 +53,31 @@
|
|||||||
(mc/cursor-end cursor)) strings))))
|
(mc/cursor-end cursor)) strings))))
|
||||||
(nreverse strings)))
|
(nreverse strings)))
|
||||||
|
|
||||||
|
;;;###autoload
|
||||||
|
(defun mc/insert-letters (arg)
|
||||||
|
"Insert increasing letters for each cursor, starting at 0 or ARG.
|
||||||
|
Where letter[0]=a letter[2]=c letter[26]=aa"
|
||||||
|
(interactive "P")
|
||||||
|
(setq mc--insert-letters-number (or arg 0))
|
||||||
|
(mc/for-each-cursor-ordered
|
||||||
|
(mc/execute-command-for-fake-cursor 'mc--insert-letter-and-increase cursor)))
|
||||||
|
|
||||||
|
(defun mc--number-to-letters (number)
|
||||||
|
(let ((letter
|
||||||
|
(char-to-string
|
||||||
|
(nth (mod number 26) '(?a ?b ?c ?d ?e ?f ?g ?h ?i ?j ?k ?l ?m ?n ?o ?p ?q ?r ?s ?t ?u ?v ?w ?x ?y ?z))))
|
||||||
|
(number2 (/ number 26)))
|
||||||
|
(if (> number2 0)
|
||||||
|
(concat (mc--number-to-letters (- number2 1)) letter)
|
||||||
|
letter)))
|
||||||
|
|
||||||
|
(defvar mc--insert-letters-number 0)
|
||||||
|
|
||||||
|
(defun mc--insert-letter-and-increase ()
|
||||||
|
(interactive)
|
||||||
|
(insert (mc--number-to-letters mc--insert-letters-number))
|
||||||
|
(setq mc--insert-letters-number (1+ mc--insert-letters-number)))
|
||||||
|
|
||||||
(defvar mc--strings-to-replace nil)
|
(defvar mc--strings-to-replace nil)
|
||||||
|
|
||||||
(defun mc--replace-region-strings-1 ()
|
(defun mc--replace-region-strings-1 ()
|
||||||
|
@ -612,6 +612,7 @@ for running commands with multiple cursors.")
|
|||||||
mc/mark-all-dwim
|
mc/mark-all-dwim
|
||||||
mc/mark-sgml-tag-pair
|
mc/mark-sgml-tag-pair
|
||||||
mc/insert-numbers
|
mc/insert-numbers
|
||||||
|
mc/insert-letters
|
||||||
mc/sort-regions
|
mc/sort-regions
|
||||||
mc/reverse-regions
|
mc/reverse-regions
|
||||||
mc/cycle-forward
|
mc/cycle-forward
|
||||||
|
@ -85,6 +85,7 @@
|
|||||||
;; - `set-rectangular-region-anchor`: Think of this one as `set-mark` except you're marking a rectangular region.
|
;; - `set-rectangular-region-anchor`: Think of this one as `set-mark` except you're marking a rectangular region.
|
||||||
;; - `mc/mark-sgml-tag-pair`: Mark the current opening and closing tag.
|
;; - `mc/mark-sgml-tag-pair`: Mark the current opening and closing tag.
|
||||||
;; - `mc/insert-numbers`: Insert increasing numbers for each cursor, top to bottom.
|
;; - `mc/insert-numbers`: Insert increasing numbers for each cursor, top to bottom.
|
||||||
|
;; - `mc/insert-letters`: Insert increasing letters for each cursor, top to bottom.
|
||||||
;; - `mc/sort-regions`: Sort the marked regions alphabetically.
|
;; - `mc/sort-regions`: Sort the marked regions alphabetically.
|
||||||
;; - `mc/reverse-regions`: Reverse the order of the marked regions.
|
;; - `mc/reverse-regions`: Reverse the order of the marked regions.
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user