|
|
@@ -1,187 +0,0 @@
|
|
|
-" pyclewn run time file
|
|
|
-" Maintainer: <xdegaye at users dot sourceforge dot net>
|
|
|
-"
|
|
|
-" Configure VIM to be used with pyclewn and netbeans
|
|
|
-"
|
|
|
-if exists("s:did_pyclewn")
|
|
|
- finish
|
|
|
-endif
|
|
|
-let s:did_pyclewn = 1
|
|
|
-
|
|
|
-let s:start_err = "Error: pyclewn failed to start, "
|
|
|
-let s:start_err .= "run the 'pyclewn' program to get the cause of the problem."
|
|
|
-
|
|
|
-" The following variables define how pyclewn is started when
|
|
|
-" the ':Pyclewn' vim command is run.
|
|
|
-" They may be changed to match your preferences.
|
|
|
-
|
|
|
-let s:pgm = "pyclewn"
|
|
|
-
|
|
|
-if exists("pyclewn_args")
|
|
|
- let s:args = pyclewn_args
|
|
|
-else
|
|
|
- let s:args = "--window=top --maxlines=10000 --background=Cyan,Green,Magenta"
|
|
|
-endif
|
|
|
-
|
|
|
-if exists("pyclewn_connection")
|
|
|
- let s:connection = pyclewn_connection
|
|
|
-else
|
|
|
- let s:connection = "localhost:3219:changeme"
|
|
|
-endif
|
|
|
-
|
|
|
-" Uncomment the following line to print full traces in a file named 'logfile'
|
|
|
-" for debugging purpose.
|
|
|
-" let s:args .= " --level=nbdebug --file=logfile"
|
|
|
-
|
|
|
-" The 'Pyclewn' command starts pyclewn and vim netbeans interface.
|
|
|
-let s:fixed = "--daemon --editor= --netbeans=" . s:connection . " --cargs="
|
|
|
-
|
|
|
-" Run the 'Cinterrupt' command to open the console
|
|
|
-function s:start_pdb(args)
|
|
|
- let argl = split(a:args)
|
|
|
- if index(argl, "--pdb") != -1
|
|
|
- " find the prefix
|
|
|
- let prefix = "C"
|
|
|
- let idx = index(argl, "-x")
|
|
|
- if idx == -1
|
|
|
- let idx = index(argl, "--prefix")
|
|
|
- if idx == -1
|
|
|
- for item in argl
|
|
|
- if stridx(item, "--prefix") == 0
|
|
|
- let pos = stridx(item, "=")
|
|
|
- if pos != -1
|
|
|
- let prefix = strpart(item, pos + 1)
|
|
|
- endif
|
|
|
- endif
|
|
|
- endfor
|
|
|
- endif
|
|
|
- endif
|
|
|
-
|
|
|
- if idx != -1 && len(argl) > idx + 1
|
|
|
- let prefix = argl[idx + 1]
|
|
|
- endif
|
|
|
-
|
|
|
- " hack to prevent Vim being stuck in the command line with '--More--'
|
|
|
- echohl WarningMsg
|
|
|
- echo "About to run the 'interrupt' command."
|
|
|
- call inputsave()
|
|
|
- call input("Press the <Enter> key to continue.")
|
|
|
- call inputrestore()
|
|
|
- echohl None
|
|
|
- exe prefix . "interrupt"
|
|
|
- endif
|
|
|
-endfunction
|
|
|
-
|
|
|
-" Check wether pyclewn successfully wrote the script file
|
|
|
-function s:pyclewn_ready(filename)
|
|
|
- let l:cnt = 1
|
|
|
- let l:max = 20
|
|
|
- echohl WarningMsg
|
|
|
- while l:cnt < l:max
|
|
|
- echon "."
|
|
|
- let l:cnt = l:cnt + 1
|
|
|
- if filereadable(a:filename)
|
|
|
- break
|
|
|
- endif
|
|
|
- sleep 200m
|
|
|
- endwhile
|
|
|
- echohl None
|
|
|
- if l:cnt == l:max
|
|
|
- throw s:start_err
|
|
|
- endif
|
|
|
- call s:info("Creation of vim script file \"" . a:filename . "\": OK.\n")
|
|
|
-endfunction
|
|
|
-
|
|
|
-" Start pyclewn and vim netbeans interface.
|
|
|
-function s:start(args)
|
|
|
- if !exists(":nbstart")
|
|
|
- throw "Error: the ':nbstart' vim command does not exist."
|
|
|
- endif
|
|
|
- if has("netbeans_enabled")
|
|
|
- throw "Error: netbeans is already enabled and connected."
|
|
|
- endif
|
|
|
- if !executable(s:pgm)
|
|
|
- throw "Error: '" . s:pgm . "' cannot be found or is not an executable."
|
|
|
- endif
|
|
|
- let l:tmpfile = tempname()
|
|
|
-
|
|
|
- " remove console and dbgvar buffers from previous session
|
|
|
- if bufexists("(clewn)_console")
|
|
|
- bwipeout (clewn)_console
|
|
|
- endif
|
|
|
- if bufexists("(clewn)_dbgvar")
|
|
|
- bwipeout (clewn)_dbgvar
|
|
|
- endif
|
|
|
-
|
|
|
- " start pyclewn and netbeans
|
|
|
- call s:info("Starting pyclewn.\n")
|
|
|
- exe "silent !" . s:pgm . " " . a:args . " " . s:fixed . l:tmpfile . " &"
|
|
|
- call s:info("Running nbstart, <C-C> to interrupt.\n")
|
|
|
- call s:pyclewn_ready(l:tmpfile)
|
|
|
- exe "nbstart :" . s:connection
|
|
|
-
|
|
|
- " source vim script
|
|
|
- if has("netbeans_enabled")
|
|
|
- if !filereadable(l:tmpfile)
|
|
|
- nbclose
|
|
|
- throw s:start_err
|
|
|
- endif
|
|
|
- " the pyclewn generated vim script is sourced only once
|
|
|
- if ! exists("s:source_once")
|
|
|
- let s:source_once = 1
|
|
|
- exe "source " . l:tmpfile
|
|
|
- endif
|
|
|
- call s:info("The netbeans socket is connected.\n")
|
|
|
- call s:start_pdb(a:args)
|
|
|
- else
|
|
|
- throw "Error: the netbeans socket could not be connected."
|
|
|
- endif
|
|
|
-endfunction
|
|
|
-
|
|
|
-function pyclewn#StartClewn(...)
|
|
|
- " command to start pdb: Pyclewn pdb foo.py arg1 arg2 ....
|
|
|
- let l:args = s:args
|
|
|
- if a:0 != 0
|
|
|
- if a:1 == "pdb"
|
|
|
- if a:0 == 2 && filereadable(a:2) == 0
|
|
|
- call s:error("File '" . a:2 . "' is not readable.")
|
|
|
- return
|
|
|
- endif
|
|
|
- let l:args .= " --pdb"
|
|
|
- if a:0 > 1
|
|
|
- let l:args .= " --args \"" . join(a:000[1:], ' ') . "\""
|
|
|
- endif
|
|
|
- else
|
|
|
- call s:error("Invalid optional first argument: must be 'pdb'.")
|
|
|
- return
|
|
|
- endif
|
|
|
- endif
|
|
|
-
|
|
|
- try
|
|
|
- call s:start(l:args)
|
|
|
- catch /.*/
|
|
|
- call s:info("The 'Pyclewn' command has been aborted.\n")
|
|
|
- call s:error(v:exception)
|
|
|
- " vim console screen is garbled, redraw the screen
|
|
|
- if !has("gui_running")
|
|
|
- redraw!
|
|
|
- endif
|
|
|
- " clear the command line
|
|
|
- echo "\n"
|
|
|
- endtry
|
|
|
-endfunction
|
|
|
-
|
|
|
-function s:info(msg)
|
|
|
- echohl WarningMsg
|
|
|
- echo a:msg
|
|
|
- echohl None
|
|
|
-endfunction
|
|
|
-
|
|
|
-function s:error(msg)
|
|
|
- echohl ErrorMsg
|
|
|
- echo a:msg
|
|
|
- call inputsave()
|
|
|
- call input("Press the <Enter> key to continue.")
|
|
|
- call inputrestore()
|
|
|
- echohl None
|
|
|
-endfunction
|