発射物からファイルを除外する方法は?


39

前奏曲のhelm-projectileセットアップを使用していますが、ワークフローが大幅に改善されました。残る唯一の問題は、helm-grepおよび同様の操作中に表示される自動生成ファイル(CMakeによって生成されたファイルなど)です。

質問:Projectileからプロジェクトフォルダツリーのファイルを除外する方法はありますか?

回答:


33

発射物を見ると、ファイル/ディレクトリをグローバルに無視するための4つのカスタマイズを提供しているようです。以下にそれぞれのドキュメントをリストします

projectile-globally-ignored-files

発射物によってグローバルに無視されるファイルのリスト。

projectile-globally-ignored-directories

発射物によってグローバルに無視されるディレクトリのリスト。

projectile-globally-ignored-file-suffixes

発射物によってグローバルに無視されるファイルサフィックスのリスト。

projectile-globally-ignored-modes

発射物によって無視されるメジャーモードの正規表現のリスト。

バッファーが特定のメジャーモードを使用している場合、発射物はバッファーで機能する関数に対してそれを無視します。

これらはグローバルオプションであるため、たとえばprojectile-globally-ignored-directories作業中のプロジェクトに関係なく、ディレクトリは無視されることに注意してください 。特定のプロジェクトのファイル/ディレクトリを無視するには、.projectileファイルをプロジェクトのルートに追加し、-次のようにパスを追加してプレフィックスを無視します

-/CMake

詳細については、ドキュメントprojectile-parse-dirconfig-file(または発射体のドキュメント)を参照してください。

プロジェクトを解析してファイルを無視し、無視して保持するディレクトリを返します。

戻り値は短所、carは保持するディレクトリのリスト、cdrは無視するファイルまたはディレクトリのリストです。

ストリングス+で始まるがリストに追加されます 保つために、ディレクトリ、および文字列が始まる-のリストに追加されます 無視するディレクトリ。後方互換性のために、 接頭辞がない場合、文字列は無視文字列見なされます


2
私はprojectile-globally-ignored-file-suffixesそれが意図されているように(私は思う)仕事をすることができません。これには、接尾辞(オブジェクトファイルの場合は "o")、ファイルグロブ(つまり "* .o")または他の何かのみを含める必要がありますか?率直に言って、考えられるすべてのコンボを試しましたが、うまくいきませんでした。
Bklyn

私はensimeでScalaを使用していますが、projectileはすでに.ensime_cacheをグローバルに無視されるものとして定義しています。ただし、Cc phはhelm-projectileを表示し、すべての.ensime_cacheファイルを表示します。何か案は?
アルネ


7

別の解決策は、agthe_silver_searcher)またはrgripgrep)を使用してプロジェクトファイルを生成することです。以下がその方法です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)))

プロジェクトディレクトリで、無視したいファイルを指定し.gitignoreてください。

コードはkaushalmodiの emacs config からのものです。


2

無視されたdirs / filesを尊重する検索:

  1. インストールack(grepの代替。homebrewでインストールします。)

  2. 置く--ignore-caseあなたの中~.ackrcのファイル(あなたがケースを無視したいと仮定した場合)

  3. helm-projectile-ackキーにバインドします。私はemacs initでこれを行います:

(use-package helm
  ...
  :bind (...
         ("C-c p s a" . helm-projectile-ack)
        )
  ...
)
  1. .projectileファイルを作成します。例えば、
-.dot
-.jcs
-.svg
-.txt

つかいます

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

または

C-c s p g     ;; search everything
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.