Emacs Lisp功能指南?

问题描述 投票:16回答:12

我已经使用Emacs超过三年了,但是在Lisp中编写甚至小函数还需要几天的时间。我查看了GNU Emacs Lisp Reference Manual但它的庞大和结构与JavaDoc完全相反,不是从功能到描述,反之亦然。

什么让我的生活更轻松的是某种类似JavaDoc的小文档,其中包含最常用的Emacs内部函数以及它们的快速描述。

    (point) - returns current position in buffer
    (save-excursion (p)) - saves current position in buffer before 
                           executing (p) and restores it afterward.

有谁知道我在哪里可以找到类似的东西?

emacs elisp
12个回答
12
投票

这个网站有一些可能有用的emacs lisp摘要信息:http://xahlee.org/emacs/elisp.html

特别是,请查看该页面上的这些链接:Basic Text-editing FunctionsEmacs Lisp Idioms Batch Text Processing


1
投票

如果你愿意花钱买一棵枯树,我建议你

describe-variable (来源:Learning GNU Emacs


0
投票

在XEmacs中,我也相信Emacs,按C-h f,然后选项卡完成的Tab键,在那一点上是所有函数,将为您提供编辑器知道的函数列表。

您只需使用光标键并滚动到您想知道的,然后按Enter键查看详细信息。

如果您想要的功能列表(包含更多信息)可以提供给您。

此列表是当前可用的所有函数,因此如果您安装了lisp软件包,它将显示这些软件包提供的功能以及本机功能。在我的XEmacs副本中,今天我在列表中有6,586个函数。 Emacs将是类似的。

问题是并非所有函数都具有使其具有上下文意义的名称(即并非所有菜单变量/函数都包含单词菜单,因此如果仅按名称输入,则会遗漏一些内容。

您可以使用INFO页面(在菜单上)更加局部地查看它们,并获得相同的使用信息。


0
投票

下载Emacs的源代码。转到src /文件夹并键入:

grep -r DEFUN *

您将获得Emacs的所有原始Lisp函数的列表。


13
投票

你有没有尝试过emacs中的内置手册?打开任何lisp缓冲区(或lisp模式下的任何缓冲区),将您的点移动到任何函数或变量,然后点击C-h f(用于函数)或C-h v(用于变量)。 Emacs将为您提供功能/变量的相当简洁的描述。

例如,(save-excursion)的手动内容是

save-excursion is a special form in `C source code'.
(save-excursion &rest BODY)

Save point, mark, and current buffer; execute BODY; restore those things.
Executes BODY just like `progn'.
The values of point, mark and the current buffer are restored
even in case of abnormal exit (throw or error).
The state of activation of the mark is also restored.

This construct does not save `deactivate-mark', and therefore
functions that change the buffer will still cause deactivation
of the mark at the end of the command.  To prevent that, bind
`deactivate-mark' with `let'.

好处还在于内置手册可以让您“链接”到函数的源代码和其他可能相关的函数,这样可以很方便地浏览。

当然你不能用这种方式学习lisp,但是为了查找函数文档,这是一个很好的入门者。如果您发现内置手册不可理解(有时确实会发生),那么您可以将该功能谷歌;)


11
投票

GNU Introduction to emacs lisp肯定比参考手册更平易近人。


9
投票

我想补充几件事:

  • M-x apropos - 搜索您指定的任何字符串的函数和变量(例如目录)。请注意,这与C-h a略有不同,% g只能找到交互式功能
  • 找到一段类似的代码并复制它 - 你可以通过查看已经完成的工作来学习很多关于如何做事的知识。如果你想看一个特定的函数,一个好的方法是访问dired中的主lisp源目录(例如d:/ product / emacs / lisp或/ usr / share / lib / emacs / lisp)并做C-h f将查找所有文件,查找您键入的任何字符串。打开该文件,看看其他人用它做了什么。
  • C-h vEmacs wiki - 正如其他人提到的那样,你可以打开源代码,定位一个函数或变量,然后获取文档。
  • 查看M-x apropos,它有一个垃圾负载的Emacs lisp模块供您仔细阅读。

8
投票

我认为你采取了错误的做法。在学习编程语言和一组库(统称为“Emacs Lisp”)时,您需要在微观和宏观尺度上进行处理。在开始编写软件之前,您需要知道可用的工具。这就是Emacs Lisp手册旨在教育你的内容。你真的需要坐下来阅读整个事情。这样你就知道了Emacs提供的功能。

完成后,您需要“微观级别”信息。有许多来源提供了这一点。如果你对你需要做什么(“使用缓冲区”)有一个大概的了解,那么Lisp参考是一个很好的地方,可以找出你需要知道的东西。如果您知道有一个功能可以满足您的需求,但又不记得名称,那么C-u C-h aM-x describe-function)将帮助您搜索文档。如果你知道你想要使用什么功能,但不记得它是如何工作的,那么C-h fcl)将为你排序。

所以无论如何,关键是学习Emacs Lisp,然后让Emacs帮助你了解细节。功能列表不会教你太多。

(哦,还有一件事 - 你应该熟悉Common Lisp。大多数Emacs库使用loop,这是在Emacs Lisp中实现的有用的CL函数.destructuring-binddefun*http://www.emacswiki.org/emacs/EmacsNewbieWithIcicles等等都在那里,它们非常有帮助。)



2
投票

为了理解其中的内容,通常看一下源代码是很有用的。

<f1> f


1
投票

你试过qazxsw poi吗?它必然是qazxsw poi。 describe-function的示例:

point

像大多数Lisp系统一样,Emacs有一个集成的文档工具!

  • 任何Lisp函数或变量都可以声明一个可选的doc字符串。
  • 几乎所有标准命令或函数都声明了一个有用的文档字符串。
  • Emacs(与大多数Lisp系统一样)允许您随时显示任何函数或变量(point is a built-in function in C source code. (point) Return value of point, as an integer. Beginning of buffer is position (point-min). [back] <f1> f)的文档字符串。
  • 显示时,文档字符串是可浏览的,这意味着您可以单击符号以查看其文档字符串,或转到相应函数或变量的源。
  • 一旦你评估任何<f1> vdefun,它的doc字符串可以通过defvardescribe-function获得:这个文档还活着!

1
投票

M-x find-library RET <库名>是您真正需要的

© www.soinside.com 2019 - 2024. All rights reserved.