A indentação do código Emacs lisp pelo Emacs é realmente ótima, exceto por uma coisa:
(defconst one-to-ten '(one two three
four five six seven
eight nine ten))
Essa é realmente a maneira preferida de recuar esse bloco? Ao contrário de
(defconst one-to-ten '(one two three
four five six seven
eight nine ten))
Acho especialmente confuso quando comparado ao padrão para listas:
(defconst one-to-ten '((one . 1) (two . 2) (three . 3)
(four . 4) (five . 5) (six . 6) (seven . 7)
(eight . 8) (nine . 9) (ten . 10)))
Existe uma razão para esse comportamento? Eu poderia entender isso para listas com aspas anteriores, pois produziria melhor recuo para macros, mas e as listas?
indentation
Clemente
fonte
fonte
Indent the file using the default indentation parameters.
M-x report-emacs-bug
.Respostas:
Aqui estão as configurações que estou usando para corrigir o recuo:
Tentei consertar o recuo do Elisp em um ponto, mas foi muito complicado e desisti. Mas as configurações acima funcionaram bem por anos.
fonte
put
eget
fazem? Ele substitui ascl-flet
instâncias de função porflet
ecl-labels
instâncias porlabels
apenas nocommon-lisp-indent-function
? Se sim, por que isso foi feito? Além disso, o que o terceiro colocado faz? Eu li aput
documentação, mas ainda não fazia sentido. Seria "definir o valor dacommon-lisp-indent-function
propriedade doif
símbolo como 2", mas isso não fazia sentido para mim.'lisp-indent-function
(ou seja, o padrão), é realmente melhor que'common-lisp-indent-function
. Essas configurações fazem com que o recuo seja transferido de um para o outro.(setq lisp-indent-function 'common-lisp-indent-function)
,. O resto não tem nada a ver com o recuo a ser usado para uma lista constante.