Questions tagged «functions»

将此标签用于Elisp函数的用法,定义,重新定义,定义别名以及Lisp编程语言所基础的函数执行的其他标准功能。当功能与特定的Emacs功能有关时,请添加其他Elisp标签。

1
函数和命令有什么区别?
在此处发布问题和答案时,人们有时会互换使用术语“功能”和“命令”。在其他情况下,人们仅使用两个术语之一来讨论特定的代码段。由于他们的帖子通常专注于其他主题,因此他们没有解释为什么使用一个术语而不使用另一个术语。所以: 问:在Emacs Lisp中,函数和命令有什么区别?

4
何时对lambda表达式加引号?
问:如果,如果有的话,是很有用锋利引述lambda,当,如果有的话,我们一定不锋利引述lambda? 人们lambda以三种方式使用: 平原: (lambda (x) x) 引: '(lambda (x) x) 引号: #'(lambda (x) x) 该SO线程讨论了这三种类型,该SO线程说明了为什么不引用(NB:not sharp-quote)lambda,并且该SO线程还讨论了引用和尖引号之间的区别。 现在,对匿名函数手动节点和文档字符串lambda注意,lambdas为自报价: 形式的调用(lambda ARGS DOCSTRING INTERACTIVE BODY)是自引用;评估lambda表达式的结果是表达式本身。然后可以将lambda表达式视为一个函数... 因此,似乎(lambda (x) x)和#'(lambda (x) x)是等效的,但'(lambda (x) x)不是等效的(最重要的是,在字节编译时)。 似乎很少有人想用a 来引用lambda,但我不清楚何时应该(或不应该)用引号引起来: 引号lambda只是一个风格选择,还是在某些情况下引号实际上有用? 是否在某些情况下我们不能用尖括号将a括起来lambda,即这样做会改变代码的含义?
30 elisp  functions 

2
函数可以访问其名称吗?
在C语言中,有magic变量__func__保存当前函数的名称。在Bash中,有一个数组FUNCNAME保存调用堆栈中所有函数的名称! Emacs Lisp中有类似的东西吗?还是通过任何简单的方法来访问函数的名称? 我在Emacs Lisp手册中没有找到任何答案(有关函数或变量和函数索引以及..的第12章)
25 elisp  functions 

1
符号前面的'和#'有什么区别?
我对Emacs有点陌生。当查看某些配置时,我发现“ add-hook”中有两种类型的命令。 (add-hook 'LaTeX-mode-hook #'LaTeX-math-mode) 和 (add-hook 'LaTeX-mode-hook 'LaTeX-math-mode) 这让我很困惑了很长时间,而且我不知道如何在Google中搜索“#'” ... 谢谢。
22 elisp  hooks  functions  quote 

1
好奇心:progn代表什么?
根据Emacs文档: progn is a special form in `C source code'. (progn BODY...) Eval BODY forms sequentially and return value of last one. progn代表什么(或它的起源)? 用法:是否等效于Clojure的->宏?
21 functions 

2
加载文件和加载之间的区别
我浏览了两个函数的文档,但是它们似乎并没有散布太多信息。它们之间的实际区别是什么,除了事实load是C源代码中的内置函数,而load-file是交互式列表编译函数。 init.el由于两者似乎都在做相同的工作,因此推荐使用什么功能?
17 elisp  functions 

1
为什么不能将函数绑定到键或用Mx调用它?
我编写了一个函数,我想通过Mx调用它,并将其绑定到键上。这是我的功能: (defun my-function () (message "This is a great function")) 如果尝试使用调用它M-x my-function,则会[no match]在迷你缓冲区中收到错误消息:。 如果我尝试将其绑定到键(或单击鼠标): (global-set-key (kbd "C-c a") 'my-function) 它似乎可以工作,但是当我尝试用调用时C-c a,出现错误 类型参数错误:commandp,my-function 为什么我不能使用我的功能?


1
如何找出从(backtrace / stacktrace)调用函数的位置?
我遇到了一个问题,即区域被停用(在瞬态标记模式下)。该函数deactivate-mark被调用,我想知道从哪里(以及为什么)调用它。 我尝试了一下M-x debug-on-entry RET deactivate-mark,但它停止了,但是我找不到找到呼叫者的方法。整个显示的堆栈跟踪为: Debugger entered--entering a function: * deactivate-mark() 我尝试过,M-x edebug-eval-defun但是Edebug也不显示调用方。 我如何找出为什么(从哪里)deactivate-mark被调用?我正在寻找backtrace或stacktrace的功能。 编辑: 一个advice-add窍门: (defun message-show-backtrace () (message "%s" (backtrace-frame 10))) (advice-add deactivate-mark :before #'message-show-backtrace) nil在产生*Messages*。 编辑:有关更多信息deactivate-mark:http : //emacshorrors.com/posts/deactivate-mark.html

2
什么时候应该使用尖引号?
我看到其他人的eLisp代码中使用了尖锐的引号,而我自己也使用了引号,但是我不清楚它们什么时候合适,什么时候不合适。 谁能确切说明何时应使用尖引号以及何时应使用普通单引号?
10 elisp  functions  quote  style 
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.