文章目录

  • 插件使用场景
  • 使用方法
  • 代码
  • 示例

插件使用场景

我使用Emacs作为笔记软件,在我想整理某些概念的定义时,我希望能有一个插件来更好地帮助我完成这件事。

当你需要在笔记中加入大量概念定义时,可以使用这个插件。

使用方法

definer-create:创建定义。

definer-note:添加补充说明。

definer-use:使用定义。

definer-get-all:查看所有定义(只向上查找)。

进入definer-mode可以绑定快捷键,见definer-mode定义。

可设置definer-define-word和definer-note-word自定义标识文字。

代码

;; Copyright 2023 Wenhan Zhang;; Permission is hereby granted, free of charge, to any person obtaining a copy
;; of this software and associated documentation files (the “Software”), to deal
;; in the Software without restriction, including without limitation the rights
;; to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
;; copies of the Software, and to permit persons to whom the Software is
;; furnished to do so, subject to the following conditions:;; The above copyright notice and this permission notice shall be included in
;; all copies or substantial portions of the Software.;; THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
;; IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
;; FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
;; AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
;; LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
;; OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
;; THE SOFTWARE.(defvar definer-define-word "define")(defvar definer-note-word "note")(defun definer-create (name)(interactive "sName: \n")(insert (concat "@" definer-define-word " {" name "} := ")))(defun definer-note ()(interactive)(insert (concat "@" definer-note-word " True = ")))(defun definer-use (name)(interactive "sName: \n")(definer-get-info name)(insert (concat "{" name "}"))(left-char))(defun definer-@ ()(interactive)(insert "@"))(defun definer-get-info (name)(interactive "sName: ")(print (definer--search-backward(concat"@" definer-define-word" {" name "} :="".*$"))))(defun definer-get-all ()(interactive)(let ((b (get-buffer-create "**definer**"))(c (current-buffer))(d (definer--search-all-definitions (point) nil)))(progn(set-buffer b)(erase-buffer)(insert (mapconcat (lambda (x)(concat (number-to-string (car x))":"(cadr x)))d"\n"))(set-buffer c)(display-buffer b))))(defun definer--search-backward (pattern)((lambda (p f)(prog1(funcall f)(goto-char p)))(point)(lambda ()(progn(re-search-backward pattern)((lambda (m)(buffer-substring-no-properties(marker-position (car m))(marker-position (cadr m))))(match-data))))))(defun definer--search-all-definitions (return-point result)(let ((r (re-search-backward (concat "@"definer-define-word" {.*} :=.*$")nil t)))(if r(let ((m (match-data)))(let ((s (buffer-substring-no-properties(marker-position (car m))(marker-position (cadr m)))))(definer--search-all-definitions return-point(cons (list (marker-position (car m)) s) result))))(progn(goto-char return-point)result))))(define-minor-mode definer-mode"Yet another way to write definitions"nil" definer"'(("@@" . definer-@)("@d" . definer-create)("@n" . definer-note)("@u" . definer-use)("@a" . definer-get-all)))

示例

@定义 {四边形} := 四条边(a,b,c,d)构成的平面图形@定义 {平行四边形} := {四边形(a//b且c//d)}@定义 {菱形} := {四边形(a=b=c=d)}@定义 {正方形} := x, x属于{平行四边形}且x属于{菱形}

自己做笔记用的Emacs插件相关推荐

  1. 用emacs做笔记_3种用于记笔记的Emacs模式

    用emacs做笔记 无论您从事什么工作,都不可避免地需要记笔记. 通常,不止几个. 如果您在当今时代像许多人一样,可以使用数字方式记笔记. 开源爱好者有多种选择可以记下他们的电子格式的想法,思想和研究 ...

  2. 【杂谈】想成为机器学习学霸?先学会做笔记吧

    今天聊聊记笔记这件事儿,在学习的过程中做好总结记录是非常重要的. 作者 | 小满&有三 编辑 | 小满&有三 <人类简史>有一个有趣的现象描写:远古时期的智人是看什么就吃什 ...

  3. 印象笔记mac版 同步问题_【杂谈】想成为机器学习学霸?先学会做笔记吧(Evernote,BoostNote,Leanote等)...

    今天聊聊记笔记这件事儿,在学习的过程中做好总结记录是非常重要的. 作者 | 小满&有三 编辑 | 小满&有三 <人类简史>有一个有趣的现象描写:远古时期的智人是看什么就吃什 ...

  4. 【杂谈】想成为机器学习学霸?先学会做笔记吧(Evernote,BoostNote,Leanote等)

    今天聊聊记笔记这件事儿,在学习的过程中做好总结记录是非常重要的. 作者 | 小满&有三 编辑 | 小满&有三 <人类简史>有一个有趣的现象描写:远古时期的智人是看什么就吃什 ...

  5. 插入始终是1_OneNote使用小记(1)——针对PPT做笔记及最合适的PPT插入方式

    本人经常使用OneNote进行上课笔记的记录,本文大概总结一下我是如何在上课时针对PPT进行笔记记录的,以及非常重要的PPT插入所占空间的问题. 设备:普通笔记本电脑,无触控,故不使用绘图功能 软件: ...

  6. php面试题9(看的时候就应该随手截图做笔记的)

    php面试题9(看的时候就应该随手截图做笔记的) 一.总结 看的时候就应该随手截图做笔记的 二.php面试题9 一.选择题: 1.下面哪个表达式不能将两个字符串$s1 和$s2 串联成一个单独的字符串 ...

  7. 网页上做笔记--Diigo

    一.介绍 diigo是一个可以在网页上做笔记的浏览器插件,也就是说直接在网页上使得某一行高亮,或者添加注释,并且关闭后重新打开笔记不会消失!!diigo可以收藏网页.在网页上做笔记,用浏览器打开pdf ...

  8. 简单实用 | 用Gitbook做笔记 / 写书过程全记录

    用Gitbook写随笔 1. 准备 2. 开始写书 2.1 创建书籍 2.2 撰写书籍 2.2.1 生成目录 2.2.2 写你所想 2.3 构建书籍 2.4 预览书籍 2.5 生成书籍 3 发布书籍 ...

  9. 程序员怎么高效做笔记

    目录 前言 25分搞定 Markdown 怎么快速入门Markdown Markdown的进阶玩法 Markdown 管理API或者项目说明文档 巧用EverNote,做网页笔记 用Gist 记录经典 ...

最新文章

  1. boost log 能不能循环覆盖_前端基础进阶(十四):深入核心,详解事件循环机制...
  2. Python Qt GUI快速编程第六章代码分析
  3. search strategies
  4. 开始一个django项目
  5. hiho一下 第五周 Hihocoder #1037 : 数字三角形
  6. HTML5 地理位置定位(HTML5 Geolocation)原理及应用 (调用GPS)
  7. 正则 指定开头结尾_Python核心知识系列:正则表达式与JSON
  8. 什么是Java线程池
  9. dsp呼吸灯C语言编程,pwm呼吸灯原理及程序分享
  10. YOLOv5训练自己的数据集(超详细完整版)
  11. 心知天气数据API 产品的高并发实践
  12. word柱状图垂直轴数值设定_Excel图表中设置坐标轴的字体、图案格式、刻度格式和数字格式的方法...
  13. 计算机中各进制之间的转换
  14. (三篇长文让你玩6Pandas)数据分析入门_PART2常用工具包_CH02数据分析工具:Pandas__Part03(统计分析基础)
  15. Android 面试题
  16. java 拼音转汉字_用Java转化汉字为拼音全拼
  17. 28行python代码实现哈工大一键申请出校41天
  18. 【模拟赛】2019 蓝桥杯省赛 A 组模拟赛(一)
  19. 接互联网外包项目方案
  20. HTML——表单及表单元素

热门文章

  1. linux下qt的odbc库编译,linux qt QODBC连接sql server 驱动 有关问题 ,实在是没辙了
  2. 2019TFE计算机科学排名,2019年TFE Times硕士专业排名新鲜出炉!看你的专业上榜了吗?...
  3. 2017 闰秒 linux,应对linux下的闰秒
  4. 10 年 bloger 告诉你要不要写博客,又该如何优雅地写博客?
  5. 华为全栈人工智能-AI发展新趋势
  6. java中的几个整型变量
  7. 内存地址的概念和理解
  8. win11右键菜单选项设置恢复,右键菜单变成win10样式
  9. 信奥一本通1314:【例3.6】过河卒(Noip2002)
  10. 实现展开收起功能最简单的方法!