使用emacs作为代码片段管理工具

一、需求

一个代码片段管理工具所需要的基本功能大概包括:

  1. 支持多语言的高亮
  2. 能够保存对代码的说明
  3. 支持TAG标签
  4. 有方便的查询功能

而Emacs的Org-mode恰好能够完美的支持上面这些需求.

二、实现

(defvar mode-file-map ‘((c++-mode . "cpp.org")
                        (emacs-lisp-mode . "elisp.org")
                        (python-mode . "python.org")
                        (perl-mode . "perl.org")
                        (dos-mode . "bat.org")
                        (sh-mode . "bash.org"))
  "映射major-mode与保存代码片段文件的对应关系"
  )

(defvar code-library-path "d:/CodeLibrary/"
  "代码库文件存储的目录"
  )
(defun save-code-to-library()
  (interactive)
  (let (
        (code (get-region-or-thing ‘defun))
        (library-file (concat code-library-path (cdr (assoc major-mode mode-file-map))))
        (head (read-string "请输入这段代码的说明"))
        (code-major-mode (replace-regexp-in-string "-mode$" "" (format "%s" major-mode))))
    (when (string= library-file code-library-path)
      (setq library-file (concat code-library-path "temp.org")))
    (find-file library-file)
    (end-of-buffer)
    (newline)
    (insert (concat "* " head))
    (newline-and-indent)
    (insert (concat "#+BEGIN_SRC " code-major-mode))
    (newline-and-indent)
    (newline-and-indent)
    (insert "#+END_SRC")
    (forward-line -1)                   ;上一行
    (org-edit-src-code)
    (insert code)
    (org-edit-src-exit)
    (org-set-tags-command)              ;设置代码tags
    (save-buffer)
    ;; (kill-buffer)
  ))

三、使用

在Emacs中看到中意的代码要保存下来,只需要选中要保存的代码,然后执行M-x save-code-to-library. Emacs会自动根据代码所处与的major-mode来挑选合适的org文件保存,并提示输入代码说明和tag.

下面是一个代码保存的截图

    org-mode本身也提供了大量的搜索命令,可以通过tag或者内容作查询.

时间: 2024-08-02 10:57:50

使用emacs作为代码片段管理工具的相关文章

YASnippet - emacs 的代码片段管理工具

添加 snippet M-x 然后输入 yas-new-snippet 回车 RET,会出现一个新的 buffer # -*- mode: snippet -*- # name: # key: # -- 在出现的 buffer 中填写相应的数据 # -*- mode: snippet -*- # name: vard # key: vard # -- echo '<pre>'; var_dump($0); die; c-x c-s 保存 可以保存到两个地方: ~/.emacs.d/privat

Dash——程序员的的好帮手:API文档浏览器+代码片段管理工具

作为一名死coder,每天最常见的动作就是查看各种API文档,你一定也有过同时打开N个窗口(HTML.PDF.CHM),不停的在编辑器与文档之间切换的感受吧?怎么说呢,其实我很讨厌这种枯燥无味的动作,那么如何才能提高效率,减少无用功呢?下面就给大家介绍一款非常好用的Mac小工具:Dash,相比这个英文名,我跟喜欢叫它“叮当猫”,嘿嘿. 点我直达AppStore介绍页面 功能简介 官方用一句话就概括了它的用途:Dash是一个API文档浏览器( API Documentation Browser),

SnippetsLab for Mac 1.9 中文共享版 – 强大的代码收藏管理工具

下载地址:风云社区 SnippetsLab 是一个功能齐全,易于使用的代码片段管理器.它可以帮您构建个人代码仓库,并确保您可以随时轻松访问它们. 主要功能和特色 • 精心设计的用户界面以及 13 款漂亮的主题 • 超过 440 种语言的语法高亮显示 • 创建嵌套文件夹.智能群组.标签和快捷方式 • 为代码片段添加备注 • 在一条代码片段中包含多个标签页(每个标签页都可以用有独立的语法高亮设定) • 同时打开多个窗口,并将单个窗口固定在屏幕顶部 • 使用高级搜索条件(按照文件夹.标签或语言过滤)来

VS代码片段(snippet)创作工具——Snippet Editor(转)

原文:http://blog.csdn.net/oyi319/article/details/5605502 从Visual Studio 2005开始,IDE支持代码片段.代码片段以代码缩写和TAB自动切换输入点的方式,提高书写代码的开发效率,比较常用的代码,如下面演示中的:class.ctor.for.cw... 其实这些代码片段,分别对应一个扩展名为“.snippet”的XML格式文件,我们可以到类似“C:/Program Files/Microsoft Visual Studio 9.0

创建自己的代码片段(CodeSnippet)

前言 工作中经常会写一些重复的代码片段,如自动属性.for循环.Action等等,针对这种情况,VisualStudio已经给我们提供了一个非常方便的功能--代码片段,是我们可以简单的输入几个字母就能生成大段代码. 但是,工作中总会遇到一些重复代码是VisualStudio没有提供的,这时就需要我们自己去编写片段模板了,本文我将简单讲一下如何创建并使用自己的代码片段. 一.模板文件在哪 在工具-代码片段管理器(快捷键Ctrl+K,B)可以打开代码片段管理器,如下图: 选择模板所属语言,之后就可以

VS中添加自定义代码片段——偷懒小技巧

前言 打出cw,然后敲击两下Tab键就会快速敲出Console.WriteLine() ,快捷方便,那怎么自定义快速敲出Console.readKey();呢?带着这个问题去寻找方法啊,总结如下,其中的代码涉及到了XML(可扩展性标记语言),很巧,前一阵子了解到了XML,并编写了自己的第一个例子,功能挺强大. 实现过程 工具→代码片段管理器→语言:CSharp→Visual C#→复制位置路径→编写代码片段→保存后重启VS. 上机操作 打开工具 进入代码片段管理器 自定义代码片段 打开资源管理器

[搬运] 将 Visual Studio 的代码片段导出到 VS Code

原文 : A Visual Studio to Visual Studio Code Snippet Converter 作者 : Rick Strahl 译者 : 张蘅水 导语 和原文作者一样,水弟我现在也是使用 VS Code 和 Rider 作为主力开发工具,尤其是 VS Code 可以跨平台,又有丰富的插件支持和多种编程语言支持.当我从 VS 转移到以 VS Code 的开发过程中,遇到的最大问题就是代码提示的不完善(被 VS 和 R# 调教坏了,总想按 tab 键).当我看到原文作者通

SQL Prompt自定义代码片段

新增代码片段: 代码片段管理: 代码片段中可以使用以下占位符:详见参考: $DATE$ 插入当前日期. $TIME$ 插入当前时间 $USER$ 插入当前电脑的用户名 $PASTE$ 插入剪切板内容 $DBNAME$ 插入链接数据库名 使用: 参考:http://documentation.red-gate.com/display/SP6/Managing+snippets#Managingsnippets-Usingplaceholders

微信小程序代码片段

微信小程序代码片段是一种可分享的小项目,可用于分享小程序和小游戏的开发经验.展示组件和 API 的使用.复现开发问题等等.分享代码片段会得到一个链接,所有拥有此分享链接的人可以在工具中导入此代码片段.如果网页可点击的链接指向的是分享链接,那么点击链接也会自动打开工具进入代码片段导入页. 创建代码片段 在工具选择项目的界面中,右侧可以选择代码片段页卡,查看所有本地代码片段,在右下角可以点击创建代码片段. 创建代码片段需要填入代码片段名称.本地存放目录.AppID 不是必填项,如果需要演示依赖 Ap