Blaž Hrastnik
b997d2cdeb
dap: Allow setting breakpoints before starting the adapter
3 years ago
Dmitry Sharshakov
5b20f6020a
Merge remote-tracking branch 'origin/master' into debug
...
Contains type fix on helix-term/src/ui/editor.rs:752:13
3 years ago
Omnikar
e772808a5b
Shell commands ( #547 )
...
* Implement shell interaction commands
* Use slice instead of iterator for shell invocation
* Default to `sh` instead of `$SHELL` for shell commands
* Enforce trailing comma in `commands` macro
* Use `|` register for shell commands
* Move shell config to `editor` and use in command
* Update shell command prompts
* Remove clone of shell config
* Change shell function names to match prompts
* Log stderr contents upon external command error
* Remove `unwrap` calls on potential common errors
`shell` will no longer panic if:
* The user-configured shell cannot be found
* The shell command does not output UTF-8
* Remove redundant `pipe` parameter
* Rename `ShellBehavior::None` to `Ignore`
* Display error when shell command is used and `shell = []`
* Document shell commands in `keymap.md`
3 years ago
Dmitry Sharshakov
b42631942b
Defaults in completions, better schema
3 years ago
Dmitry Sharshakov
2d42766a71
wip: refactor parameters in UI start
3 years ago
Dmitry Sharshakov
94901b8677
Customized completion for template parameters
3 years ago
Dmitry Sharshakov
e315394631
Merge remote-tracking branch 'origin/master' into debug
3 years ago
Dmitry Sharshakov
8df6739759
New way of starting debug sessions
3 years ago
Dmitry Sharshakov
890b51b568
Paginated variables
3 years ago
Brian Shu
fa4caf7e3d
remove unsafe
3 years ago
Blaž Hrastnik
28919898e9
fix: KeyEvent::char needs to ignore modifiers
...
Fixes #595
3 years ago
Dmitry Sharshakov
c7759a5aa0
Merge remote-tracking branch 'origin/master' into debug
3 years ago
Kirawi
b99db7c687
Move path util functions from helix-term to helix-core ( #650 )
3 years ago
Blaž Hrastnik
1d45f50781
fix: Don't internally use relative paths in the buffer picker
...
Fixes #619
3 years ago
dependabot[bot]
864618242b
Bump crossterm from 0.20.0 to 0.21.0 ( #644 )
...
Bumps [crossterm](https://github.com/crossterm-rs/crossterm ) from 0.20.0 to 0.21.0.
- [Release notes](https://github.com/crossterm-rs/crossterm/releases )
- [Changelog](https://github.com/crossterm-rs/crossterm/blob/master/CHANGELOG.md )
- [Commits](https://github.com/crossterm-rs/crossterm/commits )
---
updated-dependencies:
- dependency-name: crossterm
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
3 years ago
Blaž Hrastnik
6dd7dc4eb2
fix: xsel copy should not freeze the editor
...
If using --nodetach, xsel would end up continually running in the
foreground, so the command execution would never finish.
Fixes #630
3 years ago
Dmitry Sharshakov
a938f5a87a
refactor: handle DAP events in editor main loop
3 years ago
Dmitry Sharshakov
6458edecfd
Add stack pointer display when stopped
3 years ago
Gokul Soumya
f9375f449c
Refactor new Rect construction ( #575 )
...
* Refactor new Rect construction
Introduces methods that can be chained to construct new Rects
out of pre-existing ones
* Clamp x and y to edges in Rect chop methods
* Rename Rect clipping functions
3 years ago
Blaž Hrastnik
94a1951d40
Work towards a breakpoint UI
3 years ago
Blaž Hrastnik
d39baa3b4e
Start integrating into the editor's event loop
3 years ago
Blaž Hrastnik
557fd86e71
Extract view.inner_area(), simplify render_focused_view_elements
3 years ago
Blaž Hrastnik
9776553ad0
Refactor view.first_line/first_col into view.offset (Position)
3 years ago
Shafkath Shuhan
b63afbe74c
fix warnings
3 years ago
Kirawi
16bf8e1e6b
Document more of document.rs ( #562 )
3 years ago
Gokul Soumya
14c08e855f
Refactor infobox rendering and parsing ( #579 )
3 years ago
dependabot[bot]
27616153bc
Bump bitflags from 1.3.1 to 1.3.2 ( #600 )
...
Bumps [bitflags](https://github.com/bitflags/bitflags ) from 1.3.1 to 1.3.2.
- [Release notes](https://github.com/bitflags/bitflags/releases )
- [Changelog](https://github.com/bitflags/bitflags/blob/main/CHANGELOG.md )
- [Commits](https://github.com/bitflags/bitflags/compare/1.3.1...1.3.2 )
---
updated-dependencies:
- dependency-name: bitflags
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
3 years ago
Grzegorz Baranski
78923496a6
feat: relative numbers ( #485 )
...
* feat(helix-view): configuring line-number
* feat(helix-term): relative line numbers
* feat(helix-term): passing editor::Config to render
* fix(helix-view): remove LineNumber::None
* feat(helix-term): rendering line-number according to configuration
* fix(term): put calculating current line above line iteration
* fix: add abs_diff function
* deps: cargo update
* fix: pass config argument
3 years ago
Blaž Hrastnik
1caedc18ca
Release v0.4.1
3 years ago
Blaž Hrastnik
3de40de0a9
fix build...
3 years ago
Blaž Hrastnik
733ee06b7b
Release v0.4.0
3 years ago
Gokul Soumya
d84f8b5fde
Show file preview in split pane in fuzzy finder ( #534 )
...
* Add preview pane for fuzzy finder
* Fix picker preview lag by caching
* Add picker preview for document symbols
* Cache picker preview per document instead of view
* Use line instead of range for preview doc
* Add picker preview for buffer picker
* Fix render bug and refactor picker
* Refactor picker preview rendering
* Split picker and preview and compose
The current selected item is cloned on every event, which is
undesirable
* Refactor out clones in previewed picker
* Retrieve doc from editor if possible in filepicker
* Disable syntax highlight for picker preview
Files already loaded in memory have syntax highlighting enabled
* Ignore directory symlinks in file picker
* Cleanup unnecessary pubs and derives
* Remove unnecessary highlight from file picker
* Reorganize buffer rendering
* Use normal picker for code actions
* Remove unnecessary generics and trait impls
* Remove prepare_for_render and make render mutable
* Skip picker preview if screen small, less padding
3 years ago
Dmitry Sharshakov
7d51805e94
Support primary clipboard ( #548 )
...
* clipboard-none: add in-memory fallback buffer
Signed-off-by: Dmitry Sharshakov <d3dx12.xx@gmail.com>
* view: add Wayland primary clipboard
Signed-off-by: Dmitry Sharshakov <d3dx12.xx@gmail.com>
* Format
Signed-off-by: Dmitry Sharshakov <d3dx12.xx@gmail.com>
* helix-term: copy to primary selection after mouse move stops
Signed-off-by: Dmitry Sharshakov <d3dx12.xx@gmail.com>
* helix-term: don't update primary selection if it is a single character
Signed-off-by: Dmitry Sharshakov <d3dx12.xx@gmail.com>
* helix-term: discard result of setting primary selection
Signed-off-by: Dmitry Sharshakov <d3dx12.xx@gmail.com>
* helix-term: add commands for interaction with primary clipboard
Signed-off-by: Dmitry Sharshakov <d3dx12.xx@gmail.com>
* editor: implement primary selection copy/paste using commands
Signed-off-by: Dmitry Sharshakov <d3dx12.xx@gmail.com>
* clipboard: support xsel for primary selection
Signed-off-by: Dmitry Sharshakov <d3dx12.xx@gmail.com>
* clipboard: support xclip for primary selection
Signed-off-by: Dmitry Sharshakov <d3dx12.xx@gmail.com>
* helix-term: multiple cursor support for middle click paste
Signed-off-by: Dmitry Sharshakov <d3dx12.xx@gmail.com>
* rename primary selection to primary clipboard in scope of PR
Signed-off-by: Dmitry Sharshakov <d3dx12.xx@gmail.com>
* helix-term: make middle click paste optional
Signed-off-by: Dmitry Sharshakov <d3dx12.xx@gmail.com>
* Format
Signed-off-by: Dmitry Sharshakov <d3dx12.xx@gmail.com>
* Update helix-term/src/ui/editor.rs
* fix formatting
Signed-off-by: Dmitry Sharshakov <d3dx12.xx@gmail.com>
* config: correct defaults if terminal prop is not set
Signed-off-by: Dmitry Sharshakov <d3dx12.xx@gmail.com>
* refactor: merge clipboard and primary selection implementations
Signed-off-by: Dmitry Sharshakov <d3dx12.xx@gmail.com>
* Tidy up code
Signed-off-by: Dmitry Sharshakov <d3dx12.xx@gmail.com>
* view: remove names for different clipboard/selection providers
Signed-off-by: Dmitry Sharshakov <d3dx12.xx@gmail.com>
* Update helix-view/src/clipboard.rs
Co-authored-by: Gokul Soumya <gokulps15@gmail.com>
* helix-view: tidy macros
Signed-off-by: Dmitry Sharshakov <d3dx12.xx@gmail.com>
* helix-term: refactor paste-replace commands
Signed-off-by: Dmitry Sharshakov <d3dx12.xx@gmail.com>
* helix-term: use new config for middle-click-paste
Signed-off-by: Dmitry Sharshakov <d3dx12.xx@gmail.com>
* clipboard: remove memory fallback for command and windows providers
Signed-off-by: Dmitry Sharshakov <d3dx12.xx@gmail.com>
* clipboard-win: fix build
Signed-off-by: Dmitry Sharshakov <d3dx12.xx@gmail.com>
* clipboard: return empty string when primary clipboard is missing
Signed-off-by: Dmitry Sharshakov <d3dx12.xx@gmail.com>
* clipboard: fix errors in Windows build
Signed-off-by: Dmitry Sharshakov <d3dx12.xx@gmail.com>
Co-authored-by: Gokul Soumya <gokulps15@gmail.com>
3 years ago
Gokul Soumya
25a8a475c5
Refactor theme parsing ( #570 )
3 years ago
Blaž Hrastnik
6d52424303
fix: Adjust scroll offset/padding calculation to prevent wobble
...
Fixes #324
3 years ago
Dmitry Sharshakov
27b551d345
helix-term: handle scrolling when mouse is enabled ( #554 )
...
* helix-term: handle scrolling when mouse is enabled
Signed-off-by: Dmitry Sharshakov <d3dx12.xx@gmail.com>
* helix-term: configure scrolling speed
Signed-off-by: Dmitry Sharshakov <d3dx12.xx@gmail.com>
* helix-term: use new config for scrolling
Signed-off-by: Dmitry Sharshakov <d3dx12.xx@gmail.com>
* config: defaults for edtior config
Signed-off-by: Dmitry Sharshakov <d3dx12.xx@gmail.com>
* config: add scroll-lines property
Signed-off-by: Dmitry Sharshakov <d3dx12.xx@gmail.com>
* helix-term: scroll hovered view
Signed-off-by: Dmitry Sharshakov <d3dx12.xx@gmail.com>
* helix-term: support inverted scrolling
Signed-off-by: Dmitry Sharshakov <d3dx12.xx@gmail.com>
* helix-term: remove duplicating code
Signed-off-by: Dmitry Sharshakov <d3dx12.xx@gmail.com>
* helix-term: do not focus view while scrolled
Signed-off-by: Dmitry Sharshakov <d3dx12.xx@gmail.com>
* helix-term: refactor mouse events and scrolling
Signed-off-by: Dmitry Sharshakov <d3dx12.xx@gmail.com>
* simplify
Co-authored-by: Blaž Hrastnik <blaz@mxxn.io>
3 years ago
Kirawi
815ee9e334
fix small terminal size panic with info popup ( #563 )
...
* fix small terminal size panic with info popup
* remove unused enumerator
* fix subtraction overflow panic
3 years ago
Blaž Hrastnik
a2ccfffda1
config: Rename [terminal] to [editor] and pass it into Editor
3 years ago
Blaž Hrastnik
f0eb6ed96a
Resolve a couple TODOs
3 years ago
Ivan Tham
821565e4ef
Add ctrl-z to suspend
3 years ago
dependabot[bot]
cfef44e3d2
Bump which from 4.1.0 to 4.2.2
...
Bumps [which](https://github.com/harryfei/which-rs ) from 4.1.0 to 4.2.2.
- [Release notes](https://github.com/harryfei/which-rs/releases )
- [Commits](https://github.com/harryfei/which-rs/compare/4.1.0...4.2.2 )
---
updated-dependencies:
- dependency-name: which
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com>
3 years ago
Blaž Hrastnik
557c63033c
fix: Map all selections on transaction.apply
3 years ago
Nathan Vegdahl
ccecda4f66
Add more unit tests for pos_at_screen_coords.
...
Specifically, test cases for double-width characters and grapheme
clusters.
3 years ago
Blaž Hrastnik
62eb8c6b40
mouse: Remove verify_screen_coords, refactor primary selection modification
3 years ago
Dmitry Sharshakov
8361de45dc
Mouse selection support ( #509 )
...
* Initial mouse selection support
Signed-off-by: Dmitry Sharshakov <d3dx12.xx@gmail.com>
* Disable mouse event capture if editor crashes
Signed-off-by: Dmitry Sharshakov <d3dx12.xx@gmail.com>
* Translate screen coordinates to view position
Signed-off-by: Dmitry Sharshakov <d3dx12.xx@gmail.com>
* Select full lines by dragging on line numbers
Signed-off-by: Dmitry Sharshakov <d3dx12.xx@gmail.com>
* editor: don't register dragging as a jump
Signed-off-by: Dmitry Sharshakov <d3dx12.xx@gmail.com>
* Count graphemes correctly
Signed-off-by: Dmitry Sharshakov <d3dx12.xx@gmail.com>
* Do not select lines when dragging on the line number bar
Signed-off-by: Dmitry Sharshakov <d3dx12.xx@gmail.com>
* Split out verify_screen_coords
Signed-off-by: Dmitry Sharshakov <d3dx12.xx@gmail.com>
* Do not iterate over the graphemes twice
Signed-off-by: Dmitry Sharshakov <d3dx12.xx@gmail.com>
* Switch view by clicking on it
Signed-off-by: Dmitry Sharshakov <d3dx12.xx@gmail.com>
* Add disable-mouse config option
Signed-off-by: Dmitry Sharshakov <d3dx12.xx@gmail.com>
* Support multiple selections with mouse
Signed-off-by: Dmitry Sharshakov <d3dx12.xx@gmail.com>
* Remove unnecessary check
Signed-off-by: Dmitry Sharshakov <d3dx12.xx@gmail.com>
* Refactor using match expression
Co-authored-by: Gokul Soumya <gokulps15@gmail.com>
Signed-off-by: Dmitry Sharshakov <d3dx12.xx@gmail.com>
* Rename local variable
Signed-off-by: Dmitry Sharshakov <d3dx12.xx@gmail.com>
* Rename mouse option
Signed-off-by: Dmitry Sharshakov <d3dx12.xx@gmail.com>
* Refactor code
Signed-off-by: Dmitry Sharshakov <d3dx12.xx@gmail.com>
* Fix dragging selection
Signed-off-by: Dmitry Sharshakov <d3dx12.xx@gmail.com>
* Fix crash when clicking past last line
Signed-off-by: Dmitry Sharshakov <d3dx12.xx@gmail.com>
* Count characters better
Signed-off-by: Dmitry Sharshakov <d3dx12.xx@gmail.com>
* Remove comparison not needed anymore
Signed-off-by: Dmitry Sharshakov <d3dx12.xx@gmail.com>
* Validate coordinates before resolving position
Signed-off-by: Dmitry Sharshakov <d3dx12.xx@gmail.com>
* Tidy up references to editor tree
Signed-off-by: Dmitry Sharshakov <d3dx12.xx@gmail.com>
* Better way to determine line end and avoid overflow
Signed-off-by: Dmitry Sharshakov <d3dx12.xx@gmail.com>
* Fix for last line
Signed-off-by: Dmitry Sharshakov <d3dx12.xx@gmail.com>
* Add unit tests for text_pos_at_screen_coords
Signed-off-by: Dmitry Sharshakov <d3dx12.xx@gmail.com>
Co-authored-by: Gokul Soumya <gokulps15@gmail.com>
3 years ago
Nathan Vegdahl
f88d4c1e20
Move indent-style code into `helix_core::indent`.
3 years ago
Nathan Vegdahl
e191a75e33
Give default document a single line ending.
3 years ago
Blaž Hrastnik
05d20e196f
Merge pull request #376 from cessen/great_line_ending_and_cursor_range_cleanup
...
The Great Line Ending & Cursor Range Cleanup
3 years ago
Gokul Soumya
8a2fa692f2
Refactor case where key event is solely a character
3 years ago
Nathan Vegdahl
cd7302ffd3
Enforce cursor/selection invariants in one place.
...
Rather than per-command like before.
3 years ago
Nathan Vegdahl
a873e719d5
Merge branch 'master' into great_line_ending_and_cursor_range_cleanup
3 years ago
Rust & Python
581a3d42c8
Update keyboard.rs ( #516 )
...
Fix doc comment typo
3 years ago
Nathan Vegdahl
f62ec6e51e
Merge branch 'master' into great_line_ending_and_cursor_range_cleanup
3 years ago
Nathan Vegdahl
5ee6ba5b38
Address some PR comments.
3 years ago
Gokul Soumya
88d6f65239
Allow multi key remappings in config file ( #454 )
...
* Use tree like structure to store keymaps
* Allow multi key keymaps in config file
* Allow multi key keymaps in insert mode
* Make keymap state self contained
* Add keymap! macro for ergonomic declaration
* Add descriptions for editor commands
* Allow keymap! to take multiple keys
* Restore infobox display
* Fix keymap merging and add infobox titles
* Fix and add tests for keymaps
* Clean up comments and apply suggestions
* Allow trailing commas in keymap!
* Remove mode suffixes from keymaps
* Preserve order of keys when showing infobox
* Make command descriptions smaller
* Strip infobox title prefix from items
* Strip infobox title prefix from items
3 years ago
Nathan Vegdahl
0883b4fae0
Collect some common patterns into methods on `Range`.
3 years ago
Nathan Vegdahl
43594049dd
Merge branch 'master' into great_line_ending_and_cursor_range_cleanup
3 years ago
Shafkath Shuhan
25103833b2
mark reloaded buffers as unchanged
3 years ago
Nathan Vegdahl
198fe40951
Don't insert a final line ending on file load/reload.
3 years ago
Nathan Vegdahl
c848ed7abc
Fixes for misc bugs with view movement.
3 years ago
Nathan Vegdahl
d5534a6d10
Merge branch 'master' into great_line_ending_and_cursor_range_cleanup
3 years ago
Ivan Tham
17f9dfce7e
Fix typo
3 years ago
Nathan Vegdahl
b0311f4fc2
Fixed primary cursor position calculation to use 1-width semantics.
...
This had a bunch of knock-on effects that were buggy, such as bracket
match highlighting.
3 years ago
Nathan Vegdahl
079d4ed86d
Properly fix `last_line` view calculation.
...
Turned out to be simpler than I thought. Didn't even need to change the
other use-sites.
3 years ago
Nathan Vegdahl
a77274e8bb
Merge branch 'master' into great_line_ending_and_cursor_range_cleanup
3 years ago
Cor
9fcbbfa467
Changed startup behaviour to only open a single view when multiple files are specified on the commandline.
...
Changed the behaviour; the first argument on the commandline is the file on display
3 years ago
Kirawi
0b1ed8656d
Fix #442 ( #446 )
...
* fix #442
fix #442
fmt
* create Rope from default line ending
* Fix use of encoding in Document::open()
3 years ago
Blaž Hrastnik
d530d6e39d
Further simplify error handling in :commands
3 years ago
Lionel Flandrin
9c02a1b070
Make command implementation return a Result<()>
...
The error message is displayed with cx.editor.set_error.
3 years ago
Nathan Vegdahl
85d5b399de
Merge branch 'master' into great_line_ending_and_cursor_range_cleanup
3 years ago
Blaž Hrastnik
fc34efea12
appease clippy
3 years ago
Blaž Hrastnik
48481db8ca
fix: Make path absolute before normalizing
...
:open ../file.txt failed before because .. would be stripped
3 years ago
Blaž Hrastnik
b72c6204e5
fix: When calculating relative path, expand tilde last
3 years ago
Ivan Tham
916362d3a9
Info box add horizontal padding
3 years ago
Ivan Tham
5977b07e19
Reduce calculation and improve pattern in infobox
...
- switch to use static OnceCell to calculate Info once
- pass Vec<(&[KeyEvent], &str)> rather than Vec<(Vec<KeyEvent>, &str)>
- expr -> tt to allow using | as separator, make it more like match
3 years ago
Ivan Tham
9effe71b7d
Apply suggestions from blaz for infobox
3 years ago
Ivan Tham
8985c58fd3
Add infobox
3 years ago
Kirawi
c5b2973739
`:reload` ( #374 )
...
* reloading functionality
* fn with_newline_eof()
* fmt
* wip
* wip
* wip
* wip
* moved to core, added simd feature for encoding_rs
* wip
* rm
* .gitignore
* wip
* local wip
* wip
* wip
* no features
* wip
* nit
* remove simd
* doc
* clippy
* clippy
* address comments
* add indentation & line ending change
3 years ago
Nathan Vegdahl
28627f97e9
Fix empty document test.
3 years ago
Nathan Vegdahl
7961a13007
Make new documents empty, rather than starting with a line ending.
3 years ago
Nathan Vegdahl
22dca3b111
Allow last line in file to lack a line break character.
3 years ago
Nathan Vegdahl
7c7be6d583
Make `Selection`'s normalize and transform methods self-consuming only.
3 years ago
Nathan Vegdahl
0ae522f3df
Clean up `Selection` to not use so many allocations.
3 years ago
Jakub Bartodziej
79f096963c
Color palettes ( #393 )
...
* Enable using color palettes in theme files.
* Add an example theme defined using a gruvbox color palette.
* Fix clippy error.
* Small style improvement.
* Add documentation for the features to themes.md.
* Update runtime/themes/gruvbox.toml
Fix the value of purple0.
Co-authored-by: DrZingo <DrZingo@users.noreply.github.com>
Co-authored-by: DrZingo <DrZingo@users.noreply.github.com>
3 years ago
Kirawi
acaf22d005
Added native Windows clipboard support ( #373 )
...
* Added native Windows clipboard support
* make conditional
wip
better conditional
wip
wip
wip
wip
make conditional
3 years ago
Joe Neeman
2902a10a3e
Make Document's format API a little nicer.
3 years ago
Joe Neeman
c9be480bf8
Make formatting happen asynchronously.
3 years ago
Blaž Hrastnik
057bd630d8
Simplify selection rendering by injecting highlight scopes
3 years ago
Blaž Hrastnik
44566ea812
Release 0.3.0
3 years ago
Nathan Vegdahl
d534d6470f
Detect file language before file indent style.
...
Fixes #378 . The issue was that because indent style detection
ran before language detection, there was no language indent
style to fall back on if indent style detection failed, so it
would just default to 2 spaces.
3 years ago
teenjuna
c688288881
Move helix-view/tests/*txt files to txts subdirectory ( #372 )
...
* Move helix-view/tests/*txt files to txts subdirectory
* Rename tests/txts to tests/encoding
3 years ago
Blaž Hrastnik
8e277ad8ba
fix: crossterm -> input key conversion
3 years ago
Keith Simmons
4418e17547
reverse the dependency between helix-tui and helix-view ( #366 )
...
* reverse the dependency between helix-tui and helix-view by moving a fiew types to view
* fix tests
* clippy and format fixes
Co-authored-by: Keith Simmons <keithsim@microsoft.com>
3 years ago
Ivan Tham
10548bf0e3
Fix previous broken refactor key into helix-view
...
Need to be used for autoinfo
Revert "Revert "Refactor key into helix-view""
This reverts commit 10f9f72232
.
3 years ago
Shafkath Shuhan
6564257a7b
add missing doc
3 years ago
nobody
7896eefd73
add tests
3 years ago
Shafkath Shuhan
fd98e743e8
Handle non-UTF8 files
3 years ago
Nathan Vegdahl
0cbaa998ce
Fix flipped condition where Helix adds a line ending on open.
3 years ago
Gokul Soumya
13648d28b9
Add surround keybinds
3 years ago
Blaž Hrastnik
a70de6e980
Merge pull request #224 from helix-editor/line_ending_detection
...
Line ending detection
3 years ago
Nathan Vegdahl
07e28802f6
Add function to get the line ending of a str slice.
...
This is needed in some places.
3 years ago
Nathan Vegdahl
714002048c
Don't need getters/setters for line_ending property.
...
It's plain-old-data. If we want to do fancier things later, it's
easy to switch back.
3 years ago
Blaž Hrastnik
994ff4b269
Don't run wl-copy with --foreground
...
It stalls the hx process
3 years ago
Nathan Vegdahl
e686c3e462
Merge branch 'master' of github.com:helix-editor/helix into line_ending_detection
...
Rebasing was making me manually fix conflicts on every commit, so
merging instead.
3 years ago
Nathan Vegdahl
4efd6713c5
Work on moving code over to LineEnding instead of assuming '\n'.
...
Also some general cleanup and some minor fixes along the way.
3 years ago
Ivan Tham
985625763a
Fix doc warnings
3 years ago
Benoît CORTIER
a2b8cfca34
Add system clipboard yank and paste commands
...
This commit adds six new commands to interact with system clipboard:
- clipboard-yank
- clipboard-yank-join
- clipboard-paste-after
- clipboard-paste-before
- clipboard-paste-replace
- show-clipboard-provider
System clipboard provider is detected by checking a few environment
variables and executables. Currently only built-in detection is
supported.
`clipboard-yank` will only yank the "main" selection, which is currently the first
one. This will need to be revisited later.
Closes https://github.com/helix-editor/helix/issues/76
3 years ago
wojciechkepka
0882712b45
Use full screen size
3 years ago
Nathan Vegdahl
5d22e3c4e5
Misc fixes and clean up of line ending detect code.
3 years ago
Jan Hrastnik
701eb0dd68
changed some hardcoded newlines, removed a else if in line_ending.rs
3 years ago
wojciechkepka
6825e19509
Only reconfiure highlights when setting theme
3 years ago
wojciechkepka
ce97a2f05f
Add ability to change theme on editor
3 years ago
wojciechkepka
f424a61054
Add themes loader
3 years ago
Blaž Hrastnik
10f9f72232
Revert "Refactor key into helix-view"
...
Did not use defaults when custom keymap was used
This reverts commit ca806d4f85
.
3 years ago
Jan Hrastnik
cdd9347457
Merge remote-tracking branch 'origin/master' into line_ending_detection
3 years ago
Ivan Tham
ca806d4f85
Refactor key into helix-view
...
Now also make use of Deserialize for Config.
3 years ago
wojciechkepka
c5a2fd5da3
Add `close_language_servers` method on `Editor`
3 years ago
Benoît CORTIER
03d1ca7b0a
cargo: add more metadata to manifests
3 years ago
Benoît CORTIER
b48054f3ee
cargo: add version to local dependencies
...
First step towards enabling us to publish on crates.io.
See: https://github.com/helix-editor/helix/issues/42
3 years ago
wojciechkepka
a6d39585d8
Add `work_done_token` as parameter to lsp methods
3 years ago
Wojciech Kępka
41b07486ad
Fix expansion of `~` ( #284 )
...
* Fix expansion of `~`, dont use directory relative to cwd.
* Add `expand_tilde`
* Bring back `canonicalize_path`, use `expand_tilde` to `normalize`
* Make `:open ~` completion work
* Fix clippy
* Fold home dir into tilde in Document `realitve_path`
3 years ago
Benoît CORTIER
8664d70e73
Replace `Editor::current` by a macro
...
This is necessary to workaround ownership issues across function calls.
The issue notably arised when implementing the registers into `Editor`
and I was getting annoyed again when implementing copy/pasting into
system clipboard.
The problem is addressed by using macro calls instead of function calls.
There is no notable side effect.
3 years ago
Jan Hrastnik
8bccd6df30
applied changes from pr review
3 years ago
PabloMansanet
f7e00cf720
Configurable keys 2 (Mapping keys to commands) ( #268 )
...
* Add convenience/clarity wrapper for Range initialization
* Add keycode parse and display methods
* Add remapping functions and tests
* Implement key remapping
* Add remapping book entry
* Use raw string literal for toml
* Add command constants
* Make command functions private
* Map directly to commands
* Match key parsing/displaying to Kakoune
* Formatting pass
* Update documentation
* Formatting
* Fix example in the book
* Refactor into single config file
* Formatting
* Refactor configuration and add keymap newtype wrappers
* Address first batch of PR comments
* Replace FromStr with custom deserialize
3 years ago
Jan Hrastnik
9c3eadb2e4
fixed some problems from rebasing
3 years ago
Jan Hrastnik
7cf0fa05a4
doc.line_ending() now returns &'static str
3 years ago
Jan Hrastnik
a4f5a0134e
trying out line ending helper functions in commands.rs
3 years ago
Jan Hrastnik
a9a718c3ca
added some tests and a line_ending helper function in document.rs
3 years ago
Jan Hrastnik
9c419fe05c
added more changes from pr review for line_ending_detection
3 years ago
Jan Hrastnik
5eb6918392
resolved conflict in rebase
3 years ago
Jan Hrastnik
17f69a03e0
ran cargo clippy and cargo fmt
3 years ago
Jan Hrastnik
3756c21bae
rebase on branch line_ending_detection
3 years ago
Gokul Soumya
d1c8a74771
Add theme key for selected line number
...
Adds `ui.linenr.selected` which controls highlight of linu numbes which
have cursors on.
- Fallback to linenr if linenr.selected is missing
- Update docs and themes
- Add TODOs for themes with temporary linenr.selected
3 years ago
Ivan Tham
124514aa70
Add cursor kind to separate hidden cursor from pos
...
Now IME cursor position should be correct since we can still set cursor
position without drawing the cursor.
3 years ago
Benoît CORTIER
6bdf609caa
Remove RwLock for registers
...
Registers are stored inside `Editor` and accessed without `RwLock`.
To work around ownership, I added a sister method to `Editor::current`:
`Editor::current_with_context`. I tried to modify `Editor::current`
directly but it's used at a lot of places so I reverted into this for
now at least.
3 years ago
Nathan Vegdahl
ecb39da3e0
Cosmetic changes and better comments for the indent auto-detect code.
3 years ago
Nathan Vegdahl
0a5580aa21
Address PR comments.
...
- Move char functions into their own module under helix_core.
- Use matches!() macro where appropriate.
- Use a static lifetime on indent_unit() now that we can.
3 years ago
Nathan Vegdahl
8648e483f7
Render indent-style status in status line.
...
Also cleaned up the status line code a little.
3 years ago
Nathan Vegdahl
5ca043c17a
Fix clippy warnings.
3 years ago
Nathan Vegdahl
2329512122
Attempt to auto-detect indentation style on document load.
...
This also moves the primary indentation-style setting into Document.
3 years ago
dependabot[bot]
e4b3a666d2
Bump once_cell from 1.7.2 to 1.8.0 ( #255 )
...
Bumps [once_cell](https://github.com/matklad/once_cell ) from 1.7.2 to 1.8.0.
- [Release notes](https://github.com/matklad/once_cell/releases )
- [Changelog](https://github.com/matklad/once_cell/blob/master/CHANGELOG.md )
- [Commits](https://github.com/matklad/once_cell/compare/v1.7.2...v1.8.0 )
---
updated-dependencies:
- dependency-name: once_cell
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Blaž Hrastnik <blaz@mxxn.io>
4 years ago
dependabot[bot]
9b352ceefd
Bump crossterm from 0.19.0 to 0.20.0
...
Bumps [crossterm](https://github.com/crossterm-rs/crossterm ) from 0.19.0 to 0.20.0.
- [Release notes](https://github.com/crossterm-rs/crossterm/releases )
- [Changelog](https://github.com/crossterm-rs/crossterm/blob/master/CHANGELOG.md )
- [Commits](https://github.com/crossterm-rs/crossterm/compare/0.19...0.20 )
---
updated-dependencies:
- dependency-name: crossterm
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com>
4 years ago
Blaž Hrastnik
ae5ecfdf66
Release v0.2.0
4 years ago
Wojciech Kępka
d008e86037
`Document::is_modified` should not check if path is set
...
If there is a new document we still want to know if there are unsaved changes
4 years ago
Robin
44cc0d8eb0
add alternate file ( #223 )
...
* add alternate file
inspired by vim ctrl-6/kak ga commands. the alternate file is kept per view
* apply feedback from #223
* rename to last_accessed
* add ga doc
* add fail message for ga
4 years ago
Jakub Bartodziej
69fe46a122
Add :earlier and :later commands that can be used to navigate the full edit history. ( #194 )
...
* Disable deleting from an empty buffer which can cause a crash.
* Improve on the fix for deleting from the end of the buffer.
* Clean up leftover log.
* Avoid theoretical underflow.
* Implement :before which accepts a time interval and moves the editor to
the closest history state to the commit of the current time minus that
interval. Current time is now by default, or the commit time if :before
has just been used.
* Add :earlier an :later commands that can move through
the edit history and retrieve changes hidded by undoing
and commiting new changes. The commands accept a number
of steps or a time period relative to the currrent change.
* Fix clippy lint error.
* Remove the dependency on parse_duration, add a custom parser instead.
* Fix clippy errors.
* Make helix_core::history a public module.
* Use the helper for getting the current document and view.
* Handled some PR comments.
* Fix the logic in :later n.
Co-authored-by: Ivan Tham <pickfire@riseup.net>
* Add an alias for :earlier.
Co-authored-by: Ivan Tham <pickfire@riseup.net>
* Add an alias for later.
Co-authored-by: Ivan Tham <pickfire@riseup.net>
* Run cargo fmt.
* Add some tests for earlier and later.
* Add more tests and restore the fix for later that diappeared somehow.
* Use ? instead of a match on an option.
Co-authored-by: Ivan Tham <pickfire@riseup.net>
* Rename to UndoKind.
* Remove the leftover match.
* Handle a bunch of review comments.
* More systemd.time compliant time units and additional description for the new commands.
* A more concise rewrite of the time span parser using ideas from PR discussion.
* Replace a match with map_err().
Co-authored-by: Ivan Tham <pickfire@riseup.net>
Co-authored-by: Jakub Bartodziej <jqb@google.com>
Co-authored-by: Ivan Tham <pickfire@riseup.net>
4 years ago
Wojciech Kępka
098806ce2a
lsp: Display LSP progress messages ( #216 )
4 years ago
notoria
9887b1275a
Implement missing Debug and update Cargo.lock
4 years ago
Ivan Tham
7cc13fefe9
Derive debug without feature
...
Note that this also removed those `finish_non_exhaustive()`.
4 years ago
notoria
1a3a924634
Implement Debug for data structure as a feature
4 years ago
Ivan Tham
6b3c9d8ed3
Fix jump behavior, goto_implementation now jump
...
Better jump behavior since we override the first jump if it's on the
first document. At the same time, ctrl-i is now working with gd jumps.
4 years ago
Kevin Sjöberg
7ef0e2cab6
Don't panic on empty document
4 years ago
Zheming Li
ae51065213
Support go to line 1
4 years ago
Kirawi
b873fb9897
Fix Unicode ( #135 )
...
* init
* wip
* wip
* fix unicode break
* fix unicode break
* Update helix-core/src/transaction.rs
Co-authored-by: Benoît Cortier <benoit.cortier@fried-world.eu>
* clippy
* fix
* add changes
* added test
* wip
* wip
* wip
* wip
* fix
* fix view
* fix #88
Co-authored-by: Benoît Cortier <benoit.cortier@fried-world.eu>
4 years ago
Ivan Tham
82fdfdc38e
Add missing newline to end of file on load
...
Fix #152
4 years ago
Egor Karavaev
960bc9f134
Don't panic on LSP not starting
4 years ago
Benoît CORTIER
68affa3c59
Implement register selection
...
User can select register to yank into with the " command.
A new state is added to `Editor` and `commands::Context` structs.
This state is managed by leveraging a new struct `RegisterSelection`.
4 years ago
Blaž Hrastnik
f48a60b8e2
Release 0.0.10
4 years ago
Ethan Bodzioney
843c2cdebd
Install instructions and version number corrections ( #148 )
...
* Add MacOS install instructions
* Change version name argument
When using the -V command to get the version you are given 'helix-term x.x.x', I changed this to just helix as it makes more sense.
* Fixed version number
* Fixed version number
* Fixed version number
* Fixed version number
* Fixed version number
* Fixed version number
4 years ago
Wojciech Kępka
16b1cfa3be
Add diagnostics keybindings
4 years ago
Ingrid
54f3548d54
theme: Enable style modifiers in theme.toml, add Ingrid's theme ( #113 )
...
* theme: Enable style modifiers in theme.toml
* docs: theme documentation
* fixup: parse modifiers with filter_map
* theme: tests for parse_style
* theme: Log invalid cases in theme.toml parse
* docs: theme documentation fixup
* docs: Blaz's theming comments
* docs: Theme doc fixes from pickfire
Co-authored-by: Ivan Tham <pickfire@riseup.net>
* theme: More context in logs, TODO for alerting users
* contrib: Ingrid's theme
* docs: Theme subsection fixes
Co-authored-by: Ivan Tham <pickfire@riseup.net>
4 years ago
Wojciech Kępka
bcb1afeb4c
Add a comment to `canonicalize_path`
4 years ago
Wojciech Kępka
de946d2357
Add a TODO
4 years ago
Wojciech Kępka
14f511da93
Create document if it doesn't exist on save
4 years ago
Kirawi
c17dcb8633
Fixing Multiple Panics ( #121 )
...
* init
* wip
* wip
4 years ago
Blaž Hrastnik
06d8d3f55f
Try to detect language when document file path is set
...
Fixes #91
4 years ago
Ivan Tham
e6132f0acd
Fix undo redo
...
I missed the fast return.
Fix #89
4 years ago
Jakub Bartodziej
3c5dfb0633
Improve on the fix for deleting from the end of the buffer.
4 years ago
Jakub Bartodziej
6cbc0aea92
Disable deleting from an empty buffer which can cause a crash.
4 years ago
Blaž Hrastnik
c0332bd935
Fix split sizes getting out of sync with the terminal size, refs #69
4 years ago
Rowan Herbert
1b67fae9f4
Fix panic when buffer larger than terminal width
4 years ago
Ivan Tham
f5f46b1fed
Separate document history into Cell
...
As history is used separately from the rest of the edits, separating it
can avoid needless borrowing and cloning. But one need to be aware later.
4 years ago
Blaž Hrastnik
ce25aa951e
Allow setting a filepath on :write
4 years ago
Blaž Hrastnik
2c48d65b15
Format document on save
4 years ago
Blaž Hrastnik
2100f5a2c0
Address clippy lint.
4 years ago
Blaž Hrastnik
8f6f329057
If switching to a previously open buffer in the same view, keep it's old offset
4 years ago
Blaž Hrastnik
4a9d1163e0
Hacky way to specify indent scopes per language via toml configs.
...
Can't do it via a scm query nicely because it returns an iterator over
all the matches, whereas we want to traverse the tree ourselves.
Can't extract the pattern data from a parsed query either.
Oh well, toml files for now.
4 years ago
Blaž Hrastnik
5cbb4efa6d
Add the LICENSE file.
4 years ago
Blaž Hrastnik
35606a3daa
Inline tui as helix-tui fork.
...
We only rely on some of the rendering primitives and implement our
Cursive-style compositor on top.
4 years ago
Blaž Hrastnik
c0a8b81487
Only send the document close event if we're closing the underlying buffer
4 years ago
Blaž Hrastnik
c20813690f
View::new is infallible, so is editor.switch/new_file.
4 years ago
Blaž Hrastnik
f2c79e245b
Allow switching views back to scratch buffers.
4 years ago
Blaž Hrastnik
418ee17b86
Canonicalize the path on open to avoid duplicates.
4 years ago
Blaž Hrastnik
7c915dc065
Add the :new command, don't crash if saving without filename.
4 years ago
Blaž Hrastnik
fd4fd12fa3
clippy lint
4 years ago
Blaž Hrastnik
d00414f81a
Start moving more LSP calls into callbacks/futures without capturing self
4 years ago
Blaž Hrastnik
1ad0581ddd
Eliminate a few more futures dependencies.
4 years ago
Blaž Hrastnik
355ad3cb82
Tokio migration.
4 years ago
Blaž Hrastnik
b6a22e955b
Closer to a full flake build via naersk.
...
Blocked on https://github.com/NixOS/nix/issues/4423 , build doesn't see
submodules.
4 years ago
Blaž Hrastnik
b0bdcab970
doc: Note about diagnostic mapping.
4 years ago
Blaž Hrastnik
28c167d71d
doc: Be smarter about calculating modified status.
...
This way edit -> undo will properly show up as unmodified.
4 years ago
Blaž Hrastnik
b5b650cfe7
Fix the last line calculation inside ensure_cursor_in_view
4 years ago
Blaž Hrastnik
3e5f24a9d5
lsp: support both utf-8 and utf-16 offsets.
...
Still need to implement the clangd encoding negotiation, but it's
a start. Should also manually override to utf8 for pyls.
4 years ago
Blaž Hrastnik
180521fefe
Adjust scroll() to match kakoune: only scroll the view if cursor in bounds.
4 years ago
Blaž Hrastnik
978f5114d8
Horizontal scrolling! It only took a year to get around to it.
4 years ago
Blaž Hrastnik
52da68e49a
Render a separator between vertical splits.
4 years ago
Blaž Hrastnik
9f318a8529
Fix an issue with closing nested splits.
...
The parent id was never assigned to the split, so removing the container
when it became empty failed.
4 years ago
Blaž Hrastnik
8b33ba2284
Correct the naming issue with vsplit and hsplit being swapped.
4 years ago
Blaž Hrastnik
bc4e54c0c4
Load config files from ~/.config/helix, fallback to defaults.
4 years ago
Blaž Hrastnik
91462af546
Allow starting hx without a file. A new blank file will be created.
4 years ago
Blaž Hrastnik
cf7b19d711
Always update selection: Empty transactions can still change selections.
4 years ago
Blaž Hrastnik
0dbd5b61ef
Simplify code by providin cx.current() = (view, doc).
4 years ago
Blaž Hrastnik
ceea5eacd8
clippy lint
4 years ago
Blaž Hrastnik
15c9a33ebc
Drop doc.state. Use doc.text + doc.selections.
4 years ago
Blaž Hrastnik
6c4093c946
Weave through view_id references so that views into one file have independent selects.
4 years ago
Blaž Hrastnik
9eaef6e333
Fully drop State references.
4 years ago
Blaž Hrastnik
1b5316ea74
Track document modified state.
4 years ago
Blaž Hrastnik
742b3a709f
Store intra-files jumps (goto) on the jumplist.
4 years ago
Blaž Hrastnik
c1f2a14453
view: document.rs cleanup
4 years ago
Blaž Hrastnik
aefafc25cd
Replace Mode::Goto with just using on_next_key.
4 years ago
Blaž Hrastnik
cf0e191a6a
Clippy lint
4 years ago
Blaž Hrastnik
a65395d94b
Load theme from toml file.
4 years ago
Blaž Hrastnik
e3c4edae32
Add the machinery to load syntax config from TOML.
...
It's embedded into the binary at build time for now, but it's progress.
4 years ago
Blaž Hrastnik
8657c57cf2
Trivial jumplist implementation.
4 years ago
Blaž Hrastnik
4b176caded
Reset first_line when changing files.
4 years ago
Blaž Hrastnik
8a0ab447ec
editor.open can now either replace the current view or open in a split.
4 years ago
Blaž Hrastnik
b24cdd1295
Derive a separate ViewId type.
4 years ago
Blaž Hrastnik
8328fe926d
Drop refcell use, make view simply ref doc.id.
4 years ago
Blaž Hrastnik
bf95ee27aa
Store Document on the Editor type, make View reference it.
4 years ago
Blaž Hrastnik
5e6716c89c
Add tab_width and indent_unit config.
4 years ago
Blaž Hrastnik
cbcacb1063
Merge some imports.
4 years ago
Blaž Hrastnik
c4792efead
clippy lints
4 years ago
Blaž Hrastnik
c331721565
Finish hiding doc.state / State as an implementation detail.
4 years ago
Blaž Hrastnik
8ba1e15d29
Expose doc.syntax() via accessor.
4 years ago
Blaž Hrastnik
2b64f49f2c
Document::new should just take a rope.
4 years ago
Blaž Hrastnik
e261f3c50d
Expose doc.language_server as an accessor.
4 years ago
Blaž Hrastnik
59e6024186
Remove State from a few more signatures.
4 years ago
Blaž Hrastnik
8eaf9a432d
Make Transaction::change only rely on the rope.
4 years ago
Blaž Hrastnik
51c15da3c3
Hold a reference to executor on the Editor type.
4 years ago
Blaž Hrastnik
e3ec5e31ec
Fix goto code before merging.
4 years ago
Jan Hrastnik
eadad13efa
preparing for gd merge
4 years ago
Jan Hrastnik
4e461bea2f
editor.open now checks if view already exists
4 years ago
Jan Hrastnik
3869d7713e
added goto functions in helix-term
4 years ago
Jan Hrastnik
b738ae1bc7
more goto lsp functions
4 years ago
Blaž Hrastnik
d8599f3a14
ui: Syntax highlight code inside markdown popups.
4 years ago
Blaž Hrastnik
54a7e893b7
lsp: Wire up didClose notification on editor.close.
4 years ago
Blaž Hrastnik
eca2a73ad0
lsp: Pass through language_id on didOpenTextDocument.
4 years ago
Blaž Hrastnik
143cfe13e0
minor: TODO comment cleanup
4 years ago
Blaž Hrastnik
dd91090a1a
Implement keep_selections (filter selections on regex).
4 years ago
Blaž Hrastnik
bb87b08fc9
Configure language servers via LanguageConfiguration.
4 years ago
Blaž Hrastnik
1cf887dea9
Cleanup: use doc.selection() instead of doc.state.selection().
4 years ago
Blaž Hrastnik
6cbfb050e2
lsp: Emit didSave notifications.
4 years ago
Blaž Hrastnik
9dcfe25e4a
Use diagnostic.severity to distinguish between error colors.
4 years ago
Blaž Hrastnik
a5c4314940
commands: Improve scroll functions.
...
Followed kakoune's implementation, it's no longer janky and can scroll
all the way in either direction.
4 years ago
Blaž Hrastnik
8f4ff4c646
editor: We still want to be able to calculate cursor pos.
4 years ago
Blaž Hrastnik
ec4dd0a176
Add a selection mode again.
4 years ago
Blaž Hrastnik
00808afe3c
ui: Make editor more resilient about being shrunk too small.
4 years ago
Blaž Hrastnik
6336c1da20
view: Reposition cursors on tree resize.
4 years ago
Blaž Hrastnik
8289bd1cb0
minor, fix clippy lint
4 years ago
Blaž Hrastnik
01907b3497
commands: Implement count for a few more commands.
4 years ago