我最近沉浸在Vim中已经被宠坏了。很容易在那里创建一个宏,它将组合导致提示的键击。例如,以下,c
,我得到了颜色方案的提示,以及通过键入Tab
生成的列表。
" colorscheme switcher
nnoremap <leader>c :colorscheme <C-z><S-Tab>
现在我意识到,我不知道怎么做Emacs。这是对代码如何进行的天真尝试,
(defun load-theme-prompt ()
(interactive)
(load-theme)
(kbd "<tab>"))
当然这不起作用,我确实尝试录制宏并插入(甚至试过kmacro
),但它抱怨'
不是主题,但我没看到宏输出中的任何引号。
也就是说,我尝试记录M-x load-theme <RET> <TAB>
,并插入缓冲区,但该功能不起作用,即使我修剪了部分。
这是录制的宏不起作用,
(fset 'load-theme-prompt
[?\M-x ?l ?o ?a ?d tab ?t ?h tab return tab])
尝试M-x load-theme-prompt
会给我以下错误,
load-theme: Invalid theme name `'
根据法律名单的评论,我又拍了一张照片,但现在我的参数数量错误了:
(defun load-theme-prompt ()
(interactive
(list
(intern (completing-read "Load custom theme: "
(mapcar 'symbol-name
(custom-available-themes))))
nil nil))
(load-theme "%s")
)
我已尝试将nil nil
移至(load-theme "%s" nil nil)
,但仍无效。
答案 0 :(得分:3)
只需查看代码,您应该将其更改为以下内容:
(defun load-theme-prompt (name arg2 arg3)
(interactive
(list
(intern (completing-read "Load custom theme: "
(mapcar 'symbol-name
(custom-available-themes))))
nil nil))
(load-theme name arg2 arg3))
(interactive ...)
将参数传递给函数,但是您的函数不带参数。
另外,您实际上并不想将文字"%s"
传递给load-theme。