Escape mappings that use '<>' notation.
KeyMap.bind() does not gracefully handle use of '<>' notation. For example, trying to call NERDTreeAddKeyMap() with a 'key' argument of '<Leader>e'. There were some workarounds KeyMap.bind() to help with this by specifically allowing you to leave off the '<>' parts for '<C-...>', '<M-...>' and mouse mappings and it would add them back for you before creating the mapping. This commit reverts some of that logic and simply says that if the key starts with '<', replace it with <lt>.
This commit is contained in:
parent
eced5f98a0
commit
f29d6a4f0f
@ -510,14 +510,18 @@ endfunction
|
|||||||
|
|
||||||
"FUNCTION: KeyMap.bind() {{{3
|
"FUNCTION: KeyMap.bind() {{{3
|
||||||
function! s:KeyMap.bind()
|
function! s:KeyMap.bind()
|
||||||
let mapkey = self.key
|
" If the key we're trying to map is a special key we must escape the
|
||||||
if mapkey =~? '^\([CM]-\|middlerelease\|2-leftmouse\|leftrelease\)'
|
" leading '<', otherwise vim will replace it with the actual keycode
|
||||||
let mapkey = '<' . mapkey . '>'
|
" :he <>
|
||||||
|
if self.key =~# '^<'
|
||||||
|
let keymapInvokeString = substitute(self.key, '^<', '<lt>', '')
|
||||||
|
else
|
||||||
|
let keymapInvokeString = self.key
|
||||||
endif
|
endif
|
||||||
|
|
||||||
let premap = self.key == "leftrelease" ? " <leftrelease>" : " "
|
let premap = self.key == "<LeftRelease>" ? " <LeftRelease>" : " "
|
||||||
|
|
||||||
exec 'nnoremap <buffer> <silent> '. mapkey . premap . ':call <SID>KeyMap_Invoke("'. self.key .'")<cr>'
|
exec 'nnoremap <buffer> <silent> '. self.key . premap . ':call <SID>KeyMap_Invoke("'. keymapInvokeString .'")<cr>'
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
"FUNCTION: KeyMap.Remove(key, scope) {{{3
|
"FUNCTION: KeyMap.Remove(key, scope) {{{3
|
||||||
@ -2858,12 +2862,12 @@ endfunction
|
|||||||
function! s:createDefaultBindings()
|
function! s:createDefaultBindings()
|
||||||
let s = '<SNR>' . s:SID() . '_'
|
let s = '<SNR>' . s:SID() . '_'
|
||||||
|
|
||||||
call NERDTreeAddKeyMap({ 'key': 'middlerelease', 'scope': "all", 'callback': s."handleMiddleMouse" })
|
call NERDTreeAddKeyMap({ 'key': '<MiddleRelease>', 'scope': "all", 'callback': s."handleMiddleMouse" })
|
||||||
call NERDTreeAddKeyMap({ 'key': 'leftrelease', 'scope': "all", 'callback': s."handleLeftClick" })
|
call NERDTreeAddKeyMap({ 'key': '<LeftRelease>', 'scope': "all", 'callback': s."handleLeftClick" })
|
||||||
call NERDTreeAddKeyMap({ 'key': '2-leftmouse', 'scope': "DirNode", 'callback': s."activateDirNode" })
|
call NERDTreeAddKeyMap({ 'key': '<2-LeftMouse>', 'scope': "DirNode", 'callback': s."activateDirNode" })
|
||||||
call NERDTreeAddKeyMap({ 'key': '2-leftmouse', 'scope': "FileNode", 'callback': s."activateFileNode" })
|
call NERDTreeAddKeyMap({ 'key': '<2-LeftMouse>', 'scope': "FileNode", 'callback': s."activateFileNode" })
|
||||||
call NERDTreeAddKeyMap({ 'key': '2-leftmouse', 'scope': "Bookmark", 'callback': s."activateBookmark" })
|
call NERDTreeAddKeyMap({ 'key': '<2-LeftMouse>', 'scope': "Bookmark", 'callback': s."activateBookmark" })
|
||||||
call NERDTreeAddKeyMap({ 'key': '2-leftmouse', 'scope': "all", 'callback': s."activateAll" })
|
call NERDTreeAddKeyMap({ 'key': '<2-LeftMouse>', 'scope': "all", 'callback': s."activateAll" })
|
||||||
|
|
||||||
|
|
||||||
call NERDTreeAddKeyMap({ 'key': g:NERDTreeMapActivateNode, 'scope': "DirNode", 'callback': s."activateDirNode" })
|
call NERDTreeAddKeyMap({ 'key': g:NERDTreeMapActivateNode, 'scope': "DirNode", 'callback': s."activateDirNode" })
|
||||||
|
Loading…
x
Reference in New Issue
Block a user