繁体   English   中英

emacs:.org文件不会自动调用组织模式

[英]emacs: org-mode not automatically invoked for .org files

直到昨天,重新启动emacs会自动识别.org文件并在查看.org缓冲区时切换到org-mode。 现在,我必须在每个文件上调用Mx组织模式。 最初,每个.org模式现在都处于“基本”模式。

我的〜/ .emacs文件包含:

(add-to-list 'auto-mode-alist '("\\.org\\'" . org-mode)) ; not needed since Emacs 22.2
(add-hook 'org-mode-hook 'turn-on-font-lock) ; not needed when global-font-lock-mode is on
(global-set-key "\C-cl" 'org-store-link)
(global-set-key "\C-ca" 'org-agenda)
(global-set-key "\C-cb" 'org-iswitchb)
(put 'downcase-region 'disabled nil)

我正在Gnome Ubuntu 12.04 LTS下运行emacs 23.3.1。

我不知道emacs是否在12.04中得到了更新,但是我确实在之前不小心运行了xemacs。

〜/ .emacs文件中的其他与组织模式相关的行是,看来换行符未保留在堆栈溢出中,因此我将省略它们。

我想我知道了。 我使用桌面保存。 我认为xemacs使用基本模式将所有的org文件保存为桌面保存(退出时)(因为我没有在xemacs中设置org模式-我真的应该卸载它)。 在我的.emacs-desktop文件中,组织文件以“基础”模式列出。

在某些组织文件中打开组织模式后,已删除的.emacs-desktop文件运行Mx桌面保存。 我打开了org-mode的那些.org文件在org-mode中以emacs打开,而当我重新启动emacs时,那些我没有访问并激活org-mode的文件仍处于基本模式。

有没有办法在缓冲区列表中选择多个文件并一次更改它们的模式?

要更改多个缓冲区的模式,请使用dolist over (buffer-list)进行迭代,可能首先使用cl-remove-if-not过滤该列表。 对于每次迭代,将with-current-buffer与缓冲区名称一起使用,然后调用mode函数(例如(org-mode 1) ):

(100%未经测试。)

(defun org-them ()
  "Put BUFFERS in Org mode."
  (interactive)
  (dolist (buf  (cl-remove-if-not #'SOME-TEST (buffer-list)))
    (with-current-buffer buf
      (org-mode 1))))

例如,SOME-TEST可能要求最后修改日期比某些截止日期更新。 或者,您可能只对文件缓冲区感兴趣-例如,其buffer-file-name与诸如\\\\.org\\'等正则表达式匹配的buffer-file-name

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM