2017-08-16 1 views
1

Ich habe ein Projekt A, das 2 Leerzeichen Einrückung erfordert, aber es bettet ein anderes Projekt in einem Unterordner B, der 4 Leerzeichen verwendet.Emacs-Verzeichnisvariablen mit Ausnahme des besonderen Unterverzeichnisses

Ich habe folgend in A/.dir-locals.el:

((c-mode . ((indent-tabs-mode . nil) 
      (c-basic-offset . 2)))) 

... und es gilt schön für alle c-Dateien im Verzeichnis A.

Frage: Kann ich, dass Die gleiche Datei dir-locals.el schließt den Unterordner B davon aus, von der Einrückung von 2 Leerzeichen betroffen zu sein?

Ich könnte natürlich eine A/B/.dir-locals.el mit den Einstellungen für B erstellen, aber da es A ist, die die Ausnahme ist, würde ich es vorziehen, das Setup in A/.dir zu behalten -locals.el

Antwort

1

aus dem Handbuch Zitiert:

Here’s an example of a ‘.dir-locals.el’ file: 

    ((nil . ((indent-tabs-mode . t) 
       (fill-column . 80))) 
     (c-mode . ((c-file-style . "BSD") 
       (subdirs . nil))) 
     ("src/imported" 
     . ((nil . ((change-log-default-name 
        . "ChangeLog.local")))))) 

This sets ‘indent-tabs-mode’ and ‘fill-column’ for any file in the 
directory tree, and the indentation style for any C source file. The 
special ‘subdirs’ element is not a variable, but a special keyword which 
indicates that the C mode settings are only to be applied in the current 
directory, not in any subdirectories. Finally, it specifies a different 
‘ChangeLog’ file name for any file in the ‘src/imported’ subdirectory. 

- C-hig(emacs)Directory VariablesRET

In diesem Fall suchen Sie vielleicht nach etwas wie:

((c-mode . ((indent-tabs-mode . nil) 
      (c-basic-offset . 2))) 
("B" . ((c-mode . ((c-basic-offset . 4)))))) 
1

Sie können Pfade in .dir-locals Dateien nicht angeben.

Ich denke, .editorconfig ist sowieso eine bessere Lösung. Weil Sie damit Codierungsstile mit Benutzern anderer Editoren teilen können. Emacs hat eine schöne package, um die Einstellungen einer .editorconfig Datei zu übernehmen.

Dieses in Ihrem A Verzeichnis:

# top-most EditorConfig file 

root = true 
# only match files in root folder 
[/*.c] 
indent_style = space 
indent_size = 2 
Verwandte Themen