2012-02-25 17 views
5

EDYCJA: Okazuje się, że druga edycja mojego pliku .emacs faktycznie działa. (Zobacz komentarze poniżej tego wpisu.)emacs: otwórz wszystkie pliki .txt w określonym katalogu w określonym trybie głównym.

Próbowałem kilka dodatków do .emacs, aby wszystkie pliki txt otwarte w emacs użyć orgmode. Nie działały. Jak mogę to zrobić?

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

Dodatkowo:

Byłoby jeszcze lepiej, aby otworzyć tylko pliki txt w pewnym orgmode katalogów. Jakakolwiek wskazówka, jak to zrobić, również zostanie doceniona.

+1

Kod powinien otwierać pliki txt w trybie org. Przynajmniej to działa dla mnie. Sprawdź plik .emacs, jeśli później nie modyfikujesz trybu dla plików txt. –

+0

Nie jest to bardzo krótki .emacs bo jestem nowy w tym. Ale po prostu wiem, że teraz otrzymuję tę wiadomość za każdym razem, gdy uruchamiam emacs: "Ostrzeżenie (inicjalizacja): Wystąpił błąd podczas ładowania' /Users/Klsrd/.emacs ': Koniec pliku podczas parsowania:/Users/Klsrd /. emacs Aby zapewnić normalne działanie, należy zbadać i usunąć przyczynę błędu w pliku inicjującym, usuwając plik Emacs pod numerem z opcją '--debug-init ', aby wyświetlić pełny ślad śledzenia błędów."Czy to może być przyczyna?" –

+1

Coś jest nie tak z twoimi .emacs. Usuń wszystko z niego i umieść je po prostu (dodaj do listy 'auto-mode-alist' ("\\ .txt $". Org-mode)) aby sprawdzić, czy działa –

Odpowiedz

2

można wdrożyć hak, który sprawdza katalog pliku i modyfikuje tryb buforowy:

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

Jako alternatywę można dodać linię trybu na początku z pliku tekstowego. W tym przypadku emacs ustawi określony tryb.

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

Nie potrzebujesz; przed '- * - mode: org - * -' – Tom

3

regex w auto-mode-alist może być coś bardziej skomplikowane, jak "^/path/to/.*\\.txt$"

4

Innym sposobem na to jest za pomocą zmiennych katalogu lokalnego. Jest to miłe, ponieważ możesz umieścić plik w dowolnym katalogu, w którym chcesz, aby to zachowanie działało, i działa rekurencyjnie w każdym podkatalogu. Wygeneruj plik o nazwie .dir-locals.el w wybranym katalogu.

Oto treść:

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

przeczytane to tak: dla każdej poważnej trybie (nil), eval uate następującej postaci:

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

I sklejone ze sobą jakiś kod od Olega odpowiedź Pavliv tu jest, a od yibe pod adresem 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) 

W ten sposób, mimo że aplikacje internetowe i telefoniczne ownCloud są obecnie przyjazne tylko plikom .txt, z mojego komputera mogę dla nich używać trybu Orga Emacsa.

(Gdybym ustawić wszystkie .txt pliki używać Org-mode, przerywa todotxt-mode.)

(Zauważ, że owncloud jest ciągiem znaków o zmiennej równa mojej ścieżce ownCloud.)

Powiązane problemy