Pesquise os valores de todas as variáveis ​​no Emacs

9

Gostaria de descobrir quais variáveis ​​contêm um determinado valor.

Existe uma maneira de fazer uma pesquisa regex através dos valores de cada variável no Emacs?

izkon
fonte

Respostas:

12

Faz o apropos-valueque você está procurando?

(apropos-value PATTERN &optional DO-ALL)

Show all symbols whose value’s printed representation matches PATTERN.
PATTERN can be a word, a list of words (separated by spaces),
or a regexp (using some regexp special characters).  If it is a word,
search for matches for that word as a substring.  If it is a list of words,
search for matches for any two (or more) of those words.
genehack
fonte
3

O comando Iciclesicicle-apropos-value aprimora o comando vanilla apropos-value, permitindo combinar simultaneamente o nome e o valor da variável com os regexps (ou substrings ou outros padrões). Você não precisa combinar os dois, mas pode combinar os dois.

E (como na conclusão de todos os Sincelos), você pode combinar o nome ou o valor ou ambos progressivamente , ou seja, usando vários padrões incrementalmente. Isso é particularmente importante para um caso em que, como você diz, você está combinando com todas as variáveis ​​no Emacs, para começar. Ou seja, você não se importa em comparar com nomes; você só quer combinar valores.

Para corresponder nome e valor, use C-M-jpara finalizar o padrão de nome e iniciar o padrão de valor. Portanto, para corresponder apenas aos valores, comece com C-M-je digite o padrão de valor, pois o padrão de nome está vazio.

Por exemplo, para ver todas as variáveis ​​cujo valor atual corresponde nil( S-TABmostra correspondências):

M-x icicle-apropos-value RET

SYMBOL C-M-j VALUE: C-M-j nil S-TAB

Para ver todas as variáveis ​​cujo valor atual corresponde à regexp .*plist:

SYMBOL C-M-j VALUE: C-M-j .*plist S-TAB

As variáveis ​​correspondentes e seus valores são mostrados no buffer *Completions*, como candidatos à conclusão. Você pode circular entre os candidatos, fazendo com que cada uma corrente, por sua vez, utilizando as teclas verticais-arrow: <down> <down> <down>....

A primeira linha de sequência de documentos para o candidato a conclusão atual é mostrada na linha de modo de *Completions*.

Você pode obter uma descrição completa (ou seja C-h v) do candidato atual usando uma chave de ajuda: C-M-mouse-2ou C-M-RET. Para obter ajuda sobre cada candidato, alterne com as setas do teclado C-M-(por exemplo, repita C-M-<down>).

Consulte Múltiplos comandos com valor variável .

C-h f icicle-apropos-value diz o seguinte:

icicle-apropos-valueé uma função Lisp compilada interativa em icicles-cmd1.el.

Ele é obrigado a menu-bar help-menu apropos icicles icicle-apropos-value, menu-bar help-menu apropos apropos-var-value, menu-bar help-menu search-documentation find-option-by-value.

(icicle-apropos-value)

Escolha uma variável, função ou outra descrição do símbolo.

Isso é semelhante ao comando vanilla apropos-value, mas você pode comparar com o nome da variável e seu valor impresso ao mesmo tempo.

Por padrão, cada candidato à conclusão é a conclusão múltipla composta por um nome de variável mais seu valor. Eles são separados por icicle-list-join-string( "^G^J", por padrão).

Com um prefixo arg, os candidatos são diferentes tipos de símbolos:

  • <0: funções e seus padrões (mas os padrões compilados em bytes são ignorados)
  • > 0: símbolos e suas listas
  • = 0: variáveis e seus valores, funções e definições, e outros símbolos e suas listas

  • plain ( C-u): use o último conjunto de candidatos computado (em cache )

Você pode usar C-$durante a conclusão para alternar a filtragem do domínio dos candidatos iniciais de acordo com o argumento do prefixo, da seguinte maneira:

  • none: apenas opções do usuário (+ valores)
  • <0: apenas comandos (+ definições)
  • > 0: apenas faces (+ listas)
  • = 0: apenas opções (+ valores), comandos (+ defs), faces (+ listas)

Veja também:

  • icicle-apropos-vars-w-val-satisfying, icicle-describe-vars-w-val-satisfying- valores satisfazem um predicado
  • icicle-plist - semelhante a este comando com prefixo positivo arg
  • icicle-vardoc, icicle-fundoc, icicle-doc- nome match & doc
  • icicle-apropos-options-of-type, icicle-describe-option-of-type- nome da correspondência e tipo de personalização

Como você costuma usar esse comando em contextos que resultam em muitos candidatos à conclusão, o seguinte é desativado por padrão para este comando:

  • Modo completo. Você pode alternar isso usando M-i M-#.
  • Sincelos conclusão incremental. Você pode alternar isso usando M-i #.

Leia a entrada e ligue icicle-doc-actionpara agir de acordo.

Conclusão do candidato de entrada e ciclismo estão disponíveis. Durante o ciclo, essas teclas com prefixo C-estão ativas:

C-mouse-2, C-return- Lei sobre a atual candidato de conclusão única C-down, C-wheel-down- Move para o próximo candidato de conclusão e agir C-up, C-wheel-up- Mover para candidato de conclusão anterior e agir C-next - Move para o próximo candidato apropos-conclusão e agir C-prior- Mover para anterior candidato apropos-conclusão e agir C-end - Mover para a próxima candidato e ato de conclusão do prefixo C-home - Mova para o candidato e ato de conclusão do prefixo anterior C-! - Atue em todos os candidatos, sucessivamente (cuidado!)

Quando a ação do candidato e o ciclo são combinados (por exemplo C-next), a opção do usuário icicle-act-before-cycle-flagdetermina o que ocorre primeiro.

Com prefixo C-M-em vez de C-, as mesmas teclas ( C-M-mouse-2, C-M-RET, C-M-downe assim por diante) fornecem ajuda sobre os candidatos.

Use mouse-2, RETou S-RETpara finalmente escolher um candidato, ou C-gpara sair.

Desenhou
fonte