# Changelog
All notable changes to this project will be documented in this file.
## [0.2.1]
### Fixed
* [#50](https://github.com/mickael-menu/ShadowVim/issues/50) Fix issue where the cursor position is not updated when using third-party plugins like `chaoren/vim-wordmotion`.
* [#56](https://github.com/mickael-menu/ShadowVim/issues/56) Add a passthrough for Fn-based keyboard shortcuts.
## [0.2.0]
### Added
* Support for Visual and Select modes feedback.
* Block-wise selection (C-v) is displayed as character-wise because of a limitation with the Xcode accessibility APIs.
* Open a Neovim terminal TUI for the embedded instance (requires Neovim 0.9).
* This is useful to solve blocking prompts in Neovim, for instance.
* Activate from the status menu, or manually with:
```sh
nvim --server /tmp/shadowvim.pipe --remote-ui
```
* Use `SVPress` to trigger click events from Neovim bindings.
```viml
" Show the Quick Help pop-up for the symbol at the caret location (⌥ + Left Click).
nmap K SVPress M-LeftMouse>
" Perform a right click at the caret location.
nmap gR SVPress RightMouse>
```
* Use `SVSetInputUI` to let Xcode handle all key events.
* Use `SVSetInputNvim` to forward key events to Neovim, even in Insert mode.
* Use `SVOpenTUI` to launch a Terminal window with a Neovim text user interface of the embedded Neovim instance.
* This is useful to solve issues with Neovim such as a blocking prompt.
### Deprecated
* `SVEnableKeysPassthrough` is deprecated in favor of the new `SVSetInputUI` command.
### Changed
* The Insert mode is now handled by Xcode to improve performance, auto-completion and indentation.
* ShadowVim does not need to override your Xcode editing settings anymore.
* Unfortunately, that means that Neovim Insert features are unavailable (e.g. `iab` abbreviations or `imap` mappings).
* `SVPressKeys` was renamed to `SVPress`.
* `SVPress` now emits the keyboard shortcut system-wide instead of only in the Xcode process.
* This can be used to have a custom passthrough for hot keys (e.g. ⌥\` to open iTerm) by adding this to your `init.vim`:
```viml
if exists('g:shadowvim')
map SVPressKeys A-`>
endif
```
* The system paste shortcut (⌘V) is now overridden and handled by Neovim to improve performances and the undo history.
### Fixed
* Significantly improve performance when applying changes from Neovim.
## [0.1.1]
### Added
* Xcode's settings are automatically updated to prevent conflicts when running ShadowVim.
* The user is prompted with a bunch of terminal commands reverting the changes.
### Fixed
* Fix **Quit** and **Reset** buttons in the error dialogs.
* Fix synchronizing buffers with extra newlines at the end.
* Fix activating ShadowVim when restarting Xcode.
* Improve handling of some AX errors.
## [0.1]
### Added
* Basic Neovim / UI buffer and cursor synchronization.
* Support for **Normal**, **Insert** and **Replace** modes.
* Neovim user commands to trigger UI keyboard shortcuts.
[unreleased]: https://github.com/mickael-menu/ShadowVim/compare/main...HEAD
[0.2.1]: https://github.com/mickael-menu/ShadowVim/compare/0.2.0...0.2.1
[0.2.0]: https://github.com/mickael-menu/ShadowVim/compare/0.1.1...0.2.0
[0.1.1]: https://github.com/mickael-menu/ShadowVim/compare/0.1.0...0.1.1
[0.1]: https://github.com/mickael-menu/ShadowVim/tree/0.1.0