Emacs

使用,扩展或开发Emacs的人员的问答

2
如何操纵时钟时间(组织模式)
我经常忘记要么退出一项任务,要么退出另一项活动。 例如,我现在正在执行一项(计时的)任务,然后我的经理走进来,我们开始了持续了40分钟的讨论……所以不能忽略。 最好的方法是什么?我希望-如果可能的话-从我正在从事的主要任务中减去讨论的时间,并将其添加到新的活动中。
10 org-mode 

3
用省略号后的点扩展组织模式子树?
我喜欢组织模式,但一直困扰我的一件事是,如果要点是折叠的子树的省略号之后,则按TAB不展开它。例如,如果该点在此处(由表示|): * Grandiose Plans ** Save the world...| ** Colonize Mars... ...然后按TAB,没有任何反应。相反,我必须把重点放在这里: * Grandiose Plans ** Save the world|... ** Colonize Mars... ...然后我可以展开子树。 请注意,使用C-e将光标移动到标题的结尾并不能解决此问题,而是可以解决此问题。例如,看下面这棵树: * Long level one heading foo bar baz fizz buzz|... ** Shorter level two heading... 该点位于第一个标题的末尾。如果按向下箭头或向下C-n移动一条线,则该点将位于此处: * Long level one heading foo bar baz fizz buzz... …
10 org-mode 

2
如何在Cx Cc之后设置临时停止?
如果我C-x C-c在emacs中运行,它将立即关闭。如果我将其设置confirm-kill-emacs为y-or-n-p关闭前将要求确认。 而不是y-or-n-p,我想在关闭emacs之前设置一些临时计时器3秒钟。所以,如果我按C-x C-c它应该显示类似 Emacs将在3秒钟后关闭。按Cg停止 如果我什么都不做,它应该关闭emacs,但是如果按C-g,它应该防止关机。我该如何实现?
10 quitting  timers 

2
是否有用于定义键盘绑定的标准/推荐语法?
我已经看到了以下所有定义键盘绑定的内容。所有这些工作(至少在MS Windows上有效)。我不知道是否还有另一种方法可以做同样的事情。 我想知道是否有定义键盘绑定的标准或推荐方法,是否建议避免其中的某些方法。 (global-set-key "\M-r" 'some-command) (global-set-key [(meta r)] 'some-command) (global-set-key [?\M-r] 'some-command) (global-set-key (kbd "M-r") 'some-command)

1
重命名局部变量重构
是否有一个elisp重构工具可以重命名局部变量和函数参数?我希望能够转向: (defun my-func (s r) ... (use s .. r)) 变成: (defun my-func (string replacement) ... (use string .. replacement)) 使用知道如何查找变量引用的方法。如果不是超级卫生,我还可以。
10 elisp 



2
软件包维护者不使用Emacs软件包管理器的技术考虑?
我注意到一些著名的软件包维护者选择不使用Emacs软件包管理系统(ESS?)或抱怨其局限性(Helm)。 引用Helm的README.md: 警告:由于package.el的概念不正确,该概念负责获取helm文件并对其进行编译,因此从melpa和list-package升级时,大多数时间用户都出错。为了避免这种异步现象,已添加了对Helm的依赖关系,以强制package.el在干净的环境中编译其文件。从git安装并使用make文件的人不会遇到这个问题,尽管建议使用Async,但是它不需要Async,因为它修复了所有其他可能由(m)elpa的package.el安装的软件包的安装。有关更多信息,请参见常见问题解答。 当前的软件包管理系统可能暗示哪些确切的技术限制async?为什么需要将软件包用作依赖项?

1
使org-blank-before-new-entry区分TODO列表和文本大纲?
像我们许多人一样,我将org-mode用于两种不同的情况: 作为待办事项清单管理员 作为文字大纲 我希望我的空白行根据上下文而有所不同。 待办事项清单:无空白行 文字轮廓:非标题文字在标题之前自动插入1个空白行 换句话说,当我在待办事项列表中连续有多个标题时,我不希望它们之间出现断行。 TODO列表模式,无换行符: * Organize Party [33%] ** TODO Call people [1/2] *** TODO Peter *** DONE Sarah ** TODO Buy food ** DONE Talk to neighbor 但是,当我写文本时,我希望换行是为了视觉空白/易于阅读。 大纲模式,标题前为空行: * Heading This is a document that has a heading, and a body. The body will …

2
组织模式导出:每段缩进第一行,采用“文学”风格
我可以在导出到ODT(或其他格式)时使用组织模式上的开关来格式化我的 这是一个段落这是一个段落这是一个段落这是一个段落这是一个段落这是一个段落这是一个段落这是一个段落这是一个段落 这是另一段,这是另一段,这是另一段,这是另一段,这是另一段,这是另一段,这是另一段,这是另一段。 变成: This is a paragraph this is a paragraph this is a paragraph this is a paragraph this is a paragraph this is a paragraph this is a paragraph this is a paragraph this is a paragraph. This is another paragraph this is another paragraph this is …

1
emacs可以自动关闭打开的LaTeX标签吗?
使用时web-mode,输入</将会自动完成最高级别的打开标签名称。例如,如果我有空缺<div>,</将自动完成</div>。 可以在LaTeX中获得相同的东西吗?举例来说,如果我有一个\begin{foo}标签,我怎样才能使emacs的自动完成的\end还是\end{要\end{foo}?
10 latex 

7
如何实现类似于Magit中使用的弹出菜单
题 我想以弹出菜单的形式创建用户界面,该弹出菜单类似于Magit中使用的弹出菜单。 特征 弹出窗口的定义 在此问题的上下文中,弹出窗口意味着很少有包含菜单项集合的临时窗口,以便用户可以选择其中一项,并且只能选择其中一项。 在屏幕上的位置 允许弹出窗口出现在屏幕的任何部分,但是希望它应该非常明显,因此应该出现在当前活动的窗口旁边。 弹出缓冲区的内容 项目应以漂亮的表格形式显示。问题的上下文很漂亮,这意味着视觉上很吸引人,可以通过将菜单项置于直行中来轻松实现此效果complete--insert-string,例如参见 。本段用于进一步说明,您可以按照自己的方式进行操作,这不会使您的答案不正确。 菜单项的选择 选择可以通过一次按键或使用鼠标(尽管不是很重要,因此包含不支持鼠标的命题的答案是合法的)来执行。如果您提出支持鼠标的解决方案,请注意,用户应该能够以直观的方式选择菜单项,即,通过左键单击所需的选项。 NB鼠标可以以多种方式使用,也欢迎使用其他方式表示选择。 消除弹出窗口 一旦用户以上述方式选择了菜单项,就应从缓冲区中消除缓冲区并因此将其窗口从视图中清除并杀死。调用弹出菜单之前已处于活动状态的窗口应再次获得焦点(即变为活动状态)。 返回值和参数 优选地,动作的这种结果应该导致返回Lisp对象。Lisp对象可以是: nil—这表示用户已通过按C-g或以其他方式† 终止了弹出菜单。 string—字符串(允许使用符号)应string-equal 位于作为实际项目集合提供给弹出菜单的字符串之一上。 让程序的其余部分知道用户的选择,或者可能没有用户选择的替代方法是可以接受的。但是,如果不清楚如何执行其他操作,请立即让所有答题者即兴回答,也不要要求我进一步说明这方面。 这都是为了返回值。至于输入参数,它们至少应包括代表可能选择(即菜单项)的字符串集合。 可接受的答案 预期答案可以采用以下形式: 足够的代码段,使受过教育的读者可以编写如上所述的功能;不需要或不需要编写整个工作功能。但是,为了避免不确定性(可以省略大量代码吗?),我应该注意,应在答案的文本部分中描述代码段的缺失部分。 指向实现类似功能的现有库的链接。为避免不确定性,我应该注意,在我们的情况下,类似意味着该库可用于创建具有至少2个或3个上述功能的弹出窗口(请参见上面的定义)。如果提议的库与无法满足先前陈述的条件不同,则将对每个此类情况进行独立判断,并且如果OP认为有用,将始终予以驳回。 内置Emacs功能或第三方功能的描述,这些功能可用于实现“功能”部分中描述的任何功能,请参见上文。为了避免不确定性,请注明你的答案可以很清楚如何是谁想要实现未来的读者有用的弹出,类似于Magit使用弹出式菜单。 †中止弹出菜单的替代方法可能包括以下几种(但不仅限于这些): 在弹出菜单窗口之外单击; 杀死包含弹出窗口的缓冲区而没有做出选择。
10 magit  popup 

1
如何找出从(backtrace / stacktrace)调用函数的位置?
我遇到了一个问题,即区域被停用(在瞬态标记模式下)。该函数deactivate-mark被调用,我想知道从哪里(以及为什么)调用它。 我尝试了一下M-x debug-on-entry RET deactivate-mark,但它停止了,但是我找不到找到呼叫者的方法。整个显示的堆栈跟踪为: Debugger entered--entering a function: * deactivate-mark() 我尝试过,M-x edebug-eval-defun但是Edebug也不显示调用方。 我如何找出为什么(从哪里)deactivate-mark被调用?我正在寻找backtrace或stacktrace的功能。 编辑: 一个advice-add窍门: (defun message-show-backtrace () (message "%s" (backtrace-frame 10))) (advice-add deactivate-mark :before #'message-show-backtrace) nil在产生*Messages*。 编辑:有关更多信息deactivate-mark:http : //emacshorrors.com/posts/deactivate-mark.html

1
文件路径如何映射到.dir-locals.el中的子目录?
我喜欢这个主意.dir-locals.el。我的.dir-locals.el主目录中有我自己的文件,该文件应该设置我打开的目录/文件的所有变量,除非.dir-locals.el离我打开文件的目录更近。但是,即使文件被识别,子目录的目录变量也不会应用于打开的文件。 这是我的~/.dir-locals.el: (("dev/school" . ((indent-tabs-mode . nil) (c-basic-offset . 4))) ("dev/test" . ((indent-tabs-mode . nil) (c-basic-offset . 4))) (c-mode . ((c-file-style . "linux") (c-basic-offset . 8)))) 当我打开文件~/dev/test/test.c的变量indent-tabs-mode设置为t与c-basic-offset是8。 (describe-variable 'c-basic-offset)该文件中的内容告诉我它设置为8from ~/.dir-locals.el。 (describe-variable 'indent-tabs-mode)该文件中的值表示(t)处于默认状态。 我能以某种方式达到期望的行为吗?我究竟做错了什么?文件路径如何映射到中的子目录~/.dir-locals.el? 编辑: 正如乔纳森(Jonathan)所建议的那样,我也尝试过: (;; dev/school subdir ("dev/school" . ;; dev/school specification for all modes (nil . ((indent-tabs-mode . …

2
记住无扩展名的文件模式
我已经开始编辑许多没有扩展名的文件,但仍处于主要模式格式。 我是团队中唯一的Emacs用户,我不想让我的编辑器需要特殊的东西很痛苦。我想避免更改代码库。 我无法更改文件名 我不能使用特殊的Emacs注释 我希望Emacs记住我手动将文件放在最后(使用M-x conf-mode)的任何模式,并在我再次访问它时自动激活该模式。 我savehist-mode用来处理持久性。 我可以轻松地做到这一点吗?
10 major-mode 

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.