Add page up and page down commands to the editor
This commit is contained in:
parent
1f52377b2b
commit
0451b5b7d1
1 changed files with 39 additions and 1 deletions
|
@ -805,6 +805,42 @@ Additionally ensures correct line numbers on the way, as a bonus."
|
|||
(char= (char (line-content line) (1- column)) #\Space)))
|
||||
(update-buffer-cursor buffer)))
|
||||
|
||||
(defun com-next-page ()
|
||||
(with-editor-accessors *editor* (:current-line line
|
||||
:current-buffer buffer)
|
||||
(let ((view (buffer-view buffer)))
|
||||
(cond ((or (null (bottom-line view))
|
||||
(eql line (bottom-line view)))
|
||||
(feep))
|
||||
((< (view-line-number view (bottom-line view))
|
||||
(height view))
|
||||
(setf line (bottom-line view))
|
||||
(update-buffer-cursor buffer))
|
||||
(t
|
||||
(setf line (bottom-line view))
|
||||
(setf (top-line view) (bottom-line view))
|
||||
(update-buffer-cursor buffer)
|
||||
(redisplay-view (current-view *editor*)))))))
|
||||
|
||||
(defun com-previous-page ()
|
||||
(with-editor-accessors *editor* (:current-line cursor-line
|
||||
:current-buffer buffer)
|
||||
(let ((view (buffer-view buffer)))
|
||||
(cond ((eql cursor-line (first-line buffer))
|
||||
(feep))
|
||||
((line-in-view (first-line buffer) view)
|
||||
(setf cursor-line (first-line buffer))
|
||||
(update-buffer-cursor buffer))
|
||||
(t
|
||||
(loop :repeat (height view)
|
||||
:for current-line := cursor-line
|
||||
:then (prev-line current-line)
|
||||
:until (null current-line)
|
||||
:do (setf cursor-line current-line
|
||||
(top-line view) current-line))
|
||||
(update-buffer-cursor buffer)
|
||||
(redisplay-view view))))))
|
||||
|
||||
(defun com-new-buffer ()
|
||||
(setf (current-buffer *editor*)
|
||||
(make-instance 'buffer))
|
||||
|
@ -979,7 +1015,9 @@ Additionally ensures correct line numbers on the way, as a bonus."
|
|||
((:m . #\f) com-forward-word)
|
||||
((:c . #\w) com-forward-word)
|
||||
((:m . #\b) com-backward-word)
|
||||
((:c . #\q) com-backward-word)))
|
||||
((:c . #\q) com-backward-word)
|
||||
(:page-down com-next-page)
|
||||
(:page-up com-previous-page)))
|
||||
|
||||
(defun key-command-dispatch (key)
|
||||
(when (numberp key)
|
||||
|
|
Loading…
Add table
Reference in a new issue