Alterar paredit Formatação
-
06-09-2019 - |
Pergunta
Ao usar paredit nos modos de programação como C, digitação (irá inserir um espaço antes do parêntese quando eu estou tentando chamar uma função, deixando-me com:
foo ()
Existe uma maneira de desativar a inserção do espaço sem alterar fonte do paredit?
Solução
Bem, aparece maneira paredit ao trabalho é que ele verifica as tabelas de sintaxe para ver se você está inserindo o direito par depois de uma palavra / símbolo / etc., Caso em que ele força um espaço a ser inserido. Você precisa substituir essa funcionalidade - o que pode ser feito de várias maneiras diferentes:. Conselho, redefinir a função que determina espaço, mesa de mudar a sintaxe, etc
Eu tentaria a frente:
(defun paredit-space-for-delimiter-p (endp delimiter)
(and (not (if endp (eobp) (bobp)))
(memq (char-syntax (if endp (char-after) (char-before)))
(list ?\" ;; REMOVED ?w ?_
(let ((matching (matching-paren delimiter)))
(and matching (char-syntax matching)))))))
Isto, obviamente, se aplica a todos os lugares onde você usar paredit
. Se você quiser algo mais modo específico, você pode adicionar algumas condições para que a declaração and
(por exemplo (and ... (memq major-mode '(c-mode lisp-mode)))
).
Então ... Eu acho que eu fiz mudar a "fonte", mas você pode fazer a mesma coisa com um pedaço de defadvice
... é tudo elisp, então a diferença é mínima. Não parece ser uma definição para controlar este tipo de comportamento.
Outras dicas
Veja paredit-space-for-delimiter-predicates
Bem, paredit é ideal para edição de línguas construídas de S-expressões. Se você só gosta como ele insere automaticamente o parêntese de fechamento, recurso de uso esqueleto de par .
(setq skeleton-pair t)
(global-set-key "(" 'skeleton-pair-insert-maybe)