Comentário automático que combina chaves no emacs

1

Eu estou tentando encontrar um comando do emacs que irá comentar automaticamente o código semelhante a este:

Antes do comando

if(condition){
        do ...
}

Após o comando

if(condition){
        do ...
} //Matches if(condition){

Eu sei que quando o bloco de código entre parênteses é grande demais para caber na página atual, ele mostrará a parte "Corresponde a se (condição)" quando eu inserir a chave de fechamento. Eu, no entanto, quero selecionar um bloco de código e, em seguida, executar este comando no emacs para que ele coloque esse comentário lá para mim. Por favor, deixe-me saber se algo não está claro e eu ficarei feliz em especificar. Eu também peço desculpas se esta pergunta foi feita antes, no entanto, eu olhei e não consegui encontrá-lo. Se tiver sido, por favor, me aponte para essa pergunta.

Obrigado antecipadamente.

    
por raghav.mohan 18.07.2012 / 18:37

3 respostas

0

Adicione isso ao final do arquivo ~/.emacs e reinicie o Emacs. Altere a combinação de teclas para qualquer sequência de teclas à sua escolha:

(defun my-add-end-block-comment ()
  "Documentation goes here ..."
  (interactive)
  (let (start text)
    (save-excursion
      (backward-sexp 3)
      (setq start (point))
      (end-of-line)
      (setq text (buffer-substring start (point))))
    (insert (concat "  // " text))))

(global-set-key (kbd "C-z /") 'my-add-end-block-comment)

Posicione o cursor depois da chave de fechamento ( } ) e pressione Cz / . Isso também deve funcionar para while e for loops.

    
por 18.07.2012 / 22:56
0

Você poderia usar C-s (busca direta) para procurar o bloco if, selecionar a região e M-; (comment-dwim) para comentar a região.

Sempre que tiver dúvidas, use M-x a respeito de < RET > < your-search-term-here > < RET >.

    
por 18.07.2012 / 22:52
0

Você pode usar uma ferramenta de snippet, como o YASnippet , que terá outro campo no final do comentário. Não será o mesmo comportamento que você quer, mas no final do dia fará mais ou menos o mesmo.

    
por 20.07.2012 / 16:19