Open sodapopcan opened 5 years ago
It looks like the extra newline is coming from endwise's <cr>
mapping.
maparg("<CR>", "i") == '<CR><Plug>DiscretionaryEnd'
You could just omit this by changing maparg("<CR>", "i")
to substitute(maparg('<CR>', 'i'), '<CR>', '', '')
[update] .......except that won't work because vim-endwise wants to be invoked after <CR>
. One alternative bad idea is to explicitly invoke EndwiseDiscretionary()
inside of <Plug>(PearTreeExpand)
, after <CR>
.
So instead of
return "\<CR>"
we could do
if exists('*EndwiseDiscretionary')
return "\<CR>\<C-R>=EndwiseDiscretionary()\<CR>"
else
return "\<CR>"
endif
Hello! It appears that putting imap <CR> <Plug>(PearTreeExpand)<Plug>DiscretionaryEnd
in my vimrc fixes this. I don't normally use Endwise, so let me know if this misses something.
I don't really like the idea of having plugin-specific compatibility code in Pear Tree, so if putting the above in your vimrc does work, I would consider that the official solution.
This plugin (or precisely the imap
Since Pear Tree isn't really useful in vim-clap's popup I disabled Pear Tree in that filetype:
let g:pear_tree_ft_disabled = ['clap_input']
But that kind of an approach only works for some use cases though.
Well, just to add something to the list of stuff that breaks with the <CR>
mapping: I use it to select the completion in the ncm2 window or jump between neosnippets fields.
I think I have solve my mapping issue for neosnippet and ncm2 with the following mappings:
let g:pear_tree_map_special_keys = 0
imap <BS> <Plug>(PearTreeBackspace)
imap <Esc> <Plug>(PearTreeFinishExpansion)
imap <expr><CR> neosnippet#expandable_or_jumpable() ?
\ "\<Plug>(neosnippet_expand_or_jump)" : "\<Plug>(PearTreeExpand)"
For anyone using this is coc.nvim, here's how I got the autocomplete window to work properly with PearTreeExpand (much thanks to jounathaen above):
" Disable automapping so we can fix Coc mapping.
let g:pear_tree_map_special_keys = 0
" Default mappings:
imap <BS> <Plug>(PearTreeBackspace)
imap <Esc> <Plug>(PearTreeFinishExpansion)
" Get PearTreeExpand working with coc.nvim
imap <expr> <CR> pumvisible() ? coc#_select_confirm() : "\<Plug>(PearTreeExpand)"
Note: you have to use imap
- inoremap
didn't work for me likely because of how the \
Hello! It appears that putting
imap <CR> <Plug>(PearTreeExpand)<Plug>DiscretionaryEnd
in my vimrc fixes this. I don't normally use Endwise, so let me know if this misses something.I don't really like the idea of having plugin-specific compatibility code in Pear Tree, so if putting the above in your vimrc does work, I would consider that the official solution.
This worked for me. In markdown documents using vimwiki, hitting
the <cr>
map also conflicts with telescope. I'm sure there is a way to disable pear-tree when telescope activates, but I haven't found it yet.
@mellery451 did you fix it? I am facing the same problem now
@Leo310 my fix was to remove this plugin - I need Telescope more than I need this so it was not a big loss of productivity.
Ah ok I see. I switched to auto-pair plugin
You can disable pear-tree in telescope prompt with
let g:pear_tree_ft_disabled = ['TelescopePrompt']
for lua nvim I used the following: vim.g.pear_tree_ft_disabled = 'TelescopePrompt'
For anyone using this is coc.nvim, here's how I got the autocomplete window to work properly with PearTreeExpand (much thanks to jounathaen above):
" Disable automapping so we can fix Coc mapping. let g:pear_tree_map_special_keys = 0 " Default mappings: imap <BS> <Plug>(PearTreeBackspace) imap <Esc> <Plug>(PearTreeFinishExpansion) " Get PearTreeExpand working with coc.nvim imap <expr> <CR> pumvisible() ? coc#_select_confirm() : "\<Plug>(PearTreeExpand)"
Note: you have to use
imap
-inoremap
didn't work for me likely because of how thecommand works.
This code wasn't working for me (would just paste <Plug>(PearTreeExpand)
as text) but I managed to hack together a function that kinda does what I want:
function! CustomCR() abort
" Make <CR> to accept selected completion item or notify coc.nvim to format.
if coc#pum#visible()
return coc#_select_confirm()
else
" Undo each individual enter action as opposed to undo in blocks.
" call feedkeys("\<C-g>u")
call coc#on_enter()
return "\<Plug>(PearTreeExpand)"
endfunction
" Get PearTreeExpand working with coc.nvim
imap <silent><expr> <CR> CustomCR()
I haven't fully tested it but from the 5 minutes of playing around with it, it seems to work.
...specifically, endwise.vim, a vital plugin for languages like ruby and viml that use
end
(and its variants) to close code blocks.A quickfix is to change:
to
...though this adds an extra blank line, for example, typing
def foo<CR>hi!
produces:...so this isn't a full solution.
This plugin, along with its great config, is the only one of its type that actually does what I want so I'm pretty invested in resolving this! I'd be happy to take it on myself I wanted to file an issue first to get your thoughts and see if you'd even be amenable to a PR.