Como faço para registrar o uso do M-x no emacs?

6

Eu quero registrar meu uso de M-x no emacs em um arquivo para que eu possa ver quais funções eu devo aprender o atalho para / ligar um atalho. De preferência, basta anexar os nomes das funções usadas a um arquivo / emacs-buffer, talvez com um timestamp, para que eu possa ver em que contexto eu os utilizo. Alguém sabe como resolver isso?

    
por petergil 27.02.2010 / 17:27

3 respostas

3

Eu sugeriria adicionar uma função consultiva a execute-extended-command e outra a read , de modo que quando o comando execute-extended-estiver sendo executado, qualquer coisa lida no minibuffer seja registrada no buffer definido com um registro de data e hora. / p>

Eu tenho querido aprender como usar o advise, então eu irei editar este comentário mais tarde com o código Elisp de trabalho assim que eu tiver o código que faz isso (deve ter menos de dez linhas).

editar:

Baseado no maravilhoso trabalho de Trey Jackson, aqui está minha versão adicional:

%pr_e%

Isso registra o timestamp, o comando e as combinações de teclas, e não obscurece nenhum eco dos comandos m-x.

Você terá que salvar o arquivo de log manualmente como faria com qualquer outro buffer do emacs, ao contrário da versão do Trey. Pode haver um comprometimento possível em que o arquivo é gravado, mas não há um método de mensagem para o minibus que obscurece os resultados de um comando.

    
por 27.02.2010 / 18:07
5

Você pode começar com este elisp, que simplesmente adicionará os comandos executados a um determinado arquivo de log. Você pode ficar mais chique e fazer a contagem automática se quiser. Ou, ocasionalmente, você pode simplesmente enviar o arquivo por meio de um sort | uniq -c .

(defvar my-m-x-log-file "~/mx.log")
(defadvice execute-extended-command (after log-execute-extended-command activate)
  (let ((logfile (find-file-noselect my-m-x-log-file)))
    (with-current-buffer logfile
      (goto-char (point-max))
      (insert (format "%s\n" this-command))
      (save-buffer))))
    
por 27.02.2010 / 18:31
0

Editar: Na releitura, acredito ter respondido à pergunta errada. Você pode ter sido melhor perguntar isso no Stack Overflow, já que a resposta provavelmente exigiu o uso do elisp.

C-h f function-name

você receberá a documentação sobre function-name , incluindo a vinculação de chave atual.

C-h k <key stroke>

mostrará a função atual ligada a qualquer toque de tecla

C-h b

lista todos os atalhos de chaves ativos

    
por 27.02.2010 / 17:53

Tags