Julia tiene @edit
, @less
, etc. que son muy útiles para leer la implementación de funciones. Sin embargo, debe especificar un conjunto de parámetros (de tipo) "suficientemente bueno" para que puedan encontrar la ubicación del código.
En cambio, InteractiveCodeSearch
proporciona algunas macros para elegir de forma interactiva el código que desea leer.
@search show
, expresión de llamada de función @search show(stdout, "hello")
, firma de llamada de función @search show(::IO, ::String)
, nombre de módulo @search Base
, valor del argumento @searchmethods 1
y tipo de argumento @searchmethods ::Int
. using InteractiveCodeSearch
@search show # search method definitions
@searchmethods 1 # search methods defined for integer
@searchhistory # search history (Julia ≥ 0.7)
Comando de coincidencia interactivo. Por ejemplo:
@search
@search x [:shallow | :s | :recursive | :r]
Enumere las ubicaciones de los archivos en las que se definen x
en un comparador interactivo y luego abra la ubicación elegida en el editor.
Cuando x
es un módulo, solo se buscan las definiciones de nivel superior. Para buscar todas las definiciones en el submódulo, pase el indicador :recursive
o :r
.
@search
Si no se proporciona ninguna expresión, busque el método devuelto por la ejecución anterior; es decir, x
por defecto es ans
.
Ejemplos
@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
Tenga en cuenta que @search
evalúa expresiones complejas con .
y []
como sigue y busca el valor devuelto o el tipo del mismo:
@search Base . Multimedia . displays[ 2 ] . repl
@searchmethods
@searchmethods x
@searchmethods ::X
Busque de forma interactiva a través de methodswith(typeof(x))
o methodswith(X)
.
Ejemplos
@searchmethods 1 # search methods defined for integer
@searchmethods :: Int # search methods defined for a specified type
@searchhistory
@searchhistory
Historial de búsqueda de forma interactiva. Reduce de forma interactiva el código que busca en el historial de REPL.
Limitación/característica en IJulia : en IJulia, @searchhistory
busca el historial del terminal REPL, no el historial de la sesión actual de IJulia.
InteractiveCodeSearch.CONFIG
Interfaz de configuración para InteractiveCodeSearch
.
Ejemplos
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
Usando InteractiveCodeSearch.jl por defecto
Coloque el siguiente código en su ~/.julia/config/startup.jl
(≥ Julia 0.7) o ~/.juliarc.jl
(Julia 0.6):
using InteractiveCodeSearch
# InteractiveCodeSearch.CONFIG.interactive_matcher = ...