Skip to content

Commit 5427895

Browse files
committed
Merge branch 'option-reload' into dev
Conflicts: plugin/vdebug.vim
2 parents f01a51e + c4db035 commit 5427895

File tree

3 files changed

+50
-14
lines changed

3 files changed

+50
-14
lines changed

plugin/python/vdebug/runner.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ def open(self):
3434
self.ui.error("Modified buffers must be saved before debugging")
3535
return
3636
vdebug.opts.Options.set(vim.eval('g:vdebug_options'))
37-
37+
3838
if vdebug.opts.Options.isset('debug_file'):
3939
vdebug.log.Log.set_logger(vdebug.log.FileLogger(\
4040
vdebug.opts.Options.get('debug_file_level'),\

plugin/python/vdebug/util.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,7 @@ class Keymapper:
1212
exclude = ["run","set_breakpoint","eval_visual"]
1313

1414
def __init__(self):
15-
self.keymaps = vim.eval("g:vdebug_keymap")
16-
self.leader = vim.eval("g:vdebug_leader_key")
15+
self._reload_keys()
1716
self.is_mapped = False
1817
self.existing = []
1918

@@ -27,6 +26,7 @@ def map(self):
2726
if self.is_mapped:
2827
return
2928
self._store_old_map()
29+
self._reload_keys()
3030
for func in self.keymaps:
3131
if func not in self.exclude:
3232
key = self.keymaps[func]
@@ -35,6 +35,10 @@ def map(self):
3535
vim.command(map_cmd)
3636
self.is_mapped = True
3737

38+
def _reload_keys(self):
39+
self.keymaps = vim.eval("g:vdebug_keymap")
40+
self.leader = vim.eval("g:vdebug_leader_key")
41+
3842
def _store_old_map(self):
3943
vim.command('let tempfile=tempname()')
4044
tempfile = vim.eval("tempfile")

plugin/vdebug.vim

Lines changed: 43 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,10 @@ if !exists("g:vdebug_features")
6464
let g:vdebug_features = {}
6565
endif
6666

67+
if !exists("g:vdebug_leader_key")
68+
let g:vdebug_leader_key = ""
69+
endif
70+
6771
let g:vdebug_keymap_defaults = {
6872
\ "run" : "<F5>",
6973
\ "run_to_cursor" : "<F9>",
@@ -103,20 +107,9 @@ if g:vdebug_force_ascii == 1
103107
let g:vdebug_options_defaults["marker_open_tree"] = '-'
104108
endif
105109

106-
let g:vdebug_options = extend(g:vdebug_options_defaults,g:vdebug_options)
107-
let g:vdebug_keymap = extend(g:vdebug_keymap_defaults,g:vdebug_keymap)
108-
let g:vdebug_leader_key = ""
109-
110110
" Create the top dog
111111
python debugger = DebuggerInterface()
112112

113-
" Mappings allowed in non-debug mode
114-
exe "noremap ".g:vdebug_keymap["run"]." :python debugger.run()<cr>"
115-
exe "noremap ".g:vdebug_keymap["set_breakpoint"]." :python debugger.set_breakpoint()<cr>"
116-
117-
" Exceptional case for visual evaluation
118-
exe "vnoremap ".g:vdebug_keymap["eval_visual"]." :python debugger.handle_visual_eval()<cr>"
119-
120113
" Commands
121114
command! -nargs=? -complete=customlist,s:BreakpointTypes Breakpoint python debugger.set_breakpoint(<q-args>)
122115
command! -nargs=? BreakpointRemove python debugger.remove_breakpoint(<q-args>)
@@ -127,6 +120,7 @@ command! -nargs=+ -complete=customlist,s:OptionNames VdebugOpt python debugger.h
127120
" Signs and highlighted lines for breakpoints, etc.
128121
sign define current text=-> texthl=DbgCurrentSign linehl=DbgCurrentLine
129122
sign define breakpt text=B> texthl=DbgBreakptSign linehl=DbgBreakptLine
123+
130124
hi default DbgCurrentLine term=reverse ctermfg=White ctermbg=Red guifg=#ffffff guibg=#ff0000
131125
hi default DbgCurrentSign term=reverse ctermfg=White ctermbg=Red guifg=#ffffff guibg=#ff0000
132126
hi default DbgBreakptLine term=reverse ctermfg=White ctermbg=Green guifg=#ffffff guibg=#00ff00
@@ -142,6 +136,42 @@ function! s:BreakpointTypes(A,L,P)
142136
endif
143137
endfunction
144138

139+
" Reload options dictionary, by merging with default options.
140+
"
141+
" This should be called if you want to update the options after vdebug has
142+
" been loaded.
143+
function! vdebug:load_options(options)
144+
" Merge options with defaults
145+
let g:vdebug_options = extend(g:vdebug_options_defaults, a:options)
146+
endfunction
147+
148+
" Assign keymappings, and merge with defaults.
149+
"
150+
" This should be called if you want to update the keymappings after vdebug has
151+
" been loaded.
152+
function! vdebug:load_keymaps(keymaps)
153+
" Unmap existing keys, if applicable
154+
if has_key(g:vdebug_keymap, "run")
155+
exe "silent! nunmap ".g:vdebug_keymap["run"]
156+
endif
157+
if has_key(g:vdebug_keymap, "set_breakpoint")
158+
exe "silent! nunmap ".g:vdebug_keymap["set_breakpoint"]
159+
endif
160+
if has_key(g:vdebug_keymap, "eval_visual")
161+
exe "silent! vunmap ".g:vdebug_keymap["eval_visual"]
162+
endif
163+
164+
" Merge keymaps with defaults
165+
let g:vdebug_keymap = extend(g:vdebug_keymap_defaults, a:keymaps)
166+
167+
" Mappings allowed in non-debug mode
168+
exe "noremap ".g:vdebug_keymap["run"]." :python debugger.run()<cr>"
169+
exe "noremap ".g:vdebug_keymap["set_breakpoint"]." :python debugger.set_breakpoint()<cr>"
170+
171+
" Exceptional case for visual evaluation
172+
exe "vnoremap ".g:vdebug_keymap["eval_visual"]." :python debugger.handle_visual_eval()<cr>"
173+
endfunction
174+
145175
function! s:OptionNames(A,L,P)
146176
let arg_to_cursor = strpart(a:L,10,a:P)
147177
let space_idx = stridx(arg_to_cursor,' ')
@@ -175,3 +205,5 @@ function! vdebug:edit(filename)
175205
endfunction
176206

177207
silent doautocmd User VdebugPost
208+
call vdebug:load_options(g:vdebug_options)
209+
call vdebug:load_keymaps(g:vdebug_keymap)

0 commit comments

Comments
 (0)