Ao escrever códigos lisp, às vezes tenho uma expressão aninhada e tudo o que quero é inserir todos os parênteses de fechamento ausentes. No momento, estou apenas inserindo-os até obter um parêntese incompatível, mas não é muito eficiente.
Existe algum comando para inserir todos os parênteses ausentes?
Para sua informação, estou usando o smartparens para inserir automaticamente os pares correspondentes. Ainda assim, às vezes eu só preciso fazer isso.
development
rlazo
fonte
fonte
]
agia como um parêntese super-direito, fechando todas as parênteses abertas, conforme solicitado.Respostas:
Aqui está uma função que fecha todos os parênteses não fechados e outros pares correspondentes. Ele se baseia na análise sexp do Emacs. Ele suporta apenas pares correspondentes de um caractere; portanto, algo como
{-
será fechado}
, não-}
. Para Lisp, isso não importa.fonte
([-!-foo]
, com , você insere])
no ponto ou)
depoisfoo]
?([-!-foo]
, gostaria de inserir)
depoisfoo]
. Mas eu posso estar errado, é claro. Talvez o @rlazo possa elaborar.Eu descobri que se você tiver o slime instalado, existe um comando para fazer isso, chamado
slime-close-all-parens-in-sexp
fonte
Uma maneira muito primitiva (e quase certamente errada) de fazer isso seria
Entre outras limitações, assume que todos os parênteses que precisam ser inseridos são:
Eu acho que pode ser apenas o suficiente para ser útil para o seu caso de uso específico
fonte