相关疑难解决方法(0)

如何加速Emacs DocView模式?

我正在使用相当标准的安装:

  • Ubuntu 12.04 LTS(不到一周前安装)
  • GNU Emacs 24.1

当我在Emacs中打开PDF文件时,速度非常慢.有2-3秒的延迟使用时只需时,用鼠标,1-2秒的延迟滚动n,p,C-p,C-n,等.

这是一个20页的文档.对于像这样的50页文档,Emacs变得无法使用(持续冻结),因此文档大小问题会变得更糟.

我该如何解决这个问题?

emacs docview

7
推荐指数
2
解决办法
1920
查看次数

切换主模式时如何保持dir-local变量?

我正在致力于一个项目,标准缩进和标签是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发送报告将向他们发送这些讨论的参考.

emacs elisp

7
推荐指数
1
解决办法
1633
查看次数

如何在指定模式下禁用hl-line功能

我使用以下代码在全局范围内启用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 elisp

6
推荐指数
1
解决办法
1123
查看次数

主模式挂钩配置会影响其他缓冲区

首先让我说我是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)

如何保持这些模式挂钩不会影响不同模式下的其他缓冲区?

谢谢!安德鲁

lisp emacs elisp xemacs major-mode

5
推荐指数
1
解决办法
134
查看次数

当全局"linum-mode"处于活动状态时,禁用speedbar的"linum-mode"

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上没有任何其他与此相关的问题,因此请提供参考.

emacs emacs-speedbar

5
推荐指数
1
解决办法
865
查看次数

如何在指定的主要模式下禁用全局次要模式

我使用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中,但是它不起作用!

我该怎么办?

emacs minor-mode

5
推荐指数
1
解决办法
1429
查看次数

在 emacs term-mode 中禁用包

我有一个不适合 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 evil-mode

2
推荐指数
2
解决办法
1846
查看次数

密钥绑定在emacs中被覆盖

我有自己的用户定义的键绑定,如下所述: 全局覆盖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".

希望我很清楚:)

emacs elisp

1
推荐指数
1
解决办法
306
查看次数

Emacs:如何在主模式挂钩中禁用特定的全局模式?

我使用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)

然而,这不起作用.有没有办法在主模式挂钩中禁用全局模式?

目前我正在使用这里发布的最后一个解决方案,但它不是很干净整洁.

emacs major-mode

0
推荐指数
1
解决办法
1090
查看次数