69 KiB
/home/matt/.steel/cogs/helix/configuration.scm
register-lsp-notification-handler
Register a callback to be called on LSP notifications sent from the server -> client that aren't currently handled by Helix as a built in.
(register-lsp-notification-handler lsp-name event-name handler)
- lsp-name : string?
- event-name : string?
- function : (-> hash? any?) ;; Function where the first argument is the parameters
Examples
(register-lsp-notification-handler "dart"
"dart/textDocument/publishClosingLabels"
(lambda (args) (displayln args)))
cursor-shape
Shape for cursor in each mode
(cursor-shape #:normal (normal 'block) #:select (select 'block) #:insert (insert 'block))
Examples
(cursor-shape #:normal 'block #:select 'underline #:insert 'bar)
set-lsp-config!
Sets the language server config for a specific language server.
(set-lsp-config! lsp config)
- lsp : string?
- config: hash?
This will overlay the existing configuration, much like the existing toml definition does.
Available options for the config hash are:
(hash "command" "<command>"
"args" (list "args" ...)
"environment" (hash "ENV" "VAR" ...)
"config" (hash ...)
"timeout" 100 ;; number
"required-root-patterns" (listof "pattern" ...))
Examples
(set-lsp-config! "jdtls"
(hash "args" (list "-data" "/home/matt/code/java-scratch/workspace")))
file-picker-kw
Sets the configuration for the file picker using keywords.
(file-picker-kw #:hidden #t
#:follow-symlinks #t
#:deduplicate-links #t
#:parents #t
#:ignore #t
#:git-ignore #t
#:git-exclude #t
#:git-global #t
#:max-depth #f) ;; Expects either #f or an int?
By default, max depth is #f
while everything else is an int?
To use this, call this in your init.scm
or helix.scm
:
Examples
(file-picker-kw #:hidden #f)
file-picker
Sets the configuration for the file picker using var args.
(file-picker . args)
The args are expected to be something of the value:
(-> FilePickerConfiguration? bool?)
These other functions in this module which follow this behavior are all
prefixed fp-
, and include:
- fp-hidden
- fp-follow-symlinks
- fp-deduplicate-links
- fp-parents
- fp-ignore
- fp-git-ignore
- fp-git-global
- fp-git-exclude
- fp-max-depth
By default, max depth is #f
while everything else is an int?
To use this, call this in your init.scm
or helix.scm
:
Examples
(file-picker (fp-hidden #f) (fp-parents #f))
soft-wrap-kw
Sets the configuration for soft wrap using keyword args.
(soft-wrap-kw #:enable #f
#:max-wrap 20
#:max-indent-retain 40
#:wrap-indicator "↪"
#:wrap-at-text-width #f)
The options are as follows:
-
#:enable: Soft wrap lines that exceed viewport width. Default to off
-
#:max-wrap: Maximum space left free at the end of the line. This space is used to wrap text at word boundaries. If that is not possible within this limit the word is simply split at the end of the line.
This is automatically hard-limited to a quarter of the viewport to ensure correct display on small views.
Default to 20
-
#:max-indent-retain Maximum number of indentation that can be carried over from the previous line when softwrapping. If a line is indented further then this limit it is rendered at the start of the viewport instead.
This is automatically hard-limited to a quarter of the viewport to ensure correct display on small views.
Default to 40
-
#:wrap-indicator Indicator placed at the beginning of softwrapped lines
Defaults to ↪
-
#:wrap-at-text-width Softwrap at
text_width
instead of viewport width if it is shorter
Examples
(soft-wrap-kw #:sw-enable #t)
soft-wrap
Sets the configuration for soft wrap using var args.
(soft-wrap . args)
The args are expected to be something of the value:
(-> SoftWrapConfiguration? bool?)
The options are as follows:
-
sw-enable: Soft wrap lines that exceed viewport width. Default to off
-
sw-max-wrap: Maximum space left free at the end of the line. This space is used to wrap text at word boundaries. If that is not possible within this limit the word is simply split at the end of the line.
This is automatically hard-limited to a quarter of the viewport to ensure correct display on small views.
Default to 20
-
sw-max-indent-retain Maximum number of indentation that can be carried over from the previous line when softwrapping. If a line is indented further then this limit it is rendered at the start of the viewport instead.
This is automatically hard-limited to a quarter of the viewport to ensure correct display on small views.
Default to 40
-
sw-wrap-indicator Indicator placed at the beginning of softwrapped lines
Defaults to ↪
-
sw-wrap-at-text-width Softwrap at
text_width
instead of viewport width if it is shorter
Examples
(soft-wrap (sw-enable #t))
scrolloff
Padding to keep between the edge of the screen and the cursor when scrolling. Defaults to 5.
scroll_lines
Number of lines to scroll at once. Defaults to 3
mouse
Mouse support. Defaults to true.
shell
Shell to use for shell commands. Defaults to ["cmd", "/C"] on Windows and ["sh", "-c"] otherwise.
line-number
Line number mode.
cursorline
Highlight the lines cursors are currently on. Defaults to false
cursorcolumn
Highlight the columns cursors are currently on. Defaults to false
middle-click-paste
Middle click paste support. Defaults to true
auto-pairs
Automatic insertion of pairs to parentheses, brackets, etc. Optionally, this can be a list of 2-tuples to specify a global list of characters to pair. Defaults to true.
auto-completion
Automatic auto-completion, automatically pop up without user trigger. Defaults to true.
auto-format
Automatic formatting on save. Defaults to true.
auto-save
Automatic save on focus lost and/or after delay. Time delay in milliseconds since last edit after which auto save timer triggers. Time delay defaults to false with 3000ms delay. Focus lost defaults to false.
text-width
Set a global text_width
idle-timeout
Time in milliseconds since last keypress before idle timers trigger. Used for various UI timeouts. Defaults to 250ms.
completion-timeout
Time in milliseconds after typing a word character before auto completions are shown, set to 5 for instant. Defaults to 250ms.
preview-completion-insert
Whether to insert the completion suggestion on hover. Defaults to true.
completion-trigger-len
Length to trigger completions
completion-replace
Whether to instruct the LSP to replace the entire word when applying a completion or to only insert new text
auto-info
Whether to display infoboxes. Defaults to true.
true-color
Set to true
to override automatic detection of terminal truecolor support in the event of a false negative. Defaults to false
.
insert-final-newline
Whether to automatically insert a trailing line-ending on write if missing. Defaults to true
color-modes
Whether to color modes with different colors. Defaults to false
.
gutters
Gutter configuration
statusline
Configuration of the statusline elements
undercurl
Set to true
to override automatic detection of terminal undercurl support in the event of a false negative. Defaults to false
.
search
Search configuration
lsp
Lsp config
terminal
Terminal config
rulers
Column numbers at which to draw the rulers. Defaults to []
, meaning no rulers
whitespace
Whitespace config
bufferline
Persistently display open buffers along the top
indent-guides
Vertical indent width guides
workspace-lsp-roots
Workspace specific lsp ceiling dirs
default-line-ending
Which line ending to choose for new documents. Defaults to native
. i.e. crlf
on Windows, otherwise lf
.
smart-tab
Enables smart tab
keybindings
Keybindings config
inline-diagnostics-cursor-line-enable
Inline diagnostics cursor line
inline-diagnostics-end-of-line-enable
Inline diagnostics end of line
get-language-config
Get the configuration for a specific language
set-language-config!
Set the language configuration
/home/matt/.steel/cogs/helix/commands.scm
quit
Close the current view.
quit!
Force close the current view, ignoring unsaved changes.
open
Open a file from disk into the current view.
buffer-close
Close the current buffer.
buffer-close!
Close the current buffer forcefully, ignoring unsaved changes.
buffer-close-others
Close all buffers but the currently focused one.
buffer-close-others!
Force close all buffers but the currently focused one.
buffer-close-all
Close all buffers without quitting.
buffer-close-all!
Force close all buffers ignoring unsaved changes without quitting.
buffer-next
Goto next buffer.
buffer-previous
Goto previous buffer.
write
Write changes to disk. Accepts an optional path (:write some/path.txt)
write!
Force write changes to disk creating necessary subdirectories. Accepts an optional path (:write! some/path.txt)
write-buffer-close
Write changes to disk and closes the buffer. Accepts an optional path (:write-buffer-close some/path.txt)
write-buffer-close!
Force write changes to disk creating necessary subdirectories and closes the buffer. Accepts an optional path (:write-buffer-close! some/path.txt)
new
Create a new scratch buffer.
format
Format the file using an external formatter or language server.
indent-style
Set the indentation style for editing. ('t' for tabs or 1-16 for number of spaces.)
line-ending
Set the document's default line ending. Options: crlf, lf.
earlier
Jump back to an earlier point in edit history. Accepts a number of steps or a time span.
later
Jump to a later point in edit history. Accepts a number of steps or a time span.
write-quit
Write changes to disk and close the current view. Accepts an optional path (:wq some/path.txt)
write-quit!
Write changes to disk and close the current view forcefully. Accepts an optional path (:wq! some/path.txt)
write-all
Write changes from all buffers to disk.
write-all!
Forcefully write changes from all buffers to disk creating necessary subdirectories.
write-quit-all
Write changes from all buffers to disk and close all views.
write-quit-all!
Write changes from all buffers to disk and close all views forcefully (ignoring unsaved changes).
quit-all
Close all views.
quit-all!
Force close all views ignoring unsaved changes.
cquit
Quit with exit code (default 1). Accepts an optional integer exit code (:cq 2).
cquit!
Force quit with exit code (default 1) ignoring unsaved changes. Accepts an optional integer exit code (:cq! 2).
theme
Change the editor theme (show current theme if no name specified).
yank-join
Yank joined selections. A separator can be provided as first argument. Default value is newline.
clipboard-yank
Yank main selection into system clipboard.
clipboard-yank-join
Yank joined selections into system clipboard. A separator can be provided as first argument. Default value is newline.
primary-clipboard-yank
Yank main selection into system primary clipboard.
primary-clipboard-yank-join
Yank joined selections into system primary clipboard. A separator can be provided as first argument. Default value is newline.
clipboard-paste-after
Paste system clipboard after selections.
clipboard-paste-before
Paste system clipboard before selections.
clipboard-paste-replace
Replace selections with content of system clipboard.
primary-clipboard-paste-after
Paste primary clipboard after selections.
primary-clipboard-paste-before
Paste primary clipboard before selections.
primary-clipboard-paste-replace
Replace selections with content of system primary clipboard.
show-clipboard-provider
Show clipboard provider name in status bar.
change-current-directory
Change the current working directory.
show-directory
Show the current working directory.
encoding
Set encoding. Based on https://encoding.spec.whatwg.org
.
character-info
Get info about the character under the primary cursor.
reload
Discard changes and reload from the source file.
reload-all
Discard changes and reload all documents from the source files.
update
Write changes only if the file has been modified.
lsp-workspace-command
Open workspace command picker
lsp-restart
Restarts the given language servers, or all language servers that are used by the current file if no arguments are supplied
lsp-stop
Stops the given language servers, or all language servers that are used by the current file if no arguments are supplied
tree-sitter-scopes
Display tree sitter scopes, primarily for theming and development.
tree-sitter-highlight-name
Display name of tree-sitter highlight scope under the cursor.
debug-start
Start a debug session from a given template with given parameters.
debug-remote
Connect to a debug adapter by TCP address and start a debugging session from a given template with given parameters.
debug-eval
Evaluate expression in current debug context.
vsplit
Open the file in a vertical split.
vsplit-new
Open a scratch buffer in a vertical split.
hsplit
Open the file in a horizontal split.
hsplit-new
Open a scratch buffer in a horizontal split.
tutor
Open the tutorial.
goto
Goto line number.
set-language
Set the language of current buffer (show current language if no value specified).
set-option
Set a config option at runtime.
For example to disable smart case search, use :set search.smart-case false
.
toggle-option
Toggle a config option at runtime.
For example to toggle smart case search, use :toggle search.smart-case
.
get-option
Get the current value of a config option.
sort
Sort ranges in selection.
reflow
Hard-wrap the current selection of lines to a given width.
tree-sitter-subtree
Display the smallest tree-sitter subtree that spans the primary selection, primarily for debugging queries.
config-reload
Refresh user config.
config-open
Open the user config.toml file.
config-open-workspace
Open the workspace config.toml file.
log-open
Open the helix log file.
insert-output
Run shell command, inserting output before each selection.
append-output
Run shell command, appending output after each selection.
pipe
Pipe each selection to the shell command.
pipe-to
Pipe each selection to the shell command, ignoring output.
run-shell-command
Run a shell command
reset-diff-change
Reset the diff change at the cursor position.
clear-register
Clear given register. If no argument is provided, clear all registers.
redraw
Clear and re-render the whole UI
move
Move the current buffer and its corresponding file to a different path
yank-diagnostic
Yank diagnostic(s) under primary cursor to register, or clipboard by default
read
Load a file into buffer
echo
Prints the given arguments to the statusline.
noop
Does nothing.
/home/matt/.steel/cogs/helix/misc.scm
hx.cx->pos
DEPRECATED: Please use cursor-position
cursor-position
Returns the cursor position within the current buffer as an integer
hx.custom-insert-newline
DEPRECATED: Please use insert-newline-hook
insert-newline-hook
Inserts a new line with the provided indentation.
(insert-newline-hook indent-string)
indent-string : string?
push-component!
Push a component on to the top of the stack.
(push-component! component)
component : WrappedDynComponent?
pop-last-component!
DEPRECATED: Please use pop-last-component-by-name!
pop-last-component-by-name!
Pops the last component off of the stack by name. In other words, it removes the component matching this name from the stack.
(pop-last-component-by-name! name)
name : string?
enqueue-thread-local-callback
Enqueue a function to be run following this context of execution. This could be useful for yielding back to the editor in the event you want updates to happen before your function is run.
(enqueue-thread-local-callback callback)
callback : (-> any?) Function with no arguments.
Examples
(enqueue-thread-local-callback (lambda () (theme "focus_nova")))
set-status!
Sets the content of the status line
send-lsp-command
Send an lsp command. The lsp-name
must correspond to an active lsp.
The method name corresponds to the method name that you'd expect to see
with the lsp, and the params can be passed as a hash table. The callback
provided will be called with whatever result is returned from the LSP,
deserialized from json to a steel value.
Example
(define (view-crate-graph)
(send-lsp-command "rust-analyzer"
"rust-analyzer/viewCrateGraph"
(hash "full" #f)
;; Callback to run with the result
(lambda (result) (displayln result))))
acquire-context-lock
Schedule a function to run on the main thread. This is a fairly low level function, and odds are you'll want to use some abstractions on top of this.
The provided function will get enqueued to run on the main thread, and during the duration of the functions execution, the provided mutex will be locked.
(acquire-context-lock callback-fn mutex)
callback-fn : (-> void?) Function with no arguments
mutex : mutex?
enqueue-thread-local-callback-with-delay
Enqueue a function to be run following this context of execution, after a delay. This could be useful for yielding back to the editor in the event you want updates to happen before your function is run.
(enqueue-thread-local-callback-with-delay delay callback)
delay : int? Time to delay the callback by in milliseconds
callback : (-> any?) Function with no arguments.
Examples
(enqueue-thread-local-callback-with-delay 1000 (lambda () (theme "focus_nova"))) ;; Run after 1 second
``
### **helix-await-callback**
DEPRECATED: Please use `await-callback`
### **await-callback**
Await the given value, and call the callback function on once the future is completed.
```scheme
(await-callback future callback)
- future : future?
- callback (-> any?) Function with no arguments
add-inlay-hint
Warning: this is experimental
Adds an inlay hint at the given character index.
(add-inlay-hint char-index completion)
char-index : int? completion : string?
remove-inlay-hint
Warning: this is experimental
Removes an inlay hint at the given character index. Note - to remove properly, the completion must match what was already there.
(remove-inlay-hint char-index completion)
char-index : int? completion : string?
/home/matt/.steel/cogs/helix/editor.scm
editor-focus
Get the current focus of the editor, as a ViewId
.
(editor-focus) -> ViewId
editor-mode
Get the current mode of the editor
(editor-mode) -> Mode?
cx->themes
DEPRECATED: Please use themes->list
themes->list
Get the current themes as a list of strings.
(themes->list) -> (listof string?)
editor-all-documents
Get a list of all of the document ids that are currently open.
(editor-all-documents) -> (listof DocumentId?)
cx->cursor
DEPRECATED: Please use current-cursor
current-cursor
Gets the primary cursor position in screen coordinates,
or #false
if the primary cursor is not visible on screen.
(current-cursor) -> (listof? (or Position? #false) CursorKind)
editor-focused-buffer-area
Get the Rect
associated with the currently focused buffer.
(editor-focused-buffer-area) -> (or Rect? #false)
editor->doc-id
Get the document from a given view.
editor-switch!
Open the document in a vertical split.
editor-set-focus!
Set focus on the view.
editor-set-mode!
Set the editor mode.
editor-doc-in-view?
Check whether the current view contains a document.
set-scratch-buffer-name!
Set the name of a scratch buffer.
set-buffer-uri!
Set the URI of the buffer
editor-doc-exists?
Check if a document exists.
editor-document-last-saved
Check when a document was last saved (returns a SystemTime
)
editor-document-dirty?
Check if a document has unsaved changes
editor->text
Get the document as a rope.
editor-document->path
Get the path to a document.
register->value
Get register value as a list of strings.
set-editor-clip-top!
Set the editor clipping at the top.
set-editor-clip-right!
Set the editor clipping at the right.
set-editor-clip-left!
Set the editor clipping at the left.
set-editor-clip-bottom!
Set the editor clipping at the bottom.
/home/matt/.steel/cogs/helix/themes.scm
register-theme
Register this theme with helix for use
attribute
Class attributes, HTML tag attributes
type
Types
type.builtin
Primitive types provided by the language (int
, usize
)
type.parameter
Generic type parameters (T
)
type.enum
Enum usage
type.enum.variant
Enum variant
constructor
Constructor usage
constant
Constants usage
constant.builtin
Special constants provided by the language (true
, false
, nil
, etc)
constant.builtin.boolean
A special case for highlighting individual booleans
constant.character
Character usage
constant.character.escape
Highlighting individual escape characters
constant.numeric
Numbers
constant.numeric.integer
Integers
constant.numeric.float
Floats
string
Highlighting strings
string.regexp
Highlighting regular expressions
string.special
Special strings
string.special.path
Highlighting paths
string.special.url
Highlighting URLs
string.special.symbol
Erlang/Elixir atoms, Ruby symbols, Clojure keywords
comment
Highlighting comments
comment.line
Single line comments (//
)
comment.block
Block comments (/* */
)
comment.block.documentation
Documentation comments (e.g. ///
in Rust)
variable
Variables
variable.builtin
Reserved language variables (self
, this
, super
, etc.)
variable.parameter
Function parameters
variable.other
Other variables
variable.other.member
Fields of composite data types (e.g. structs, unions)
variable.other.member.private
Private fields that use a unique syntax (currently just EMCAScript-based languages)
label
Highlighting labels
punctuation
Highlighting punctuation
punctuation.delimiter
Commas, colon
punctuation.bracket
Parentheses, angle brackets, etc.
punctuation.special
String interpolation brackets
keyword
Highlighting keywords
keyword.control
Control keywords
keyword.control.conditional
if, else
keyword.control.repeat
for, while, loop
keyword.control.import
import, export
keyword.control.return
return keyword
keyword.control.exception
exception keyword
keyword.operator
or, in
keyword.directive
Preprocessor directives (#if
in C)
keyword.function
fn, func
keyword.storage
Keywords describing how things are stored
keyword.storage.type
The type of something, class
, function
, var
, let
, etc
keyword.storage.modifier
Storage modifiers like static
, mut
, const
, ref
, etc
operator
Operators such as ||
, +=
, >
, etc
function
Highlighting function calls
function.builtin
Builtin functions
function.method
Calling methods
function.method.private
Private methods that use a unique syntax (currently just ECMAScript-based languages)
function.macro
Highlighting macros
function.special
Preprocessor in C
tag
Tags (e.g. in HTML)
tag.builtin
Builtin tags
markup
Highlighting markdown
markup.heading
Markdown heading
markup.heading.marker
Markdown heading marker
markup.heading.marker.1
Markdown heading text h1
markup.heading.marker.2
Markdown heading text h2
markup.heading.marker.3
Markdown heading text h3
markup.heading.marker.4
Markdown heading text h4
markup.heading.marker.5
Markdown heading text h5
markup.heading.marker.6
Markdown heading text h6
markup.list
Markdown lists
markup.list.unnumbered
Unnumbered markdown lists
markup.list.numbered
Numbered markdown lists
markup.list.checked
Checked markdown lists
markup.list.unchecked
Unchecked markdown lists
markup.bold
Markdown bold
markup.italic
Markdown italics
markup.strikethrough
Markdown strikethrough
markup.link
Markdown links
markup.link.url
URLs pointed to by links
markup.link.label
non-URL link references
markup.link.text
URL and image descriptions in links
markup.quote
Markdown quotes
markup.raw
Markdown raw
markup.raw.inline
Markdown inline raw
markup.raw.block
Markdown raw block
diff
Version control changes
diff.plus
Version control additions
diff.plus.gutter
Version control addition gutter indicator
diff.minus
Version control deletions
diff.minus.gutter
Version control deletion gutter indicator
diff.delta
Version control modifications
diff.delta.moved
Renamed or moved files/changes
diff.delta.conflict
Merge conflicts
diff.delta.gutter
Gutter indicator
markup.normal.completion
For completion doc popup UI
markup.normal.hover
For hover popup UI
markup.heading.completion
For completion doc popup UI
markup.heading.hover
For hover popup UI
markup.raw.inline.completion
For completion doc popup UI
markup.raw.inline.hover
For hover popup UI
ui.background.separator
Picker separator below input line
ui.cursor.match
Matching bracket etc.
ui.cursor.primary
Cursor with primary selection
ui.debug.breakpoint
Breakpoint indicator, found in the gutter
ui.debug.active
Indicator for the line at which debugging execution is paused at, found in the gutter
ui.gutter
Gutter
ui.gutter.selected
Gutter for the line the cursor is on
ui.highlight.frameline
Line at which debugging execution is paused at
ui.linenr
Line numbers
ui.linenr.selected
Line number for the line the cursor is on
ui.statusline
Statusline
ui.statusline.inactive
Statusline (unfocused document)
ui.statusline.normal
Statusline mode during normal mode (only if editor.color-modes is enabled)
ui.statusline.insert
Statusline mode during insert mode (only if editor.color-modes is enabled)
ui.statusline.select
Statusline mode during select mode (only if editor.color-modes is enabled)
ui.statusline.separator
Separator character in statusline
ui.bufferline
Style for the buffer line
ui.bufferline.active
Style for the active buffer in buffer line
ui.bufferline.background
Style for the bufferline background
ui.popup
Documentation popups (e.g. Space + k)
ui.popup.info
Prompt for multiple key options
ui.window
Borderline separating splits
ui.help
Description box for commands
ui.text
Default text style, command prompts, popup text, etc.
ui.text.focus
The currently selected line in the picker
ui.text.inactive
Same as ui.text but when the text is inactive (e.g. suggestions)
ui.text.info
The key: command text in ui.popup.info boxes
ui.virtual.ruler
Ruler columns (see the editor.rules config)
ui.virtual.whitespace
Visible whitespace characters
ui.virtual.indent-guide
Vertical indent width guides
ui.virtual.inlay-hint
Default style for inlay hints of all kinds
ui.virtual.inlay-hint.parameter
Style for inlay hints of kind parameter
(LSPs are not rquired to set a kind)
ui.virtual.inlay-hint.type
Style for inlay hints of kind type
(LSPs are not required to set a kind)
ui.virtual.wrap
Soft-wrap indicator (see the editor.soft-wrap config)
ui.virtual.jump-label
Style for virtual jump labels
ui.menu
Code and command completion menus
ui.menu.selected
Selected autocomplete item
ui.menu.scroll
fg sets thumb color, bg sets track color of scrollbar
ui.selection
For selections in the editing area
ui.highlight
Highlighted lines in the picker preview
ui.cursorline
The line of the cursor (if cursorline is enabled)
ui.cursorline.primary
The line of the primary cursor (if cursorline is enabled)
ui.cursorline.secondary
The line of the secondary cursor (if cursorline is enabled)
ui.cursorcolumn.primary
The column of the primary cursor (if cursorcolumn is enabled)
ui.cursorcolumn.secondary
The column of the secondary cursor (if cursorcolumn is enabled)
warning
Diagnostics warning (gutter)
error
Diagnostics error (gutter)
info
Diagnostics info (gutter)
hint
Diagnostics hint (gutter)
diagnostic
Diagnostics fallback style (editing area)
diagnostic.hint
Diagnostics hint (editing area)
diagnostic.info
Diagnostics info (editing area)
diagnostic.warning
Diagnostics warning (editing area)
diagnostic.error
Diagnostics error (editing area)
diagnostic.unnecessary
Diagnostics with unnecessary tag (editing area)
diagnostic.deprecated
Diagnostics with deprecated tag (editing area)
/home/matt/.steel/cogs/helix/static.scm
no_op
Do nothing
move_char_left
Move left
move_char_right
Move right
move_line_up
Move up
move_line_down
Move down
move_visual_line_up
Move up
move_visual_line_down
Move down
extend_char_left
Extend left
extend_char_right
Extend right
extend_line_up
Extend up
extend_line_down
Extend down
extend_visual_line_up
Extend up
extend_visual_line_down
Extend down
copy_selection_on_next_line
Copy selection on next line
copy_selection_on_prev_line
Copy selection on previous line
move_next_word_start
Move to start of next word
move_prev_word_start
Move to start of previous word
move_next_word_end
Move to end of next word
move_prev_word_end
Move to end of previous word
move_next_long_word_start
Move to start of next long word
move_prev_long_word_start
Move to start of previous long word
move_next_long_word_end
Move to end of next long word
move_prev_long_word_end
Move to end of previous long word
move_next_sub_word_start
Move to start of next sub word
move_prev_sub_word_start
Move to start of previous sub word
move_next_sub_word_end
Move to end of next sub word
move_prev_sub_word_end
Move to end of previous sub word
move_parent_node_end
Move to end of the parent node
move_parent_node_start
Move to beginning of the parent node
extend_next_word_start
Extend to start of next word
extend_prev_word_start
Extend to start of previous word
extend_next_word_end
Extend to end of next word
extend_prev_word_end
Extend to end of previous word
extend_next_long_word_start
Extend to start of next long word
extend_prev_long_word_start
Extend to start of previous long word
extend_next_long_word_end
Extend to end of next long word
extend_prev_long_word_end
Extend to end of prev long word
extend_next_sub_word_start
Extend to start of next sub word
extend_prev_sub_word_start
Extend to start of previous sub word
extend_next_sub_word_end
Extend to end of next sub word
extend_prev_sub_word_end
Extend to end of prev sub word
extend_parent_node_end
Extend to end of the parent node
extend_parent_node_start
Extend to beginning of the parent node
find_till_char
Move till next occurrence of char
find_next_char
Move to next occurrence of char
extend_till_char
Extend till next occurrence of char
extend_next_char
Extend to next occurrence of char
till_prev_char
Move till previous occurrence of char
find_prev_char
Move to previous occurrence of char
extend_till_prev_char
Extend till previous occurrence of char
extend_prev_char
Extend to previous occurrence of char
repeat_last_motion
Repeat last motion
replace
Replace with new char
switch_case
Switch (toggle) case
switch_to_uppercase
Switch to uppercase
switch_to_lowercase
Switch to lowercase
page_up
Move page up
page_down
Move page down
half_page_up
Move half page up
half_page_down
Move half page down
page_cursor_up
Move page and cursor up
page_cursor_down
Move page and cursor down
page_cursor_half_up
Move page and cursor half up
page_cursor_half_down
Move page and cursor half down
select_all
Select whole document
select_regex
Select all regex matches inside selections
split_selection
Split selections on regex matches
split_selection_on_newline
Split selection on newlines
merge_selections
Merge selections
merge_consecutive_selections
Merge consecutive selections
search
Search for regex pattern
rsearch
Reverse search for regex pattern
search_next
Select next search match
search_prev
Select previous search match
extend_search_next
Add next search match to selection
extend_search_prev
Add previous search match to selection
search_selection
Use current selection as search pattern
search_selection_detect_word_boundaries
Use current selection as the search pattern, automatically wrapping with \b
on word boundaries
make_search_word_bounded
Modify current search to make it word bounded
global_search
Global search in workspace folder
extend_line
Select current line, if already selected, extend to another line based on the anchor
extend_line_below
Select current line, if already selected, extend to next line
extend_line_above
Select current line, if already selected, extend to previous line
select_line_above
Select current line, if already selected, extend or shrink line above based on the anchor
select_line_below
Select current line, if already selected, extend or shrink line below based on the anchor
extend_to_line_bounds
Extend selection to line bounds
shrink_to_line_bounds
Shrink selection to line bounds
delete_selection
Delete selection
delete_selection_noyank
Delete selection without yanking
change_selection
Change selection
change_selection_noyank
Change selection without yanking
collapse_selection
Collapse selection into single cursor
flip_selections
Flip selection cursor and anchor
ensure_selections_forward
Ensure all selections face forward
insert_mode
Insert before selection
append_mode
Append after selection
command_mode
Enter command mode
file_picker
Open file picker
file_picker_in_current_buffer_directory
Open file picker at current buffer's directory
file_picker_in_current_directory
Open file picker at current working directory
file_explorer
Open file explorer in workspace root
file_explorer_in_current_buffer_directory
Open file explorer at current buffer's directory
file_explorer_in_current_directory
Open file explorer at current working directory
code_action
Perform code action
buffer_picker
Open buffer picker
jumplist_picker
Open jumplist picker
symbol_picker
Open symbol picker
changed_file_picker
Open changed file picker
select_references_to_symbol_under_cursor
Select symbol references
workspace_symbol_picker
Open workspace symbol picker
diagnostics_picker
Open diagnostic picker
workspace_diagnostics_picker
Open workspace diagnostic picker
last_picker
Open last picker
insert_at_line_start
Insert at start of line
insert_at_line_end
Insert at end of line
open_below
Open new line below selection
open_above
Open new line above selection
normal_mode
Enter normal mode
select_mode
Enter selection extend mode
exit_select_mode
Exit selection mode
goto_definition
Goto definition
goto_declaration
Goto declaration
add_newline_above
Add newline above
add_newline_below
Add newline below
goto_type_definition
Goto type definition
goto_implementation
Goto implementation
goto_file_start
Goto line number else file start
goto_file_end
Goto file end
extend_to_file_start
Extend to line number else file start
extend_to_file_end
Extend to file end
goto_file
Goto files/URLs in selections
goto_file_hsplit
Goto files in selections (hsplit)
goto_file_vsplit
Goto files in selections (vsplit)
goto_reference
Goto references
goto_window_top
Goto window top
goto_window_center
Goto window center
goto_window_bottom
Goto window bottom
goto_last_accessed_file
Goto last accessed file
goto_last_modified_file
Goto last modified file
goto_last_modification
Goto last modification
goto_line
Goto line
goto_last_line
Goto last line
extend_to_last_line
Extend to last line
goto_first_diag
Goto first diagnostic
goto_last_diag
Goto last diagnostic
goto_next_diag
Goto next diagnostic
goto_prev_diag
Goto previous diagnostic
goto_next_change
Goto next change
goto_prev_change
Goto previous change
goto_first_change
Goto first change
goto_last_change
Goto last change
goto_line_start
Goto line start
goto_line_end
Goto line end
goto_column
Goto column
extend_to_column
Extend to column
goto_next_buffer
Goto next buffer
goto_previous_buffer
Goto previous buffer
goto_line_end_newline
Goto newline at line end
goto_first_nonwhitespace
Goto first non-blank in line
trim_selections
Trim whitespace from selections
extend_to_line_start
Extend to line start
extend_to_first_nonwhitespace
Extend to first non-blank in line
extend_to_line_end
Extend to line end
extend_to_line_end_newline
Extend to line end
signature_help
Show signature help
smart_tab
Insert tab if all cursors have all whitespace to their left; otherwise, run a separate command.
insert_tab
Insert tab char
insert_newline
Insert newline char
delete_char_backward
Delete previous char
delete_char_forward
Delete next char
delete_word_backward
Delete previous word
delete_word_forward
Delete next word
kill_to_line_start
Delete till start of line
kill_to_line_end
Delete till end of line
undo
Undo change
redo
Redo change
earlier
Move backward in history
later
Move forward in history
commit_undo_checkpoint
Commit changes to new checkpoint
yank
Yank selection
yank_to_clipboard
Yank selections to clipboard
yank_to_primary_clipboard
Yank selections to primary clipboard
yank_joined
Join and yank selections
yank_joined_to_clipboard
Join and yank selections to clipboard
yank_main_selection_to_clipboard
Yank main selection to clipboard
yank_joined_to_primary_clipboard
Join and yank selections to primary clipboard
yank_main_selection_to_primary_clipboard
Yank main selection to primary clipboard
replace_with_yanked
Replace with yanked text
replace_selections_with_clipboard
Replace selections by clipboard content
replace_selections_with_primary_clipboard
Replace selections by primary clipboard
paste_after
Paste after selection
paste_before
Paste before selection
paste_clipboard_after
Paste clipboard after selections
paste_clipboard_before
Paste clipboard before selections
paste_primary_clipboard_after
Paste primary clipboard after selections
paste_primary_clipboard_before
Paste primary clipboard before selections
indent
Indent selection
unindent
Unindent selection
format_selections
Format selection
join_selections
Join lines inside selection
join_selections_space
Join lines inside selection and select spaces
keep_selections
Keep selections matching regex
remove_selections
Remove selections matching regex
align_selections
Align selections in column
keep_primary_selection
Keep primary selection
remove_primary_selection
Remove primary selection
completion
Invoke completion popup
hover
Show docs for item under cursor
toggle_comments
Comment/uncomment selections
toggle_line_comments
Line comment/uncomment selections
toggle_block_comments
Block comment/uncomment selections
rotate_selections_forward
Rotate selections forward
rotate_selections_backward
Rotate selections backward
rotate_selection_contents_forward
Rotate selection contents forward
rotate_selection_contents_backward
Rotate selections contents backward
reverse_selection_contents
Reverse selections contents
expand_selection
Expand selection to parent syntax node
shrink_selection
Shrink selection to previously expanded syntax node
select_next_sibling
Select next sibling in the syntax tree
select_prev_sibling
Select previous sibling the in syntax tree
select_all_siblings
Select all siblings of the current node
select_all_children
Select all children of the current node
jump_forward
Jump forward on jumplist
jump_backward
Jump backward on jumplist
save_selection
Save current selection to jumplist
jump_view_right
Jump to right split
jump_view_left
Jump to left split
jump_view_up
Jump to split above
jump_view_down
Jump to split below
swap_view_right
Swap with right split
swap_view_left
Swap with left split
swap_view_up
Swap with split above
swap_view_down
Swap with split below
transpose_view
Transpose splits
rotate_view
Goto next window
rotate_view_reverse
Goto previous window
hsplit
Horizontal bottom split
hsplit_new
Horizontal bottom split scratch buffer
vsplit
Vertical right split
vsplit_new
Vertical right split scratch buffer
wclose
Close window
wonly
Close windows except current
select_register
Select register
insert_register
Insert register
copy_between_registers
Copy between two registers
align_view_middle
Align view middle
align_view_top
Align view top
align_view_center
Align view center
align_view_bottom
Align view bottom
scroll_up
Scroll view up
scroll_down
Scroll view down
match_brackets
Goto matching bracket
surround_add
Surround add
surround_replace
Surround replace
surround_delete
Surround delete
select_textobject_around
Select around object
select_textobject_inner
Select inside object
goto_next_function
Goto next function
goto_prev_function
Goto previous function
goto_next_class
Goto next type definition
goto_prev_class
Goto previous type definition
goto_next_parameter
Goto next parameter
goto_prev_parameter
Goto previous parameter
goto_next_comment
Goto next comment
goto_prev_comment
Goto previous comment
goto_next_test
Goto next test
goto_prev_test
Goto previous test
goto_next_entry
Goto next pairing
goto_prev_entry
Goto previous pairing
goto_next_paragraph
Goto next paragraph
goto_prev_paragraph
Goto previous paragraph
dap_launch
Launch debug target
dap_restart
Restart debugging session
dap_toggle_breakpoint
Toggle breakpoint
dap_continue
Continue program execution
dap_pause
Pause program execution
dap_step_in
Step in
dap_step_out
Step out
dap_next
Step to next
dap_variables
List variables
dap_terminate
End debug session
dap_edit_condition
Edit breakpoint condition on current line
dap_edit_log
Edit breakpoint log message on current line
dap_switch_thread
Switch current thread
dap_switch_stack_frame
Switch stack frame
dap_enable_exceptions
Enable exception breakpoints
dap_disable_exceptions
Disable exception breakpoints
shell_pipe
Pipe selections through shell command
shell_pipe_to
Pipe selections into shell command ignoring output
shell_insert_output
Insert shell command output before selections
shell_append_output
Append shell command output after selections
shell_keep_pipe
Filter selections with shell predicate
suspend
Suspend and return to shell
rename_symbol
Rename symbol
increment
Increment item under cursor
decrement
Decrement item under cursor
record_macro
Record macro
replay_macro
Replay macro
command_palette
Open command palette
goto_word
Jump to a two-character label
extend_to_word
Extend to a two-character label
goto_next_tabstop
Goto next snippet placeholder
goto_prev_tabstop
Goto next snippet placeholder
rotate_selections_first
Make the first selection your primary one
rotate_selections_last
Make the last selection your primary one
insert_char
Insert a given character at the cursor cursor position
insert_string
Insert a given string at the current cursor position
set-current-selection-object!
Update the selection object to the current selection within the editor
regex-selection
Run the given regex within the existing buffer
replace-selection-with
Replace the existing selection with the given string
cx->current-file
Get the currently focused file path
enqueue-expression-in-engine
Enqueue an expression to run at the top level context, after the existing function context has exited.
current_selection
Returns the current selection as a string
load-buffer!
Evaluates the current buffer
current-highlighted-text!
Returns the currently highlighted text as a string
get-current-line-number
Returns the current line number
current-selection-object
Returns the current selection object
get-helix-cwd
Returns the current working directly that helix is using
move-window-far-left
Moves the current window to the far left
move-window-far-right
Moves the current window to the far right
get-helix-scm-path
Returns the path to the helix.scm file as a string
get-init-scm-path
Returns the path to the init.scm file as a string
/home/matt/.steel/cogs/helix/ext.scm
eval-buffer
Eval the current buffer, morally equivalent to load-buffer!
evalp
Eval prompt
running-on-main-thread?
Check what the main thread id is, compare to the main thread
hx.with-context
If running on the main thread already, just do nothing. Check the ID of the engine, and if we're already on the main thread, just continue as is - i.e. just block. This does not block on the function if this is running on another thread.
(hx.with-context thunk)
thunk : (-> any?) ;; Function that has no arguments
Examples
(spawn-native-thread
(lambda ()
(hx.with-context (lambda () (theme "nord")))))
hx.block-on-task
Block on the given function.
(hx.block-on-task thunk)
thunk : (-> any?) ;; Function that has no arguments
Examples
(define thread
(spawn-native-thread
(lambda ()
(hx.block-on-task (lambda () (theme "nord") 10)))))
;; Some time later, in a different context - if done at the same time,
;; this will deadline, since the join depends on the callback previously
;; executing.
(equal? (thread-join! thread) 10) ;; => #true
/home/matt/.steel/cogs/helix/components.scm
theme->bg
Gets the Style
associated with the bg for the current theme
theme->fg
Gets the style
associated with the fg for the current theme
theme-scope
Get the Style
associated with the given scope from the current theme
Position?
Check if the given value is a Position
(Position? value) -> bool?
value : any?
Style?
Check if the given valuie is Style
(Style? value) -> bool?
value : any?
Buffer?
Checks if the given value is a Buffer
(Buffer? value) -> bool?
value : any?
buffer-area
Get the Rect
associated with the given Buffer
(buffer-area buffer)
- buffer : Buffer?
frame-set-string!
Set the string at the given x
and y
positions for the given Buffer
, with a provided Style
.
(frame-set-string! buffer x y string style)
buffer : Buffer?, x : int?, y : int?, string: string?, style: Style?,
SteelEventResult?
Check whether the given value is a SteelEventResult
.
(SteelEventResult? value) -> bool?
value : any?
new-component!
Construct a new dynamic component. This is used for creating widgets or floating windows
that exist outside of the buffer. This just constructs the component, it does not push the component
on to the component stack. For that, you'll use push-component!
.
(new-component! name state render function-map)
name : string? - This is the name of the comoponent itself.
state : any? - Typically this is a struct that holds the state of the component.
render : (-> state? Rect? Buffer?)
This is a function that will get called with each frame. The first argument is the state object provided,
and the second is the Rect?
to render against, ultimately against the Buffer?
.
function-map : (hashof string? function?) This is a hashmap of strings -> function that contains a few important functions:
"handle_event" : (-> state? Event?) -> SteelEventResult?
This is called on every event with an event object. There are multiple options you can use
when returning from this function:
* event-result/consume
* event-result/consume-without-rerender
* event-result/ignore
* event-result/close
See the associated docs for those to understand the implications for each.
"cursor" : (-> state? Rect?) -> Position?
This tells helix where to put the cursor.
"required_size": (-> state? (pair? int?)) -> (pair? int?)
Seldom used: TODO
position
Construct a new Position
.
(position row col) -> Position?
row : int? col : int?
position-row
Get the row associated with the given Position
.
(position-row pos) -> int?
pos : Position?
position-col
Get the col associated with the given Position
.
(position-col pos) -> int?
pos : Position?
set-position-row!
Set the row for the given Position
(set-position-row! pos row)
pos : Position? row : int?
set-position-col!
Set the col for the given Position
(set-position-col! pos col)
pos : Position? col : int?
Rect?
Check if the given value is a Rect
(Rect? value) -> bool?
value : any?
area
Constructs a new Rect
.
(area x y width height)
- x : int?
- y : int?
- width: int?
- height: int?
Examples
(area 0 0 100 200)
area-x
Get the x
value of the given Rect
(area-x area) -> int?
area : Rect?
area-y
Get the y
value of the given Rect
(area-y area) -> int?
area : Rect?
area-width
Get the width
value of the given Rect
(area-width area) -> int?
area : Rect?
area-height
Get the height
value of the given Rect
(area-height area) -> int?
area : Rect?
Widget/list?
Check whether the given value is a list widget.
(Widget/list? value) -> bool?
value : any?
widget/list
Creates a new List
widget with the given items.
(widget/list lst) -> Widget?
- lst : (listof string?)
widget/list/render
Render the given Widget/list
onto the provided Rect
within the given Buffer
.
(widget/list/render buf area lst)
- buf :
Buffer?
- area :
Rect?
- lst :
Widget/list?
block
Creates a block with the following styling:
(block)
- borders - all
- border-style - default style + white fg
- border-type - rounded
- style - default + black bg
make-block
Create a Block
with the provided styling, borders, and border type.
(make-block style border-style borders border_type)
- style : Style?
- border-style : Style?
- borders : string?
- border-type: String?
Valid border-types include:
- "plain"
- "rounded"
- "double"
- "thick"
Valid borders include:
- "top"
- "left"
- "right"
- "bottom"
- "all"
block/render
Render the given Block
over the given Rect
onto the provided Buffer
.
(block/render buf area block)
buf : Buffer? area: Rect? block: Block?
buffer/clear
Clear a Rect
in the Buffer
(buffer/clear area)
area : Rect?
buffer/clear-with
Clear a Rect
in the Buffer
with a default Style
(buffer/clear-with area style)
area : Rect? style : Style?
set-color-rgb!
Mutate the r/g/b of a color in place, to avoid allocation.
(set-color-rgb! color r g b)
color : Color? r : int? g : int? b : int?
set-color-indexed!
Mutate this color to be an indexed color.
(set-color-indexed! color index)
color : Color? index: int?
Color?
Check if the given value is a Color
.
(Color? value) -> bool?
value : any?
Color/Reset
Singleton for the reset color.
Color/Black
Singleton for the color black.
Color/Red
Singleton for the color red.
Color/White
Singleton for the color white.
Color/Green
Singleton for the color green.
Color/Yellow
Singleton for the color yellow.
Color/Blue
Singleton for the color blue.
Color/Magenta
Singleton for the color magenta.
Color/Cyan
Singleton for the color cyan.
Color/Gray
Singleton for the color gray.
Color/LightRed
Singleton for the color light read.
Color/LightGreen
Singleton for the color light green.
Color/LightYellow
Singleton for the color light yellow.
Color/LightBlue
Singleton for the color light blue.
Color/LightMagenta
Singleton for the color light magenta.
Color/LightCyan
Singleton for the color light cyan.
Color/LightGray
Singleton for the color light gray.
Color/rgb
Construct a new color via rgb.
(Color/rgb r g b) -> Color?
r : int? g : int? b : int?
Color-red
Get the red component of the Color?
.
(Color-red color) -> int?
color * Color?
Color-green
Get the green component of the Color?
.
(Color-green color) -> int?
color * Color?
Color-blue
Get the blue component of the Color?
.
(Color-blue color) -> int?
color * Color?
Color/Indexed
Construct a new indexed color.
(Color/Indexed index) -> Color?
- index : int?
set-style-fg!
Mutates the given Style
to have the fg with the provided color.
(set-style-fg! style color)
style : Style?
color : Color?
style-fg
Constructs a new Style
with the provided Color
for the fg.
(style-fg style color) -> Style
style : Style? color: Color?
style-bg
Constructs a new Style
with the provided Color
for the bg.
(style-bg style color) -> Style
style : Style? color: Color?
style-with-italics
Constructs a new Style
with italcs.
(style-with-italics style) -> Style
style : Style?
style-with-bold
Constructs a new Style
with bold styling.
(style-with-bold style) -> Style
style : Style?
style-with-dim
Constructs a new Style
with dim styling.
(style-with-dim style) -> Style
style : Style?
style-with-slow-blink
Constructs a new Style
with slow blink.
(style-with-slow-blink style) -> Style
style : Style?
style-with-rapid-blink
Constructs a new Style
with rapid blink.
(style-with-rapid-blink style) -> Style
style : Style?
style-with-reversed
Constructs a new Style
with revered styling.
(style-with-reversed style) -> Style
style : Style?
style-with-hidden
Constructs a new Style
with hidden styling.
(style-with-hidden style) -> Style
style : Style?
style-with-crossed-out
Constructs a new Style
with crossed out styling.
(style-with-crossed-out style) -> Style
style : Style?
style->fg
Return the color on the style, or #false if not present.
(style->fg style) -> (or Color? #false)
style : Style?
style->bg
Return the color on the style, or #false if not present.
(style->bg style) -> (or Color? #false)
style : Style?
set-style-bg!
Mutate the background style on the given style to a given color.
(set-style-bg! style color)
style : Style? color : Color?
style-underline-color
Return a new style with the provided underline color.
(style-underline-color style color) -> Style?
style : Style? color : Color?
style-underline-style
Return a new style with the provided underline style.
(style-underline-style style underline-style) -> Style?
style : Style? underline-style : UnderlineStyle?
UnderlineStyle?
Check if the provided value is an UnderlineStyle
.
(UnderlineStyle? value) -> bool?
value : any?
Underline/Reset
Singleton for resetting the underling style.
Underline/Line
Singleton for the line underline style.
Underline/Curl
Singleton for the curl underline style.
Underline/Dotted
Singleton for the dotted underline style.
Underline/Dashed
Singleton for the dashed underline style.
Underline/DoubleLine
Singleton for the double line underline style.
event-result/consume
Singleton for consuming an event. If this is returned from an event handler, the event will not continue to be propagated down the component stack. This also will trigger a re-render.
event-result/consume-without-rerender
Singleton for consuming an event. If this is returned from an event handler, the event will not continue to be propagated down the component stack. This will not trigger a re-render.
event-result/ignore
Singleton for ignoring an event. If this is returned from an event handler, the event will not continue to be propagated down the component stack. This will not trigger a re-render.
event-result/ignore-and-close
Singleton for ignoring an event. If this is returned from an event handler, the event will continue to be propagated down the component stack, and the component will be popped off of the stack and removed.
event-result/close
Singleton for consuming an event. If this is returned from an event handler, the event will not continue to be propagated down the component stack, and the component will be popped off of the stack and removed.
style
Constructs a new default style.
(style) -> Style?
Event?
Check if this value is an Event
(Event? value) -> bool?
value : any?
key-event?
Checks if the given event is a key event.
(key-event? event) -> bool?
- event : Event?
key-event-char
Get the character off of the event, if there is one.
(key-event-char event) -> (or char? #false)
event : Event?
key-event-modifier
Get the key event modifier off of the event, if there is one.
(key-event-modifier event) -> (or int? #false)
event : Event?
key-modifier-ctrl
The key modifier bits associated with the ctrl key modifier.
key-modifier-shift
The key modifier bits associated with the shift key modifier.
key-modifier-alt
The key modifier bits associated with the alt key modifier.
key-event-F?
Check if this key event is associated with an F<x>
key, e.g. F1, F2, etc.
(key-event-F? event number) -> bool?
event : Event? number : int?
mouse-event?
Check if this event is a mouse event.
(mouse-event event) -> bool?
event : Event?
event-mouse-kind
Convert the mouse event kind into an integer representing the state.
(event-mouse-kind event) -> (or int? #false)
event : Event?
This is the current mapping today:
match kind {
helix_view::input::MouseEventKind::Down(MouseButton::Left) => 0,
helix_view::input::MouseEventKind::Down(MouseButton::Right) => 1,
helix_view::input::MouseEventKind::Down(MouseButton::Middle) => 2,
helix_view::input::MouseEventKind::Up(MouseButton::Left) => 3,
helix_view::input::MouseEventKind::Up(MouseButton::Right) => 4,
helix_view::input::MouseEventKind::Up(MouseButton::Middle) => 5,
helix_view::input::MouseEventKind::Drag(MouseButton::Left) => 6,
helix_view::input::MouseEventKind::Drag(MouseButton::Right) => 7,
helix_view::input::MouseEventKind::Drag(MouseButton::Middle) => 8,
helix_view::input::MouseEventKind::Moved => 9,
helix_view::input::MouseEventKind::ScrollDown => 10,
helix_view::input::MouseEventKind::ScrollUp => 11,
helix_view::input::MouseEventKind::ScrollLeft => 12,
helix_view::input::MouseEventKind::ScrollRight => 13,
}
Any unhandled event that does not match this will return #false
.
event-mouse-row
Get the row from the mouse event, of #false if it isn't a mouse event.
(event-mouse-row event) -> (or int? #false)
event : Event?
event-mouse-col
Get the col from the mouse event, of #false if it isn't a mouse event.
(event-mouse-row event) -> (or int? #false)
event : Event?
mouse-event-within-area?
Check whether the given mouse event occurred within a given Rect
.
(mouse-event-within-area? event area) -> bool?
event : Event? area : Rect?
key-event-escape?
Check whether the given event is the key: escape
(key-event-escape? event)
event: Event?
key-event-backspace?
Check whether the given event is the key: backspace
(key-event-backspace? event)
event: Event?
key-event-enter?
Check whether the given event is the key: enter
(key-event-enter? event)
event: Event?
key-event-left?
Check whether the given event is the key: left
(key-event-left? event)
event: Event?
key-event-right?
Check whether the given event is the key: right
(key-event-right? event)
event: Event?
key-event-up?
Check whether the given event is the key: up
(key-event-up? event)
event: Event?
key-event-down?
Check whether the given event is the key: down
(key-event-down? event)
event: Event?
key-event-home?
Check whether the given event is the key: home
(key-event-home? event)
event: Event?
key-event-page-up?
Check whether the given event is the key: page-up
(key-event-page-up? event)
event: Event?
key-event-page-down?
Check whether the given event is the key: page-down
(key-event-page-down? event)
event: Event?
key-event-tab?
Check whether the given event is the key: tab
(key-event-tab? event)
event: Event?
key-event-delete?
Check whether the given event is the key: delete
(key-event-delete? event)
event: Event?
key-event-insert?
Check whether the given event is the key: insert
(key-event-insert? event)
event: Event?
key-event-null?
Check whether the given event is the key: null
(key-event-null? event)
event: Event?
key-event-caps-lock?
Check whether the given event is the key: caps-lock
(key-event-caps-lock? event)
event: Event?
key-event-scroll-lock?
Check whether the given event is the key: scroll-lock
(key-event-scroll-lock? event)
event: Event?
key-event-num-lock?
Check whether the given event is the key: num-lock
(key-event-num-lock? event)
event: Event?
key-event-print-screen?
Check whether the given event is the key: print-screen
(key-event-print-screen? event)
event: Event?
key-event-pause?
Check whether the given event is the key: pause
(key-event-pause? event)
event: Event?
key-event-menu?
Check whether the given event is the key: menu
(key-event-menu? event)
event: Event?
key-event-keypad-begin?
Check whether the given event is the key: keypad-begin
(key-event-keypad-begin? event)
event: Event?
helix/core/text
Rope?
Check if the given value is a rope
rope->byte-slice
Take a slice of this rope using byte offsets
(rope->byte-slice rope start end) -> Rope?
- rope: Rope?
- start: (and positive? int?)
- end: (and positive? int?)
rope->line
Get the line at the given line index. Returns a rope.
(rope->line rope index) -> Rope?
- rope : Rope?
- index : (and positive? int?)
rope->slice
Take a slice from using character indices from the rope. Returns a new rope value.
(rope->slice rope start end) -> Rope?
- rope : Rope?
- start: (and positive? int?)
- end: (and positive? int?)
rope->string
Convert the given rope to a string
rope-byte->line
Convert the given byte offset to a line offset for a given rope
(rope-byte->line rope byte-index) -> int?
- rope : Rope?
- byte-index : int?
rope-char->byte
Convert the byte offset into a character offset for a given rope
rope-char->line
Convert the given character offset to a line offset for a given rope
(rope-char->line rope char-index) -> int?
- rope : Rope?
- char-index : int?
rope-char-ref
Get the character at the given index
rope-ends-with?
Check if the rope ends with a given pattern
rope-insert-char
Insert a character at the given index
rope-insert-string
Insert a string at the given index into the rope
rope-len-bytes
Get the length of the rope in bytes
rope-len-chars
Get the length of the rope in characters
rope-len-lines
Get the number of lines in the rope
rope-line->byte
Convert the given line index to a byte offset for a given rope
(rope-line->byte rope line-offset) -> int?
- rope : Rope?
- line-offset: int?
rope-line->char
Convert the given line index to a character offset for a given rope
(rope-line->char rope line-offset) -> int?
- rope : Rope?
- line-offset: int?
rope-starts-with?
Check if the rope starts with a given pattern
rope-trim-start
Remove the leading whitespace from the given rope
string->rope
Converts a string into a rope.
(string->rope value) -> Rope?
- value : string?