Thanks to visit codestin.com
Credit goes to github.com

Skip to content

pinkpixel-dev/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

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)

Building

  cargo install --path helix-term --locked

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

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

# 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.

Running 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)

About

A post-modern modal text editor.

Resources

License

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Rust 80.1%
  • Tree-sitter Query 19.2%
  • Handlebars 0.3%
  • Nix 0.2%
  • CSS 0.1%
  • Shell 0.1%