69 lines
1.6 KiB
Common Lisp
69 lines
1.6 KiB
Common Lisp
;; MACROS
|
|
|
|
(define TAB-LENGTH 4)
|
|
(define QUIT-TIMES 1)
|
|
|
|
;; PACKAGES
|
|
|
|
;; First git clone it
|
|
;; (add-package "smart_delimiters")
|
|
|
|
;; FUNCTIONS
|
|
|
|
(define editor-delete-next-char (lambda () (
|
|
(move-cursor "right")
|
|
(editor-delete-previous-char)
|
|
)
|
|
)
|
|
)
|
|
|
|
(define (char-between ch lo hi)
|
|
(if (char>=? ch lo)
|
|
(char<=? ch hi)
|
|
#f))
|
|
|
|
(define (alphanumericp ch)
|
|
(if ch
|
|
(if (char-between ch #\a #\z)
|
|
#t
|
|
(if (char-between ch #\A #\Z)
|
|
#t
|
|
(if (char-between ch #\0 #\9)
|
|
#t
|
|
#f)))
|
|
#f))
|
|
|
|
(define (word-char-p ch)
|
|
(if (alphanumericp ch)
|
|
#t
|
|
(char= ch #\_)))
|
|
|
|
|
|
(define editor-move-to-end-of-word (lambda () (
|
|
(if (word-char-p (editor-read-char))
|
|
((move-cursor "right")
|
|
(editor-move-to-end-of-word))
|
|
))
|
|
))
|
|
|
|
|
|
;; KEY MAPPING
|
|
|
|
(map-key "CTRL-q" editor-quit)
|
|
(map-key "CTRL-d" editor-save)
|
|
(map-key "ARROW-UP" '(move-cursor "up"))
|
|
(map-key "ARROW-DOWN" '(move-cursor "down"))
|
|
(map-key "ARROW-RIGHT" '(move-cursor "right"))
|
|
(map-key "ARROW-LEFT" '(move-cursor "left"))
|
|
(map-key "ENTER" editor-insert-new-line)
|
|
(map-key "CTRL-a" move-cursor-beg-line)
|
|
(map-key "CTRL-e" move-cursor-end-line)
|
|
(map-key "BACKSPACE" editor-delete-previous-char)
|
|
(map-key "DEL" editor-delete-next-char)
|
|
(map-key "PAGE-UP" move-cursor-page-up)
|
|
(map-key "PAGE-DOWN" move-cursor-page-down)
|
|
(map-key "CTRL-o" editor-open-file)
|
|
(map-key "CTRL-k" editor-del-row)
|
|
(map-key "CTRL-s" editor-find)
|
|
(map-key "CTRL-r" editor-move-to-end-of-word)
|