Pergunta

No GNU Emacs, existe uma boa maneira de mudar o comando de registro de comentários no modo C de

/* This is a comment which extends  */
/* over more than one line in C. */

para

/* This is a comment which extends
   over more than one line in C. */

? eu tentei

(setq comment-multi-line t)

Mas isso não ajuda. Existe um Seção sobre comentários de várias linhas no manual do EMACS, mas não menciona nada.

Foi útil?

Solução

Desde o emacs 21, tem havido um módulo chamado 'newcomment, que tem diferentes estilos de comentários (veja a variável 'comment-styles. Esta configuração se aproxima do que você deseja:

(setq comment-style 'multi-line)

(Nota: você provavelmente deve fazer essa configuração em 'c-mode-hook).

No entanto, nenhuma das configurações faz com que os comentários se pareçam com o que você deseja.

A maneira mais fácil que vi para conseguir o que você quer é adicionar este hack:

(defadvice comment-region-internal (before comment-region-internal-hack-ccs activate)
  "override 4th argument to be just spaces"
  (when (eq major-mode 'c-mode)  ; some condition here
    (let ((arg (ad-get-arg 4)))
      (when arg
        (ad-set-arg 4 (make-string (length arg) ?\ ))))))

As configurações atuais para comment-style Sempre prefixo as linhas de comentários com " *" (se não o todo " / *").

Se você não tem o Emacs 21, acho que você pode simplesmente baixar newcomment.el do repositório. Não sei se funciona como está em versões anteriores do EMACS, mas pode valer a pena, embora atualizar o Emacs seja uma solução melhor.

Meu hack quebra o 'uncomment-region. Uma correção adequada seria mudar 'comment-padright. Isso levaria um pouco mais de pesquisa para não quebrar outras coisas. O hack acima apenas muda o comportamento em 'c-mode (Ajuste a condição ao seu gosto).

Outras dicas

O mais próximo que eu poderia encontrar com o suporte de comentários embutidos é se você definir comment-style para multi-line, que produzirá isso:

/* This is a comment which extends
 * over more than one line in C. */

Se isso não estiver perto o suficiente, dê uma olhada newcomment.el e defina suas próprias funções de comentários, conforme apropriado.

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