plugins.projectsearch
local projectsearch = require "plugins.projectsearch"
ResultsView
(field) ResultsView: plugins.projectsearch.resultsview
_test
(field) _test: table
config.plugins.projectsearch
position
(field) position: "center"|"left"|"right"
Placement of the reusable global search view
plugins.projectsearch.resultsview
NEWLINE
(field) NEWLINE: integer
Indicates on a widget.styledtext that a new line follows.
__index
(field) __index: core.object
Base class providing OOP functionality for Lua. All classes in Pragtical inherit from Object.
animations
(field) animations: widget.animation[]
background_color
(field) background_color: renderer.color
Array of bytes that represents a color used by the rendering functions.
border
(field) border: widget.border
Represents the border of a widget.
brightness
(field) brightness: integer
capture_text_input
(field) capture_text_input: boolean?
Receive text input while floating without taking focus
captured_button
(field) captured_button: ('left'|'right')?
captured_widget
(field) captured_widget: widget
Widget that captured mouse events
child_active
(field) child_active: widget|nil
A base widget
childs
(field) childs: table<integer, widget>
clickable
(field) clickable: boolean
close_button
(field) close_button: widget.button
context
(field) context: 'application'|'session'
context_menu
(field) context_menu: core.contextmenu
Floating command menu with predicate filtering, scrolling, and nested submenus.
current_scale
(field) current_scale: number
cursor
(field) cursor: 'arrow'|'hand'|'ibeam'|'sizeh'|'sizenesw'...(+2)
defer_draw
(field) defer_draw: boolean
display_position
(field) display_position: ("center"|"left"|"right")?
Applied global placement
draggable
(field) draggable: boolean
dragged
(field) dragged: boolean
end_time
(field) end_time: number|unknown
excludes_text
(field) excludes_text: widget.textbox
explicit_update
(field) explicit_update: boolean
file_picker
(field) file_picker: widget.filepicker
filters_toggle
(field) filters_toggle: widget.togglebutton
find_button
(field) find_button: widget.button
find_text
(field) find_text: widget.textbox
floating
(field) floating: boolean
Whether the view uses floating placement
floating_closing
(field) floating_closing: boolean?
Whether input is disabled while a closing slide runs
floating_destination
(field) floating_destination: (core.view.position)?
Settled position retained during a slide
floating_gesture
(field) floating_gesture: (core.view.floating_gesture)?
Active pointer drag or resize
floating_options
(field) floating_options: (core.view.floating_options)?
Placement ownership and input policy
floating_position
(field) floating_position: (core.view.position)?
Persistent interpolation state for a slide
floating_previous_focus
(field) floating_previous_focus: (core.view)?
Focus target to restore when hiding
floating_transition
(field) floating_transition: (core.view.floating_transition)?
Active slide and callback
floating_visible
(field) floating_visible: boolean?
Whether the view is registered, including closing slides
focus_generation
(field) focus_generation: integer
Invalidates queued focus when hiding or reopening
font
(field) font: string|renderer.font|widget.fontreference
Represents a reference to a font stored elsewhere.
foreground_color
(field) foreground_color: renderer.color
Array of bytes that represents a color used by the rendering functions.
h_scrollbar
(field) h_scrollbar: widget.scrollbar
has_focus
(field) has_focus: boolean
hovered_child
(field) hovered_child: widget?
Child that last received hover motion
hovered_scrollbar
(field) hovered_scrollbar: boolean
includes_text
(field) includes_text: widget.textbox
input_text
(field) input_text: boolean
insensitive
(field) insensitive: boolean
is_global
(field) is_global: boolean
Whether this is the reusable global search panel
is_scrolling
(field) is_scrolling: boolean
label
(field) label: string|table<integer, string|integer|renderer.color|renderer.font|widget.colorreference...(+1)>
mouse
(field) mouse: widget.position
Represents the position of a widget.
mouse_is_hovering
(field) mouse_is_hovering: boolean
mouse_is_pressed
(field) mouse_is_pressed: boolean
mouse_press
(field) mouse_press: { button: 'left'|'right', child: widget? }?
mouse_selecting
(field) mouse_selecting: unknown
name
(field) name: string
next_zindex
(field) next_zindex: integer
node
(field) node: (core.node)?
Docked placement, absent in centered mode
parent
(field) parent: widget|nil
A base widget
path
(field) path: any
perform_update_size_position
(field) perform_update_size_position: boolean
position
(field) position: widget.position
Represents the position of a widget.
prev_height
(field) prev_height: number?
prev_size
(field) prev_size: widget.position
Represents the position of a widget.
prev_view
(field) prev_view: unknown
prev_width
(field) prev_width: number?
query
(field) query: string
queue_search
(field) queue_search: boolean
regex_toggle
(field) regex_toggle: widget.togglebutton
render_background
(field) render_background: boolean
replace_button
(field) replace_button: widget.button
replace_text
(field) replace_text: widget.textbox
replace_toggle
(field) replace_toggle: widget.togglebutton
replaced
(field) replaced: boolean
replacement
(field) replacement: (string|nil)?
replacing
(field) replacing: boolean
result_split_node
(field) result_split_node: (core.node)?
Represents a container in the UI layout tree. Nodes can be either "leaf" (contains views/tabs) or split (contains two child nodes). The root node forms a binary tree structure that defines the editor's layout.
result_split_views
(field) result_split_views: core.docview[]?
results_list
(field) results_list: widget.searchreplacelist
scroll
(field) scroll: core.view.scroll
scrollable
(field) scrollable: boolean
search_type
(field) search_type: string|"plain"|"regex"
searching
(field) searching: boolean
the search was completed
sensitive_toggle
(field) sensitive_toggle: widget.togglebutton
set_focus
(field) set_focus: any
sidebar_width
(field) sidebar_width: number
Remembered docked width in scale-independent units
size
(field) size: widget.position
Modifying this property directly is not advised, use set_size() instead.
skip_scroll_ctrl
(field) skip_scroll_ctrl: boolean
By default is set to true to allow ctrl+wheel or cmd+wheel on mac to scale the interface, you can set it to false on your parent widget to allow manually intercepting ctrl+wheel.
source_view
(field) source_view: (core.view)?
Base view.
start_time
(field) start_time: number|unknown
stop
(field) stop: boolean
super
(field) super: widget
A base widget
textview
(field) textview: widget
A base widget
tooltip
(field) tooltip: (string|table<integer, string|integer|renderer.color|renderer.font|widget.colorreference...(+1)>)?
tooltip_command
(field) tooltip_command: string?
total_files
(field) total_files: number
total_files_processed
(field) total_files_processed: integer
type_name
(field) type_name: string
updated
(field) updated: boolean
v_scrollbar
(field) v_scrollbar: widget.scrollbar
visible
(field) visible: boolean
whole_word
(field) whole_word: boolean
wholeword_toggle
(field) wholeword_toggle: widget.togglebutton
zindex
(field) zindex: integer
from_state
function core.view.from_state(state: table)
-> view: (core.view)?
Create and initialize a new view instance from a previously saved state.
This function is called when restoring workspace/session state. Implementations are responsible for:
- creating the view instance
- applying any persisted state
If loading the instance failed nil will be returned.
@return view: (core.view)?
__call
(method) core.object:__call(...any)
-> obj: core.object
Metamethod allowing class to be called like a constructor.
Enables syntax: local obj = MyClass(args) instead of MyClass:new(args)
Automatically creates instance and calls new() with provided arguments.
@return obj: core.object — The new instance of the class
__tostring
(method) plugins.projectsearch.resultsview:__tostring()
-> string
activate
(method) widget:activate()
Emitted to input_text widgets when clicked.
add_child
(method) widget:add_child(child: widget)
Add a child widget, automatically assign a zindex if non set and sorts them in reverse order for better events matching.
@param child: widget — A base widget
animate
(method) widget:animate(target?: table, properties: table<string, number>, options?: widget.animation.options)
Registers a new animation to be ran on the update cycle.
@param target?: table — If nil assumes properties belong to widget it self.
@param options?: widget.animation.options
apply_options
(method) plugins.projectsearch.resultsview:apply_options(options: plugins.projectsearch.resultsview.options, enable_run?: boolean)
@param options: plugins.projectsearch.resultsview.options
apply_position
(method) plugins.projectsearch.resultsview:apply_position(position: "center"|"left"|"right")
Move the global view without recreating its inputs, results or document panes.
position:
| "left"
| "right"
| "center"
@param position: "center"|"left"|"right" — Requested placement
begin_replace
(method) plugins.projectsearch.resultsview:begin_replace()
Starts the replacement procedure and worker threads using previously matched results.
begin_search
(method) plugins.projectsearch.resultsview:begin_search(path?: string, text: string, search_type: "plain"|"regex", insensitive?: boolean, whole_word?: boolean)
Start the search procedure and worker threads.
search_type:
| "plain"
| "regex"
bring_to_front
(method) core.view:bring_to_front()
-> view: core.view
Raise a shown floating view and its owned popups above the other floating views.
@return view: core.view — This view, for chaining
capture_mouse
(method) widget:capture_mouse(scrolling?: boolean, button?: 'left'|'right')
All mouse events will be directly sent to the widget even if mouse moves outside the widget region.
button:
| 'left'
| 'right'
@param scrolling?: boolean — Capture for scrolling
@param button?: 'left'|'right' — Defaults to left
centered
(method) widget:centered()
Center the widget horizontally and vertically to the screen or parent widget.
clamp_scroll_position
(method) core.view:clamp_scroll_position()
Clamp scroll position to valid range (0 to max scrollable size). Called automatically by update(). Override get_scrollable_size() to customize.
deactivate
(method) widget:deactivate()
Emitted to input_text widgets on lost focus.
destroy
(method) widget:destroy()
Hide the widget, release its floating placement, and recursively destroy its children.
destroy_childs
(method) widget:destroy_childs()
Recursively destroy all childs from the widget.
drag
(method) widget:drag(x: number, y: number)
Used internally when dragging is activated.
draw
(method) plugins.projectsearch.resultsview:draw()
-> boolean
draw_background
(method) core.view:draw_background(color: renderer.color)
Draw a solid background color for the entire view. Commonly called at the start of draw() methods.
@param color: renderer.color — Array of bytes that represents a color used by the rendering functions.
draw_border
(method) widget:draw_border(x?: number, y?: number, w?: number, h?: number)
Draw the widget configured border or custom one.
draw_scrollbar
(method) widget:draw_scrollbar()
draw_styled_text
(method) widget:draw_styled_text(text: table<integer, string|integer|renderer.color|renderer.font|widget.colorreference...(+1)>, x: integer, y: integer, only_calc?: boolean, start_idx?: integer, end_idx?: integer)
-> width: integer
2. height: integer
Render or calculate the size of the specified range of elements in a styled text elemet.
@param text: table<integer, string|integer|renderer.color|renderer.font|widget.colorreference...(+1)>
@return width: integer
@return height: integer
draw_text_multiline
(method) widget:draw_text_multiline(font: string|renderer.font|widget.fontreference, text: string, x: integer, y: integer, color: renderer.color, only_calc: boolean)
-> resx: integer
2. resy: integer
3. width: integer
4. height: integer
Taken from the logview and modified it a tiny bit. TODO: something similar should be on pragtical core.
@param font: string|renderer.font|widget.fontreference — Represents a reference to a font stored elsewhere.
@param color: renderer.color — Array of bytes that represents a color used by the rendering functions.
@return resx: integer
@return resy: integer
@return width: integer
@return height: integer
extend
(method) core.object:extend()
-> cls: core.object
Create a new class that inherits from this one.
Returns a new class with this class as its parent.
Example: local MyClass = Object:extend()
@return cls: core.object — The new class table
extends
(method) core.object:extends(T: any)
-> extends: boolean
Check if object inherits from the given type (inheritance-aware).
Use this to check class hierarchy.
Example: view:extends(View) returns true for View and all subclasses
@param T: any — Class to check inheritance from
@return extends: boolean — True if object is T or inherits from T
focus_results
(method) plugins.projectsearch.resultsview:focus_results()
Focus the result list and reveal its selection without focusing any text input. Choose the first match if no result has been selected yet.
get_bottom
(method) widget:get_bottom()
-> number
Get the bottom y coordinate relative to parent
get_content_bounds
(method) core.view:get_content_bounds()
-> x1: number
2. y1: number
3. x2: number
4. y2: number
Get the content bounds in content coordinates (accounting for scroll).
@return x1: number — Left edge
@return y1: number — Top edge
@return x2: number — Right edge
@return y2: number — Bottom edge
get_content_offset
(method) widget:get_content_offset()
-> x: number
2. y: number
Get the content origin while preserving fractional layout coordinates. Snap only the scroll displacement so descendants move by whole pixels together without shifting their borders relative to the parent's viewport.
@return x: number — Screen x coordinate after horizontal scrolling
@return y: number — Screen y coordinate after vertical scrolling
get_floating_bounds
(method) widget:get_floating_bounds()
-> x: number
2. y: number
3. w: number
4. h: number
Get the widget's outer screen rectangle, including its border.
@return x: number — Outer screen x coordinate
@return y: number — Outer screen y coordinate
@return w: number — Width including the border
@return h: number — Height including the border
get_floating_drag_region
(method) core.view:get_floating_drag_region()
-> x: number?
2. y: number?
3. w: number?
4. h: number?
Get the screen rectangle where a floating view can be dragged. Override to restrict dragging to a header; defaults to the full popup bounds.
@return x: number? — Screen x coordinate, or nil to disable dragging
@return y: number? — Screen y coordinate
@return w: number? — Region width
@return h: number? — Region height
get_focus_target
(method) widget:get_focus_target()
-> target: core.view
Focus the active child or its TextView, falling back to this widget's input or itself.
@return target: core.view — View that should receive keyboard focus
get_font
(method) widget:get_font(font?: string|renderer.font|widget.fontreference)
-> renderer.font
Get the real renderer.font associated with a widget.font.
@param font?: string|renderer.font|widget.fontreference — Represents a reference to a font stored elsewhere.
@return: renderer.font
get_h_scrollable_size
(method) widget:get_h_scrollable_size()
-> number
Calculates the x scrollable size taking into account the right most widget or the size of the widget it self if greater.
get_height
(method) widget:get_height()
-> number
Get height including borders.
get_module
(method) core.view:get_module()
-> path: string?
Returns the module path of this view.
This method resolves the Lua module name that loaded the concrete view
class (for example "core.view").
If the view class cannot be associated with any loaded module, nil
is returned.
@return path: string?
get_name
(method) plugins.projectsearch.resultsview:get_name()
-> string
Text displayed on the application title and view tab.
get_position
(method) widget:get_position()
-> widget.position
Get the relative position in relation to parent
@return: widget.position
get_real_height
(method) widget:get_real_height()
-> number
Overall height of the widget accounting all visible child widgets.
get_real_width
(method) widget:get_real_width()
-> number
Overall width of the widget accounting all visible child widgets.
get_right
(method) widget:get_right()
-> number
Get the right x coordinate relative to parent
get_scrollable_size
(method) widget:get_scrollable_size()
-> number
Calculates the y scrollable size taking into account the bottom most widget or the size of the widget it self if greater.
get_size
(method) widget:get_size()
-> widget.position
@return: widget.position
get_state
(method) core.view:get_state()
-> state: table?
Serialize this view into a persistable state table.
This method is called when the editor is saving workspace/session state. The returned table must contain only plain Lua data (no functions, userdata, metatables, or cyclic references).
Returning nil indicates that this view should NOT be restored when
reloading the workspace.
@return state: table?
get_width
(method) widget:get_width()
-> number
Get width including borders.
hide
(method) widget:hide()
Hide the widget.
hide_animated
(method) widget:hide_animated(lock_x?: boolean, lock_y?: boolean, options?: widget.animation.options)
Perform an animated hide.
@param lock_x?: boolean — Do not resize width while animating
@param lock_y?: boolean — Do not resize height while animating
@param options?: widget.animation.options
hide_floating
(method) core.view:hide_floating(options?: core.view.floating_transition)
-> view: core.view
Hide the floating view, close owned popups, cancel input, and restore focus. A closing slide delays removal while the view immediately stops receiving input. Disabled transitions remove the view and run the completion callback immediately.
@param options?: core.view.floating_transition — Optional closing slide (to) and callback
@return view: core.view — This view, for chaining
hit_test
(method) widget:hit_test(x: number, y: number)
-> inside: boolean
Reuse widget hit testing for RootView's floating pointer routing.
@param x: number — Screen x coordinate
@param y: number — Screen y coordinate
@return inside: boolean — Whether the point lies over the widget
is
(method) core.object:is(T: any)
-> is_exact: boolean
Check if object is exactly of the given type (no inheritance check).
Use this for strict type matching.
Example: view:is(DocView) returns true only if view is a DocView, not a subclass
@param T: any — Class to check against
@return is_exact: boolean — True if object is exactly type T
is_class_of
(method) core.object:is_class_of(T: any)
-> is_instance: boolean
Check if the given object is exactly an instance of this class.
Inverse of is() - checks if T is an instance of self.
Example: DocView:is_class_of(obj) checks if obj is exactly a DocView
@param T: any — Object to check
@return is_instance: boolean — True if T is exactly an instance of this class
is_extended_by
(method) core.object:is_extended_by(T: any)
-> is_extended: boolean
Check if the given object/class inherits from this class.
Inverse of extends() - checks if T is a subclass of self.
Example: View:is_extended_by(DocView) checks if DocView inherits from View
@param T: any — Object or class to check
@return is_extended: boolean — True if T inherits from this class
is_floating_owner_visible
(method) core.view:is_floating_owner_visible()
-> visible: boolean?
Check whether floating popups owned by this view should remain visible. Docked owners must be active in their node; container children follow their parent. Override for composites with their own visibility rules.
@return visible: boolean? — Falsy when the owner is hidden or its tab is inactive
is_visible
(method) widget:is_visible()
-> boolean
Check if the widget is visible also recursing to the parent visibility.
mouse_on_top
(method) widget:mouse_on_top(x: number, y: number)
-> boolean
Check if the given mouse coordinate is hovering the widget
move_towards
(method) core.view:move_towards(t: table, k: string|number, dest: number, rate?: number, name?: string)
Smoothly animate a value towards a destination. Use this for animations instead of direct assignment.
@param t: table — Table containing the value
@param k: string|number — Key in table
@param dest: number — Target value
@param rate?: number — Animation speed (0-1, default 0.5, higher = faster)
@param name?: string — Transition name (for config.disabled_transitions)
new
(method) plugins.projectsearch.resultsview:new(path?: string, text: string, search_type?: "plain"|"regex", insensitive?: boolean, whole_word?: boolean, replacement?: string)
Constructor
search_type:
| "plain"
| "regex"
on_change
(method) widget:on_change(value: any)
Event emitted when the value of the widget changes. If applicable, child widgets should call this method when its value changes.
on_click
(method) widget:on_click(button: "left"|"right", x: number, y: number)
Click event emitted on a succesful on_mouse_pressed and on_mouse_released events combo.
button:
| "left"
| "right"
on_file_dropped
(method) widget:on_file_dropped(filename: string, x: number, y: number)
-> processed: boolean
Send file drop event to hovered child.
@return processed: boolean
on_floating_dismiss
(method) plugins.projectsearch.resultsview:on_floating_dismiss(reason: "escape"|"focuslost"|"outside")
Dismiss centered global search through its normal visibility and focus lifecycle.
reason:
| "escape"
| "outside"
| "focuslost"
@param reason: "escape"|"focuslost"|"outside" — Cause supplied by RootView
on_floating_visibility_changed
(method) widget:on_floating_visibility_changed(visible: boolean)
Synchronize widget visibility with RootView, including owner-driven popup removal.
@param visible: boolean — Whether the floating widget remains shown
on_ime_text_editing
(method) core.view:on_ime_text_editing(text: string, start: number, length: number)
Handle IME (Input Method Editor) text composition events. Override for IME support in text editors. Called during composition.
@param text: string — Composition text being edited
@param start: number — Start position of selection within composition
@param length: number — Length of selection within composition
on_key_pressed
(method) plugins.projectsearch.resultsview:on_key_pressed(stroke: string)
-> consumed: boolean
Close centered search on Escape only while it owns keyboard focus.
@param stroke: string — Normalized key binding
@return consumed: boolean — Whether the search popup handled Escape
on_mouse_capture_lost
(method) widget:on_mouse_capture_lost()
End a pointer gesture without emitting a click. Override to clear drag state.
on_mouse_enter
(method) widget:on_mouse_enter(x: any, y: any, dx: any, dy: any)
Emitted once when the mouse hovers the widget.
on_mouse_leave
(method) widget:on_mouse_leave(x: any, y: any, dx: any, dy: any)
Emitted once when the mouse leaves the widget.
on_mouse_left
(method) widget:on_mouse_left()
on_mouse_moved
(method) widget:on_mouse_moved(x: number, y: number, dx: number, dy: number)
-> boolean
Besides the on_mouse_moved this event emits on_mouse_enter and on_mouse_leave for easy hover effects. Also, if the widget is scrollable and pressed this will drag it unless there is an active input_text child active.
on_mouse_pressed
(method) plugins.projectsearch.resultsview:on_mouse_pressed(button: "left"|"right", x: number, y: number, clicks: integer)
-> boolean
on_mouse_released
(method) widget:on_mouse_released(button: "left"|"right", x: number, y: number)
-> processed: boolean
Send release to the pressed target, even outside its bounds.
button:
| "left"
| "right"
@return processed: boolean
on_mouse_wheel
(method) widget:on_mouse_wheel(y: number, x: number)
-> boolean
on_scale_change
(method) plugins.projectsearch.resultsview:on_scale_change(new_scale: number, prev_scale: number)
Scale docked width while centered placement follows the available viewport.
@param new_scale: number — Updated interface scale
@param prev_scale: number — Previous interface scale
on_text_input
(method) widget:on_text_input(text: string)
-> processed: boolean
Redirects any text input to active child with the input_text flag.
@return processed: boolean
on_touch_moved
(method) core.view:on_touch_moved(x: number, y: number, dx: number, dy: number, i: number)
Handle touch move events (touchscreen/trackpad gestures). Override for touch-specific behavior. Base implementation handles scrolling.
@param x: number — Current touch x coordinate
@param y: number — Current touch y coordinate
@param dx: number — Delta x since last position
@param dy: number — Delta y since last position
@param i: number — Touch finger/pointer index
open_selected_result
(method) plugins.projectsearch.resultsview:open_selected_result(open_in_split?: boolean)
-> boolean|nil
Opens a DocView of the user selected match.
owns_view
(method) core.view:owns_view(view?: core.view)
-> owned: boolean
Check whether a view is this view or belongs to it through a container or owner. Follows parent, subparent, and floating owner links while guarding against cycles.
@param view?: core.view — Candidate view
@return owned: boolean — Whether the candidate belongs to this view
queue_refresh
(method) plugins.projectsearch.resultsview:queue_refresh()
refresh
(method) plugins.projectsearch.resultsview:refresh()
Re-perform the search procedure using previous search options.
release_mouse
(method) widget:release_mouse(skip_cancel?: boolean)
Release this widget's capture and clear capture state on its ancestors.
@param skip_cancel?: boolean — Skip the cancellation callback when already handling capture loss
remove_child
(method) widget:remove_child(child: widget)
Remove a child widget.
@param child: widget — A base widget
run_animations
(method) widget:run_animations()
Runs all registered animations removing duplicated and finished ones.
schedule_update
(method) widget:schedule_update(delayed: any)
Schedule a core update and redraw. Since widgets try to not fire updates and draws to child widgets to reduce cpu consumption this function can be used when a re-update and re-draw is strictly needed.
scrollbar_dragging
(method) core.view:scrollbar_dragging()
-> dragging: boolean
Check if user is currently dragging either scrollbar.
@return dragging: boolean — True if scrollbar drag is in progress
scrollbar_hovering
(method) core.view:scrollbar_hovering()
-> hovering: boolean
Check if mouse is hovering over either scrollbar track.
@return hovering: boolean — True if mouse is over scrollbar
scrollbar_overlaps_point
(method) core.view:scrollbar_overlaps_point(x: number, y: number)
-> overlaps: boolean
Check if a screen point overlaps either scrollbar. Useful for determining cursor style or handling clicks.
@param x: number — Screen x coordinate
@param y: number — Screen y coordinate
@return overlaps: boolean — True if point is over vertical or horizontal scrollbar
set_border_width
(method) widget:set_border_width(width: integer)
Set the widget border size and appropriately re-set the widget size.
set_floating
(method) core.view:set_floating(enabled: boolean, options?: core.view.floating_options)
-> view: core.view
Enable or disable floating placement and configure popup input and ownership. Call show_floating() to show the view after enabling this mode. Detach it from its node or parent container before showing. Disabling hides it.
@param enabled: boolean — Whether the view should use floating placement
@param options?: core.view.floating_options — Options merged with existing ones when enabling
@return view: core.view — This view, for chaining
set_floating_bounds
(method) widget:set_floating_bounds(x: number, y: number, w: number, h: number)
Apply outer popup bounds using the widget's border-aware size and position setters. Pass dimensions unchanged: set_size() already accounts for the border.
@param x: number — Outer screen x coordinate
@param y: number — Outer screen y coordinate
@param w: number — Width including the border
@param h: number — Height including the border
set_label
(method) widget:set_label(text: string|table<integer, string|integer|renderer.color|renderer.font|widget.colorreference...(+1)>)
A text label for the widget, not all widgets support this.
@param text: string|table<integer, string|integer|renderer.color|renderer.font|widget.colorreference...(+1)>
set_position
(method) widget:set_position(x?: integer, y?: integer)
Set the position of the widget and updates the child absolute coordinates
set_size
(method) widget:set_size(width?: integer, height?: integer)
set_target_size
(method) widget:set_target_size(axis: string|'x'|'y', value: number)
-> boolean
Called by pragtical node system to properly resize the widget.
axis:
| 'x'
| 'y'
set_tooltip
(method) widget:set_tooltip(tooltip?: string|table<integer, string|integer|renderer.color|renderer.font|widget.colorreference...(+1)>, command?: string)
Text displayed when the widget is hovered. If a command name is also given its associated binding will be displayed as part of the tooltip.
@param tooltip?: string|table<integer, string|integer|renderer.color|renderer.font|widget.colorreference...(+1)>
show
(method) widget:show()
Show the widget.
show_animated
(method) widget:show_animated(lock_x?: boolean, lock_y?: boolean, options?: widget.animation.options)
Perform an animated show.
@param lock_x?: boolean — Do not resize width while animating
@param lock_y?: boolean — Do not resize height while animating
@param options?: widget.animation.options
show_floating
(method) plugins.projectsearch.resultsview:show_floating(options?: core.view.floating_transition)
-> view: plugins.projectsearch.resultsview
Slide centered global search down from the top using the core floating transition.
@param options?: core.view.floating_transition — Explicit transition overriding the default slide
@return view: plugins.projectsearch.resultsview — This view
stop_search
(method) plugins.projectsearch.resultsview:stop_search()
Flag that the search threads should be stopped.
supports_text_input
(method) core.view:supports_text_input()
-> boolean
Whether this view accepts text input (enables IME). Override and return true for text editors and input fields.
swap_active_child
(method) widget:swap_active_child(child?: widget)
Replaces current active child with a new one and calls the activate/deactivate events of the child. This is especially used to send text input events to widgets with input_text support.
@param child?: widget — If nil deactivates current child
toggle_background
(method) widget:toggle_background(enable?: boolean)
When set to false the background rendering is disabled.
toggle_visible
(method) widget:toggle_visible(animated?: boolean, lock_x?: boolean, lock_y?: boolean, options?: widget.animation.options)
Toggle visibility of widget.
@param options?: widget.animation.options
try_close
(method) core.view:try_close(do_close: function)
Called when view is requested to close (e.g., tab close button).
Override to show confirmation dialogs for unsaved changes.
Example: core.command_view:enter("Save?", \{submit = do_close\})
@param do_close: function — Call this function to actually close the view
update
(method) plugins.projectsearch.resultsview:update()
-> boolean
update_floating
(method) plugins.projectsearch.resultsview:update_floating()
Fit centered global search inside the viewport on scale or window-size changes. RootView calls this before updating and drawing a shown floating view.
update_if_scaled
(method) widget:update_if_scaled()
Explicitly call the widget update procedure when the scale change even if the widget is not visible.
update_position
(method) widget:update_position(recursive?: boolean)
Called on the update function to be able to scroll the child widgets.
@param recursive?: boolean — Update descendants; defaults to true.
update_replacement
(method) plugins.projectsearch.resultsview:update_replacement()
Sets the replacement text depending on currently toggled options
update_scrollbar
(method) core.view:update_scrollbar()
Update scrollbar positions and sizes. Called automatically by update(). Rarely needs to be called manually.
update_size_position
(method) widget:update_size_position()
Similar to update, but here you should perform expensive calculations that will get executed for a predefined period of time when a widget is initialized, scale has changed or a widget switched from hidden to visible.
plugins.projectsearch.resultsview.options
filters
(field) filters: { includes: string?, excludes: string? }?
has_focus
(field) has_focus: boolean?
insensitive
(field) insensitive: boolean?
path
(field) path: string?
replacement
(field) replacement: string?
run
(field) run: boolean?
search_type
(field) search_type: ("plain"|"regex")?
text
(field) text: string?
whole_word
(field) whole_word: boolean?
hide
function plugins.projectsearch.hide(options?: plugins.projectsearch.resultsview.options)
-> view: (plugins.projectsearch.resultsview)?
Hide global search and restore focus synchronously before outside clicks continue. A queued show must not later focus an input that has already been hidden.
@param options?: plugins.projectsearch.resultsview.options
@return view: (plugins.projectsearch.resultsview)? — Reusable global search, if created
search_plain
function plugins.projectsearch.search_plain(text: string, path?: string, insensitive?: boolean, whole_word?: boolean, replacement?: string)
-> (plugins.projectsearch.resultsview)?
Start a plain text search.
@return: (plugins.projectsearch.resultsview)?
search_regex
function plugins.projectsearch.search_regex(text: string, path?: string, insensitive?: boolean, whole_word?: boolean, replacement?: string)
-> (plugins.projectsearch.resultsview)?
Start a regex search.
@return: (plugins.projectsearch.resultsview)?
set_position
function plugins.projectsearch.set_position(position: "center"|"left"|"right")
Configure global search placement, moving an existing view immediately. The preference is saved by Settings when its position selector is used.
position:
| "left"
| "right"
| "center"
@param position: "center"|"left"|"right" — Docking edge or floating popup
show
function plugins.projectsearch.show(options?: plugins.projectsearch.resultsview.options)
-> view: plugins.projectsearch.resultsview
Show or focus global search, preserving its query and result state.
@param options?: plugins.projectsearch.resultsview.options
@return view: plugins.projectsearch.resultsview — Reusable global search
toggle
function plugins.projectsearch.toggle(options?: plugins.projectsearch.resultsview.options)
-> view: plugins.projectsearch.resultsview
Toggle the global project search view, or focus it when invoked from the editor.
@param options?: plugins.projectsearch.resultsview.options
@return view: plugins.projectsearch.resultsview — Reusable global search