Sono d'accordo con Tyler; anche se è un po 'complicato, alla lunga staresti meglio se tentassi di capire e personalizzare le funzioni di indentazione di default. Il Wiki di Emacs ha good resources e ci sono altri relevant Q&As qui su Stack Overflow.
Associare il tasto di tabulazione a insert-tab
significa perdere completamente il vantaggio di simili di indent-region
e qualsiasi altro comportamento intelligente che una modalità principale potrebbe offrire.
per rispondere alle vostre domande specifiche a prescindere, però:
1) Se si sta definendo (java-insert-tab)
e (css-insert-tab)
e (javascript-insert-tab)
ecc, e tutti fanno esattamente la stessa cosa ... beh, Speriamo che si può vedere che don In realtà hanno bisogno di più di una di quelle funzioni. Dagli un nome più generico e riutilizzalo.
2) (local-set-key ...)
fa la stessa cosa di (define-key (current-local-map) ...)
, il che significa che è anche possibile avere una singola funzione generica per sovrascrivere la combinazione di tasti della scheda, indipendentemente dalla modalità principale.
(defun my-coding-config()
(setq tab-width 4)
(setq indent-tabs-mode t)
(local-set-key (kbd "<tab>") 'my-insert-tab))
(defun my-insert-tab (&optional arg)
(interactive "P")
(insert-tab arg))
Poi basta aggiungere my-coding-config
a ciascuna variabile gancio modalità applicabile. Se ci sono un sacco di loro, si potrebbe avvolgetelo in una lista come questa:
;; Use my coding hook for all programming modes
(mapcar
(lambda (language-mode-hook)
(add-hook language-mode-hook 'my-coding-config))
'(java-mode-hook
javascript-mode-hook
css-mode-hook
...))
3) Se si guarda alla Ch vtab-width
RET e allo stesso modo per indent-tabs-mode
, si noterà che entrambi dicono "Automaticamente diventa buffer-local quando impostato in qualsiasi modo."
In alternativa all'interfaccia personalizzata già menzionata, è possibile utilizzare (set-default 'indent-tabs-mode t)
per stabilire il valore predefinito per tali variabili. In assenza di codice che imposta un valore locale del buffer, tutti i buffer utilizzeranno il valore predefinito, il che potrebbe aiutare a evitare di scrivere hook di modalità non necessari.
Grazie per la risposta, proverò e vedrò come funziona, anche se potrebbe essere un po 'più complicato per me. – YTKColumba