Esta pergunta foi inspirada em https://stackoverflow.com/q/605785/ . Por M-x describe-function <TAB>
posso obter uma lista de todas as funções interativas ou não-atraentes disponíveis no estado atual do emacs. Se um modo específico é ativado (por exemplo, modo látex), obtemos uma lista mais longa, pois as funções disponíveis no modo látex também são listadas.
Minha pergunta é como obter uma lista de todas as funções disponíveis exclusivamente em um modo específico (por exemplo, modo látex)? Em outras palavras, excluindo todas as outras funções não fornecidas por esse modo. Como no link acima, fornecer uma breve descrição das funções também seria útil.
major-mode
functions
Nome
fonte
fonte
smex-major-mode-commands
.Respostas:
O que significa para um modo fornecer uma função? Você diz " uma lista de todas as funções disponíveis exclusivamente em um modo específico " e " excluindo todas as outras funções não fornecidas por esse modo ".
Parece que você está confundindo um modo com a biblioteca que o define . Uma biblioteca fornece / define funções. Um modo geralmente não faz isso.
Se você deseja obter uma lista de todas as funções definidas em uma determinada biblioteca , consulte a resposta de @ wvxvw, para começar. Você também pode tentar comparar o prefixo da biblioteca com os nomes das funções - que geralmente são pertinentes, mas não são definitivos.
Se, no entanto, você deseja obter uma lista de todas as funções que podem ser pertinentes a um determinado modo , por exemplo, funções que podem ser usadas apenas ou que são mais úteis quando esse modo está ativado, receio. você precisará examinar a biblioteca onde o modo está definido. E você pode até precisar examinar algumas outras bibliotecas.
Uma determinada biblioteca geralmente define mais do que apenas algumas coisas pertinentes a um determinado modo. E um determinado modo pode muito bem fazer uso de coisas definidas em diferentes bibliotecas e, em alguns casos, coisas que fazem sentido apenas para esse modo determinado ou para um conjunto de modos que o inclui.
Em suma, como atualmente colocado, sua pergunta não é muito clara. Você pode se ajudar a obter melhores respostas, esclarecendo-as.
fonte
.el
arquivos contidos na pastasite-lisp>auctex
. Para o modo organizacional, quero dizer todas as funções definidas nos.el
arquivos contidos na pastasite-lisp>org
. Para muitos modos, a situação é mais direta, pois para eles existe apenas um.el
arquivo. Espero que essas explicações tornem claro o motivo da minha pergunta agora.Talvez este código tenha algum efeito educacional:
O problema
Devido à natureza não determinística da análise e carregamento de código, vários problemas precisam ser abordados:
Quando a função é definida em um arquivo? As funções podem ser definidas condicionalmente e prever se uma condição favorecerá a definição da função ou não é equivalente a resolver o problema de parada. Para ilustrar isso, suponha este código:
Tudo isso dito, você provavelmente deseja buscar
find-func.el
inspiração, obter uma idéia geral do layout e os problemas relacionados à localização do código fonte das funções do Emacs Lisp.fonte
Symbol's function definition is void: find-library-name
. Também é um pequeno erro de digitação - símbolos.(require 'find-func)
antes de executar este código. Obrigado pelo erro de digitação encontrado. Eu vou corrigir isso.Acabei de adicionar essa funcionalidade ao lispy . O novo comando
lispy-goto-elisp-commands
,, está vinculado a oge.O generic g(
lispy-goto
) fornece uma lista de todas as tags, destacando comandos com uma face diferente, enquantolispy-goto-elisp-commands
apenas fornece as tags de comando.Listagem de código
Isso é apenas para mostrar que a semântica do CEDET é usada para obter a lista de tags;
(semantic-tag-get-attribute tag :user-visible-flag)
é usado para determinar se a tag é um comando ou não.Como usar
Navegue para o arquivo que contém o código. Isso pode ser feito com f1 f. Em vez disso, gosto de usar a função aconselhar-descrever , pois pressionar C-.lá omite a necessidade de passar pelo
*Help*
buffer.Torne o ponto especial (mova-o antes de abrir o paren ou ativar a região) e pressione oge. Também é possível apenas usar M-x
lispy-goto-elisp-commands
.fonte
M-x lispy-goto-elisp-commands
no buffertex-mode.el
dá o errolispy--fetch-tags: Wrong type argument: stringp, ("c:/Program Files/GNU Emacs/share/emacs/24.5/lisp/textmodes/tex-mode.el")
O pacote smex possui código para listar todos os comandos de um pacote. Você pode adaptar esse código para obter todas as funções.
fonte