How to redefine a key inside a “minibuffer” mode-map?

后端 未结 2 733
死守一世寂寞
死守一世寂寞 2021-01-12 21:25

I\'m trying to redefine the keys used to navigate the history when inside several commands accepting regexps and offering C-p / C-n history navigation. I\'d like to use othe

2条回答
  •  南方客
    南方客 (楼主)
    2021-01-12 22:04

    I'm assuming you just needed minibuffer-local-map. Subsequent definitions using keys previously assigned to that key map will trump the prior definitions. To disable a prior key assignment, then just create a new definition and set the last portion to nil instead of 'function-name.

    (define-key minibuffer-local-map (kbd "") 'help-for-help)
    

    Here is an excerpt from Emacs Trunk .../lisp/bindings.el:

    (let ((map minibuffer-local-map))
      (define-key map "\en"   'next-history-element)
      (define-key map [next]  'next-history-element)
      (define-key map [down]  'next-history-element)
      (define-key map [XF86Forward] 'next-history-element)
      (define-key map "\ep"   'previous-history-element)
      (define-key map [prior] 'previous-history-element)
      (define-key map [up]    'previous-history-element)
      (define-key map [XF86Back] 'previous-history-element)
      (define-key map "\es"   'next-matching-history-element)
      (define-key map "\er"   'previous-matching-history-element)
      ;; Override the global binding (which calls indent-relative via
      ;; indent-for-tab-command).  The alignment that indent-relative tries to
      ;; do doesn't make much sense here since the prompt messes it up.
      (define-key map "\t"    'self-insert-command)
      (define-key map [C-tab] 'file-cache-minibuffer-complete))
    

提交回复
热议问题