【问题标题】:What Are The Most Important Parts Of ELisp To Learn If You Want To Programme Emacs?如果你想编写 Emacs,ELisp 最重要的部分是什么?
【发布时间】:2011-02-01 22:15:16
【问题描述】:

我每天都使用 Emacs,因为它是 Erlang 的标准编辑器。

我决定作为我的新年决心学习编程 eLisp。我认为写一本关于 eLisp 的书是最好的学习方式。

我已经取得了不错的进展: Learn eLisp For Emacs

本书的战略结构是

  • 入门/基础
  • 更高级的 eLisp
  • 编写次要模式
  • 编写主模式

我已经了解了基础知识(即这 4 点中的第一点),涵盖:

  • 评估表达式
  • 调试中
  • 添加菜单项/工具栏
  • 加载您自己的 emacs 文件
  • 等等等等

如果你正在写一本关于编程语言的书,你通常会从熟悉该语言开始——我不知道——所以我现在的主要问题是完整性问题:

  • 我怎么知道我已经涵盖了 Emacs 程序员应该掌握的所有功能?
  • 如何确保内容中没有空白?

所以我想我会通过在这里询问社区来解决这些问题。我的问题是我的目录缺少什么?(特别是更高级的 eLisp 部分应该包含什么)。

【问题讨论】:

  • 一本关于 Emacs 的书的简介很好,你讨厌它,而且你似乎认为只有坐在大师的脚下才能学会它。先生,我会认真考虑重新考虑您的序言。
  • 我认为您应该在该网站上添加一个非常突出的免责声明,以使“我写这本书是为了让自己精益 eLisp”部分不可错过,并确保人们知道检查如果他们有任何问题,请确定来源。
  • 我必须同意 Slomojo。选择(甚至志愿服务!)教别人如何做你不喜欢的事情并自称不擅长自己,这似乎是相当不正当的。
  • 我并不讨厌编程,确实我很擅长。有些事情我喜欢做(比如 Erlang),有些事情我喜欢做和不喜欢(比如 Linux/Unix 和 Emacs)。为了更好地使用 Erlang,我需要更好地使用 Emacs。我最不喜欢 Emacs 的一件事是缺乏初学者材料和一种似乎存在于它周围的“真正的程序员从参考手册中弄清楚”的态度。我是从一堆 IBM OS/360 手册(3 英尺长!)中学习编程的——但如今,这类东西没有任何借口。

标签: emacs elisp


【解决方案1】:

现在这是学习语言的一种有趣方式...

我认为您可能已经跳过了入门/基础部分中的一些基础知识。如果您还没有读过它,我建议您阅读"An Introduction To Programming In Emacs Lisp"gnu.org),它涵盖了我希望在“基础”部分看到的内容。我不会费心剪切/粘贴目录。

就你何时写完一本完整的书而言...好吧,一旦你以“如何”形式重新编写了Emacs Lisp manual,你就知道你已经完成了。或者,如果您写了一本书,可以用来回答/解释所有elispemacs 问题,那么您可能已经获得了不错的报道。

您能写出哪些高级功能?有adviceprocess communicationnon-ASCII textsyntax tablesabbrevstext propertiesbyte compilationdisplay tablesimages,还有更多@98765433。

注意:elisp 的正确大小写要么全部小写,要么可能是大写 E。GNU 文档根本不使用“elisp”(主要作为目录名称,全部小写),它更喜欢“Emacs Lisp。”

注意:在您本书的当前版本中,您对全局变量持否定态度。可能值得阅读 RMS paper 以深入了解所做的设计决策,特别是在 global variablesdynamic binding (后者您尚未涵盖,这是您的关键(基本)概念) '已经在你的书中弄错了)。

【讨论】:

  • 我已经阅读了这两个 GNU 手册 - 但如果你不了解 Lisp/elisp,它们就没有多大用处。我书中的重点是“始终有效的代码”。阅读,尝试,让某些东西发挥作用'。整个绑定问题是我最关心的问题。邮件列表上的几个人说“嘿,使用 CL 包使它像普通的 Lisp 一样”,但这并没有太大帮助。到目前为止,我在哪方面弄错了?
  • 我真的很想了解哪些高级功能是让用户熟悉用 elisp 编写代码所必需的——这样他们就可以从现有(综合)文档中“自我服务”。
  • 我对全局变量持否定态度,因为在 1984 年我在 Fortran 程序的第 22 行使用了一个通用数据结构,而在 1986 年我花了 8 个月的时间寻找错误(全职 - 8 个月,1 个错误)。我现在在 Erlang 中编程,它避开了全局变量/共享状态——实际上它甚至不允许变量变化!
  • @Gordon 关于你做错了什么。 setsetq 没有定义全局变量,对符号的描述不准确,书中经常将返回值与副作用(消息)混为一谈,对 fill-column 范围的讨论不准确等。
  • Cheers Trey,将回顾我迄今为止所写的内容,并考虑到这些 cmets。
【解决方案2】:

与其在这里询问社区,不如使用社区已经提供的东西?查看所有标记为“elisp”的问题,看看它们适合你的书。对人们真正想要了解的内容进行调查可能是您将获得的一些最佳信息。

【讨论】:

  • 我要去。但我仍然有系统性的偏见,我不知道我不知道什么。
【解决方案3】:

我已经阅读了这两个 GNU 手册 - 但如果你不了解 Lisp/elisp,它们就没有多大用处了。

提示: 如果你不懂 Lisp,Emacs 没多大用处。

当然不是真的,但你明白了。这个是真的:

提示:如果您了解 Lisp,Emacs 会非常有用。更别提更多乐趣了。


写下要学什么:

  1. 符号(它们是简单的对象,具有属性——不仅仅是标识符)

  2. lists -- cons 单元格,列表结构(包括修改/共享)

  3. 评估

  4. 功能应用

  5. 正则表达式

  6. text/overlay/string properties(值可以是任何 Lisp实体)

  7. 缓冲区窗口

【讨论】:

    【解决方案4】:

    我建议您看一下 Emacs Emacs Lisp Intro“Emacs Lisp 编程简介”和 Elisp“Emacs Lisp 参考手册”中包含的两本 Info 手册已经提供的内容,然后决定你想添加什么或做不同的事情。

    【讨论】:

    • 区别在于书的结构。我正在努力让不知道 elisp 的人能够使用“始终工作的代码”来学习。这两本手册都不是以这种方式工作的。我发现自己正在神秘地研究它们,试图弄清楚它们的意思。第一次使用一种语言时调试代码非常困难。通常调试是为了使代码正确(你知道什么是正确的)。从调试开始就是要了解什么是“正确”——这意味着了解工作代码的样子。
    • 现在浏览了您的书,并浏览了 Chassell 的 Emacs lisp 编程简介,我不知道您所说的“始终工作的代码”是什么意思? Chassell 的代码有效,不是吗?在我看来,你的书和他的书涵盖的领域与我非常相似。
    • 可能,我在写我的 3 周后才发现他的书存在。我以前从未见过,也没有听过任何人提到它。我认为不同之处在于我的网站是一个带有“关键字在链接锚文本”的本地网络资产,因此可以被更多人找到和使用——但这与内容有点正交。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-14
    • 2020-02-05
    相关资源
    最近更新 更多