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.