Deprecated: Function get_magic_quotes_gpc() is deprecated in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 99

Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 619

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1169

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176
8000 GitHub - gj1118/helix: A post-modern modal text editor.
Nothing Special   »   [go: up one dir, main page]

Skip to content

gj1118/helix

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

This is a just a fork of Helix. All claims rest with Helix maintainers and its copyright holders. I am just maintaining a fork. For more information please see Helix's readme file.

New Features

  1. Noice Cmdline

    image image
  2. Noice Notifications

    image
  3. Cutomizable Picker border changes (now supports the gradients and the border thickness)

    image
  4. Show function name in the status bar Add this following to your editor.statusline config image

This fork of Helix implements the following pull requests. Future pull requests that are merged will be merged and listed here.

  1. helix-editor#13354 (index command)
  2. helix-editor#13053 (local search in buffer)
  3. helix-editor#12369 (basic support for icons)
  4. helix-editor#13306 (customizable color swatches)
  5. helix-editor#13430 (showing vertical preview)
  6. helix-editor#11497 (support for rounded corners)
  7. helix-editor#13197 (welcome screen)
  8. helix-editor#12520 (picker titles)
  9. helix-editor#12173 (buffer click)
  10. helix-editor#7988 (inactive panes background color)
  11. helix-editor#8546 (flex resize, focus mode) - updated with some of my code.
  12. helix-editor#12208 (goto hover command)
  13. helix-editor#13113 (add file path to the file names for similar file names)
  14. helix-editor#12574 (remove code column from diagnotics buffer)
  15. helix-editor#9875 (add code file picker)
  16. helix-editor#14121 (move lines - no more macros to move lines)
  17. helix-editor#14072 (auto-scrolling bufferline)
  18. helix-editor#13821 (fix block cursor in terminal)
  19. helix-editor#13760 (support workspace commands)
  20. helix-editor#13988 (add support to swap splits)
  21. helix-editor#13133 (Inline Git Blame - show commit info for current line)
  22. helix-editor#14453 (ruler chars)

Setup

Docs on build it from source. Summary for commands:

git clone https://github.com/gj1118/helix.git
cd helix
cargo install --path helix-term --locked

Or if you have just installed, you can simply run just recipes in the folder where you checked the source code. For more information please see the justfile

THEN THE IMPORTANT PART that is missing from the docs page(this way you get all the default themes and gramars), source

cp -R runtime ~/.config/helix/
hx -g fetch
hx -g build

Full Height Mode:

When use-full-height = true is set along with style = "popup", the command line popup uses the full terminal height by removing the traditionally reserved bottom line.

# Maximum screen space (recommended for popup style)
[editor.cmdline]
style = "popup"
use-full-height = true

# Traditional with reserved space (default)
[editor.cmdline]
style = "popup"
use-full-height = false

Window Resizing and Focus Mode Commands

Window Resizing:

  • Alt+w h or Alt+w left - Shrink window width
  • Alt+w l or Alt+w right - Grow window width
  • Alt+w j or Alt+w down - Shrink window height
  • Alt+w k or Alt+w up - Grow window height

Focus Mode:

  • Alt+w f - Toggle focus mode (expands current window)

Sticky Mode: Activate sticky mode with Alt+W (Alt + Shift + w), then use single keys for repeated resizing:

  • h or left - Shrink width
  • l or right - Grow width
  • j or down - Shrink height
  • k or up - Grow height
  • f - Toggle focus mode

Sticky mode stays active until you press a key that's not part of the window resize commands.

Window Resizing Configuration:

Configure panel resizing limits in your config.toml:

[editor]
# Absolute maximum limits (in terminal character units)
max-panel-width = 50      # Set to 0 for dynamic limit based on terminal size
max-panel-height = 50     # Set to 0 for dynamic limit based on terminal size

# Percentage-based limits (used when absolute limits are set to 0)
max-panel-width-percent = 0.8   # 80% of terminal width (0.0-1.0)
max-panel-height-percent = 0.8  # 80% of terminal height (0.0-1.0)

Configuration Examples:

# Conservative: limit panels to 60% of terminal size
[editor]
max-panel-width = 0
max-panel-height = 0
max-panel-width-percent = 0.6
max-panel-height-percent = 0.6

# Aggressive: allow panels up to 95% of terminal size
[editor]
max-panel-width-percent = 0.95
max-panel-height-percent = 0.95

# Hybrid: absolute width limit, percentage height limit
[editor]
max-panel-width = 100
max-panel-height = 0
max-panel-height-percent = 0.8

Benefits:

  • Prevents performance issues with very large panels
  • Automatically adapts to your terminal size
  • Smooth resizing throughout the entire range
  • Configurable limits for different workflows

Ruler Character

Choose the character used to render rulers in the foreground (defaults to ). Set it to an empty string to fall back to background-style rulers.

[editor]
rulers = [80, 100, 120]
ruler-char = ""   # examples: "┊", "│", ".", "|"; set to "" for background style

Hover Documentation Commands

Hover Documentation:

  • Space + k - Show hover documentation in popup
  • Space + K - Open hover documentation in navigable buffer (goto_hover)

The goto_hover command opens documentation in a new scratch buffer where you can navigate, search, and copy text from long documentation.

Customizable Color Swatches

Color Swatches Configuration:

Configure color swatches appearance in your config.toml:

[editor.lsp]
# Enable/disable color swatches display (default: true)
display-color-swatches = true

# Customize the color swatch symbol (default: "■")
color-swatches-string = ""

Configuration Examples:

# Circle symbols
[editor.lsp]
color-swatches-string = ""

# Diamond symbols
[editor.lsp]
color-swatches-string = ""

# Hexagon symbols
[editor.lsp]
color-swatches-string = ""

# Alternative hexagon
[editor.lsp]
color-swatches-string = ""

# Default square (explicit)
[editor.lsp]
color-swatches-string = ""

Color swatches appear next to color values in your code (CSS, configuration files, etc.) when LSP support is available, making it easier to visualize colors at a glance.

Line Movement Commands

Move Lines Up/Down:

  • Ctrl+k - Move current line or selected lines up
  • Ctrl+j - Move current line or selected lines down

The line movement feature allows you to easily move the current line or multiple selected lines up and down in your document. This works with:

  • Single line: When cursor is on a line, moves that entire line
  • Multiple selections: Moves all selected lines while preserving their relative positions
  • Discontinuous selections: Handles multiple separate line selections correctly
  • Unicode content: Properly handles files with Unicode characters

Noice.nvim-like Command Line (Cmdline)

Command Line Popup Configuration:

This fork includes a modern, noice.nvim-inspired command line with customizable icons and popup-style interface.

[editor.cmdline]
# Command line style: "bottom" (default) or "popup" (noice.nvim style)
style = "popup"

# Show command type icons (default: true)
show-icons = true

# Popup dimensions
min-popup-width = 40    # Minimum width for popup cmdline
max-popup-width = 80    # Maximum width for popup cmdline

# Use full height when style is popup (removes bottom space, default: false)
# Only applies when style = "popup"
use-full-height = true

# Customize command icons
[editor.cmdline.icons]
search = "🔍"    # For search commands (/,?)
command = ""    # For command mode (:)
shell = ""      # For shell commands (!)
general = "💬"   # For other prompts

Icon Theme Examples:

# Minimalist ASCII Style
[editor.cmdline.icons]
search = "/"
command = ":"
shell = "$"
general = ">"

# Nerd Font Icons
[editor.cmdline.icons]
search = ""    # nf-fa-search
command = ""    # nf-fa-cog
shell = ""     # nf-fa-terminal
general = ""   # nf-fa-comment

# Fun Emoji Theme
[editor.cmdline.icons]
search = "🔎"
command = "🛠️"
shell = "🖥️"
general = "📝"

# Disable all icons
[editor.cmdline]
show-icons = false

Features:

  • Popup-style command line - Centered floating window instead of bottom line
  • Command type icons - Visual indicators for different command types
  • Enhanced completion - Better visual feedback and layout
  • Customizable appearance - Full control over icons and dimensions
  • Backward compatibility - Traditional bottom style still available

Aesthetic Gradient Borders

Gradient Borders Configuration:

Transform your Helix interface with beautiful, configurable gradient borders for all pickers and UI components.

[editor.gradient-borders]
enable = true                    # Enable/disable gradient borders
thickness = 2                   # Border thickness (1-5)
direction = "horizontal"        # "horizontal", "vertical", "diagonal", "radial"
start-color = "#8A2BE2"        # Start color (hex format)
end-color = "#00BFFF"          # End color (hex format)
middle-color = "#FF69B4"       # Optional middle color for 3-color gradients
animation-speed = 3            # Animation speed (0-10, 0 = disabled)

Aesthetic Theme Examples:

# Cyberpunk Theme
[editor.gradient-borders]
enable = true
thickness = 2
direction = "horizontal"
start-color = "#FF0080"        # Hot Pink
end-color = "#00FFFF"          # Cyan
animation-speed = 2

# Sunset Theme
[editor.gradient-borders]
enable = true
thickness = 3
direction = "diagonal"
start-color = "#FF4500"        # Orange Red
middle-color = "#FFD700"       # Gold
end-color = "#FF69B4"          # Hot Pink
animation-speed = 1

# Ocean Wave
[editor.gradient-borders]
enable = true
thickness = 2
direction = "vertical"
start-color = "#00CED1"        # Dark Turquoise
end-color = "#4169E1"          # Royal Blue
animation-speed = 4

# Matrix Style
[editor.gradient-borders]
enable = true
thickness = 1
direction = "radial"
start-color = "#00FF00"        # Lime Green
end-color = "#008000"          # Dark Green
animation-speed = 5

# Minimalist (No Animation)
[editor.gradient-borders]
enable = true
thickness = 1
direction = "horizontal"
start-color = "#6A5ACD"        # Slate Blue
end-color = "#9370DB"          # Medium Purple
animation-speed = 0

Border Thickness Styles:

  • 1: Thin Unicode lines (─│┌┐└┘ square, ─│╭╮╰╯ rounded)
  • 2: Thick Unicode lines (━┃┏┓┗┛)
  • 3: Double Unicode lines (═║╔╗╚╝)
  • 4: Block characters (█ style)
  • 5: Full block characters

Rounded Corners Support: Gradient borders automatically respect your existing rounded_corners setting:

[editor]
# Enable rounded corners for all borders (traditional and gradient)
rounded-corners = true

[editor.gradient-borders]
enable = true
thickness = 1    # Thin borders work best with rounded corners
direction = "horizontal"
start-color = "#6A5ACD"
end-color = "#9370DB"
  • Thickness 1: Full rounded corner support (╭╮╰╯)
  • Thickness 2+: Uses square corners (no Unicode rounded equivalents)
  • Block styles: Rounded corners don't apply to block characters

Features:

  • Applied to all components: Pickers, command line popups, completion menus, preview panels
  • Dynamic gradients: Smooth color transitions across any direction
  • Animation support: Animated gradients with configurable speed
  • Configurable thickness: From thin lines to chunky block borders
  • Multiple directions: Horizontal, vertical, diagonal, and radial patterns
  • 3-color gradients: Optional middle color for more complex gradients
  • Performance optimized: Efficient rendering with minimal overhead

Note: Gradient borders are applied to file pickers, command palettes, completion menus, preview panels, and the noice.nvim-style command line popup. Traditional borders are used when gradient borders are disabled.

Local Development on MacOS:

To run the app locally on MacOS systems, run the following command on the terminal: xattr -d com.apple.quarantine /path/to/your/app (this removes the quarantine attribute)

Inline Git Blame

Inline Blame Configuration:

Show git blame information as virtual text next to the current line you're editing. This feature displays the latest commit information for the line your cursor is on.

[editor]
# Inline blame configuration (inline table form)
inline-blame = { show = "cursor-line", format = "{author} • {time-ago} • {title}", auto-fetch = false }

Or in expanded format:

[editor.inline-blame]
# Show inline blame on specific lines (default: "never")
# Options: "cursor-line", "all", "never"
show = "cursor-line"

# Format string for blame display
# Available placeholders: {author}, {commit}, {time-ago}, {title}
format = "{author} • {time-ago} • {title}"

# Auto-fetch blame information (default: false)
auto-fetch = false

Keybindings:

  • <space>B - Show git blame for current line in status line (manual blame)

Configuration Examples:

# Minimal blame display
[editor.inline-blame]
show = "cursor-line"
format = "{author} • {time-ago}"

# Detailed blame information
[editor.inline-blame]
show = "cursor-line"
format = "{commit} - {author} ({time-ago}): {title}"

# Show blame for all lines (can be noisy)
[editor.inline-blame]
show = "all"
format = "{author}"
auto-fetch = true

# Manual blame only (no inline display, use <space>B)
[editor.inline-blame]
show = "never"

Features:

  • Virtual text display - Non-intrusive blame info that doesn't affect text editing
  • Cursor-based - Shows blame only for the line you're currently on
  • Customizable format - Control what information is displayed
  • Manual fallback - Use <space>B to check blame without enabling inline display
  • Smart caching - Efficiently caches blame data to avoid repeated git operations

Signature Help Position

Control where signature help popups appear:

[editor.lsp]
# Position signature help above cursor (default)
signature-help-position = "above"

# Or below cursor
signature-help-position = "below"

About

A post-modern modal text editor.

Resources

License

Contributing

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Rust 80.3%
  • Tree-sitter Query 19.0%
  • Handlebars 0.3%
  • Nix 0.2%
  • CSS 0.1%
  • Shell 0.1%
0