Veilig overschrijven van de tabtoets alleen voor inspringen in emacs

Ik ben een nieuwe gebruiker van emacs, en ik hou niet zo van de manier waarop emacs-modi indentatie verwerken, vooral bij het mixen van modi (zeg ASP en perl). Ik heb de volgende functies geschreven om dingen in te knippen zoals een "klassieke" editor:

(defun classic-indent (width)
  "Tab the current line or block the 'classic' way"
  (save-excursion
  (if (not (use-region-p)) (select-current-line))
  (indent-rigidly (mark) (point) width)))

(defun indent-forward ()
  "tab two space forward"
  (interactive)
  (classic-indent 2))

(defun indent-back ()
  "tab two spaces back"
  (interactive)
  (classic-indent -2))


(defun select-current-line ()
  "Select the current line"
  (interactive)
  (end-of-line) ; move to end of line
  (set-mark (line-beginning-position)))

The idea here being to bind indent-back to and indent-forward to . The functions work great when calling them with M-x, and the binding works fine, but if I try to bind directly, it interfere's with all sorts of cool things like auto-completion. I tried setting indent-line-function with:

(setq indent-line-function 'indent-forward)

en het instellen van de indentatiefunctie van mijn hoofdmodi met:

(setq cperl-indent-command 'indent-forward)

maar geen van beide heeft enig effect. Ik weet niet zeker of ik ze verkeerd positioneer of dat dit zelfs de juiste aanpak is.

Samenvattend, hoe kan ik de inspringing vervangen door de tab-toets zonder andere tab-gedrag, zoals automatische aanvulling, te negeren?

3
Wijzigt u de -binding globaal (bijvoorbeeld met global-set-key )? Zo nee, voor welke modi wijzigt u het?
toegevoegd de auteur Tikhon Jelvis, de bron
Je moet ook zeker proberen te wennen aan de manier waarop Emacs inspringt - het heeft me veel werk bespaard in vergelijking met het schema dat je leuk vindt. Toen ik er eenmaal aan gewend was geraakt, was de oude manier niet echt meer logisch.
toegevoegd de auteur Tikhon Jelvis, de bron

1 antwoord

Emacs-wiki heeft een hele categoriepagina over inspringen en TAB: http://www.emacswiki.org/emacs/CategoryIndentation . Zie dat voor andere wikipagina's over bibliotheken of fragmenten die je verschillende soorten TAB DWIM ("smart" TAB) gedrag geven. Hier zijn een paar:

0
toegevoegd