Skip to content

Commit

Permalink
Implemented override mode as seen in Emacs.
Browse files Browse the repository at this point in the history
  • Loading branch information
funk443 committed Jan 4, 2025
1 parent c3ad998 commit 012e419
Show file tree
Hide file tree
Showing 2 changed files with 29 additions and 0 deletions.
4 changes: 4 additions & 0 deletions contrib/overwrite-mode/lem-overwrite-mode.asd
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
(defsystem "lem-overwrite-mode"
:serial t
:depends-on ("lem")
:components ((:file "overwrite-mode")))
25 changes: 25 additions & 0 deletions contrib/overwrite-mode/overwrite-mode.lisp
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
(defpackage :lem-overwrite-mode
(:use :cl :lem))
(in-package :lem-overwrite-mode)

(define-key *global-keymap*
"Insert" 'overwrite-mode)

(define-minor-mode overwrite-mode
(:name "Overwrite"
:global nil
:enable-hook 'enable
:disable-hook 'disable))

(defun hook-function (char)
(declare (ignore char))
(unless (end-line-p (current-point))
(delete-next-char)))

(defun enable ()
(add-hook (variable-value 'self-insert-before-hook)
'hook-function))

(defun disable ()
(remove-hook (variable-value 'self-insert-before-hook)
'hook-function))

0 comments on commit 012e419

Please sign in to comment.