org是emacser常用的模式,具有富文本、链接、表格等功能。现在想加一个函数功能,比如在这样一句话中加入一个feed-dog函数:
- This is a pre-defined function called feed-dog.
但是一般情况下org中的function是()形式,也就是必须写成下面的形式才能执行为功能:
- This is a pre-defined function called (feed-dog).
显然,这样看起来破坏了正常文本的格式,于是决定去掉括号,定义一个函数eval-last-sexp-without-parentheses即可实现:
(defun eval-last-sexp-without-parentheses ()
(interactive)
(progn
(forward-word 1)
(funcall (intern (eval (current-word))))(sit-for 0.1)))
这个函数对eval函数进行了一些修改,也可以根据具体需求采用其它函数。
最后,将此函数绑定到一个快捷键上,这里用的是TAB:
(global-set-key (kbd "TAB") 'eval-last-sexp-without-parentheses)
如此以来,便实现了在文本中执行功能。
应用场景似乎极少,比较适合整理思路。比如做一些TODO list时可以直接跳转到相应预定义功能:
- feed-dog.
- submit-code.
如果预先定义submit-code,在检查TODO时可直接执行.