emacs: открыть все .txt файлы в определенном каталоге в определенном основном режиме - PullRequest
6 голосов
/ 25 февраля 2012

РЕДАКТИРОВАТЬ: Оказывается, что второе редактирование моего файла .emacs действительно работает. (См. Комментарии ниже этой записи.)

Я попробовал несколько дополнений к .emacs, чтобы все текстовые файлы, открытые в emacs, использовали orgmode. Они не работали. Как я могу это сделать?

;;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))

Дополнительно:

Было бы еще лучше открывать только текстовые файлы в определенном каталоге orgmode. Любой намек на то, как это можно сделать, также будет оценен.

Ответы [ 4 ]

4 голосов
/ 17 апреля 2013

Другой способ сделать это - использовать локальные переменные каталога.Это хорошо, потому что вы можете поместить файл в любой каталог, в который вы хотите включить это поведение, и он работает рекурсивно в любых подкаталогах.

Создайте файл с именем .dir-locals.el в нужном каталоге.

Вот содержимое:

((nil (eval . (if (string-match ".txt$" (buffer-file-name))(org-mode)))))

Прочитайте это так: для любого основного режима (nil), eval используйте следующую форму:

(if ....  (org-mode))
3 голосов
/ 25 февраля 2012

Регулярное выражение в auto-mode-alist может быть чем-то более сложным, например "^/path/to/.*\\.txt$"

2 голосов
/ 25 февраля 2012

Вы можете реализовать хук, который проверяет каталог файлов и изменяет режим буфера:

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

В качестве альтернативы вы можете добавить строку режима в начале вашего текстового файла. В этом случае emacs установит указанный режим.

; -*- mode: org;-*-
* header 1
** header 2
0 голосов
/ 27 июня 2014

Я склеил некоторый код из ответа Олега Павлова здесь и из yibe по адресу elisp - Перехват расширения файла в Emacs - Переполнение стека

(defun use-org-mode-for-dot-txt-files-in-owncloud ()
  (when (and (string-match owncloud buffer-file-name)
             (string-match "\\.txt\\'" buffer-file-name))
    (org-mode)))
(add-hook 'find-file-hook 'use-org-mode-for-dot-txt-files-in-owncloud)

Таким образом, хотя ownCloud Web иприложения для телефонов в настоящее время доступны только для файлов .txt, с моего компьютера я могу использовать для них Eg-режим Emacs.

(Если я установлю все .txt файлы для использования в режиме Org, он нарушит todotxt-mode.)

(Обратите внимание, что owncloud - это строковая переменная, равная моему пути ownCloud.)

...