W trybie skryptowym powłoki, gdy linia kończy się &&
, Emacs wcina następną linię. Czy istnieje sposób, aby to wyłączyć? (Łączę większość moich instrukcji z &&
. To daje lepszą kontrolę nad obsługą błędów niż set -e
.)
W trybie skryptowym powłoki, gdy linia kończy się &&
, Emacs wcina następną linię. Czy istnieje sposób, aby to wyłączyć? (Łączę większość moich instrukcji z &&
. To daje lepszą kontrolę nad obsługą błędów niż set -e
.)
Odpowiedzi:
Kod wcięcia dla skryptów powłoki został całkowicie przepisany mniej więcej w czasie Emacsa-24, aby używać SMIE, a sam SMIE ewoluował w trakcie życia Emacsa-24, więc najlepsze rozwiązanie może zależeć od twojej dokładnej wersji Emacsa, ale z Emacsem- 24.5 powinieneś być w stanie:
wpisz, M-x smie-config-show-indent
który powinien pokazać reguły, które zostały użyte do wcięcia tego wiersza. Może powiedzieć coś takiego:
Zastosowane reguły:: przed „&&” -> (kolumna 19),: przed „[” -> zero,: elem podstawowy -> 4,: po „&&” -> zero
Niestety, (column . 19)
tam jest głównie, że nie będziesz w stanie zmienić tego zachowania w „prosty” sposób (tzn. Nie możesz go zmienić smie-config-set-indent
).
Ale myślę, że powinny to zrobić:
(defun my-sh-smie-sh-rules (origfun kind token)
(pcase (cons kind token)
(`(:before . "&&") nil)
(_ (funcall origfun kind token))))
(advice-add 'sh-smie-sh-rules :around #'my-sh-smie-sh-rules)
Możesz chcieć M-x report-emacs-bug
i poprosić o ułatwienie takiej konfiguracji, ponieważ prawdopodobnie jest to dość powszechny styl wcięcia.