2010-10-28 4 views
4

Depuis it may be a good idea to have lines that are not wider than 80 characters in code files, quel est le moyen le plus efficace d'identifier récursivement ces lignes dans un projet existant en utilisant Emacs?Identification récursive des lignes de plus de 80 caractères dans Emacs

MISE À JOUR:

En utilisant la suggestion de Trey, je suis actuellement en utilisant le code suivant:

(defun find-long-lines (base-dir) 
    "Recursively look for lines longer than 80 characters files" 
    (interactive "DPath:") 
    (grep-compute-defaults) 
    (rgrep "^................................................................................." "*" base-dir)) 

Ce qui fonctionne très bien en combinaison avec des espaces en mode.

+0

Pas une solution complète, mais 'occur' attend une expression régulière afin que vous puissiez utiliser' occur' pour identifier les lignes plus de 80 caractères et ils » ll sera affiché dans un joli tampon où vous pourrez cliquer dessus et Emacs passera automatiquement à la ligne correspondante. – phimuemue

Répondre

3

Vous pouvez utiliser igrep-find et utiliser une expression régulière qui correspond à 81 (+) des personnages comme si:

M-x igrep-find ^.................................................................................. RET /path/to/area/to/search/* RET 

Et puis vous obtenez un tampon en mode de compilation qui vous permet de sauter facilement à chacune des lignes incriminées (soit par un clic de souris, soit Cx ` ou Mx suivant l'erreur).

Vous pouvez également utiliser le M-x grep-find intégré et utiliser la même expression régulière. Pour entrer 81 ., saisissez C-u 81..

Et, si vous voulez avoir tout cela contenu dans une seule commande (vous invitant à entrer le chemin d'accès aux fichiers), vous pouvez utiliser ceci:

(defun find-lines-longer-than-80 (files) 
    "Recursively look for lines longer than 80 characters files" 
    (interactive (list (igrep-read-files))) 
    (igrep igrep-program "^................................................................................." files igrep-options)) 

Il y a quelques autres conseils disponibles sur le Emacs Wiki pour Find Long Lines, incluant plusieurs options pour mettre en surbrillance les lignes de plus de 80 caractères lorsque vous visitez un fichier.

+0

Et pour entrer les 81 points, vous pouvez taper 'ESC 8 1 .' ou' C-u 8 1 .' – Gilles

+0

@Giles J'aurais dû le mentionner, c'est exactement ce que j'ai fait. –

+0

Merci pour ça. Utiliser le mode d'espace blanc pour les tampons actuels et cela fonctionne comme un charme. Votre solution ne passe pas récursivement dans tous les sous-dossiers, n'est-ce pas? –

4

Je ne peux pas utiliser les solutions EMACS spécifiques, mais vous pouvez modifier un peu la commande pour inclure les noms de fichiers (et tapez moins).

rgrep "^.\{81\}" . -n (include line numbers) 


rgrep "^.\{81\}" . -c (summary view per file) 

Les guillemets ne sont pas nécessaires pour l'invite interactive rgrep.

rgrep RET ^. {81} RET chemin RET fichier de type

Questions connexes