elisp文档

有三种方式可以加载文件: load autoload require 使用eval-after-load可以推迟一段代码的执行 (eval-after-load “触发条件的文件” 待执行的代码) 这里,第一个参数的值必须跟上面三种方式加载文件时的值一模一样 emacs中的变量作用域 buffer-local变量 声明buffer-local变量 make-variable-buffer-local 各个缓冲区都有各自的buffer-local变量 make-local-variable 当前缓冲区产生一个局部变量,其他缓冲区仍然使用全局变量(推荐使用) buffer相关函数 with-current-buffer ;使其中的body表达式在指定的缓冲区里执行(使用指定buffer的配置信息执行body表达式) (with-current-buffer buffer body) get-buffer ;得到缓冲区名字的对应缓冲区对象,如果没有这个名字的缓冲区,返回nil (get-buffer buffer-name) default-value ;访问符号的全局变量的值 (default-value symbol) setq-default ;修改符号作为全局变量的值 (setq-default symbol-name) local-variable-p ;测试变量是不是buffer-local的 (local-variable-p symbol [buffer对象]) buffer-local-value...

July 25, 2021 · 88 min · zakudriver

Elisp中的interactive参数

interactive 参数的含义 若一个函数带有交互模式声明,则它是一个命令函数。即可以通过 M-x(execute-command) 来调用。 声明格式 (defun kumo-interactive-func () (interactive "code-string") ;; do something...) 种类 Completion: 提供补全。TAB,SPC 和 RET 完成补全。 Existing: 必须是存在的对象名。不接受无效名称。如果输入无效则不会退出 minibuffer。 Default: 如果未输入则使用默认值。 No I/O: 不读取任何输入。因此不会使用提示符。 Prompt: 放在提示符或\n之前。 Special: 只能放在交互式字符参数前。 含义 接收多个输入以 \n 来分隔。 *: 如果当前buffer处于read-only-mode时提示。 [Special] @: 在第一个鼠标事件触发的window调用。[Special] ^: 通过 shift 调用前需要标记区域,没有公共 shift 调用则停止标记。[Special] a: 一个函数定义的符号名。[Existing, Completion, Prompt] (defun with-func-arg (arg) (interactive "aEnter a function:") (funcall arg)) b: buffer名(已存在)。[Existing, Completion, Default, Prompt]...

July 20, 2021 · 2 min · zakudriver

emacs管理博客写作流程

使用emacs作为hugo博客的客户端 Hugo 生成博客的静态页面虽然已经很方便了,ox-hugo 自动md -> org也很便捷了,但写作和发布博客需要经过若干命令行操作才能完成。没有客户端界面直观。 目前写作和发布的流程 新建org文件 -> balabala并自动转md -> 命令行: $ hugo // 生成静态页面 -> magit stage/commit/push -> 完成 hugo 的 major-mode 插件: easy-hugo easy-hugo 是 emacs 上的 hugo 博客管理的插件。支持markdown or org-mode or AsciiDoc or reStructuredText or mmark or html 等格式文档,多博客多站点,以及多平台部署。 easy-hugo 配置 (use-package easy-hugo :commands easy-hugo :bind (:map easy-hugo-mode-map ("SPC" . general-simulate-C-c) ("G" . kumo-easy-hugo-github-deploy)) :custom (easy-hugo-org-header t) (easy-hugo-basedir kumo/easy-hugo-basedir) (easy-hugo-postdir kumo/easy-hugo-postdir) (easy-hugo-url kumo/easy-hugo-url) (easy-hugo-preview-url kumo/easy-hugo-preview-url) (easy-hugo-github-deploy-script kumo/easy-hugo-github-deploy-script) (easy-hugo-default-ext "....

July 8, 2020 · 2 min · zakudriver

irony-server-install

Mac 首先需安装cmake和llvm brew install cmake llvm emacs里执行M-x irony-install-server得到安装执行命令 cmake -DCMAKE_INSTALL_PREFIX\=/Users/kumotyou/.emacs.d/irony/ \ /Users/kumotyou/.emacs.d/elpa/irony-20200130.849/server \ && cmake --build . --use-stderr --config Release --target install 添加环境变量 -DCMAKE_PREFIX_PATH=/usr/local/opt/llvm -DCMAKE_INSTALL_RPATH_USE_LINK_PATH=ON -DLIBCLANG_INCLUDE_DIR=/usr/local/opt/llvm/include -DLIBCLANG_LIBRARY=/usr/local/opt/llvm/lib/libclang.dylib 最终编译命令 cmake -DCMAKE_INSTALL_PREFIX\=/Users/kumotyou/.emacs.d/irony/ \ -DCMAKE_PREFIX_PATH=/usr/local/opt/llvm \ -DCMAKE_INSTALL_RPATH_USE_LINK_PATH=ON \ -DLIBCLANG_INCLUDE_DIR=/usr/local/opt/llvm/include \ -DLIBCLANG_LIBRARY=/usr/local/opt/llvm/lib/libclang.dylib \ /Users/kumotyou/.emacs.d/elpa/irony-20200130.849/server \ && cmake --build . --use-stderr --config Release --target install Ubuntu 拉取ccls源码, 并进入ccls根目录 git clone https://github.com/MaskRay/ccls cd ccls 拉取第三方依赖....

May 29, 2020 · 1 min · zakudriver