代码之家  ›  专栏  ›  技术社区  ›  vava

Emacs Lisp函数指南?

  •  16
  • vava  · 技术社区  · 15 年前

    我已经使用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.
    

    有人知道我在哪里能找到这样的东西吗?

    12 回复  |  直到 13 年前
        1
  •  14
  •   polyglot    15 年前

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

    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,但是对于查找函数的文档来说,这是一个很好的开端。当您发现内置手册不可理解时(有时确实会发生这种情况),那么是时候用谷歌搜索该功能了;)

        2
  •  12
  •   luapyad    15 年前
        3
  •  11
  •   Greg Ball    15 年前
        4
  •  10
  •   Joe Casadonte    15 年前

    我想补充几点:

    • M-x apropos -在函数和变量中搜索指定的字符串(例如目录)。请注意,这与 C-h a ,它只查找交互式函数

    • 找到一段类似的代码并复制它——通过查看已经完成的工作,你可以学到很多关于如何做事情的知识。如果您想查看某个特定函数的示例,一个好方法是访问dired中的主lisp源目录(例如d:/product/emacs/lisp或/usr/share/lib/emacs/lisp),然后执行以下操作 % g

    • C-h f C-h v -正如其他人提到的,您可以打开源代码,在函数或变量上定位点,然后获取关于它的文档。

    • Emacs wiki

        5
  •  8
  •   jrockway    13 年前

    我认为你采取了错误的方法。当学习 编程语言和库集(统称为“Emacs Lisp”),您需要从微观和宏观两个层面来处理它。 在开始编写软件之前,您需要知道您使用了哪些工具 有空的。这就是Emacs Lisp手册的目的 你来吧。你真的需要坐下来读整件事。那个

    在你这样做之后,你需要“微观层面”的信息。有 您需要做的(“使用缓冲区”),然后是Lisp引用 这是一个了解你需要知道什么的好地方。如果你知道的话 有一个函数可以做你想做的,但是你不太记得了 那名字呢 M-x apropos ( C-u C-h a )将帮助您搜索 文档如果您知道要使用什么函数,但不知道 还记得它是怎么工作的吗 M-x describe-function ( C-h f

    所以无论如何,关键是学习Emacs Lisp,然后让Emacs帮助您 详细情况。函数列表不会教你很多东西。

    (哦,还有一件事——你应该熟悉一下常见的语言 口齿不清。大多数Emacs库使用 cl ,哪些是有用的CL 在Emacs Lisp中实现的函数。 loop , destructuring-bind , defun*

        7
  •  2
  •   Andreas Röhler    12 年前

    为了理解正在播放的内容,经常需要查看源代码。

    http://repo.or.cz/w/elbb.git/blob/HEAD:/code/Go-to-Emacs-Lisp-Definition.el

        8
  •  1
  •   Sébastien RoccaSerra    15 年前

    你试过了吗 <f1> f ? 这是必然的 describe-function . 以身作则 point

    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]
    

    与大多数Lisp systeme一样,Emacs有一个集成的文档工具!

    • 几乎所有的标准命令或函数都声明了一个有用的文档字符串。
    • Emacs(与大多数Lisp系统一样)允许您显示任何函数或变量的文档字符串( <f1>F <f1> v )随时都可以。
    • 一旦你评估了 defun defvar ,其文档字符串可通过 describe-variable :这个医生还活着!
        9
  •  1
  •   ahearhaer    8 年前

        10
  •  1
  •   Glorfindel RameshVel    5 年前

    如果你愿意花钱买一棵枯树,我推荐你

    Learning GNU Emacs
    (来源: oreilly.com )

        11
  •  0
  •   user Roman    12 年前

    按C-h f键,然后按tab键完成tab,此时 全部的 函数,将为您提供编辑器了解的函数列表。

    您只需使用光标键,滚动至您想要了解的位置,然后按enter键查看详细信息。

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

    问题是,并非所有函数都有使其上下文有意义的名称(即并非所有菜单变量/函数都有单词menu),因此如果只按名称,您将错过一些内容。

    您可以使用“信息”页面(在菜单上)查看它们,使其更符合主题,并获得相同的使用信息。

        12
  •  0
  •   std    8 年前

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

    grep-r DEFUN*