emacs:在特定主要模式下打开特定目录中的所有.txt文件

6 emacs org-mode

编辑:事实证明,我的.emacs文件的第二次编辑实际上是有效的.(参见本条目下方的评论.)

我尝试了几个.emacs的附加功能,以便在emacs中使用orgmode打开所有txt文件.他们没有工作.我怎样才能实现呢?

;;SET EMACS AS DEFAULT MAJOR MODE TO FOR ALL FILES WITH AN UNSPECIFIED MODE
(setq default-major-mode 'org-mode)

;;OPEN ALL TXT FILES IN ORGMODE
(add-to-list 'auto-mode-alist '("\\.txt$" . org-mode))
Run Code Online (Sandbox Code Playgroud)

另外:

在某个目录orgmode中只打开txt文件会更好.任何暗示如何做到这一点也将不胜感激.

cra*_*aig 5

另一种方法是使用目录局部变量。这很好,因为您可以将文件放在您希望此行为参与的任何目录中,并且它在任何子目录中递归工作。

创建一个.dir-locals.el在所需目录中调用的文件。

以下是内容:

((nil (eval . (if (string-match ".txt$" (buffer-file-name))(org-mode)))))
Run Code Online (Sandbox Code Playgroud)

像这样阅读:对于任何主模式 ( nil),请eval使用以下形式:

(if ....  (org-mode))
Run Code Online (Sandbox Code Playgroud)


Ole*_*liv 2

您可以实现一个钩子来验证文件目录并修改缓冲区模式:

(add-hook 'find-file-hooks 
          (lambda ()
            (let ((file (buffer-file-name)))
              (when (and file (equal (file-name-directory file) "c:/temp/"))
                (org-mode)))))
Run Code Online (Sandbox Code Playgroud)

作为替代方案,您可以在文本文件的开头添加模式行。在这种情况下,emacs 将设置指定的模式。

; -*- mode: org;-*-
* header 1
** header 2
Run Code Online (Sandbox Code Playgroud)