Изменить цвет курсора при нажатии клавиши в Emacs - PullRequest
0 голосов
/ 28 мая 2018

Я хочу изменить цвет моего курсора, когда я нажимаю клавишу Backspace, но он все равно должен удалить обратный символ, а затем, если я нажимаю любую клавишу (кроме клавиши Backspace), цвет должен быть изменен на тот, который был до изменения.Есть идеи?

1 Ответ

0 голосов
/ 28 мая 2018

Это странный запрос, но, просто чтобы продемонстрировать удивительные возможности Emacs, я сделаю это для вас:

(defvar cursor-color-original nil
  "The original cursor color, saved while backspacing.")
(defvar cursor-color-while-backspace "Red"
  "The cursor color while backspacing.")
(defvar cursor-color-backspace-commands
  '(backward-delete-char-untabify delete-backward-char)
  "The commands that switch cursor color.")
(defvar cursor-color-backspace-keys
  (list (kbd "<DEL>"))
  "The keys that switch cursor color.")

(defun cursor-color-note-backspace ()
  "Switch cursor color when backspacing."
  (if (or (memq this-command cursor-color-backspace-commands)
          (member (this-command-keys) cursor-color-backspace-keys))
      (unless (equal (frame-parameter nil 'cursor-color)
                     cursor-color-after-backspace)
        (setq original-cursor-color (frame-parameter nil 'cursor-color))
        (set-cursor-color cursor-color-after-backspace))
    (when (equal (frame-parameter nil 'cursor-color)
                 cursor-color-after-backspace)
      (set-cursor-color original-cursor-color))))

Чтобы включить:

(add-hook 'post-command-hook 'cursor-color-note-backspace)

Чтобы отключить:

(remove-hook 'post-command-hook 'cursor-color-note-backspace)

Обратите внимание, что если это не работает для вас, вы должны сделать Ch c DEL и добавить функцию, вызываемую DEL, к cursor-color-backspace-commands.Вы также можете добавить ключи к cursor-color-backspace-keys.

Счастливого взлома!

PS.Пожалуйста, сделайте Ch f RET для каждой функции, которую вы не знаете.Это поможет вам самостоятельно написать такой фрагмент в следующий раз.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...