一个button其实就是一个overlay,通过修改button-start到button-end之间的文字即可更改button label.
(defun set-button-label (btn label)
""
(replace-regexp ".+" label nil (button-start btn) (button-end btn)))
(easy-mmode-define-navigation BASE RE &optional NAME ENDFUN NARROWFUN &rest BODY)
该宏生成`BASE-next’和`BASE-prev’两个导航命令.
参数RE为正则表达式,决定了导航的位置.
其他参数详细说明,参见该宏的doc-string
使用函数`hack-dir-local-variables-non-file-buffer’可以将`default-directory’目录及其父目录的directory-local variable应用到当前的non file buffer中.
(cl-check-type FORM TYPE &optional STRING)
校验FORM的值是否为TYPE类型,若不是则抛出error,以STRING为error的描述.
当访问一些Restful api时,常常需要输入认证信息,当用curl访问时可以使用-u option
curl -u user:password https://gnu.org
要模拟这种情况有两种方案可以尝试:
- 访问类似
https://username:[email protected]
这种url - 通过设置`url-request-extra-headers’变量来实现
(let ((url-request-method "PUT") (url-request-extra-headers `(("Authorization" . ,(concat "Basic " (base64-encode-string "username:password"))))) (url-retrieve-synchronously "https://gnu.org")))
要实现这一目的有多种方法,例如
(goto-char start)
(delete-region start end)
(insert new-content)
或者
(goto-char start)
(re-search-forward ".+" end)
(replace-match new-content)
但我觉得最lisp style的一种方法是用setf:
(setf (buffer-substring start end) new-content)
hooks`eshell-preoutput-filter-functions’中的函数会在命令的输出结果插入eshell之前调用.
这些函数接受一个参数:命令的输出结果字符串,并且其返回值也应该是一个字符串,该返回的字符串才是真正插入到eshell中的内容.
通过执行函数`eshell-exit-success-p’可以获取eshell中上一次命令执行的完成状态.
若上一次执行的是一段lisp代码,则所谓成功表示该段lisp代码返回non-nil.
若上一次执行的是一个外部程序,则所谓成功表示该外部程序的退出码为0.
该命令会显示最后一次操作的命令对应的elisp代码,你可以修改该代码并按回车执行该代码,也可以按C-g取消执行.
org已经有了现成的函数了`org-babel-edit-distance’
- 使用(interactive “r”)则表示执行该命令前,必须要有一个active region
- 尽量不要使用`called-interactively-p’,因为该函数存在BUG,可能结果不准.