2009-11-13 7 views
21

Comment empêcher Emacs de me montrer tous les fichiers qui ne m'intéressent pas (tels que ~ fichiers de sauvegarde, fichiers .pyc ou fichiers .orig) lorsque I: Cx Cf TAB?Ne pas afficher les fichiers inintéressants dans la fenêtre d'achèvement d'Emacs

Il travaille sur un point: si je sais le fichier que je veux ouvrir commence par foo et type I foo TAB alors correctement le mini-tampon autocompletes tout le chemin à foo.py. Il a correctement ignoré foo ~ et foo.pyc, car ~ et .pyc sont dans completion-ignored-extensions. Il me permet également d'ouvrir soit un fichier ignoré si je veux vraiment en tapant toutes les lettres moi-même.

Cependant, si je viens de frapper TAB pour apporter la mémoire tampon de la liste d'achèvement alors que la liste inclut des fichiers avec des extensions en achèvement ignoré-extensions, ce qui le rend très difficile de trouver ce que je cherche .

Il est clair que le code pour ignorer les fichiers sans intérêt est là et fonctionne. Comment puis-je obtenir le tampon de liste d'achèvement à respecter completion-ignored-extensions?

(par le par, puis-je faire Dired se comporter de la même?)

Répondre

20

Ce conseil filtre les fichiers avec des extensions répertoriés dans 'completion-ignored-extensions:

(defadvice completion--file-name-table (after 
             ignoring-backups-f-n-completion 
             activate) 
    "Filter out results when they match `completion-ignored-extensions'." 
    (let ((res ad-return-value)) 
(if (and (listp res) 
    (stringp (car res)) 
    (cdr res))     ; length > 1, don't ignore sole match 
    (setq ad-return-value 
       (completion-pcm--filename-try-filter res))))) 

Note: Cela ne touche pas dired.

Pour la question dired, ajoutez à votre .emacs

(eval-after-load "dired" 
    '(require 'dired-x)) 

(add-hook 'dired-mode-hook 
      (lambda() 
      (dired-omit-mode 1))) 

Lire la documentation for dired-x pour avoir une idée de ce qui est disponible là-bas.

+0

Presque parfait! Y a-t-il une chance que le conseil puisse être modifié pour respecter la variable completion-ignored-extensions? – emacsulike

+0

Yup, utilise maintenant 'completion-ignored-extensions'. –

1

Je ne sais pas d'une réponse à la fin, j'ai peur. Je pense que c'est par conception - quand vous connaissez le nom que vous cherchez, vous ne voulez probablement pas, par exemple. le fichier de sauvegarde. Mais quand vous ne savez pas, il est probablement préférable d'avoir une liste de tous les fichiers.

Cependant, pour Dired, vous pouvez charger le paquet 'dired-x' au démarrage (dans votre .emacs), et cela fournit Dired-Omettre mode:

(load "dired-x") 

Vous pouvez utiliser Mx customize -variable <RET> dired-omit-files 'pour définir les modèles réels à ignorer. Ensuite, lorsque vous êtes en mode dired, vous pouvez utiliser M-O (la lettre, pas le numéro) pour activer ou désactiver 'omission'.

+0

Nice. J'aime la façon Dired dit "omis 26 lignes". (ou peu importe) quand vous ouvrez un répertoire. Je pense que la même chose pourrait arriver pour la liste d'achèvement de fichier, ce qui atténuerait votre souci de cacher des fichiers qui pourraient parfois être nécessaires. Appuyez à nouveau sur TAB pour afficher tous les fichiers (comme M-o). – emacsulike

3

Icicles fait ce que vous attendez par défaut. Il respecte toujours completion-ignored-extensions pour la complétion du nom de fichier, y compris pour le tampon *Completions*. Et vous pouvez activer/désactiver cette ignorant à tout moment, en appuyant sur C-. dans le mini-tampon.

En outre, si vous utilisez la bibliothèque completion-ignored-build.el par Kevin Ryde, puis Icicles bénéficie automatiquement de l'ajustement dynamique des extensions de fichiers ignorés de cette bibliothèque. (Il suffit de charger completion-ignored-build.el - ne pas activer son mode mineur ou un conseil.

6

Je recommanderais d'utiliser ido-mode pour ignorer les fichiers; il est livré avec Emacs par défaut et ajoute de nombreuses autres améliorations utiles que vous apprendrez rapidement à aimer. Le Ignorance is Bliss section from this Mastering Emacs blog post couvre comment ignorer les fichiers, les répertoires et les tampons:

  • ido-ignore-buffers prend une liste de tampons à ignorer dans Cx b
  • ido-ignore-directories Prend une liste de répertoires à ignorer dans Cx d et cx Cf
  • ido-ignore-files Prend une liste de fichiers à ignorer dans cx Cf
+4

Comme sa section Ignorance is Bliss dit aussi: Je n'ignore rien dans Ido au-delà des valeurs par défaut, car je préfère utiliser le plus général 'completion-ignored-extensions' car il fonctionne avec et sans Ido. –