elisp - Emacs Lisp : How to use interactive (for conditional arguments)?

标签 elisp

我想根据第一个问题的答案向用户提出第二个问题。

(defun something (a b)
  (interactive
   (list
    (read-number "First num: ")
    (read-number "Second num: ")))
  (message "a is %s and b is %s" a b))

所以我需要一种方法来测试条目值:

(defun something-else (a &optional b)
  (interactive
   (list
    (read-number "First num: ")
    (if (< a 2)
        (read-number "Second num: "))))
  (message "a is %s" a))

但是

if: Symbol's value as variable is void: a

问题:我怎样才能以真正互动的方式使用 interactive

最佳答案

(defun xtest (a &optional b)
  (interactive
   (let (a b)
     (setq a (read-number "First: "))
     (if (< a 2)
         (setq b (read-number "Second: ")))
     (list a b)))

  (message "a is %s b is %s" a b))

关于elisp - Emacs Lisp : How to use interactive (for conditional arguments)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25447312/

相关文章:

sqlite - 如何使用elisp创建一个sqlite特定的shell?

json - Elisp - 来自 API 响应的 json-read-from-string

macos - "s-[keyname]"在 Emacs 中指的是什么,我如何告诉 Emacs 忽略它?

emacs - undo、save-excursion、delete-region 之间的交互

emacs - 似乎无法摆脱 Emacs 中的 Ctrl-x Ctrl-z 键绑定(bind)以最小化窗口('suspend-frame)

elisp - 变异 elisp 函数

emacs - 从 ede 获取项目根目录

for-loop - cl-loop 破坏性地修改 cons 单元格

emacs - Elisp中的过滤功能

emacs - 在组织模式导出功能中排除多个文件