Całkowicie wyłącz automatyczne wcięcie Emacsa dla trybu JavaScript


5

Próbowałem wyłączyć automatyczne wcięcie w Emacs w JavaScript przez trzy godziny i nie mogłem znaleźć (dobrego) rozwiązania.

Moja wersja Emacsa to 23.3.1 (i486-pc-linux-gnu, GTK + Wersja 2.24.3), przynajmniej tak mówi. Jest to standardowy pakiet z Debian Linux (Wheezy), GUI.

znalazłem automatyczne wcięcie emacs javascript (i inne), ale nie chciałem instalować innego trybu tylko do usuwania automatycznego wcięcia (i nie ma gwarancji, że zadziała z nim), podstawowy tryb wyłącza podświetlanie składni, które chcę zachować, Cc Cl nic nie robi oprawa javascript-auto-indent-flag do nil nic nie robi.

Czego chcę dokładnie: Wstaw zakładkę tylko wtedy, gdy nacisnę klawisz TAB. Część „if” działa, ale część „only if” nie. Ciekawe, dlaczego to takie trudne?

Odpowiedzi:


1

W trybie Javascript Emacsa postać } musi działać js-insert-and-indent. Możesz go powiązać, aby po prostu wstawić go, umieszczając ten kod w swoim .emacs plik startowy:

(defun my-js-mode-hook ()
  "My personal Javascript mode hook."
  (local-set-key (kbd "TAB") 'tab-to-tab-stop)
  (local-set-key (kbd "RET") '(lambda () (interactive) (newline 1)))
  (local-set-key (kbd "SPC") 'self-insert)
  (local-set-key (kbd "}") 'self-insert))

(add-hook 'js-mode-hook 'my-js-mode-hook)

i ponowne uruchomienie Emacsa. Jeśli znajdziesz inne takie postacie, możesz dodać więcej połączeń local-set-key w funkcji haka, każda z inną postacią przekazana do kbd funkcjonować.


Zaktualizowałem powyższy kod Emacsa-Lispa, aby zwiększyć prawdopodobieństwo rozwiązania problemu. Spróbuj.
Fran

Whooops, do tej pory nie widziałem twojej odpowiedzi. Nie piszę już JS (zamiast tego używam CoffeeScript), ale mimo to spróbuję.
GodsBoss

Jakikolwiek sposób, aby to działało w Emacs 24?
Linus Arver

@opert, powyższy kod powinien działać również w Emacs 24. Czy otrzymujesz błąd podczas korzystania z niego?
Fran

@Fran, skończyło się na napisaniu własnego trybu pomocniczego w Emacs o nazwie kakapo-mode, aby obsłużyć ustawienia wcięć w centralnym miejscu (chociaż niektóre tryby pomocnicze są trudne do opanowania tylko trybem kakapo). Zastępuje polecenia dotyczące takich rzeczy jak „RET”, „TAB” itp., Więc nigdy nie dotyka tych kodów w ścieżkach kodowych w haku trybu js. IIRC powyższy kod nie działa w Arch Linux w tym czasie (zanim zainstalowałem tryb kakapo).
Linus Arver
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.