Julia verfügt über @edit
, @less
usw., die zum Lesen der Implementierung von Funktionen sehr praktisch sind. Sie müssen jedoch einen Satz von (Typ-)Parametern angeben, die „gut genug“ sind, damit sie den Speicherort des Codes finden können.
Stattdessen bietet InteractiveCodeSearch
einige Makros zur interaktiven Auswahl des Codes, den Sie lesen möchten.
@search show
, Funktionsaufrufausdruck @search show(stdout, "hello")
, Funktionsaufrufsignatur @search show(::IO, ::String)
und Modulname @search Base
, Argumentwert @searchmethods 1
und Argumenttyp @searchmethods ::Int
. using InteractiveCodeSearch
@search show # search method definitions
@searchmethods 1 # search methods defined for integer
@searchhistory # search history (Julia ≥ 0.7)
Interaktiver Matching-Befehl. Zum Beispiel:
@search
@search x [:shallow | :s | :recursive | :r]
Listen Sie Dateispeicherorte auf, an denen x
in einem interaktiven Matcher definiert sind, und öffnen Sie dann den ausgewählten Speicherort im Editor.
Wenn x
ein Modul ist, werden nur die Definitionen der obersten Ebene durchsucht. Um alle Definitionen im Submodul zu durchsuchen, übergeben Sie das Flag :recursive
oder :r
.
@search
Wenn kein Ausdruck angegeben ist, suchen Sie nach der Methode, die von der vorherigen Ausführung zurückgegeben wurde. Das heißt, x
ist standardmäßig ans
.
Beispiele
@search show # all method definitions
@search @time # all macro definitions
@search Base . Enums # methods and macros in a module
@search REPL :r # search the module recursively
@search * ( :: Integer , :: Integer ) # methods with specified types
@search dot (π, ℯ) # methods with inferred types
Beachten Sie, dass @search
komplexe Ausdrücke mit auswertet .
und []
wie folgt und suchen Sie nach dem zurückgegebenen Wert oder seinem Typ:
@search Base . Multimedia . displays[ 2 ] . repl
@searchmethods
@searchmethods x
@searchmethods ::X
Suchen Sie interaktiv nach methodswith(typeof(x))
oder methodswith(X)
.
Beispiele
@searchmethods 1 # search methods defined for integer
@searchmethods :: Int # search methods defined for a specified type
@searchhistory
@searchhistory
Suchverlauf interaktiv. Schränkt den gesuchten Code interaktiv aus dem REPL-Verlauf ein.
Einschränkung/Funktion in IJulia : In IJulia durchsucht @searchhistory
den Verlauf der Terminal-REPL, nicht den Verlauf der aktuellen IJulia-Sitzung.
InteractiveCodeSearch.CONFIG
Konfigurationsschnittstelle für InteractiveCodeSearch
.
Beispiele
using InteractiveCodeSearch
InteractiveCodeSearch . CONFIG . interactive_matcher = ` fzf ... ` # default in terminal
InteractiveCodeSearch . CONFIG . interactive_matcher = ` peco `
InteractiveCodeSearch . CONFIG . interactive_matcher = ` percol `
InteractiveCodeSearch . CONFIG . interactive_matcher =
` rofi -dmenu -i -p "?" ` # use GUI matcher (default in non-terminal
# environment like IJulia)
InteractiveCodeSearch . CONFIG . interactive_matcher =
` rofi -dmenu -i -p "?" -fullscreen ` # bigger screen
InteractiveCodeSearch . CONFIG . open = edit # default
InteractiveCodeSearch . CONFIG . open = less # use Base.less to read code
InteractiveCodeSearch . CONFIG . auto_open = true # default
InteractiveCodeSearch . CONFIG . auto_open = false # open matcher even when there
# is only one candidate
InteractiveCodeSearch . CONFIG . trigger_key = ' ) ' # insert "@search" on ')' (default)
InteractiveCodeSearch . CONFIG . trigger_key = nothing # disable shortcut
Standardmäßig wird InteractiveCodeSearch.jl verwendet
Fügen Sie den folgenden Code in Ihre ~/.julia/config/startup.jl
(≥ Julia 0.7) oder ~/.juliarc.jl
(Julia 0.6) ein:
using InteractiveCodeSearch
# InteractiveCodeSearch.CONFIG.interactive_matcher = ...