Emacs的无效功能的抱怨?(Emacs complaining with invalid func

2019-08-20 07:54发布

当我按下Cc c与上形成缓冲下面的代码,Emacs的抱怨与Invalid function: (select-current-line) 。 为什么?

(defun select-current-line ()
  "Select the current line"
  (interactive)
  (end-of-line) ; move to end of line
  (set-mark (line-beginning-position)))

(defun my-isend ()
  (interactive)

  (if (and transient-mark-mode mark-active)
      (isend-send)

    ((select-current-line)
     (isend-send)))
)

(global-set-key (kbd "C-c c") 'my-isend)

这不是问题,但对于那些有兴趣isend,发送在这里被定义。

Answer 1:

你是缺少一个progn形式语句组合到一起:

(defun my-isend ()
  (interactive)

  (if (and transient-mark-mode mark-active)
      (isend-send)

    (progn
      (select-current-line)
      (isend-send))))

如果没有progn形式, ((select-current-line) (isend-send))被解释为(select-current-line)施加到调用的结果函数isend-send不带参数。 但是, (select-current-line)是不是有效的函数名。 在其它的Lisp,这样的构建体可以是有效的,如果返回值select-current-line本身就是一个函数,该函数将被施加到(isend-send) 但是,这不是的Emacs Lisp的情况下,这不会做你想实现什么呢?



文章来源: Emacs complaining with invalid function?
标签: emacs elisp