感谢建议,实际我使用的时候是使用的(setq dired-listing-switches "-Afhlv")
。在这里为了方便说明,就直接用它的默认值了。
goto-address-mode,让 url/邮件地址 可点击
欢迎来PR直接贡献呀
好吧,以后不挖坟了 ,我有点把它当 wiki 用了…
btw,我发现 rust-lang 的论坛好像会自动关闭帖子 ,这样时间比较久的帖子会被自动关闭,不能被回复
论坛的流量应该还没高到顶起坟贴会影响阅读的程度。不喜欢看的人进帖子点静音就可以让一个帖子沉底了
my/isearch--direction
可以直接用isearch-forward
这个variable
emacs 还有和 winner-mode类似的快捷键 C-x C-r w记录窗口布局 C-x C-r j 恢复 可以保存很多个 ,关闭emacs销毁
搞错了 是C-x r w
默认C-x C-r
应该已经绑定至find-file-ready-only
了,这个应该是自己绑定的快捷键吧。
你说的功能是指 desktop
包的吗?
搞错了C-x r w C-x r j 不好意思
C-x r w window-configuration-to-register register.el 不知道desktop包是什么
原来register
还可以这样玩,真强大!
Changelog
- 2020-06-20 更新
hideshow
模式,可以在折叠的时候显示行数 - 2020-06-20 增加
calendar
的使用例子 - 2020-06-26 增加
follow-mode
的介绍 - 2020-06-26 添加
glasses-mode
的介绍
hideshow
隐藏、显示结构化数据,如{ }
里的内容。对于单函数较长的情况比较有用。
建议配置:
(use-package hideshow
:ensure nil
:diminish hs-minor-mode
:hook (prog-mode . hs-minor-mode))
hideshow
的默认按键前缀为C-c @,这里放一个默认的按键与经过
evil-mode
的版本的对比表格:
功能 | 原生 | evil-mode |
---|---|---|
hs-hide-block |
C-c @ C-h | zc |
hs-show-block |
C-c @ C-s | zo |
hs-hide-all |
C-c @ C-M-h | zm |
hs-show-all |
C-c @ C-M-s | zr |
hs-hide-level |
C-c @ C-l | 无 |
hs-toggle-hiding |
C-c @ C-c | za |
一些类似hideshow
的插件
其中origami
有lsp
支持lsp-origami
hideshow 扩展: 显示被隐藏的代码行数
默认情况下hideshow
对于显示的代码是以...
overlay
的形式显示的,而且
hideshow
给予了自定义的能力,通过设置hs-set-up-overlay
变量即可。
;; 这里额外启用了 :box t 属性使得提示更加明显
(defconst hideshow-folded-face '((t (:inherit 'font-lock-comment-face :box t))))
(defun hideshow-folded-overlay-fn (ov)
(when (eq 'code (overlay-get ov 'hs))
(let* ((nlines (count-lines (overlay-start ov) (overlay-end ov)))
(info (format " ... #%d " nlines)))
(overlay-put ov 'display (propertize info 'face hideshow-folded-face)))))
(setq hs-set-up-overlay 'hideshow-folded-overlay-fn)
附效果图:
Calendar
Emacs
里日历可以拿来干什么呢?
第一个作用自然是看日期的,最起码得让今天醒目得吧?于是选择了在
calendar-today-visible-hook
上加上calendar-mark-today
。默认今天的日期是有下划
线的,如果不喜欢也可以自己修改calendar-today-marker
。
第二个作用自然是看节日的,为了更加更本地化一点,可以设置一些自己想关注的节日。我 是这样设置的:
把较本土的节日放在了holiday-local-holidays
里,
;; 分别是妇女节、植树节、劳动节、青年节、儿童节、教师节、国庆节、程序员节、双11
(setq holiday-local-holidays `((holiday-fixed 3 8 "Women's Day")
(holiday-fixed 3 12 "Arbor Day")
,@(cl-loop for i from 1 to 3
collect `(holiday-fixed 5 ,i "International Workers' Day"))
(holiday-fixed 5 4 "Chinese Youth Day")
(holiday-fixed 6 1 "Children's Day")
(holiday-fixed 9 10 "Teachers' Day")
,@(cl-loop for i from 1 to 7
collect `(holiday-fixed 10 ,i "National Day"))
(holiday-fixed 10 24 "Programmers' Day")
(holiday-fixed 11 11 "Singles' Day")))
再把其他没在默认日历里的放进holiday-other-holidays
里,
;; 分别是世界地球日、世界读书日、俄罗斯的那个程序员节
(setq holiday-other-holidays '((holiday-fixed 4 22 "Earth Day")
(holiday-fixed 4 23 "World Book Day")
(holiday-sexp '(if (or (zerop (% year 400))
(and (% year 100) (zerop (% year 4))))
(list 9 12 year)
(list 9 13 year))
"World Programmers' Day")))
然后再开启calendar
内置的中国节日支持:
(setq calendar-chinese-all-holidays-flag t)
这样就可以获得一个不错的日历体验了。如果自己还有农历节日需求的话,可以使用
holiday-chinese
来定义。如
;; 元宵节
(setq holiday-oriental-holidays '((holiday-chinese 1 15 "Lantern Festival")))
当然元宵节已经默认被定义了,只需开启calendar-chinese-all-holidays-flag
。
如果这还不够,还有cal-china-x。
第三个功能也可以在calendar
界面添加日记,默认的日记从功能上来说自然是不如
org-mode
加持的丰富。请确保org-agenda-diary-file
的值不是'diary-file
,然后在
calendar-mode-map
下调用org-agenda-diary-entry
即可选择插入日记。
附图:
需要注意,它是不会自动保存org-agenda-diary-file
的,可以利用advice
来修正一下。
(defun org-agenda-add-entry-with-save (_type text &optional _d1 _d2)
;;`org-agenda-add-entry-to-org-agenda-diary-file'里认为如果用户没有输入有效的
;;内容,会弹出对应 buffer 让用户人工输入。
(when (string-match "\\S-" text)
(with-current-buffer (find-file-noselect org-agenda-diary-file)
(save-buffer))))
(advice-add #'org-agenda-add-entry-to-org-agenda-diary-file :after #'org-agenda-add-entry-with-save)
我觉得这样子设置之后,可以轻度取代 org-journal了?
follow-mode
如果你的屏幕很宽,但是实际显示的条目的宽度无法利用这宽屏幕,那么follow-mode
可
以帮助你。一个典型的使用案例是,再打开一个窗口,然后对当前buffer
开启
follow-mode
,这样之后另一个窗口显示的内容会是当前窗口的后续。例如,一个文件有
100行,当前buffer
只能显示10行,那么另一个窗口将会显示下面10行。如果嫌窗口数还
是太少,可以继续增多。
glasses-mode
当遇到驼峰式的变量时,如CamelCasesName
,但是你比较喜欢GNU
式的命名方式(使用
下划线),那么你可以开启glasses-mode
。它只会让CamelCasesName
显示成
Camel_Cases_Name
而不会对原文件做出修改。
不过,大写字母加下划线的组合有点奇怪。
曾经想写一个类似 follow-mode 的包,没想到已经内置了。
follow-mode 感觉很赞
Emacs自带的功能还是比较丰富的,都是宝藏,缺少一个人将它发现出来
一直有个疑问,对于内置功能,去哪里能看到的它的最新动态,要直接到Emacs的代码库? 如果是独立的包一般都会在github可以看到最新的issue和作者的更新。
我是有时候M-x手输命令的时候,发现一些类似的,然后就去细看了一下
我也是这样,也许这个就是内置的包容易被埋没的原因吧。