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?

GodsBoss
źródło

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ć.

Fran
źródło
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