Unterschied zwischen "Define-Key Global-Map" und "Global-Set-Key" in Emacs

9

Beim Betrachten, wie Leute ihre Tastaturkürzel in Emacs programmieren, sind mir zwei verschiedene Muster aufgefallen:

Man benutzt:

(global-set-key (kbd "M-N) 'select-next-window)

Der andere:

(define-key global-map (kbd "M-N") 'select-next-window)

Was ist der Unterschied zwischen ihnen? Definieren nicht beide "globale" Tastaturkürzel in Emacs?

Amelio Vazquez-Reina
quelle

Antworten:

5

Scheint im Hauptfall kein großer Unterschied zu sein:

  • (global-set-key key command)läuft auf (define-key (current-global-map) key command))und
  • describe-varsagt uns, dass global-map"eine Schlüsselkarte ist, die normalerweise (aber nicht unbedingt) Emacs 'globale Karte ist", während
  • (current-global-map) "Gibt die aktuelle globale Keymap zurück".

In den Emacs-Dokumenten wird jedoch von "der" globalen Keymap gesprochen, sodass unklar ist, wie Sie, wenn überhaupt, auf mehrere globale Keymaps stoßen können.

Ulrich Schwarz
quelle
Die Variable global-mapkann an eine Datei oder einen lokalen Pufferwert gebunden sein oder sogar an eine letAnweisung gebunden sein .
Trey Jackson
1
Die globale Keymap wird von festgelegt use-global-map. Es gibt nicht viele Pakete, die dies tun: Meistens einige Emulationsmodi wie Viper und einige Funktionen wie read-chardiese überschreiben die globale Karte vorübergehend.
Gilles 'SO - hör auf böse zu sein'