help-gnu-emacs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: How to get current keymap


From: Kevin Rodgers
Subject: Re: How to get current keymap
Date: Sun, 07 Dec 2008 08:09:05 -0700
User-agent: Thunderbird 2.0.0.18 (Macintosh/20081105)

Drew Adams wrote:
I used (concat (symbol-name major-mode) "-map") to get current keymap, but it failed for LaTeX mode. Are there
other methode to get current keymap.

If I enter a buffer, do `M-x latex-mode',
then M-: (concat (symbol-name major-mode) "-map")
it returns "latex-mode-map". What did you want?

That's the name of a symbol whose value is the latex mode keymap. If you want
the keymap itself, then you want this:

(symbol-value ; Value of
 (intern      ; Symbol whose name is
  (concat (symbol-name major-mode) "-map")))

However, (current-local-map) gives you the same thing, and it works regardless
of the name of the symbol.

(eq (symbol-value
     (intern
      (concat (symbol-name major-mode) "-map")))
    (current-local-map))

=> t

A different way to find the symbol, instead of relying on its name:

(when (current-local-map)
  (let ((result nil))
    (mapatoms (function (lambda (symbol)
                          (when (and (boundp symbol)
                                     (eq (symbol-value symbol)
                                         (current-local-map)))
                            (push symbol result)))))
  result))

--
Kevin Rodgers
Denver, Colorado, USA





reply via email to

[Prev in Thread] Current Thread [Next in Thread]