neoreader is a screenreader for Neovim. It supports:
- general infix operator identification:
->is read as "stab" if
- language specific infix operator identification:
->is read as "yields" if
- dynamic pitch to indicate indentation level if
- spoken keypresses, completed word reading, auto line reading on line transition and Vim mode transition alerts
- Python 3 specific AST analysis for more intelligible reading:
x = [i for i in range(1, 100) if 10 < i < 20]
is read as
L-value "x" assigned a list comprehension of "i", from a generator using "i" as an iterator, looping through "range" called with 2 arguments: 1 and 100, guarded by 10 is less than "i" is less than 20
neoreader requires Neovim with
:echo has("python3") returns
1, then you're fine; otherwise, see below.
You can enable the Python 3 interface with
pip3 install neovim
You must be using Python 3.6.
You may use macOS's Speech Synthesis API OR eSpeak.
For vim-plug, add
to your configuration, and execute
:UpdateRemotePlugins and restart Neovim.
nnoremap <Leader>q :SpeakLine<cr> nnoremap <Leader>w :SpeakLineDetail<cr> nnoremap <Leader>e :SpeakLineExplain<cr> vnoremap <Leader>a :SpeakRange<cr> vnoremap <Leader>s :SpeakRangeDetail<cr> vnoremap <Leader>d :SpeakRangeExplain<cr> " defaults let g:enable_at_startup = 1 let g:interpet_generic_infix = 1 let g:interpret_haskell_infix = 0 let g:speak_brackets = 0 let g:speak_keypresses = 0 let g:speak_words = 1 let g:speak_mode_transitions = 0 let g:speak_completions = 0 let g:auto_speak_line = 1 let g:speak_indent = 0 let g:pitch_multiplier = 1 let g:speak_speed = 350 let g:use_espeak = 0 let g:speak_voice = ''
Using the command-line window (with
q?) will enable neoreader to assist in your command-line usage aswell.