Function: ghostel--rebuild-semi-char-keymap

ghostel--rebuild-semi-char-keymap is a natively compiled function defined in ghostel.el.

Signature

(ghostel--rebuild-semi-char-keymap)

Documentation

Rebuild ghostel-semi-char-mode-map from ghostel-keymap-exceptions.

Mutates the existing keymap object in place so any buffer-local reference to it picks up the new bindings.

Source Code

;; Defined in /nix/store/1252krff0gb2kisjcpp45m50cpdskfrl-emacs-packages-deps/share/emacs/site-lisp/ghostel.el
(defun ghostel--rebuild-semi-char-keymap ()
  "Rebuild `ghostel-semi-char-mode-map' from `ghostel-keymap-exceptions'.
Mutates the existing keymap object in place so any buffer-local
reference to it picks up the new bindings."
  (let ((fresh (make-sparse-keymap)))
    (set-keymap-parent fresh ghostel-mode-map)
    (ghostel--define-terminal-keys fresh)
    ;; Yank bindings layer on top of the helper's defaults so the
    ;; kill ring wins over `ghostel--send-event' for `M-y',
    ;; `S-<insert>', etc.
    (define-keymap :keymap fresh
      "C-y"            #'ghostel-yank
      "S-<insert>"     #'ghostel-yank
      "<remap> <yank>" #'ghostel-yank
      "M-y"            #'ghostel-yank-pop)
    ;; C-q quotes the next key to the terminal (`quoted-insert' mnemonic).
    ;; Listing "C-q" in the exceptions lets it fall through to Emacs instead.
    (unless (member "C-q" ghostel-keymap-exceptions)
      (define-key fresh (kbd "C-q") #'ghostel-send-next-key))
    (setcdr ghostel-semi-char-mode-map (cdr fresh)))
  ;; C-g honors the exception list: bound to nil (unbound) when excepted.
  (define-key ghostel-mode-map (kbd "C-g")
              (unless (member "C-g" ghostel-keymap-exceptions)
                #'ghostel-send-C-g)))