Se usi la libreria Icicles , puoi facilmente fare questo tipo di cose. Quello che stai chiedendo (se ho capito bene), è cercare solo all'interno di determinati contesti di ricerca .
Ad esempio, come in questo caso, potresti voler cercare solo all'interno delle definizioni delle funzioni - i contesti di ricerca sono definizioni delle funzioni. In Lisp, questo sarebbe cose come defun
s.
Icicles ha diversi comandi di ricerca Icicles predefiniti per la ricerca di definizioni come questa. Questi sono collettivamente chiamati comandi Imicu di Icicles .
Per cercare solo le definizioni dei comandi, è possibile utilizzare il comando icicle-imenu-command-full
. Per cercare solo le definizioni di funzioni non interattive, utilizzare il comando icicle-imenu-non-interactive-function-full
.
Oltre a cercare le definizioni, puoi facilmente definire qualsiasi tipo di contesto da cercare. Il modo più semplice è fornire una regexp. Il comando icicle-search
richiede la regexp che definisce il contesto di ricerca. In alternativa, è possibile utilizzare una funzione per definire i contesti di ricerca.
Altre possibilità includono:
Ricerca nel testo di diversi tipi di COSE (es. Sexp, frasi, liste, stringhe, commenti, elementi XML, ...), ovvero ignorando altro testo al di fuori delle COSE.
Ricerca di zone di testo che hanno dato proprietà di testo o overlay, ovvero ignorando altro testo.
NOTA:
Altre risposte qui che menzionano occur
e simili ( helm-occur
) forniscono un tipo limitato di ricerca di contesto: i contesti di ricerca sono solo le righe di un buffer.
Questo è molto più limitato che, diciamo, la ricerca all'interno di definizioni di funzioni complete, che è ciò che penso tu stia chiedendo. Con Icicles , il comando icicle-occur
(associato a C-c '
) consente di cercare all'interno di linee come contesti di ricerca.
helm-swoop
, ma la tua domanda (e soprattutto il titolo) non è molto chiara su questo. Forse non ho ricevuto la tua domanda perché non ho familiarità con il timone.