Closed pierreganty closed 3 years ago
I can make it behave correctly using the feedkeys
modes.
import neovim
n = neovim.attach("child", argv=['/opt/homebrew/bin/nvim', "--clean", "--embed", "--headless"])
n.feedkeys(n.replace_termcodes("i<C-o>"), 't')
assert ( n.api.get_mode() == dict({'mode': 'niI', 'blocking': False})), "not in normal mode or is blocked!"
n.feedkeys(n.replace_termcodes("gh"), 't')
assert ( n.api.get_mode() == dict({'mode': 's', 'blocking': False})), "not in select mode or is blocked!"
n.feedkeys(n.replace_termcodes("<C-o>"), 't')
assert ( n.api.get_mode() == dict({'mode': 'v', 'blocking': False})), "not in visual mode or is blocked!"
n.feedkeys(n.replace_termcodes("<C-o>"), 't')
assert ( n.api.get_mode() == dict({'mode': 's', 'blocking': False})), "not in select mode or is blocked!"
n.feedkeys(n.replace_termcodes("<C-o>"), 't')
assert ( n.api.get_mode() == dict({'mode': 'v', 'blocking': False})), "not in visual mode or is blocked!"
n.feedkeys(n.replace_termcodes("<C-\><C-N>"), 't')
assert ( n.api.get_mode() == dict({'mode': 'n', 'blocking': False})), "not in normal mode or is blocked!"
n.feedkeys(n.replace_termcodes("gh"), 't')
assert ( n.api.get_mode() == dict({'mode': 's', 'blocking': False})), "not in select mode or is blocked!"
n.feedkeys(n.replace_termcodes("<C-o>"), 't')
assert ( n.api.get_mode() == dict({'mode': 'v', 'blocking': False})), "not in visual mode or is blocked!"
n.feedkeys(n.replace_termcodes("<C-o>"), 'xt')
assert ( n.api.get_mode() == dict({'mode': 's', 'blocking': False})), "not in visual mode or is blocked!"
n.feedkeys(n.replace_termcodes("<C-o>"), 't')
assert ( n.api.get_mode() == dict({'mode': 'v', 'blocking': False})), "not in select mode or is blocked!"
In insert select mode
<C-o>
alternates between visual and select mode. However, in select mode<C-o>
remains in visual mode.