Add COM-FORWARD-WORD and COM-BACKWARD-WORD
This commit is contained in:
parent
e717f49afc
commit
10e4cf8dc3
1 changed files with 49 additions and 1 deletions
|
@ -683,6 +683,52 @@ Additionally ensures correct line numbers on the way, as a bonus."
|
||||||
(com-end-of-line))))
|
(com-end-of-line))))
|
||||||
(update-buffer-cursor buffer)))
|
(update-buffer-cursor buffer)))
|
||||||
|
|
||||||
|
(defun com-forward-word ()
|
||||||
|
(with-editor-accessors *editor* (:current-buffer buffer
|
||||||
|
:current-line line
|
||||||
|
:current-column column)
|
||||||
|
(loop :for char := (char (line-content line) column)
|
||||||
|
:do (incf column)
|
||||||
|
:when (>= column (line-length line))
|
||||||
|
:do (if (null (next-line line))
|
||||||
|
(progn
|
||||||
|
(feep)
|
||||||
|
(return))
|
||||||
|
(setf column 0
|
||||||
|
line (next-line line)))
|
||||||
|
:until (or (zerop column)
|
||||||
|
(null line)
|
||||||
|
(char= char #\Space)))
|
||||||
|
(update-buffer-cursor buffer)))
|
||||||
|
|
||||||
|
(defun com-backward-word ()
|
||||||
|
(with-editor-accessors *editor* (:current-buffer buffer
|
||||||
|
:current-line line
|
||||||
|
:current-column column)
|
||||||
|
(when (zerop column)
|
||||||
|
(if (null (prev-line line))
|
||||||
|
(progn
|
||||||
|
(feep)
|
||||||
|
(return-from com-backward-word))
|
||||||
|
(setf line (prev-line line)
|
||||||
|
column (line-length line))))
|
||||||
|
(loop :with donep := nil
|
||||||
|
:do (decf column)
|
||||||
|
:when (minusp column)
|
||||||
|
:do (if (null (prev-line line))
|
||||||
|
(progn
|
||||||
|
(feep)
|
||||||
|
(setf column 0)
|
||||||
|
(return))
|
||||||
|
(setf column (1- (line-length line))
|
||||||
|
line (prev-line line)
|
||||||
|
donep t))
|
||||||
|
:until (or donep
|
||||||
|
(zerop column)
|
||||||
|
(null line)
|
||||||
|
(char= (char (line-content line) (1- column)) #\Space)))
|
||||||
|
(update-buffer-cursor buffer)))
|
||||||
|
|
||||||
(defun com-new-buffer ()
|
(defun com-new-buffer ()
|
||||||
(setf (current-buffer *editor*)
|
(setf (current-buffer *editor*)
|
||||||
(make-instance 'buffer))
|
(make-instance 'buffer))
|
||||||
|
@ -768,7 +814,9 @@ Additionally ensures correct line numbers on the way, as a bonus."
|
||||||
((:c . #\d) com-forward-delete)
|
((:c . #\d) com-forward-delete)
|
||||||
((:c . #\j) com-newline)
|
((:c . #\j) com-newline)
|
||||||
((:c . #\n) com-new-buffer)
|
((:c . #\n) com-new-buffer)
|
||||||
((:c . #\l) com-refresh-screen)))
|
((:c . #\l) com-refresh-screen)
|
||||||
|
((:m . #\f) com-forward-word)
|
||||||
|
((:m . #\b) com-backward-word)))
|
||||||
|
|
||||||
(defun key-command-dispatch (key)
|
(defun key-command-dispatch (key)
|
||||||
(when (numberp key)
|
(when (numberp key)
|
||||||
|
|
Loading…
Add table
Reference in a new issue