开发者

How to print all the defined variables in emacs?

开发者 https://www.devze.com 2023-03-15 12:23 出处:网络
M-x < TAB > prints all the defined functions. To check a variable is defined or not evaluating the following expression,

M-x < TAB > prints all the defined functions.

To check a variable is defined or not evaluating the following expression, (boundp 'variable-name) C-x C-e will print开发者_如何学C t if the variable-name is defined else nill.

How to print all the defined variables in emacs.


It's unclear exactly what you want to do with a full list of symbols, since the way in which M-x displays function names is somewhat specialized.

Assuming that you want to programmatically obtain a list of all defined symbols, here's how auto-complete.el does it:

(loop for x being the symbols
    if (boundp x)
    collect (symbol-name x))

Note that you can also enter M-x describe-var RET, and then press TAB to get a sorted completion list of all symbols.


I presume (apropos-variable "." t) would show you all the variables defined at that point in time.

edit: I presumed wrongly, it would seem.

Interestingly, this actually shows me significantly fewer results than the auto-completions from describe-var.

Can anyone shed light on that?

e.g. the differences between these, when winner-mode has been enabled:

  • C-uM-x apropos-variable RET winner- RET
  • C-hv winner- TAB

edit 2: Ah... it looks like apropos may ignore any symbol which lacks a documentation string.

If it's possible, I suggest reassigning the accepted answer.


Extrapolating (heavily!) what is being asked for, here is a way to get a pretty-printed alist of all buffer-local variables with their values. This is very convenient for finding out why for instance a mode isn't behaving the way one expects.

To get this listing, do:

M-x pp-eval-expression RET (buffer-local-variables) RET

Relevant portions from this list can be added almost verbatim to a .dir-locals.el file for use with multiple files.

0

精彩评论

暂无评论...
验证码 换一张
取 消