emacs:org-mode不会自动为.org文件调用

时间:2013-11-25 18:00:05

标签: emacs desktop org-mode

直到昨天,重新启动emacs会自动识别.org文件并在查看.org缓冲区时切换到org-mode。现在我必须在每个文件上调用M-x组织模式。最初,每个.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文件中的其他org-mode相关行,看起来换行符不会保留在堆栈溢出中,所以我将省略它们。

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

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

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

1 个答案:

答案 0 :(得分:0)

要更改多个缓冲区的模式,请使用dolist(buffer-list)进行迭代,可能首先使用cl-remove-if-not过滤该列表。对于每次迭代,使用带有缓冲区名称的with-current-buffer,然后调用模式函数(例如(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\'