Julia a @edit
, @less
, etc. qui sont très pratiques pour lire l'implémentation des fonctions. Cependant, vous devez spécifier un ensemble de paramètres (de type) « assez bon » pour qu'ils puissent trouver l'emplacement du code.
Au lieu de cela, InteractiveCodeSearch
fournit quelques macros pour choisir de manière interactive le code que vous souhaitez lire.
@search show
, expression d'appel de fonction @search show(stdout, "hello")
, signature d'appel de fonction @search show(::IO, ::String)
, nom du module @search Base
, valeur de l'argument @searchmethods 1
et type d'argument @searchmethods ::Int
. using InteractiveCodeSearch
@search show # search method definitions
@searchmethods 1 # search methods defined for integer
@searchhistory # search history (Julia ≥ 0.7)
Commande de correspondance interactive. Par exemple:
@search
@search x [:shallow | :s | :recursive | :r]
Répertoriez les emplacements de fichiers auxquels x
sont définis dans un matcher interactif, puis ouvrez l'emplacement choisi dans l'éditeur.
Lorsque x
est un module, seules les définitions de niveau supérieur sont recherchées. Pour rechercher toutes les définitions dans le sous-module, transmettez l'indicateur :recursive
ou :r
.
@search
Si aucune expression n'est fournie, recherchez la méthode renvoyée par l'exécution précédente ; c'est-à-dire que x
est par défaut ans
.
Exemples
@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
Notez que @search
évalue une expression complexe avec .
et []
comme suit et recherchez la valeur renvoyée ou son type :
@search Base . Multimedia . displays[ 2 ] . repl
@searchmethods
@searchmethods x
@searchmethods ::X
Recherchez de manière interactive via methodswith(typeof(x))
ou methodswith(X)
.
Exemples
@searchmethods 1 # search methods defined for integer
@searchmethods :: Int # search methods defined for a specified type
@searchhistory
@searchhistory
Recherchez l'historique de manière interactive. Affine de manière interactive le code que vous recherchez dans l'historique REPL.
Limitation/fonctionnalité dans IJulia : Dans IJulia, @searchhistory
recherche l'historique du terminal REPL, pas l'historique de la session IJulia en cours.
InteractiveCodeSearch.CONFIG
Interface de configuration pour InteractiveCodeSearch
.
Exemples
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
Utilisation d'InteractiveCodeSearch.jl par défaut
Mettez le code suivant dans votre ~/.julia/config/startup.jl
(≥ Julia 0.7) ou ~/.juliarc.jl
(Julia 0.6) :
using InteractiveCodeSearch
# InteractiveCodeSearch.CONFIG.interactive_matcher = ...