[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: disabling key bindings
From: |
Phillip Lord |
Subject: |
Re: disabling key bindings |
Date: |
28 Nov 2003 12:47:07 +0000 |
User-agent: |
Gnus/5.09 (Gnus v5.9.0) Emacs/21.2.93 |
>>>>> "Jesper" == Jesper Harder <harder@myrealbox.com> writes:
Jesper> Phillip Lord <p.lord@russet.org.uk> writes:
>> I a new major mode, how do I disable all keybindings, except for
>> those that I specify. In particular I would want all the normally
>> self-insert keys to do nothing at all (except where I have bound
>> the explicitly).
Jesper> Sounds a bit like Erik Naggums's "poor man's vi-mode":
Jesper> ,---- | (use-global-map (make-sparse-keymap))
Jesper> |
Jesper> | like vi, it will beep at everything you do, and you can't quit.
Jesper> | have fun!
Jesper> `----
Well I tried this, but it doesn't seem to work.
I think that the problem is that there are more than just the major
mode keymap active.
So I am defining my major mode like so....
(define-derived-mode pabbrev-select-mode fundamental-mode
"Pabbrev Select"
"Major mode for selecting `pabbrev-mode' expansions.
The number keys selects the various possible expansions.
\\[pabbrev-suggestions-delete]
removes the previously added expansion, \\[pabbrev-suggestions-mimimum] selects
the mimimum
matching substring, while \\[pabbrev-suggestions-delete-window] just deletes
the window
\\{pabbrev-select-mode-map}")
(setq pabbrev-select-mode-map (make-sparse-keymap))
(define-key pabbrev-select-mode-map "\t"
'pabbrev-suggestions-select-default)
(define-key pabbrev-select-mode-map [delete] 'pabbrev-suggestions-delete)
(define-key pabbrev-select-mode-map [backspace] 'pabbrev-suggestions-delete)
(define-key pabbrev-select-mode-map "\C-m" 'pabbrev-suggestions-mimimum)
(define-key pabbrev-select-mode-map " "
'pabbrev-suggestions-delete-window)
But in a buffer with this mode I can still type "A" and I get an "A"
in the buffer.
I guess I could do....
(loop for i from 33 to 126 do
(define-key pabbrev-select-mode-map (char-to-string i) 'pabbrev-noop))
(defun pabbrev-noop()
(interactive))
which seems to work. But it seems a little messy...
Cheers
Phil