Tag: elisp

elisp正则expression式searchstring,而不是缓冲区

在emacs lisp文档中,我一直在寻找正则expression式如何searchstring。 我find的是如何在缓冲区中做到这一点。 有什么我失踪? 我应该把我的string吐在一个临时缓冲区中并在那里search它? 这只是elisp的编码风格,我会习惯吗? 有没有一个标准的解决这个问题。 当我只能直接search已经存在的variables时,操纵缓冲区看起来很有用。

摆脱“引用自由variables”字节编译警告

我正在写一个emacs主模式,它使用缓冲区局部variables来存储一些状态: (defun foo-mode () "My nice major mode" (interactive) (kill-all-local-variables) (setq mode-name "foo") (setq major-mode 'foo-mode) (set (make-local-variable 'foo-state) "bar")) (defun foo-change-state () (setq foo-state "baz")) 这工作得很好,并具有在任何缓冲区不使用我的主要模式的财产foo-statevariables没有约束(这是一个好东西在我看来,因为它避免了混乱的符号表)。 但是,字节编译这样一段代码会产生以下警告: Warning: assignment to free variable `foo-state' 使用defvar摆脱警告,但有副作用, defvar现在到处都是,这在我看来是不可取的。 有没有办法摆脱警告,而仍然没有绑定在每个缓冲区模式特定的variables? 或者当我认为这些variables不应该在全球范围内声明时,我误会了?

REPL for Emacs Lisp

什么是Emacs Lisp的一些REPL? Emacs中只有一个吗? Emacs之外有没有在terminal内运行的东西? 感谢致敬!

如何模块化emacsconfiguration?

我已经决定从头开始重写我的.emacs,并且我想要设置一些模块化的东西,以避免一个可怕的1k + LoC init.el文件… 我认为每个configuration都需要解决一些基本问题: 全球选项 编辑function 导航(框架和缓冲区) 键绑定 模式自定义 虽然我仍然想要通过结构来思考,但我正在寻找一些关于如何实现这一目标的指导。 我在github上看过一些.emacs,似乎有些不同的方法,而且没有最好的方式去处理,这有点令人困惑。 我会有兴趣阅读关于如何构build这样一个设置,特别是一些相关的elisp代码的一些想法。 编辑:已经赶上了事情,并没有太多的时间玩这个呢。 将在几天内尝试提出的方法,看看什么是最好的,同时感谢所有的build议! edit2:我一直在使用org-mode的literate init文件 ,这是非常棒的! 我还没有设置特定的加载机制,我一直在使用这个代码,recursion加载我的elisp目录,然后要求或任何安装说明说。 (if (fboundp 'normal-top-level-add-subdirs-to-load-path) (let* ((my-lisp-dir "~/.emacs.d/elisp/") (default-directory my-lisp-dir)) (setq load-path (cons my-lisp-dir load-path)) (normal-top-level-add-subdirs-to-load-path))) 我仍然需要擦亮这个,也许使用自动加载,如果修改过的技巧,一些字节重新编译; 很想听听有关这方面的build议。

如何在Emacs中调用交互式elisp解释器?

现在我在*scratch*缓冲区中写入expression式并通过使用Cx Ce进行评估来testing它们。 我真的很感谢有一个像SLIME或irb这样的交互式解释器,我可以在其中testingEmacs Lispexpression式。

在emacs lisp中将多个path组件连接成一个完整path的正确方法是什么?

假设我有variablesdir和file包含string代表一个目录和文件名,分别。 emacs lisp将文件join文件的完整path的正确方法是什么? 例如,如果dir是"/usr/bin" , file是"ls" ,那么我想要"/usr/bin/ls" 。 但是如果dir是"/usr/bin/" ,我仍然想要同样的东西,没有重复的斜杠。

Emacs评论/取消评论当前行

我知道Emacs已经有了一个关于这个问题的问题,而且这个问题已经结束了,但是我觉得这个问题相当重要。 基本上,我想评论/取消注释当前行。 我以为这是一个非常容易的macros,但是我发现它确实不是。 如果当前行被注释,则取消注释。 如果未注释,请对其进行评论。 而且我也要评论整个行,而不仅仅是从光标位置。 我尝试了这样一个macros: 钙 'comment-dwim 但是,这只能用于评论一条线,而不是取消评论,如果它已经评论。 我不确定它是多么容易,但如果有某种方式,我真的很喜欢它。 另外,我非常喜欢这个想法的原因是当我使用Geany的时候,我只是用了Ce而且是完美的。

绑定键在emacs中增加/减less字体大小

在我的terminal(我有终结者 ),我可以使用组合键Ctrl +和Ctrl-来增加/减less字体大小。 在emacs我可以做以下设置font-height: (set-face-attribute 'default nil :height 70) 但我不知道如何增加/减less它。 我怎么能轻松地添加到我的emacsconfiguration?

C ++ 11模式或emacs的设置?

我正在运行Emacs 23.3.1(Ubuntu,Oneiric软件包),emacs似乎并不了解任何新的C ++ 11关键字,constexpr,thread_local等。另外它不明白'>>'是现在允许使用模板参数,或新的“枚举类”语法。 有没有更新或替代模块? 或者做不到这一点,一些设置,使emacs更多的C + + 11友好的同时?

如何把我的自定义emacs主题作为一个“安全的主题”?

我是Emacs的新手。 所以,我正在使用emacs 24和solarized颜色主题。 当Emacs启动时,它提示我“加载一个主题可以运行Lisp代码,真正加载?”。 当我回答“是”时,它继续“在未来的会议中将此主题视为安全”。 如果我说“Y”,主题得到加载,并 (custom-set-variables (custome-safe-themes (quote ("…" default)))) 被自动添加到〜/ .emacs。 但是,每次打开Emacs,这些问题都会回来! 什么是正确的方法来closures这些?