Skip to content

Commit

Permalink
Map and unmap keys on debugger start/close, as per #1
Browse files Browse the repository at this point in the history
Run and set breakpoint keys are available when Vim starts, but all other
key maps are set when the debugger is started, and unmapped when the GUI
is closed. Also, a leader key can be set with g:vdebug_leader_key
  • Loading branch information
joonty committed Aug 23, 2012
1 parent 5c0fce7 commit b194bb0
Show file tree
Hide file tree
Showing 3 changed files with 33 additions and 5 deletions.
3 changes: 3 additions & 0 deletions plugin/python/vdebug/runner.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,8 @@ def __init__(self):
self.api = None
vdebug.opts.Options.set(vim.eval('g:vdebug_options'))
self.breakpoints = vdebug.breakpoint.Store()
self.keymapper = vdebug.util.Keymapper()
self.keymapper.map()
self.ui = vdebug.ui.vimui.Ui(self.breakpoints)

def open(self):
Expand Down Expand Up @@ -296,3 +298,4 @@ def close(self):
"""
self.close_connection()
self.ui.close()
self.keymapper.unmap()
25 changes: 25 additions & 0 deletions plugin/python/vdebug/util.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,32 @@
import vdebug.opts
import vdebug.log
import vim
import sys

class Keymapper:
"""Map and unmap key commands for the Vim user interface.
"""

exclude = ["run","set_breakpoint"]

def __init__(self):
self.keymaps = vim.eval("g:vdebug_keymap")
self.leader = vim.eval("g:vdebug_leader_key")

def map(self):
for func in self.keymaps:
key = self.keymaps[func]
if key not in self.exclude:
map_cmd = "map %s%s :python debugger.%s()<cr>" %\
(self.leader,key,func)
vim.command(map_cmd)

def unmap(self):
for func in self.keymaps:
key = self.keymaps[func]
if key not in self.exclude:
vim.command("unmap %s%s" %(self.leader,key))

class FilePath:
"""Normalizes a file name and allows for remote and local path mapping.
"""
Expand Down
10 changes: 5 additions & 5 deletions plugin/vdebug.vim
Original file line number Diff line number Diff line change
Expand Up @@ -41,8 +41,6 @@ else
endif
endif

python debugger = DebuggerInterface()

if !exists("g:vdebug_options")
let g:vdebug_options = {}
endif
Expand Down Expand Up @@ -79,10 +77,12 @@ let g:vdebug_options_defaults = {

let g:vdebug_options = extend(g:vdebug_options_defaults,g:vdebug_options)
let g:vdebug_keymap = extend(g:vdebug_keymap_defaults,g:vdebug_keymap)
let g:vdebug_leader_key = ""

python debugger = DebuggerInterface()

for [s:fname, s:key] in items(g:vdebug_keymap)
exe "map ".s:key." :python debugger.".s:fname."()<cr>"
endfor
exe "map ".g:vdebug_keymap["run"]." :python debugger.run()<cr>"
exe "map ".g:vdebug_keymap["set_breakpoint"]." :python debugger.set_breakpoint()<cr>"

vnoremap <Leader>e :python debugger.handle_visual_eval()<cr>
Expand Down

0 comments on commit b194bb0

Please sign in to comment.