Fazendo com que o parágrafo de preenchimento do Emacs funcione bem com comentários do tipo javadoc

StackOverflow https://stackoverflow.com/questions/71788

  •  09-06-2019
  •  | 
  •  

Pergunta

Estou escrevendo um modo principal do Emacs para um dialeto APL que uso no trabalho.Eu tenho bloqueio de fonte básico para funcionar, e depois de definir comentário-início e comment-start-skip, comentar/descomentar região e preencher parágrafo também trabalho.

No entanto, os blocos de comentários geralmente contêm comentários de estilo javadoc e i gostaria de preencher parágrafo para evitar colar linhas iniciando com tais comandos.

Se eu tiver isso (\ em vez de javadoc @):

# This is a comment that is long and should be wrapped.
# \arg Description of argument
# \ret Description of return value

M-q me dá:

# This is a comment that is long and
# should be wrapped. \arg Description
# of argument \ret Description of
# return value

Mas eu quero:

# This is a comment that is long and
# should be wrapped.
# \arg Description of argument
# \ret Description of return value

Tentei configurar parágrafo-início e parágrafo-separado para valores apropriados, mas o parágrafo de preenchimento ainda não funciona dentro de um bloco de comentários.Se eu remover os marcadores de comentário, M-q funciona como eu quero para, então o regexp que eu uso para início de parágrafo parece funcionar.

Tenho que escrever um parágrafo de preenchimento personalizado para o meu major modo?cc-mode tem um que lida com casos como este, mas é realmente Eu gostaria de evitá-lo se possível.

Foi útil?

Solução

O problema era que o regexp de início de parágrafo precisava corresponder a toda a linha para funcionar, incluindo o caractere de comentário real.O seguinte elisp funciona para o exemplo que dei:

(setq paragraph-start "^\\s-*\\#\\s-*\\\\\\(arg\\|ret\\).*$")

Aqui está uma página que tem um exemplo de regexp para modo php que faz isso:http://barelyenough.org/blog/2006/10/nicer-phpdoc-comments/

Outras dicas

Existem outros modos que possuem funções menos complexas usadas para fill-paragraph-function.Navegando pela minha instalação, parece que aqueles em modo ada e modo make são bons exemplos.

O que faço nesses casos é abrir uma linha em branco entre as linhas do parágrafo e as linhas do argumento, depois usar M-q para quebrar as linhas do parágrafo e, em seguida, eliminar a linha em branco entre elas.Não é o ideal, mas funciona e é fácil de gravar em uma macro se precisar repeti-la.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top