Dosyalar Projectile'den nasıl dışlanır?


39

Dümen mermi düzeneğini başlangıçtan itibaren kullanıyorum ve iş akışım için büyük bir gelişme oldu. Kalan tek sorun, dümen grep ve benzeri işlemler sırasında ortaya çıkan otomatik olarak oluşturulan dosyalardır (örn. CMake tarafından oluşturulan).

Soru : projeler klasör ağacındaki dosyaları Projectile'den dışlamanın bir yolu var mı?

Yanıtlar:


33

Mermilere baktığımızda, global olarak dosyaları / dizinleri görmezden gelmek için dört özelleştirme sunuyor. Bunların her birini, belgelerine göre aşağıda listeliyorum

projectile-globally-ignored-files

Tüm dünyada mermiler tarafından yok sayılan dosyaların listesi.

projectile-globally-ignored-directories

Mermiler tarafından küresel olarak göz ardı edilen dizinlerin bir listesi.

projectile-globally-ignored-file-suffixes

Bir dosya eki listesi, mermiler tarafından global olarak göz ardı edilir.

projectile-globally-ignored-modes

Mermi tarafından göz ardı edilen ana modlar için düzenli ifadelerin listesi.

Bir arabellek verilen bir ana modu kullanıyorsa, mermi arabelleklerle çalışan işlevler için yoksayır.

Bunların genel seçenek olduğunu lütfen unutmayın; örneğin projectile-globally-ignored-directories, üzerinde çalıştığınız projeye bakılmaksızın içerideki bir dizin göz ardı edilir. Belirli bir projeye ait bir dosyayı / dizini yoksaymak .projectileiçin, projenin kök dizinine bir dosya ekleyebilir ve -aşağıdaki gibi önceden eklenmiş olarak yoksayılacak yolları ekleyebilirsiniz.

-/CMake

Daha fazla bilgi için projectile-parse-dirconfig-file(veya merminin belgelerinin ) belgelerine bakın

Ayrıştırma projesi, dosya yoksay ve yoksaymak ve saklamak için dizinleri döndürür.

Dönüş değeri, araç, tutulacak dizinlerin listesi ve cdr, yoksayılacak dosyaların veya dizinlerin listesi olacak.

+ İle başlayan dizeler , tutulacak dizinler listesine eklenir ve - ile başlayan dizeler yoksayılacak dizinler listesine eklenir . Geriye dönük uyumluluk için, bir önek olmadan dizginin yoksayma dizisi olduğu varsayılır .


2
Amaçlandığı projectile-globally-ignored-file-suffixesgibi (sanırım) çalışamıyorum. Bu sadece sonek (nesne dosyaları için "o"), dosya küresi (yani "* .o") veya başka bir şey içermeli midir? Açıkçası aklıma gelen her bir kombinasyonu denedim ve işe yaramadı.
Bklyn

Scala'yı ensime ile kullanıyorum ve projectile zaten .ensime_cache dosyasını global olarak yok sayılıyor olarak tanımlamaktadır. Ancak Cc ph dümen mermisini getirir ve tüm .ensime_cache dosyalarını gösterir. Herhangi bir fikir?
Arne


7

Başka bir çözüm proje dosyalarını oluşturmak için ag( the_silver_searcher ) veya rg( ripgrep ) kullanmak olacaktır . İşte bunu nasıl yapabilirsiniz 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)))

Proje dizininizde, yoksaymak istediğiniz dosyaları belirtin .gitignoreve gitmeniz iyi olur :)

Kod kaushalmodi'nin emacs config dosyasındandır .


2

yok sayılan dizinlere / dosyalara saygı duyan arama:

  1. install ack(grep'e alternatif. Homebrew aracılığıyla yüklerim.)

  2. koymak --ignore-casesenin içinde ~.ackrcdosya (Davayı görmezden istiyorum varsayarak)

  3. helm-projectile-ackbir anahtara bağlayın . Bunu emacs init yoluyla yapıyorum:

(use-package helm
  ...
  :bind (...
         ("C-c p s a" . helm-projectile-ack)
        )
  ...
)
  1. bir .projectiledosya yarat . Örneğin,
-.dot
-.jcs
-.svg
-.txt

kullanım

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

veya

C-c s p g     ;; search everything
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.