8 votes

Emacs: ouvrir tous les fichiers .txt dans un répertoire spécifique dans un mode majeur spécifique

EDIT : Il s'avère que la deuxième modification apportée à mon fichier .emacs fonctionne en réalité. (Voir les commentaires ci-dessous.)

J'ai essayé quelques ajouts au fichier .emacs pour que tous les fichiers txt ouverts dans emacs utilisent orgmode. Ils n'ont pas fonctionné. Comment puis-je faire en sorte que cela se produise ?

;; DÉFINIR EMACS COMME MODE MAJEUR PAR DÉFAUT POUR TOUS LES FICHIERS AYANT UN MODE NON SPÉCIFIÉ
(setq default-major-mode 'org-mode)

;; OUVRIR TOUS LES FICHIERS TXT EN ORGMODE
(add-to-list 'auto-mode-alist '("\\.txt$" . org-mode))

De plus :

Ce serait encore mieux d'ouvrir uniquement les fichiers txt dans un certain répertoire en orgmode. Toute suggestion sur la façon dont cela pourrait être fait serait également appréciée.

5voto

craig Points 156

Une autre façon de faire est d'utiliser des variables locales de répertoire. C'est bien car vous pouvez mettre un fichier dans n'importe quel répertoire où vous voulez que ce comportement s'engage, et cela fonctionne de manière récursive dans n'importe quel sous-répertoire.

Créez un fichier appelé .dir-locals.el dans le répertoire désiré.

Voici le contenu :

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

Lisez ceci comme suit : pour n'importe quel mode majeur (nil), évaluer le formulaire suivant :

(if ....  (org-mode))

4voto

tripleee Points 28746

L'expression régulière dans auto-mode-alist pourrait être quelque chose de plus complexe, comme "^ / chemin / to /.* \. txt $"

2voto

Oleg Pavliv Points 7781

Vous pouvez implémenter un crochet qui vérifie le répertoire du fichier et modifie le mode de buffer :

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

En alternative, vous pouvez ajouter la ligne de mode au début de votre fichier texte. Dans ce cas, emacs définira le mode spécifié.

; -*- mode: org;-*-
* header 1
** header 2

0voto

Brady Trainor Points 299

J'ai collé ensemble un peu de code de la réponse de Oleg Pavliv ici, et de celle de yibe sur elisp - File extension hook in Emacs - Stack Overflow

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

Ainsi, bien que les applications Web et mobile ownCloud soient actuellement compatibles uniquement avec les fichiers .txt, depuis mon PC je peux les utiliser avec le mode Org d'Emacs.

(Si je configure tous les fichiers .txt pour utiliser le mode Org, cela empêche todotxt-mode de fonctionner.)

(Remarquez que owncloud est une variable de chaîne égale à mon chemin ownCloud.)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X