@@ -64,6 +64,10 @@ if !exists("g:vdebug_features")
64
64
let g: vdebug_features = {}
65
65
endif
66
66
67
+ if ! exists (" g:vdebug_leader_key" )
68
+ let g: vdebug_leader_key = " "
69
+ endif
70
+
67
71
let g: vdebug_keymap_defaults = {
68
72
\ " run" : " <F5>" ,
69
73
\ " run_to_cursor" : " <F9>" ,
@@ -103,20 +107,9 @@ if g:vdebug_force_ascii == 1
103
107
let g: vdebug_options_defaults [" marker_open_tree" ] = ' -'
104
108
endif
105
109
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
-
110
110
" Create the top dog
111
111
python debugger = DebuggerInterface ()
112
112
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
-
120
113
" Commands
121
114
command ! -nargs =? -complete =customlist ,s: BreakpointTypes Breakpoint python debugger.set_breakpoint (<q-args> )
122
115
command ! -nargs =? BreakpointRemove python debugger.remove_breakpoint (<q-args> )
@@ -127,6 +120,7 @@ command! -nargs=+ -complete=customlist,s:OptionNames VdebugOpt python debugger.h
127
120
" Signs and highlighted lines for breakpoints, etc.
128
121
sign define current text= - > texthl= DbgCurrentSign linehl= DbgCurrentLine
129
122
sign define breakpt text= B> texthl= DbgBreakptSign linehl= DbgBreakptLine
123
+
130
124
hi default DbgCurrentLine term = reverse ctermfg= White ctermbg= Red guifg= #ffffff guibg= #ff0000
131
125
hi default DbgCurrentSign term = reverse ctermfg= White ctermbg= Red guifg= #ffffff guibg= #ff0000
132
126
hi default DbgBreakptLine term = reverse ctermfg= White ctermbg= Green guifg= #ffffff guibg= #00 ff00
@@ -142,6 +136,42 @@ function! s:BreakpointTypes(A,L,P)
142
136
endif
143
137
endfunction
144
138
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
+
145
175
function ! s: OptionNames (A,L,P )
146
176
let arg_to_cursor = strpart (a: L ,10 ,a: P )
147
177
let space_idx = stridx (arg_to_cursor,' ' )
@@ -175,3 +205,5 @@ function! vdebug:edit(filename)
175
205
endfunction
176
206
177
207
silent doautocmd User VdebugPost
208
+ call vdebug: load_options (g: vdebug_options )
209
+ call vdebug: load_keymaps (g: vdebug_keymap )
0 commit comments