我正在使用相当标准的安装:
当我在Emacs中打开PDF文件时,速度非常慢.有2-3秒的延迟使用时只需时,用鼠标,1-2秒的延迟滚动n
,p
,C-p
,C-n
,等.
这是一个20页的文档.对于像这样的50页文档,Emacs变得无法使用(持续冻结),因此文档大小问题会变得更糟.
我该如何解决这个问题?
我正在致力于一个项目,标准缩进和标签是3个字符宽,它使用HTML,PHP和JavaScript的混合.由于我将Emacs用于所有内容,并且只想要该项目的3-char缩进,我在项目的根目录设置了一个".dir-locals.el"文件,以应用于它下面的所有文件/所有模式:
; Match projets's default indent of 3 spaces per level- and don't add tabs
(
(nil .
(
(tab-width . 3)
(c-basic-offset . 3)
(indent-tabs-mode . nil)
))
)
Run Code Online (Sandbox Code Playgroud)
我第一次打开文件时工作正常.切换主要模式时会出现问题 - 例如,在PHP文件中处理一大块文字HTML.然后我丢失了所有dir-local变量.
我还尝试明确说明我在".dir-locals.el"中使用的所有模式,并添加到我的.emacs文件"dir-locals-set-class-variables/dir-locals-set-directory-class ".我很高兴地说他们都表现得很稳定,最初设置dir-local变量,然后在切换主模式时丢失它们.
我正在使用GNU Emacs 24.3.1.
在切换缓冲区的主模式时,重新加载dir-local变量的优雅方法是什么?
- 编辑 - 感谢Aaron和phils的优秀答案和评论!在这里发帖之后,我认为它"闻起来"就像一个bug,因此向GNU发送报告将向他们发送这些讨论的参考.
我使用以下代码在全局范围内启用hl-mode.
(global-hl-line-mode t)
Run Code Online (Sandbox Code Playgroud)
在指定模式下关闭hl-line功能.我使用以下代码执行此操作.
(add-hook 'org-mode-hook (lambda () (global-hl-line-mode 0)))
Run Code Online (Sandbox Code Playgroud)
但它关闭了全球范围的hl-line功能.
如何在指定模式下禁用hl-line功能?
首先让我说我是emacs的新手.
我正在尝试为主要模式创建自定义.虽然我的设置运行正常,但我观察到当我打开一个新缓冲区时,缓冲区主模式自定义应用于其他类型的缓冲区.
例如,如果我打开一个名为"Makefile"的文件,则使用makefile-mode并应用我的自定义.如果我然后打开另一个文件,例如'test.c',则使用c-mode,但makefile-mode中的自定义将与c-mode中的自定义项合并.
我的.emacs文件的相关部分如下所示:
(defun c-mode-settings ()
(c-set-style "bsd")
(set-buffer-file-coding-system 'utf-8-unix)
(show-paren-mode 1)
(setq c-basic-offset 4)
(setq tab-width 4)
(setq indent-tabs-mode nil)
(setq c-tab-always-indent t)
(setq require-final-newline t)
)
(defun makefile-mode-settings ()
(setq whitespace-style '(tabs spaces space-mark tab-mark face lines-tail))
(whitespace-mode t)
(show-paren-mode 1)
(setq tab-width 4)
(setq require-final-newline t)
)
(add-hook 'c-mode-hook 'c-mode-settings)
(add-hook 'makefile-mode-hook 'makefile-mode-settings)
Run Code Online (Sandbox Code Playgroud)
如何保持这些模式挂钩不会影响不同模式下的其他缓冲区?
谢谢!安德鲁
我linum-mode
在Emacs配置中全局启用了.全局启用意味着它也应用于速度条,这是不合需要的.
我发现这个问题的唯一建议是存档的Emacs帮助邮件列表,其中提出了以下建议speedbar-mode-hook
:
(add-hook 'speedbar-mode-hook (lambda () (linum-mode -1)))
Run Code Online (Sandbox Code Playgroud)
不幸的是,将其添加到我的配置中并没有达到预期的效果,而且speedbar仍然有行号.
编辑:以上add-hook
似乎工作正常,至少对于Emacs> = 24.3.由于StackOverflow上没有任何其他与此相关的问题,因此请提供参考.
我使用Prelude,我想在所有编模式(网络模式除外)中启用hs-minor-mode。我写
(add-hook 'prog-mode-hook #'hs-minor-mode)
(make-variable-buffer-local 'hs-minor-mode)
(add-hook 'web-mode-hook (lambda () (setq hs-minor-mode nil)))
Run Code Online (Sandbox Code Playgroud)
在personal.el中,但是它不起作用!
我该怎么办?
我有一个不适合 ansi-term 的包(evil)。当 term-mode 处于活动状态时,我试图让 emacs 禁用邪恶模式。我正在使用以下命令尝试这样做
(add-hook 'term-mode-hook (lambda() (evil-mode -1)) )
Run Code Online (Sandbox Code Playgroud)
但是,一旦我打开 ansi-term,这会以某种方式禁用除 term-mode 之外的所有模式中的邪恶模式。任何帮助,将不胜感激。
我有自己的用户定义的键绑定,如下所述: 全局覆盖Emacs中的键绑定
每当我加载一个新的主要模式时,比如说OrgMode,我会覆盖一些我的绑定,以满足我在特定模式下的需求.但是当我加载另一个主要模式,它有自己的重写时,即使我不再处于具有该主模式的缓冲区,它们也会保持不变.
例如
(define-key custom-keys-mode-map (kbd "C-p") 'some-cool-function)
(add-hook 'org-mode-hook
(lambda ()
(define-key custom-keys-mode-map (kbd "C-p") 'org-cool-function )))
(add-hook 'sunrise-mode-hook
(lambda ()
(define-key custom-keys-mode-map (kbd "C-p") 'sunrise-cool-function )))
Run Code Online (Sandbox Code Playgroud)
起初我使用Cp来执行我的酷,默认功能.加载组织模式后,我使用Cp执行"org-cool-function",当我加载Sunrise-Commander时,Cp执行"sunrise-cool-function".
但是当我回到Org-Mode文件时,Cp仍然试图执行"sunrise-cool-function"而不是"org-cool-function".
希望我很清楚:)
我使用global-autopair-mode
,但使用Ruby ruby-electric-mode
提供更好的自动操作.
我是Emacs和Lisp的n00b,所以我原以为你可以这样做:
(add-hook 'ruby-mode-hook
(lambda ()
(autopair-mode nil)
(ruby-electric-mode t))
Run Code Online (Sandbox Code Playgroud)
然而,这不起作用.有没有办法在主模式挂钩中禁用全局模式?
目前我正在使用这里发布的最后一个解决方案,但它不是很干净整洁.