@@ -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 =? Breakpoint python debugger.set_breakpoint (<q-args> )
122
115
command ! -nargs =? BreakpointRemove python debugger.remove_breakpoint (<q-args> )
@@ -127,11 +120,48 @@ 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
133
127
hi default DbgBreakptSign term = reverse ctermfg= White ctermbg= Green guifg= #ffffff guibg= #00 ff00
134
128
129
+ " Reload options dictionary, by merging with default options.
130
+ "
131
+ " This should be called if you want to update the options after vdebug has
132
+ " been loaded.
133
+ function ! vdebug: load_options (options )
134
+ " Merge options with defaults
135
+ let g: vdebug_options = extend (g: vdebug_options_defaults , a: options )
136
+ endfunction
137
+
138
+ " Assign keymappings, and merge with defaults.
139
+ "
140
+ " This should be called if you want to update the keymappings after vdebug has
141
+ " been loaded.
142
+ function ! vdebug: load_keymaps (keymaps)
143
+ " Unmap existing keys, if applicable
144
+ if has_key (g: vdebug_keymap , " run" )
145
+ exe " silent! nunmap " .g: vdebug_keymap [" run" ]
146
+ endif
147
+ if has_key (g: vdebug_keymap , " set_breakpoint" )
148
+ exe " silent! nunmap " .g: vdebug_keymap [" set_breakpoint" ]
149
+ endif
150
+ if has_key (g: vdebug_keymap , " eval_visual" )
151
+ exe " silent! vunmap " .g: vdebug_keymap [" eval_visual" ]
152
+ endif
153
+
154
+ " Merge keymaps with defaults
155
+ let g: vdebug_keymap = extend (g: vdebug_keymap_defaults , a: keymaps )
156
+
157
+ " Mappings allowed in non-debug mode
158
+ exe " noremap " .g: vdebug_keymap [" run" ]." :python debugger.run()<cr>"
159
+ exe " noremap " .g: vdebug_keymap [" set_breakpoint" ]." :python debugger.set_breakpoint()<cr>"
160
+
161
+ " Exceptional case for visual evaluation
162
+ exe " vnoremap " .g: vdebug_keymap [" eval_visual" ]." :python debugger.handle_visual_eval()<cr>"
163
+ endfunction
164
+
135
165
function ! s: OptionNames (A,L,P )
136
166
let arg_to_cursor = strpart (a: L ,10 ,a: P )
137
167
let space_idx = stridx (arg_to_cursor,' ' )
@@ -165,3 +195,5 @@ function! vdebug:edit(filename)
165
195
endfunction
166
196
167
197
silent doautocmd User VdebugPost
198
+ call vdebug: load_options (g: vdebug_options )
199
+ call vdebug: load_keymaps (g: vdebug_keymap )
0 commit comments