sto scrivendo una funzione elisp che si lega in modo permanente una data chiave per un dato comando nella mappa tastiera del modo maggiore corrente. Ad esempio,Nome Emac della keymap locale corrente?
(define-key python-mode-map [C-f1] 'python-describe-symbol)
Il comando e la sequenza di tasti sono raccolti in modo interattivo dall'utente. Tuttavia, sto riscontrando problemi nel produrre il nome di KEYMAP (ad esempio "python-mode-map") che corrisponde alla modalità principale corrente.
ho provato la funzione (corrente-local-mappa), ma questa funzione restituisce l'oggetto mappa di tastiera in sé, piuttosto che il suo nome.
Capisco che molte delle principali mappe di tasti di modalità sono denominate in base alla convenzione '' nome-modalità-modalità '' modalità-mappa ', tuttavia, questo non è sempre il caso (ad esempio, python-shell-map), quindi preferirei che il mio codice non si basasse su questa convenzione. (Non sono nemmeno sicuro di come accedere al nome della modalità principale corrente).
Il (define-key ...)
deve essere aggiunto ad un file di inizializzazione, quindi anche se
(define-key (current-local-map) key command)
sembra funzionare, non funziona come codice su un file di inizializzazione.
Perché stai scrivendo codice che genera altro codice? Qual è il problema più profondo che stai cercando di risolvere? Potresti forse scrivere alcune librerie che altri potrebbero semplicemente "richiedere"? Sareste in grado di scrivere una singola modalità che fa questo tipo di funzioni 'magicamente-descrivi-simbolo' che fa la cosa giusta in base alla modalità corrente? ecc –
Il mio punto/domanda è, se è possibile aggiungere programatically questi, si potrebbe essere in grado di risolvere in modo più generale, più elegante - uno che non comporta un mucchio di frammenti di codice che sembrano quasi identici tranne che per la mappa delle modalità ... –
@TreyJackson Quei "grappoli di frammenti" potrebbero essere pezzi di codice che appartengono al proprio ".emacs" (entro un numero ragionevole, ovviamente). Il codice che genera altro codice non è accigliato in Lisp. – user4815162342