Questions tagged «elisp»

与其他语言(尤其是与其他Lisp方言相比)有关Emacs Lisp作为一种语言的问题。也就是说,它是关于语言本身的问题。*请勿使用*关于*使用* Emacs Lisp的问题。Emacs Lisp是Emacs编辑器所基于的脚本和编程语言。

4
命名字符串替换?
我经常必须对同一字符串进行多次替换: (format "%s %s %s" "a" "a" "a") ;; gives: "a a a" (这只是一个虚拟的示例,在这种情况下,最好将“ a”与空格粘合在一起,但是通常我会处理更复杂的情况) 有没有办法进行命名替换?例如在python中,将这样写: "{0} {0} {0}".format("a") # or: "{name} {name} {name}".format(name="a")
13 elisp  string 

5
打开orgmode文件时,如何评估elisp?
我有elisp代码,它们希望在加载时在orgmode文件中运行(不同的文件不同,并且在文件本身中定义)。有没有办法做到这一点?我没有在http://orgmode.org/manual/In_002dbuffer-settings.html中看到任何内容 如果我可以在emacs初始化中添加一些在加载orgmode文件时运行专门命名的代码块的东西,那可能是一个解决方案,但是我不确定如何做到这一点,并且理想情况下内置了一些东西。
13 org-mode  elisp 

1
(.123)中的句点含义
我. /path/to/file在bash中了解到用于执行文件。出于好奇,我在Emacs中评估了以下内容 (. 123) ⇒ 123 (read "(. 123)") ⇒ 123 看起来Emacs只是读(. 123)为123,发生了什么事?
12 elisp  list  read 

2
如何修改Elisp的阅读器?
修改阅读器将允许引入新的阅读语法(例如#(hash table)和'(quoted))。许多Lisps都具有这种能力,但是elisp似乎不存在这样的功能。
12 elisp 


3
如何检测当前字符是否是该主要模式的注释字符?
我正在研究将下一行拉到当前行的这个小功能。我想添加一个功能,以便如果当前行是行注释,而下一行也是行注释,则在“上拉”操作后将删除注释字符。 例: 之前 ;; comment 1▮ ;; comment 2 呼唤 M-x modi/pull-up-line 后 ;; comment 1▮comment 2 请注意,;;删除了以前的字符comment 2。 (defun modi/pull-up-line () "Join the following line onto the current one (analogous to `C-e', `C-d') or `C-u M-^' or `C-u M-x join-line'. If the current line is a comment and the …

1
从代码调用命令时如何使用“交互”参数
我有一个名为的命令test,该命令只是从用户那里获取输入并回显它: (defun test (input) (interactive "MInput: ") (message "%s" input)) 我想编写另一个函数来调用它。以下失败: (defun test-forward () (interactive) (test)) 这个错误 test-forward: Wrong number of arguments: (lambda (input) (interactive "MInput: ") (message "%s" input)), 0 这是有道理的,因为test需要一个输入。制作test的input &optional只是使test-forward回报nil没有做任何事情。正确的做法是什么?
12 elisp  commands 

5
毫不干扰地改变文本呈现的方法?
我正在编写用于语音识别的emacs扩展,并且正在寻求有关特定功能的帮助。语音识别器(Dragon)的某些单词识别能力始终很差-训练了几次并不重要,这只会使您无法识别某些单词。通常,在同一时间写主题或编码时,一遍又一遍地使用很多相同的单词。 因此,我编写了一种使用覆盖层来更改单词在缓冲区中的呈现方式的模式。它在单词中使用随机字母,在其下方用随机颜色加下划线,并在其顶部放置随机变音标记(重音符号,变音符号等)。这是屏幕截图(您可能需要缩放以查看标记/下划线): 然后您可以说“紫色p头发”,它将在单词“ a”下寻找带有紫色下划线的单词,并带有一个变音符,看起来像头发,然后为您键入该单词。因此,在上面的屏幕截图中,这将导致emacs为您键入“ regexp-quote”。 这个想法是让您使用识别器一贯擅长识别的有限词组来引用屏幕上已经使用过的任何词组。 它工作得很好,只是偶尔会发生碰撞。为了做到这一点,我可以学习一致地引用单词,就像我使用单词的md5哈希中的字节一样,而不是(random)让算法分配更改以免发生冲突。我只发现了6种易于区分的颜色(当下划线只有一个字符宽且只有一个像素厚时很难做到)和3种易于区分的变音符号(易于区分彼此,并且与上面的下划线也不能混淆线或与下划线重叠的位置),请参见上方来源上方。 我需要更多方法来更改渲染,以减少碰撞频率。理想情况下,渲染修改将: 不要被其余的文本所震撼。例如,这导致我忽略了反视频属性。 不容易与其他更改混淆。上划线很容易被误认为前一行的下划线。除非字体大小不切实际,否则许多变音符看起来都差不多。 在空间上靠近其他变化所在。现在,一旦我的眼睛找到了目标角色,所有的信息,标记,下划线和字母就在那里。 可以正确显示变音标记的固定宽度字体(编码所需)很好地工作(我必须从Consolas切换到DejaVu Sans Mono,以使标记正确呈现) 在拉丁字母上工作。例如,有阿拉伯文的组合标记,但它们不与拉丁字母字符组合。 不要更改字母的颜色,因为它已经用于语法突出显示。 实际上可以在emacs中使用emacs lisp;) 也许有特殊的unicode字符控制渲染,可能会被滥用以开辟新的可能性?还是一种加粗下划线的方式,以便我可以轻松区分更多颜色?还是其他一些晦涩的emacs功能,可让您在unicode之外的字符顶部显示标记?

1
为缓冲区启用词法绑定的潜在陷阱是什么?
这是通过讨论启发词汇结合 VS 词汇,让在此问题。由于词法绑定使您能够使用有用的闭包,人们可能已经习惯于其他语言(如JavaScript),为什么不一直启用它呢? 假定与旧版Emacsen的向后兼容性无关紧要,如果在旧版代码缓冲区中启用它,您应该寻找什么陷阱?

1
重新实现Elisp
Emacs在C中为elisp实现了一个解释器,该解释器实际上是参考实现。elisp是否有其他语言(特别是Javascript)的其他实现?完全重新实现elisp所需的最少基本元素集是什么?这样做的主要困难是什么(例如动态范围界定)?
12 elisp 

5
如何理解此递归代码?
我在手册中找到了此代码,该手册An Introduction to Programming in Emacs Lisp在cond函数的帮助下基于输入的行数找出了小卵石的数量,即如果rows = 2,则小卵石应为3,如果4行,则应为10小卵石那里。 (defun triangle-using-cond (number) (cond ((<= number 0) 0) ((= number 1) 1) ((> number 1) (+ number (triangle-using-cond (1- number)))))) 在传递参数4之后求值到10: (triangle-using-cond 4) 手册并未明确说明此示例代码中每个步骤会发生什么,并且我无法弄清楚递归的工作原理。您能否帮助我逐步了解机械原理,每种情况下会发生什么?
12 elisp  learning 

2
有哪些带有不错源代码的内置软件包?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 5年前关闭。 我试图熟悉Emacs Lisp,其语法,数据结构等,所以我想知道有哪些内置软件包,其来源可以帮助我更好地了解如何使用该语言并学习其习语?

3
实现像format-time-string这样的功能的最简单方法是什么
该 format-time-string 函数接受一个字符串,并%用一些特定的文本替换该字符串中的一组特殊构造(以开头的字符)。 我想在自己的函数中实现类似的功能: 我在字符和符号之间有一个清单,例如:'((?n . name) (?r . reputation))。 该函数应采用类似的字符串"My name is %n, and my rep is %r"。 它应将%n和替换%r为变量name和的值reputation,然后返回结果。 它应该%%像一样处理format-time-string(用代替%)。 实现此功能的最简单方法是什么? 是否有一个库或函数可以简化此过程?%%正确处理很重要。
12 elisp 

1
使缓冲区局部变量再次成为全局变量
我正在尝试使用局部变量并进行设置: (defvar-local foo nil "Buffer local foo") 后来我重新设计了程序以使用全局变量,而不是使用: (defvar foo nil "Not buffer local foo") 但是该变量仍然是局部缓冲区,甚至(kill-local-variable 'foo)没有杀死它。 基本上,我该如何“撤消” make-local-variable?


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.