Commit Graph
6293 Commits
Author SHA1 Message Date
Matt Ellis 6aff6a07af Add insert current line in command line
Fixes VIM-2511
2025-09-05 12:37:45 +03:00
Matt Ellis c580aaceed Add insert register literally action
Fixes VIM-2511
2025-09-05 12:37:45 +03:00
Matt Ellis 161bb2b28b Insert register by replaying keys 2025-09-05 12:37:45 +03:00
Matt Ellis 4be143f4ff Fix move caret to previous big word to match Vim
The docs says it moves to the previous WORD, but in practice it moves to the previous whitespace character
2025-09-05 12:37:45 +03:00
Matt Ellis 4a86af9071 Fix move caret to next big word to match Vim
The docs says it moves to the next WORD, but in practice it moves to the next whitespace character
2025-09-05 12:37:45 +03:00
Matt Ellis 9a5339d8af Fix delete to use word instead of WORD 2025-09-05 12:37:45 +03:00
Matt Ellis b70f15584f Remove obsolete comments 2025-09-05 12:37:45 +03:00
Matt Ellis 38928e82c8 Extract insert literal command line tests 2025-09-05 12:37:45 +03:00
Matt Ellis aa5975485e Extract digraph command line tests 2025-09-05 12:37:45 +03:00
Matt Ellis b6be329a08 Add tests for saving history when cancelling ex field 2025-09-05 12:37:45 +03:00
Matt Ellis 1a566b70d9 Add cmd history before executing
But save to register after executing. Matches Vim behaviour
2025-09-05 12:37:45 +03:00
Matt Ellis b4eee5d45e Show indicator for current history entry 2025-09-05 12:37:45 +03:00
Matt Ellis 30dae9f4d9 Rename HistoryDownFilterAction and add tests 2025-09-05 12:37:45 +03:00
Matt Ellis 3ca51d0361 Rename HistoryDownAction and add tests 2025-09-05 12:37:45 +03:00
Matt Ellis f282131414 Rename HistoryUpFilterAction and add tests 2025-09-05 12:37:45 +03:00
Matt Ellis f5f14f308b Rename HistoryUpAction and add tests 2025-09-05 12:37:45 +03:00
Matt Ellis 6557169eec Remove unnecessary textExInput function 2025-09-05 12:37:45 +03:00
Matt Ellis ed402d3b26 Extract ToggleOverstrikeActionTest
Vim calls this "overstrike". We'll update terminology to match.
2025-09-05 12:37:45 +03:00
Matt Ellis 44cb65859b Extract MoveCaretToPreviousBigWordAction 2025-09-05 12:37:45 +03:00
Matt Ellis 84eb131cea Extract MoveCaretToNextBigWordAction 2025-09-05 12:37:45 +03:00
Matt Ellis 9ce2c2ba3a Extract MoveCaretToLineEndActionTest 2025-09-05 12:37:45 +03:00
Matt Ellis 549d4a722f Extract MoveCaretToLineStartActionTest 2025-09-05 12:37:45 +03:00
Matt Ellis 667890cb4d Extract InsertRegisterActionTest 2025-09-05 12:37:45 +03:00
Matt Ellis 1ebaa34bda Extract DeleteToCaretActionTest 2025-09-05 12:37:45 +03:00
Matt Ellis 310d90466b Extract DeletePreviousWordActionTest 2025-09-05 12:37:45 +03:00
Matt Ellis 822052358e Extract DeletePreviousCharActionTest 2025-09-05 12:37:45 +03:00
Matt Ellis d1eb1aeb4d Extract DeleteNextCharActionTest 2025-09-05 12:37:45 +03:00
Matt Ellis 747ffa1e7f Move CommandCountTest.kt 2025-09-05 12:37:45 +03:00
Alex Plate e9bc665aaa Revert StatusBarWidgetsManager to be the project-level service 2025-09-05 10:43:25 +03:00
Alex Plate 0fd95c17cf Fix(VIM-4028): Disable new plugin registration because currently it causes an error and this should be properly reviewed 2025-09-05 10:38:30 +03:00
Xinhe Wang 7f107fcc21 Remove unused NerdTree ProjectViewListener from plugin configuration
The ProjectViewListener was already removed in 175bae51
2025-09-02 15:06:01 +01:00
Alex Plate 1c80863e12 Fix an issue that the application level service was called from the project level 2025-09-02 11:27:22 +03:00
Alex Plate ec11c2ec70 Update status bar menu links with a sign that shows that this is an external link
Because of some encoding issues, I had to embed the string right in the code
2025-09-02 11:25:55 +03:00
Alex Plate 1e98fe2bed Add link to IdeaVim documentation in the status bar menu 2025-09-02 11:22:10 +03:00
Alex Plate c6adc48e81 [API] Make option() function return a value
This allows users to easily retrieve values from option scope:
val x = option { get<Int>("history") }

- Changed option() signature from Unit to generic T return type
- Updated VimApiImpl implementation to return the lambda result
- Added test demonstrating the new return value capability
2025-08-29 18:11:26 +03:00
Alex Plate 907495df4d [API] Refactor OptionScope from abstract class to interface
- Convert OptionScope from abstract class to interface
- Extract inline functions with reified types as extension functions
- Make getOptionValue() and setOption() public interface methods
- Remove internal modifier layer functions
- Update OptionScopeImpl to implement new interface
- Add documentation recommending extension function usage
- Update test imports to use new extension functions
2025-08-29 18:11:25 +03:00
Alex Plate 2b276d316f [API] Add append(), prepend(), and remove() extension functions for list options
- append(): adds values to end of comma-separated list (like Vim's +=)
- prepend(): adds values to beginning of list (like Vim's ^=)
- remove(): removes values from list (like Vim's -=)
- All functions prevent duplicate values from being added
- Comprehensive test coverage for all scenarios
2025-08-29 18:11:25 +03:00
Alex Plate 4f1982d6bd [API] Add toggle() function to OptionScope for boolean options
Adds a simple toggle() function that flips boolean option values.
Works with both full option names and abbreviations.

Example usage:
  toggle("ignorecase")  // true → false, false → true
  toggle("ic")          // works with abbreviations
2025-08-29 18:11:25 +03:00
Alex Plate a235648672 [API] Add split() extension function to OptionScope for comma-separated values
Adds a concise String.split() extension function within OptionScope that splits
comma-separated option values into lists. This simplifies working with list-type
options like 'virtualedit', 'whichwrap', etc.

Example usage:
  val values = get<String>("virtualedit")?.split() ?: emptyList()
  // "block,all" → ["block", "all"]
2025-08-29 18:11:25 +03:00
Alex Plate 85d5da4ab6 [API] Add comprehensive tests for OptionScope API
Added extensive test coverage for the OptionScope API including:
- String list options with various formats (single, multiple, empty values)
- Error handling for invalid values, empty names, and type mismatches
- Boundary conditions for integer options
- Boolean/integer type conversions
- Global vs local option scoping
- Option abbreviations
- Edge cases like trailing/leading commas and very long strings
2025-08-29 18:11:24 +03:00
Xinhe Wang 511da14b83 Support disabling extended NERDTree without restarting 2025-08-29 17:53:46 +03:00
Xinhe Wang 636fe0a76f Make extended NERDTree a separate VimExtension 2025-08-29 17:53:46 +03:00
Xinhe Wang 2b5342a935 Add support for ActivateNode in NERDTree Everywhere 2025-08-29 17:53:46 +03:00
Xinhe Wang 758aaf276a Extend NERDTree support to Tree components other than Project 2025-08-29 17:53:46 +03:00
Alex Plate df82794f4f Fixed a missing | 2025-08-29 14:31:44 +03:00
Alex Plate 2d378327e7 Fix tests after bringing back the old ReplaceWithRegister 2025-08-29 14:00:24 +03:00
Alex Plate 0e37295988 Ignore some test for neovim 2025-08-29 13:55:27 +03:00
Alex Plate 0d342ea6c3 Disable the new ReplaceWithRegister test as it's flaky 2025-08-29 13:45:06 +03:00
Alex Plate e343da03a1 Bring back the old implementation of the replace with register
The new implementation is now named ReplaceWithRegisterNew
2025-08-29 13:44:26 +03:00
Xinhe Wang b593d079c4 Correct the behavior of NERDTree-P to jump to the root node
It cannot be guaranteed that the tree has a single visible root.
2025-08-26 14:04:15 +01:00