لدى جوليا @edit
@less
وما إلى ذلك وهي مفيدة جدًا لقراءة تنفيذ الوظائف. ومع ذلك، تحتاج إلى تحديد مجموعة "جيدة بما يكفي" من معلمات (النوع) للعثور على موقع الكود.
بدلاً من ذلك، يوفر InteractiveCodeSearch
بعض وحدات الماكرو لاختيار الرمز الذي تريد قراءته بشكل تفاعلي.
@search show
وتعبير استدعاء الوظيفة @search show(stdout, "hello")
وتوقيع استدعاء الوظيفة @search show(::IO, ::String)
واسم الوحدة @search Base
وقيمة الوسيطة @searchmethods 1
ونوع الوسيطة @searchmethods ::Int
. using InteractiveCodeSearch
@search show # search method definitions
@searchmethods 1 # search methods defined for integer
@searchhistory # search history (Julia ≥ 0.7)
أمر المطابقة التفاعلية. على سبيل المثال:
@search
@search x [:shallow | :s | :recursive | :r]
قم بإدراج مواقع الملفات التي تم تعريف x
فيها في أداة مطابقة تفاعلية، ثم افتح الموقع المختار في المحرر.
عندما تكون x
وحدة نمطية، يتم البحث في تعريفات المستوى الأعلى فقط. للبحث في كافة التعريفات في الوحدة الفرعية، قم بتمرير علامة :recursive
أو :r
.
@search
إذا لم يتم توفير أي تعبير، فابحث عن الطريقة التي تم إرجاعها بواسطة التنفيذ السابق؛ على سبيل المثال، x
الافتراضي هو ans
.
أمثلة
@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
لاحظ أن @search
يقوم بتقييم التعبير المعقد باستخدام .
و []
مثل ما يلي وابحث عن القيمة المرتجعة أو نوعها:
@search Base . Multimedia . displays[ 2 ] . repl
@searchmethods
@searchmethods x
@searchmethods ::X
ابحث بشكل تفاعلي من خلال methodswith(typeof(x))
أو methodswith(X)
.
أمثلة
@searchmethods 1 # search methods defined for integer
@searchmethods :: Int # search methods defined for a specified type
@searchhistory
@searchhistory
سجل البحث بشكل تفاعلي. يقوم بشكل تفاعلي بتضييق نطاق الكود الذي تبحث عنه من سجل REPL.
القيد/الميزة في IJulia : في IJulia، يبحث @searchhistory
في تاريخ محطة REPL، وليس في تاريخ جلسة IJulia الحالية.
InteractiveCodeSearch.CONFIG
واجهة التكوين لـ InteractiveCodeSearch
.
أمثلة
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
استخدام InteractiveCodeSearch.jl بشكل افتراضي
ضع الكود التالي في ~/.julia/config/startup.jl
(≥ Julia 0.7) أو ~/.juliarc.jl
(Julia 0.6):
using InteractiveCodeSearch
# InteractiveCodeSearch.CONFIG.interactive_matcher = ...