Wie kann ich Dateien von Projectile ausschließen?


39

Ich verwende das Helmprojektil-Setup aus dem Auftakt und es hat meinen Workflow enorm verbessert. Das einzige verbleibende Problem sind automatisch generierte Dateien (z. B. von CMake generiert), die während helm-grep und ähnlichen Vorgängen angezeigt werden.

Frage : Gibt es eine Möglichkeit, Dateien in der Projektordnerstruktur von Projectile auszuschließen?

Antworten:


33

Wenn man sich das Projektil anschaut, scheint es vier Anpassungen für das globale Ignorieren von Dateien / Verzeichnissen zu bieten. Ich liste jeden von ihnen unten mit ihrer Dokumentation auf

projectile-globally-ignored-files

Eine Liste von Dateien, die von projectile global ignoriert werden.

projectile-globally-ignored-directories

Eine Liste von Verzeichnissen, die von projectile global ignoriert werden.

projectile-globally-ignored-file-suffixes

Eine Liste von Dateisuffixen, die vom Projektil global ignoriert werden.

projectile-globally-ignored-modes

Eine Liste der regulären Ausdrücke für Hauptmodi, die vom Projektil ignoriert werden.

Wenn ein Puffer einen bestimmten Hauptmodus verwendet, wird er von Projectile für Funktionen, die mit Puffern arbeiten, ignoriert.

Beachten Sie, dass dies globale Optionen sind, sodass beispielsweise ein Verzeichnis in projectile-globally-ignored-directoriesignoriert wird, unabhängig davon, mit welchem ​​Projekt Sie arbeiten. Um eine Datei / ein Verzeichnis für ein bestimmtes Projekt zu ignorieren, können Sie .projectiledem Stammverzeichnis des Projekts eine Datei hinzufügen und die zu ignorierenden Pfade -wie folgt voranstellen

-/CMake

Weitere Informationen finden Sie in der Dokumentation projectile-parse-dirconfig-file(oder in den Dokumenten des Projektils )

Analysieren Sie die Projekt-Ignorierdatei und geben Sie die zu ignorierenden und zu behaltenden Verzeichnisse zurück.

Der Rückgabewert ist ein Nachteil, wobei das Auto die Liste der zu behaltenden Verzeichnisse und die CDR die Liste der zu ignorierenden Dateien oder Verzeichnisse ist.

Zeichenfolgen, die mit + beginnen , werden zur Liste der zu speichernden Verzeichnisse hinzugefügt , und Zeichenfolgen, die mit - beginnen , werden zur Liste der zu ignorierenden Verzeichnisse hinzugefügt . Aus Gründen der Abwärtskompatibilität wird ohne Präfix davon ausgegangen, dass es sich bei der Zeichenfolge um eine ignorierte Zeichenfolge handelt .


2
Ich bin nicht in der Lage, projectile-globally-ignored-file-suffixeszur Arbeit zu kommen , wie (ich denke) es beabsichtigt ist. Sollte dies nur das Suffix (dh "o" für Objektdateien), ein Dateiglob (dh "* .o") oder etwas anderes enthalten? Ehrlich gesagt habe ich jede Kombination ausprobiert, die mir einfällt, und es hat nicht funktioniert.
Bklyn

Ich verwende Scala mit ensime und projectile definiert .ensime_cache bereits als global ignoriert. Cc ph ruft jedoch helm-projectile auf und zeigt alle .ensime_cache-Dateien an. Irgendwelche Ideen?
Arne


7

Eine andere Lösung wäre, ag( the_silver_searcher ) oder rg( ripgrep ) zu verwenden, um Projektdateien zu generieren. Hier ist, wie Sie es machen können rg:

(setq projectile-enable-caching t)

;;; Default rg arguments
  ;; https://github.com/BurntSushi/ripgrep
  (when (executable-find "rg")
    (progn
      (defconst modi/rg-arguments
        `("--line-number"                     ; line numbers
          "--smart-case"
          "--follow"                          ; follow symlinks
          "--mmap")                           ; apply memory map optimization when possible
        "Default rg arguments used in the functions in `projectile' package.")

      (defun modi/advice-projectile-use-rg ()
        "Always use `rg' for getting a list of all files in the project."
        (mapconcat 'identity
                   (append '("\\rg") ; used unaliased version of `rg': \rg
                           modi/rg-arguments
                           '("--null" ; output null separated results,
                             "--files")) ; get file names matching the regex '' (all files)
                   " "))

      (advice-add 'projectile-get-ext-command :override #'modi/advice-projectile-use-rg)))

Geben Sie in Ihrem Projektverzeichnis die Dateien an, die Sie ignorieren möchten, .gitignoreund los geht's :)

Der Code stammt aus der emacs-Konfiguration von kaushalmodi .


2

Suche, die ignorierte Verzeichnisse / Dateien berücksichtigt:

  1. install ack(Eine Alternative zu grep. Ich installiere über Homebrew.)

  2. setzen --ignore-casein Ihrer ~.ackrcDatei (vorausgesetzt , Sie Fall ignoriert werden sollen)

  3. helm-projectile-ackan einen Schlüssel binden . Ich mache das in meinem Emacs Init über:

(use-package helm
  ...
  :bind (...
         ("C-c p s a" . helm-projectile-ack)
        )
  ...
)
  1. Erstellen Sie eine .projectileDatei. Z.B,
-.dot
-.jcs
-.svg
-.txt

verwenden

C-c p s a     ;; search that respects .projectile ignore

oder

C-c s p g     ;; search everything
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.