add x and X commands

not originally planned, but would be nice to have a counterpart to i/I
This commit is contained in:
xfnw 2023-11-21 20:02:12 -05:00
parent 9685d31af6
commit 14ad178349
2 changed files with 24 additions and 0 deletions

View File

@ -40,5 +40,7 @@ implementation status of planned features:
- [x] s - ce-command-reg-replace - [x] s - ce-command-reg-replace
- [ ] t - ce-command-copy - [ ] t - ce-command-copy
- [x] w - ce-command-write - [x] w - ce-command-write
- [x] x - ce-command-chop
- [x] X - ce-command-chop-beg
- [x] 0 - ce-command-number - [x] 0 - ce-command-number

22
ce.cl
View File

@ -30,6 +30,8 @@
(#\s . ce-command-reg-replace) (#\s . ce-command-reg-replace)
(#\t . ce-command-copy) (#\t . ce-command-copy)
(#\w . ce-command-write) (#\w . ce-command-write)
(#\x . ce-command-chop)
(#\X . ce-command-chop-beg)
(#\0 . ce-command-number) (#\0 . ce-command-number)
(#\1 . ce-command-number) (#\1 . ce-command-number)
(#\2 . ce-command-number) (#\2 . ce-command-number)
@ -431,6 +433,26 @@ specific command. the recognized commands are as follows:
:if-does-not-exist :create) :if-does-not-exist :create)
(format out "~{~a~%~}" buffer)))) (format out "~{~a~%~}" buffer))))
(defmacro ce-build-chop (fin)
"helper for chop and chop-beg"
`(progn
(ce-reset-input)
(let ((inp (parse-integer (string-or (read-line) "1"))))
(ce-apply-region (lambda (x)
(let ((llen (length x)))
(if (< llen inp)
x ,fin)))))))
(defun ce-command-chop (&optional c)
"chop off argument characters from end of each line in region"
(declare (ignore c))
(ce-build-chop (subseq x 0 (- llen inp))))
(defun ce-command-chop-beg (&optional c)
"chop off argument characters from start of each line in region"
(declare (ignore c))
(ce-build-chop (subseq x inp)))
(defun ce-command-number (c) (defun ce-command-number (c)
"input a number" "input a number"
(if (or (= 0 newpoint) (= 2 newpoint)) (if (or (= 0 newpoint) (= 2 newpoint))