[LUGA] Mit freundlicher Unterstützung von:
OCG

Mail Thread Index


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [luga] "Syntax-bewusste" Suche



On 2016-02-11 20:06:10 +0100, Steffen Nurpmeso wrote:
> "Peter J. Holzer" <hjp-luga2@hjp.at> wrote:
>  |In letzter Zeit hatte ich öfter das Problem, dass ich in Source-Code
>  |nach Stellen suchen musste, die sich nur mit Kenntnis der Syntax der
>  |Programmiersprache finden ließen.
>  |
>  |Z.B. Alle Stellen, an denen eine Funktion mit einem bestimmten Parameter
>  |aufgerufen wird. Der Funktionsaufruf kann mehrzeilig sein, er kann einen
>  |String enthalten, der möglicherweise den Parameter als Teilstring
>  |enthält, er kann wiederum geklammerte Teilausdrücke enthalten. Mit 
>  |/func\(.*param.*\)/ kommt man da nicht weit, man müsste zumindest
>  |öffnende und schließende Klammern zählen und Anfang und Ende von Strings
>  |erkennen. 
>  |
>  |Prinzipiell sind diese Fähigkeiten in Editoren vorhanden, weil sie ja
>  |auch für z.B. Syntax-Highlighting benötigt werden. Aber zumindest im Vim
>  |wüsste ich nicht, wie ich das in einer Suche verwenden könnte. 
>  |
>  |Also rufe ich zum Editor-War auf: Kann Eure
>  |Lieblings-Code-Editierumgebung (Editor, IDE, ...) das? Wenn ja, wie
>  |macht man das?
> 
> Hilfe, Hilfe, bitte gar nicht.

Was heißt da "bitte gar nicht"? Warum soll mir ein Editor nicht
erlauben, nach etwas zu suchen, nach dem ich suchen will?


> Aber interessante Frage, besonders wenn die Lösung nicht viel mehr
> kostet als :!grep oder :!git grep

Grep kann keine Patterns finden, die über mehr als eine Zeile gehen
(Soweit ich sehe, git grep und ack-grep auch nicht). Prinzipiell ist die
von grep verwendete RE-Engine auch nicht besser als die von vim. Es
bringt also keinen Vorteil, !grep statt / zu verwenden - dafür den
Nachteil, dass es schlicht etwas anderes tut: Im einen Fall springe ich
mit dem Cursor an die matchende Stelle und kann die editieren (ich habe
das nicht dazugeschrieben, aber ich verwende einen Editor oft dazu,
etwas zu editieren), im anderen Fall wird mir das Ergebnis der Suche in
den aktuellen Buffer eingefügt.

> – und nicht allzuviel mehr falsche Positive hat.

False Positives verhindern Automatisierung. Wenn ich die gesuchten
Stellen zuverlässig ohne False Positives finde, kann ich sie auch gleich
ersetzen. Wenn ich False Positives erwarte, dann muss ich mir jede
Stelle ansehen und einzeln editieren.

> ctags soll wohl ein bißchen helfen,

Ctags hilft, die Stelle zu finden, wo eine Funktion definiert wird,
nicht wo sie verwendet wird.

> ich kann sowas aber nicht, zuviel Streß auf dem Bildschirm.

        hp

Attachment: signature.asc
Description: Digital signature



powered by LINUX the choice of a gnu generation
linux user group austria;
Suche
Suche
Letzte Änderung:
webmaster@luga.at
Februar 2016