diff --git a/plugin/vdebug.vim b/plugin/vdebug.vim index 8d7962bc..01d2e7f4 100644 --- a/plugin/vdebug.vim +++ b/plugin/vdebug.vim @@ -59,23 +59,33 @@ if !exists('g:vdebug_leader_key') let g:vdebug_leader_key = '' endif +" Linuxmagic changed default hotkeys +" These are custom keymaps for the vdebug plugin. These have basically all been +" changed to more closely resemble the mappings for the old debug plugin let g:vdebug_keymap_defaults = { -\ 'run' : '', -\ 'run_to_cursor' : '', -\ 'step_over' : '', -\ 'step_into' : '', -\ 'step_out' : '', -\ 'close' : '', -\ 'detach' : '', -\ 'set_breakpoint' : '', -\ 'get_context' : '', +\ 'set_breakpoint' : '', +\ 'detach' : '', +\ 'run' : '', +\ 'step_into' : '', +\ 'step_over' : '', +\ 'step_out' : '', +\ 'run_to_cursor' : '', +\ 'get_context' : '', \ 'eval_under_cursor' : '', -\ 'eval_visual' : 'e' +\ 'close' : ',q', \} +"\ 'eval_visual' : ',e' +" An additional mapping to easily allow someone to enter a custom expression +" to evaluate (the trailing whitespace is intended to be there so that you +" can immediately start typing your command) +vmap ,e "zy:VdebugEval z +nmap ,e :VdebugEval + +" Linuxmagic changed port from 9000 to 9876, and timeout to 40 let g:vdebug_options_defaults = { -\ 'port' : 9000, -\ 'timeout' : 20, +\ 'port' : 9876, +\ 'timeout' : 40, \ 'server' : '', \ 'on_close' : 'stop', \ 'break_on_open' : 1, @@ -91,7 +101,7 @@ let g:vdebug_options_defaults = { \ 'sign_breakpoint' : '▷', \ 'sign_current' : '▶', \ 'sign_disabled': '▌▌', -\ 'continuous_mode' : 1, +\ 'continuous_mode' : 0, \ 'background_listener' : 1, \ 'auto_start' : 1, \ 'simplified_status': 1, @@ -226,9 +236,9 @@ function! Vdebug_load_keymaps(keymaps) if has_key(g:vdebug_keymap, 'set_breakpoint') exe 'silent! nunmap '.g:vdebug_keymap['set_breakpoint'] endif - if has_key(g:vdebug_keymap, 'eval_visual') - exe 'silent! vunmap '.g:vdebug_keymap['eval_visual'] - endif + "if has_key(g:vdebug_keymap, 'eval_visual') + " exe 'silent! vunmap '.g:vdebug_keymap['eval_visual'] + "endif " Merge keymaps with defaults let g:vdebug_keymap = extend(g:vdebug_keymap_defaults, a:keymaps) @@ -240,7 +250,7 @@ function! Vdebug_load_keymaps(keymaps) exe 'noremap '.g:vdebug_keymap['set_breakpoint'].' :python3 debugger.set_breakpoint()' " Exceptional case for visual evaluation - exe 'vnoremap '.g:vdebug_keymap['eval_visual'].' :python3 debugger.handle_visual_eval()' + "exe 'vnoremap '.g:vdebug_keymap['eval_visual'].' :python3 debugger.handle_visual_eval()' python3 debugger.reload_keymappings() endfunction diff --git a/python3/vdebug/listener.py b/python3/vdebug/listener.py index 15775904..e72b51cf 100644 --- a/python3/vdebug/listener.py +++ b/python3/vdebug/listener.py @@ -48,16 +48,16 @@ def __init__(self): self.__server = connection.SocketServer() def start(self): - if opts.Options.get("auto_start", int): - vim.command('autocmd Vdebug CursorHold,CursorHoldI,CursorMoved,CursorMovedI,FocusGained,FocusLost * python3 debugger.start_if_ready()') + #if opts.Options.get("auto_start", int): + # vim.command('autocmd Vdebug CursorHold,CursorHoldI,CursorMoved,CursorMovedI,FocusGained,FocusLost * python3 debugger.start_if_ready()') self.__server.start(opts.Options.get('server'), opts.Options.get('port', int)) def stop(self): - if opts.Options.get("auto_start", bool): - vim.command('augroup Vdebug') - vim.command('autocmd!') - vim.command('augroup END') + #if opts.Options.get("auto_start", bool): + # vim.command('augroup Vdebug') + # vim.command('autocmd!') + # vim.command('augroup END') self.__server.stop() def status(self): diff --git a/python3/vdebug/session.py b/python3/vdebug/session.py index 893b8d69..0a848a57 100644 --- a/python3/vdebug/session.py +++ b/python3/vdebug/session.py @@ -1,4 +1,5 @@ import socket +import time import vim @@ -36,7 +37,6 @@ def listen(self): if self.listener and self.listener.is_listening(): print("Waiting for a connection: none found so far") elif self.listener and self.listener.is_ready(): - print("Found connection, starting debugger") self.__new_session() else: self.start_listener() @@ -48,7 +48,10 @@ def start_listener(self): if self.is_open(): self.ui().set_status("listening") self.listener.start() - self.start_if_ready() + # keep trying to start it if autostart is on + if opts.Options.get("auto_start", int): + while not self.start_if_ready(): + time.sleep(0.1) def stop_listening(self): if self.listener: @@ -101,7 +104,6 @@ def status_for_statusline(self): def start_if_ready(self): try: if self.listener.is_ready(): - print("Found connection, starting debugger") self.__new_session() return True return False diff --git a/python3/vdebug/ui/vimui.py b/python3/vdebug/ui/vimui.py index 415e4c94..1f2a962b 100644 --- a/python3/vdebug/ui/vimui.py +++ b/python3/vdebug/ui/vimui.py @@ -141,7 +141,7 @@ def __init__(self): 'window_commands': { 'DebuggerWatch': 'vertical belowright new', 'DebuggerStack': 'aboveleft 12new', - 'DebuggerStatus': 'aboveleft 1new' + 'DebuggerStatus': 'aboveleft 7new' }, 'window_size': { }, @@ -159,7 +159,7 @@ def __init__(self): }, 'window_size': { 'DebuggerWatch': { 'height' : 15 }, - 'DebuggerStatus': { 'height' : 1 } + 'DebuggerStatus': { 'height' : 3 } }, 'window_arrangement': [ 'DebuggerWatch', @@ -724,6 +724,8 @@ def on_create(self): keys = util.Keymapper() if opts.Options.get("simplified_status", int): self.set_status("listening") + keys = util.Keymapper() + self.write(keys.keymap_string()) else: output = "Status: starting\nListening on port\nNot connected\n\n" output += "Press %s to start debugging, " % (keys.run_key()) @@ -734,22 +736,15 @@ def on_create(self): def set_status(self, status): if opts.Options.get("simplified_status", int): + output = "Debugger Status: " if str(status) == "listening": - status = "●" + output += "● listening" if str(status) == "stopped": - status = "■" + output += "■ stopped" if str(status) == "running": - status = "▶" + output += "▶ running" if str(status) == "break": - status = "▌▌" - - keys = util.Keymapper() - - output = " " + str(status) + " " - output += "[%s Start] " % (keys.run_key()) - output += "[%s Stop] " % (keys.close_key()) - output += "[:help Vdebug]" - + output += "▌▌ paused" self.insert(output, 0, True) else: self.insert("Status: %s" % str(status), 0, True) diff --git a/python3/vdebug/util.py b/python3/vdebug/util.py index 653705e6..abc60c16 100644 --- a/python3/vdebug/util.py +++ b/python3/vdebug/util.py @@ -112,12 +112,45 @@ def __init__(self): self._reload_keys() self.existing = [] + def breakpoint_key(self): + return self.keymaps['set_breakpoint'] + + def detach_key(self): + return self.keymaps['detach'] + def run_key(self): return self.keymaps['run'] + def step_into_key(self): + return self.keymaps['step_into'] + + def step_over_key(self): + return self.keymaps['step_over'] + + def step_out_key(self): + return self.keymaps['step_out'] + + def run_to_cursor_key(self): + return self.keymaps['run_to_cursor'] + + def get_context_key(self): + return self.keymaps['get_context'] + + def eval_under_cursor_key(self): + return self.keymaps['eval_under_cursor'] + def close_key(self): return self.keymaps['close'] + def keymap_string(self): + keymap_str = "--[Hotkeys]-----------------------------------------\n"; + keymap_str += " %s - Set Breakpoint | %s - Step Into\n" % (self.breakpoint_key(), self.step_into_key()) + keymap_str += " %s - Detach | %s - Step Over\n" % (self.detach_key(), self.step_over_key()) + keymap_str += " %s - Run | %s - Step Out\n" % (self.run_key(), self.step_out_key()) + keymap_str += " %s - Run to Cursor | %s - Get Context\n" % (self.run_to_cursor_key(), self.get_context_key()) + keymap_str += " %s - Stop | %s - Eval Under Cursor\n" % (self.close_key(), self.eval_under_cursor_key()) + return keymap_str + def map(self): log.Log("keymapper: map", log.Logger.DEBUG) if self.is_mapped: