相关疑难解决方法(0)

如何将函数作为参数传递给elisp?

我试图在elisp中将一个方法传递给另一个方法,然后让该方法执行它.这是一个例子:

(defun t1 ()
  "t1")

(defun t2 ()
  "t1")

(defun call-t (t)
  ; how do I execute "t"?
  (t))

; How do I pass in method reference?
(call-t 't1)
Run Code Online (Sandbox Code Playgroud)

emacs elisp

21
推荐指数
2
解决办法
6398
查看次数

在elisp中,如何将函数放入变量中?

我想允许用户在"自定义"emacs后端中选择自己的命令(并且通常能够将可执行的表单名称存储在变量中)但这不起作用:

    (defun dumb-f ()
    (message "I'm a function"))

    (defvar my-function "dumb-f")

    (my-function)
    ==> Debugger entered--Lisp error: (invalid-function "dumb-f")

    (setq my-function 'dumb-f)

    (my-function)
    ==> Debugger entered--Lisp error: (invalid-function "dumb-f")
Run Code Online (Sandbox Code Playgroud)

我尝试了各种各样的形式,但仍然没有运气,而且我很难找到它,我得到了关于函数和变量的结果,但没有关于如何将前者放入后者...?

emacs elisp

16
推荐指数
2
解决办法
3731
查看次数

如何在Elisp中传递lambda表达式

所以,我正在尝试在Elisp中创建一个通用的Web搜索功能:

(defun look-up-base (url-formatter)
  (let (search url)
    (setq search(thing-at-point 'symbol))
    (setq url (url-formatter search))
    (browse-url url))
  )
Run Code Online (Sandbox Code Playgroud)

此功能只会抓取光标下的单词,使用url-formatter格式化网页搜索,然后在Web浏览器中打开搜索字符串以执行搜索.

接下来,我尝试使用前一个函数作为基础来实现一个函数,它将谷歌光标下的单词.

(defun google ()
  (interactive)
  (look-up-base (lambda (search) (concat "http://www.google.com/search?q=" search))))
Run Code Online (Sandbox Code Playgroud)

如果我尝试评估它,Emacs不会抱怨,但当我尝试使用它时,Emacs给了我这个错误消息:

setq: Symbol's function definition is void: url-formatter
Run Code Online (Sandbox Code Playgroud)

我不知道为什么会这样.我看不出这个功能有什么问题,我做错了什么?

emacs lambda elisp function

4
推荐指数
1
解决办法
1064
查看次数

标签 统计

elisp ×3

emacs ×3

function ×1

lambda ×1