如何在Emacs中阅读源代码

不同实現展开的结果都不一樣的,做的好的就比較详细,做的差的像 Clisp 只给个 docstring。

[2]> (describe #'fib)

#<FUNCTION FIB (N) ...> is an interpreted function.
Argument list: (N)
Documentation: loop-based iterative computation of the nth element of the
Fibonacci sequence

你用的是什么实现?没见过Command作为prompt的啊,见识少。。。

現在包了个 VirtualBox 在 macOS 上用。

啊哈,Symbolic Genera,厉害了,不愧是玩Lisp的高手。(以前朋友介绍过,没折腾起来,当时真是弱啊)

可以多來 freenode 的 #lisp 晃晃,有很多大佬。比如 https://github.com/robert-strandh。

Sure, 我还是蛮喜欢Common Lisp的。

具体内容不论,因为各人习惯不同,但分享的工具和技巧还是要给赞的。

另外借这个帖子不吐不快一下:我发现很多使用 emacs 及周边来做生态写博客的都有一个毛病,就是恨不得在自己的博客的任何一个地方都标榜出自己是用 emacs 写的,尤其是在楼主这个博客上特别明显。很多小的细节乍看挺炫酷的,但仔细一把玩却发现用户体验很糟,主要是糟在两个地方,一是交互有问题,二是信息噪音太多。

举例来说,用了 org-info 搞的快捷键这功能本身是挺好的,但你从交互的角度来看:

  1. 快捷键的设定违和太重,你自己是 emacs user 你不会觉得,但是你的读者五花八门干啥的都有,你写博客除了自己记录东西更重要的目的是为了给别人看(不然你也不会抱怨反馈少),然而大多数人看了这个快捷键的配置只会摇头叹息,从有效的使用率上来看,这就是个废的。

  2. 上下导航一下(n/p),当你走到下面(页面滚到一段之后)再往回走你会发现什么?那个 stickey 的导航菜单条遮住了当前项的标题……从交互的角度来看这太蠢了,我怀疑楼主你自己测试过你的快捷键浏览没?你还不如让你的导航栏不要 stickey 或者干脆用快捷键呼出算了。

信息噪音的问题就不举例了,因为可以说到处都是,这些其实都是各种工具生成的 meta info,本质上它们是有用的,但是对于良好的阅读体验来说它们反而是干扰。这其实涉及到你的排版功底和选择,虽然我们可能都不是专业的设计师,但最起码要从读者的角度来审视一下自己的排版、布局、信息选择等等。比方说数码照片也有很多元信息,但你绝不会想在浏览和欣赏照片的时候看到到处都是的元信息来干扰你的视线,你只会在搜索/筛选/编辑照片的时候希望能看到相关的元信息。同样的道理,作为内容的撰写者和管理者,你或许希望元信息随处可见、伸手可及,但你的读者——相信我——很讨厌这些东西。

1 个赞

其实相比于其他博客,有的也是用org-publish生成的。没有这些outline toggle。我也想去掉,或者简化。但是我还不懂JS,不知道怎么去掉。。。org-infojs也有showall。但是似乎对于长文并不合适。我也是权衡之间,等会一点JS了就修改下。CSS我都是凑合着搜索一下,学一点,然后修改一下。博客也是最近才搭建起来的。 设计得这么糟糕真是抱歉。不过谢谢你的简易。

我点开链接是404,其他人有这个问题吗?

1 个赞

Link is now updated.

我也提个关于 blog 的建議:正文字有点小,大概是 13 号,推薦用 16 号。

这是你自己的博客?能否给个链接或者提示:您是用什么技术/架构实现基于org-mode的静态博客的?谢谢!

Thanks

我用的是 Org Mode 的 org-publish. 具体的你可以参照我的配置 https://github.com/stardiviner/emacs.d/blob/develop/init/org-mode/init-org-publish.el 。可以查看git log,看我是怎么一步一步搭建的。本来是想写一篇博客关于搭建这个org-publish的。但是自己的还没有完善,有一些小地方需要修改。就将这个任务延后了。

1 个赞

确实打不开啊

可以打开啊。我是更新了链接地址的,原本用的是空格。后来改成-之后的。我现在刚刚测试打开链接,没问题啊。不会是你无法访问github.io吧?

当然用 less mode 啦。

原來是elisp代碼閱讀。感覺還是不太方便啊。

閱讀C/C++,主要:

動態:cgdb,配置快捷鍵next/step/up/down

靜態:https://github.com/MaskRay/ccls/wiki/Emacs

textDocument/definition有一些規則,比如在定義處跳到聲明,聲明跳到定義,類別名跳到constructors等; textDocument/references搭配read/write/addr role,用write可以快速找到在哪裏被賦值 $ccls/memberHierarchy,快速瞭解一個類別哪些成員。以前看gof design patterns,教導我先寫函式再寫變元,說是接口在前。然而ADT告訴我一個類別的組成部分纔是最重要的,大的C++原始碼庫的類別經常動輒好多個成員函式,列不完。 $ccls/callHierarchy有些慢。但可能Emacs佔了主要原因,沒啥補救措施。

無源碼/調試信息二進制,gef/pwndbg

1 个赞

并不限定于Elisp代码阅读,主要是提一些工具用于在阅读代码时能够标注,跳转,outline overview之类的功能。

多谢!恩,我结合你的设置应该可以大致了解的。