Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also compare across forks.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also compare across forks.
base fork: MasseR/dotvim
base: 3e46f06dc5
...
head fork: MasseR/dotvim
compare: c35d345a21
  • 12 commits
  • 142 files changed
  • 0 commit comments
  • 1 contributor
Showing with 24 additions and 50,826 deletions.
  1. +2 −3 .gitignore
  2. +22 −4 .gitmodules
  3. +0 −1  bundle/OmniCppComplete
  4. +0 −1  bundle/VimClojure
  5. +0 −1  bundle/VimDebugger
  6. +0 −1  bundle/Vimchant
  7. +0 −1  bundle/dbext
  8. +0 −1  bundle/fugitive
  9. +0 −1  bundle/gettext
  10. +0 −1  bundle/gundo
  11. +0 −1  bundle/histwin
  12. +0 −1  bundle/html-template-syntax
  13. +0 −1  bundle/javascript
  14. +0 −1  bundle/lusty
  15. +0 −1  bundle/nerdtree
  16. +0 −1  bundle/sessionman
  17. +0 −5 bundle/slimv/.hg_archival.txt
  18. +0 −56 bundle/slimv/.hgtags
  19. +0 −197 bundle/slimv/README.txt
  20. +0 −337 bundle/slimv/doc/paredit.txt
  21. +0 −1,479 bundle/slimv/doc/slimv.txt
  22. +0 −410 bundle/slimv/doc/swank.txt
  23. +0 −2  bundle/slimv/ftdetect/clojure.vim
  24. +0 −181 bundle/slimv/ftplugin/clojure/slimv-clojure.vim
  25. +0 −175 bundle/slimv/ftplugin/lisp/slimv-lisp.vim
  26. +0 −69 bundle/slimv/ftplugin/scheme/slimv-scheme.vim
  27. +0 −2,236 bundle/slimv/ftplugin/slimv-clhs.vim
  28. +0 −554 bundle/slimv/ftplugin/slimv-cljapi.vim
  29. +0 −3,820 bundle/slimv/ftplugin/slimv-javadoc.vim
  30. +0 −584 bundle/slimv/ftplugin/slimv.py
  31. +0 −2,795 bundle/slimv/ftplugin/slimv.vim
  32. +0 −980 bundle/slimv/ftplugin/swank.py
  33. +0 −22 bundle/slimv/indent/clojure.vim
  34. +0 −20 bundle/slimv/indent/lisp.vim
  35. +0 −1,313 bundle/slimv/plugin/paredit.vim
  36. +0 −20,255 bundle/slimv/slime/ChangeLog
  37. +0 −48 bundle/slimv/slime/README
  38. +0 −30 bundle/slimv/slime/contrib/README
  39. +0 −1,547 bundle/slimv/slime/contrib/swank-arglists.lisp
  40. +0 −214 bundle/slimv/slime/contrib/swank-asdf.lisp
  41. +0 −291 bundle/slimv/slime/contrib/swank-c-p-c.lisp
  42. +0 −69 bundle/slimv/slime/contrib/swank-clipboard.lisp
  43. +0 −871 bundle/slimv/slime/contrib/swank-fancy-inspector.lisp
  44. +0 −629 bundle/slimv/slime/contrib/swank-fuzzy.lisp
  45. +0 −16 bundle/slimv/slime/contrib/swank-hyperdoc.lisp
  46. +0 −46 bundle/slimv/slime/contrib/swank-indentation.lisp
  47. +0 −2,307 bundle/slimv/slime/contrib/swank-kawa.scm
  48. +0 −176 bundle/slimv/slime/contrib/swank-larceny.scm
  49. +0 −85 bundle/slimv/slime/contrib/swank-listener-hooks.lisp
  50. +0 −23 bundle/slimv/slime/contrib/swank-media.lisp
  51. +0 −909 bundle/slimv/slime/contrib/swank-mit-scheme.scm
  52. +0 −66 bundle/slimv/slime/contrib/swank-motd.lisp
  53. +0 −64 bundle/slimv/slime/contrib/swank-package-fu.lisp
  54. +0 −320 bundle/slimv/slime/contrib/swank-presentation-streams.lisp
  55. +0 −237 bundle/slimv/slime/contrib/swank-presentations.lisp
  56. +0 −416 bundle/slimv/slime/contrib/swank-r6rs.scm
  57. +0 −54 bundle/slimv/slime/contrib/swank-sbcl-exts.lisp
  58. +0 −68 bundle/slimv/slime/contrib/swank-snapshot.lisp
  59. +0 −144 bundle/slimv/slime/contrib/swank-sprof.lisp
  60. +0 −1,227 bundle/slimv/slime/metering.lisp
  61. +0 −523 bundle/slimv/slime/nregex.lisp
  62. +0 −332 bundle/slimv/slime/sbcl-pprint-patch.lisp
  63. +0 −29 bundle/slimv/slime/start-swank.lisp
  64. +0 −719 bundle/slimv/slime/swank-abcl.lisp
  65. +0 −908 bundle/slimv/slime/swank-allegro.lisp
  66. +0 −1,327 bundle/slimv/slime/swank-backend.lisp
  67. +0 −770 bundle/slimv/slime/swank-ccl.lisp
  68. +0 −850 bundle/slimv/slime/swank-clisp.lisp
Sorry, we could not display the entire diff because it was too big.
View
5 .gitignore
@@ -2,8 +2,7 @@
*.swp
*.swo
.netrwhist
-[?25l[?25h[?1049h[?1h=[?25h[?25h[?25l"tags/" Illegal file name~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ]2; (~/.vim) - VIM]1;tags[?25h[?25lType :quit<Enter> to exit Vim[?25h[?25l[?25h[?25l[?25h[?25l[?25h[?25l[?25h[?1l>[?1049lVim: Error reading input, exiting...
-Vim: Finished.
-]2;urxvt]1;urxvttags/
*.swp
view/
+bundle/**
+!bundle/vundle
View
26 .gitmodules
@@ -9,7 +9,7 @@
url = http://github.com/scrooloose/nerdtree.git
[submodule "bundle/surround"]
path = bundle/surround
- url = http://github.com/tpope/vim-surround.git
+ url = https://github.com/tpope/vim-surround.git
[submodule "bundle/OmniCppComplete"]
path = bundle/OmniCppComplete
url = http://github.com/MasterKey/OmniCppComplete.git
@@ -34,9 +34,6 @@
[submodule "bundle/matchit"]
path = bundle/matchit
url = https://github.com/javanthropus/vim-matchit.git
-[submodule "bundle/snipmate"]
- path = bundle/snipmate
- url = git@github.com:MasseR/snipmate.vim.git
[submodule "bundle/VimClojure"]
path = bundle/VimClojure
url = https://github.com/vim-scripts/VimClojure.git
@@ -61,6 +58,27 @@
[submodule "bundle/html-template-syntax"]
path = bundle/html-template-syntax
url = https://github.com/pbrisbin/html-template-syntax.git
+[submodule "bundle/vim-scala"]
+ path = bundle/vim-scala
+ url = https://github.com/derekwyatt/vim-scala.git
[submodule "bundle/Vimchant"]
path = bundle/Vimchant
url = https://github.com/vim-scripts/Vimchant.git
+[submodule "bundle/snipmate"]
+ path = bundle/snipmate
+ url = https://github.com/avelino/snipmate.vim.git
+[submodule "bundle/neocomplcache"]
+ path = bundle/neocomplcache
+ url = https://github.com/Shougo/neocomplcache.git
+[submodule "bundle/ctrlp"]
+ path = bundle/ctrlp
+ url = https://github.com/kien/ctrlp.vim.git
+[submodule "bundle/localrc"]
+ path = bundle/localrc
+ url = https://github.com/vim-scripts/localrc.vim.git
+[submodule "bundle/tcomment"]
+ path = bundle/tcomment
+ url = https://github.com/tomtom/tcomment_vim.git
+[submodule "bundle/xmledit"]
+ path = bundle/xmledit
+ url = https://github.com/sukima/xmledit.git
1  bundle/OmniCppComplete
@@ -1 +0,0 @@
-Subproject commit d3410d2daa3aebf70c938175b4d083e8fb521df8
1  bundle/VimClojure
@@ -1 +0,0 @@
-Subproject commit d4497538ae397efdb0f684b3d3278e4c6ec8effd
1  bundle/VimDebugger
@@ -1 +0,0 @@
-Subproject commit 3964b284e0c5843f23976b9a9d4ba39d3ac655d9
1  bundle/Vimchant
@@ -1 +0,0 @@
-Subproject commit f4db5b58b2346ca5688ebce616392e025415f1da
1  bundle/dbext
@@ -1 +0,0 @@
-Subproject commit b1322d5cf708abd4a487400fb8879e2fab19e78b
1  bundle/fugitive
@@ -1 +0,0 @@
-Subproject commit 6462bdb4b936d27ecfc056d1f9c026acc40743d4
1  bundle/gettext
@@ -1 +0,0 @@
-Subproject commit fc669d7a02a735dcdcf8dfda9e4544ee37e50c0c
1  bundle/gundo
@@ -1 +0,0 @@
-Subproject commit 7198c51b5d2b145b5ca4899fda8397e7f68efa77
1  bundle/histwin
@@ -1 +0,0 @@
-Subproject commit b3c38dd179419eeaa970bfa1db08e26aa2ec2317
1  bundle/html-template-syntax
@@ -1 +0,0 @@
-Subproject commit 2a46d6a824768a7972590c129ee34a4e696d0d92
1  bundle/javascript
@@ -1 +0,0 @@
-Subproject commit a599ac8ecede3a30f5a89e6f9f704d97a04f982e
1  bundle/lusty
@@ -1 +0,0 @@
-Subproject commit 3572b5d9546621327396310000c7c8b4151a13d1
1  bundle/nerdtree
@@ -1 +0,0 @@
-Subproject commit 2cb0fc78fb4c7a1db5f51c042a447cc50f09983d
1  bundle/sessionman
@@ -1 +0,0 @@
-Subproject commit 8e9fcc41152e8456048bad1a44918eb84821db45
View
5 bundle/slimv/.hg_archival.txt
@@ -1,5 +0,0 @@
-repo: 312df05857fb28463df0e6cf8f111907e574559f
-node: 75c81a22a1a6d576b62b2c08ac17a1a1706f1c88
-branch: default
-latesttag: 0.8.5
-latesttagdistance: 11
View
56 bundle/slimv/.hgtags
@@ -1,56 +0,0 @@
-757fcf4f9ec8dd355562e43955d58a1d1e058cd4 0.1
-8f4d3ce88b2f1b17df960b143f7bd54d6b794aa8 0.1.1
-c62731098ea9d3dad0d788c65fa4ff917399bd2c 0.1.2
-2bca8504ba3537d4503d31cb6193ad8c0a0bcef6 0.1.3
-70624b5323657c6b58b6c8a0797fe609070b4d9e 0.1.4
-005fd272660d330ff021a4ca00897e55cdb69d30 0.2.0
-42a1717c1cff96a8798d8df0a03fba991976af27 0.2.1
-09036b7be53d6185d44dab46a3aab5b9b6e26f06 0.2.2
-0ea663fc393c7b01dbeb1f2e5b73d56bab1d5810 0.3.0
-0ea663fc393c7b01dbeb1f2e5b73d56bab1d5810 0.3.0
-0000000000000000000000000000000000000000 0.3.0
-0000000000000000000000000000000000000000 0.3.0
-46b4a0c3ce6b833eec22485419ca241925f051ab 0.3.0
-46b4a0c3ce6b833eec22485419ca241925f051ab 0.3.0
-0000000000000000000000000000000000000000 0.3.0
-fe355cee2ebbaabba06ee189569fd08072be659f 0.4.0
-6b7c608d1be092a040585bc583c3ba0ffc06588f 0.4.1
-f3379999fd93d4dd371a64cdaa5a70164ffc49d5 0.5.2
-522a7b80552b11ca4de218dc4e1aceb012a00ad4 0.5.0
-f3379999fd93d4dd371a64cdaa5a70164ffc49d5 0.5.2
-0000000000000000000000000000000000000000 0.5.2
-f3379999fd93d4dd371a64cdaa5a70164ffc49d5 0.5.1
-0000000000000000000000000000000000000000 0.5.2
-4d82e4dcd9d8c02b7e8f4c90553e29d7925738fe 0.5.2
-f4d0d22d0d985e4e0c378dd6e8f1a96f94277b64 0.5.4
-8ac0c3a2657079283394549bd6e2ab8b8ab0293d 0.5.5
-962b3932c08537ede2c4ca73fb19470702ee1329 0.5.3
-94fb2d92b804c4a93a4088a336d4b63c410d1f17 0.5.6
-0000000000000000000000000000000000000000 0.3.0
-08e87d29ff8aca59efc7b94a10356a8c1b49d77f 0.3.0
-d7b7e75927f8537aa32c85d3f3c6b3fb86830d8b 0.6.0
-b01612a1723b2f13c8a08578e9417ee669480da4 0.6.1
-b01612a1723b2f13c8a08578e9417ee669480da4 0.6.2
-fb43c9f5e6dd07dfc9190a1bf10f63d8f87676f7 0.6.3
-fb43c9f5e6dd07dfc9190a1bf10f63d8f87676f7 0.6.3
-0000000000000000000000000000000000000000 0.6.3
-b01612a1723b2f13c8a08578e9417ee669480da4 0.6.2
-0000000000000000000000000000000000000000 0.6.2
-0000000000000000000000000000000000000000 0.6.2
-fb43c9f5e6dd07dfc9190a1bf10f63d8f87676f7 0.6.2
-0000000000000000000000000000000000000000 0.6.3
-4959f842561eabf8c5cdcfc241019ed7747a4432 0.6.3
-f77d0a6ed18a09c64fd312883d9d3b54052ce2d4 0.7.0
-fdaacef3274ecf2cf12a3040675dfd879a797592 0.7.1
-7c65e28865449e02e9b700d131e9e154300a037c 0.7.2
-d954edf262b2ad25d554c7981104d4e1bf9cdfd4 0.7.3
-0ad03f87ebf52f17b410a4fa1a928768167bd907 0.7.4
-8c508324035a7fb1a0e6696e2e9a1f45366320e9 0.7.5
-6fa96bd1d6d9f15e3c4db1aadae2b11543873ba7 0.7.6
-5c1dd729b5ab0371426d7ca9ed97a5d501cda095 0.7.7
-ee22ddd1ad0ca9935970d515cab286c3e0c75670 0.8.0
-2dcdc990159c5e1b5981bdb6e36e47a898eef119 0.8.1
-19387d57e1960208c96cb4ac5db5ab44494d7723 0.8.2
-806fe91db6004c8eb11974e10e4ae546a8a6dd01 0.8.3
-788b4720a17d7017632e65fd4a964c4e3bbfcb40 0.8.4
-dbc305b7b56b49954b32081f722f3a94e8d6a8cf 0.8.5
View
197 bundle/slimv/README.txt
@@ -1,197 +0,0 @@
---------------------------------------------------------------------------------
-slimv.vim
---------------------------------------------------------------------------------
-Superior Lisp Interaction Mode for Vim ("SLIME for Vim")
-
-Vim script
-
-created by
-Tamas Kovacs
-
---------------------------------------------------------------------------------
-Description
---------------------------------------------------------------------------------
-Slimv is a SWANK client for Vim, similarly to SLIME for Emacs. SWANK is a TCP server for Emacs, which runs a Common Lisp, Clojure or Scheme REPL and provides a socket interface for evaluating, compiling, debugging, profiling lisp code. The SWANK server is embedded in Slimv, but you can also use your own SWANK installation.
-
-Slimv opens the lisp REPL (Read-Eval-Print Loop) inside a Vim buffer. Lisp commands may be entered and executed in the REPL buffer, just as in a regular REPL.
-
-Slimv supports SLIME's debugger, profiler, cross reference, arglist, indentation, symbol name completion functions. The script also has a Common Lisp Hyperspec lookup feature and it is able to lookup symbols in the Clojure API, as well as in JavaDoc.
-
-Slimv comes with Paredit Mode, which is similar to the functionality of paredit.el in Emacs. Paredit Mode tries to maintain the balanced state of matched characters (parenthesis marks, square brackets, double quotes). Matched characters are inserted and removed in pairs, also when working with a block of text (well, mostly). Slimv also implements many paredit.el s-expression handling functions, like Split/Join/Wrap/Splice. Slurpage and Barfage known from Emacs is also possible but in a different fashion: you don't move the list element in or out of the list, rather you move the opening or closing parenthesis over the element or sub-list.
-
-Please visit the Slimv Tutorial for a more complete introduction:
-http://kovisoft.bitbucket.org/tutorial.html
-
-Here follows a list of Slimv commands, any similarity with SLIME's menu is not coincidental. :)
-
-Edit commands:
- * Close Form
- * Complete Symbol
- * Function Arglist
- * Paredit Toggle
-
-Evaluation commands:
- * Eval Defun
- * Eval Current Expression
- * Eval Region
- * Eval Buffer
- * Interactive Eval
- * Undefine Function
-
-Debug commands:
- * Macroexpand-1
- * Macroexpand All
- * Toggle Trace
- * Untrace All
- * Disassemble
- * Inspect
- * Abort
- * Quit to Toplevel
- * Continue
- * List Threads
- * Kill Thread
- * Debug Thread
-
-Compile commands:
- * Compile Defun
- * Compile and Load File
- * Compile File
- * Compile Region
-
-Cross Reference commands
- * Who Calls
- * Who References
- * Who Sets
- * Who Binds
- * Who Macroexpands
- * Who Specializes
- * List Callers
- * List Callees
-
-Profile commands:
- * Toggle Profile
- * Profile by Substring
- * Unprofile All
- * Show Profiled
- * Profile Report
- * Profile Reset
-
-Documentation commands:
- * Describe Symbol
- * Apropos
- * Hyperspec
- * Generate Tags
-
-REPL commands:
- * Connect to Server
- * Interrupt Lisp Process
- * Send Input
- * Close and Send Input
- * Set Package
- * Previous Input
- * Next Input
-
-For more information see the included documentation.
-
----------------------------------------------------------------------------------------------
-Installation details
----------------------------------------------------------------------------------------------
-
-Extract the zip archive into your vimfiles or runtime directory.
-
-Slimv works on Windows, Linux and Mac OS X (via Terminal.app), Cygwin is supported. The script requires the following programs installed on your system:
- * Vim with Python feature enabled
- * Python (must be the same Python version that was Vim compiled against)
- * Lisp (any Common Lisp with SLIME support) or Clojure or MIT Scheme (Linux only)
-
-Vim's Python version can be identified with the :ver command, look for the -DDYNAMIC_PYTHON_DLL=\"pythonXX\" string.
-
-Slimv tries to autodetect your Lisp/Clojure/Python/Slime installation directories. If it fails to determine the correct directories, then you need to enter the command to start the SWANK server into your vimrc file.
-
-Linux example:
- let g:slimv_swank_cmd = '! xterm -e sbcl --load /usr/share/common-lisp/source/slime/start-swank.lisp &'
-
-Windows example:
- let g:slimv_swank_cmd = '!start "c:/Program Files/Lisp Cabinet/bin/ccl/wx86cl.exe" -l "c:/Program Files/Lisp Cabinet/site/lisp/slime/start-swank.lisp"'
-
-For Clojure use the g:slimv_swank_clojure option, e.g.:
- let g:slimv_swank_clojure = '! xterm -e lein swank &'
-
-
-Important notice to pre-0.8.0 users:
-If you want the old functionality, please set g:slimv_swank to 0 in your vimrc file. Please note however, that the development focuses on the SWANK client.
-
-See the included documentation for more complete installation and customization instructions.
-
---------------------------------------------------------------------------------
-Script versions
---------------------------------------------------------------------------------
-
-0.8.5: Switch on indent plugins, do not complete empty string on <Tab>, added Clojure keywords to syntax plugin, use -i option to load swank-clojure, implementation specific REPL initialization, for Clojure it imports source, apropos, javadoc, etc. (thanks to �mer Sinan Agacan), print Lisp version at REPL startup, added List-Threads, Kill-Thread, Debug-Thread (thanks to Philipp Marek), write prompt after Toggle-Trace, display list of untraced functions for Untrace-All, when in SLDB, Interactive-Eval evaluates expressions in the frame, Inspect inspects objects in the frame, changed g:slimv_echolines logic: set 0 for no lines, -1 for all lines, bugfixes: removed extra linebreak between chunks of long output, indentation problems for symbols with package specification (thanks to Philipp Marek), indentation of Clojure's defn, plist indentation (thanks to Philipp Marek), occasional few seconds delay in swank response, running Swank server on Mac OS X (on behalf of Tobias Pflug).
-
-0.8.4: Added handling for Unicode characters, truncate arglist output to fit in the status line, added debugger keybindings: ,a for abort ,q for quit ,n for continue, changed keybinding for apropos to ,A, added compiler error messages to quickfix list, map insert mode <Space> and <Tab> only for lisp (and dialects) buffers, bugfixes: wait for the response to :create-repl before calling :swank-require (thanks to Philipp Marek), indentation problems with unbalanced parens in comment, arglist ate the <Space> when virtualedit was off.
-
-0.8.3: Added top/bottom/left/right directions to g:slimv_repl_split, added :Lisp (and an equivalent :Eval) command with completion, added g:slimv_leader and g:paredit_leader options, added g:slimv_echolines to echo only the first few lines of the form being evaluated, added fuzzy completion and option g:slimv_simple_compl (by Philipp Marek), indent macros with &body argument by two spaces when connected to swank (thanks to Philipp Marek and Andreas Fredriksson), special indentation for flet, labels and macrolet, default for Set-Package is current package (thanks to Philipp Marek), bugfixes: REPL output ordering problems, problem with inserting Space into visual block, blinking when g:slimv_repl_syntax is on, entering incomplete form in REPL command line, close form when inside comment, string, or with mixed ([.
-
-0.8.2: Added Paredit and g:lisp_rainbow support for Scheme files, added SWANK support for MIT Scheme on Linux, added frame call information to SLDB (thanks to Philipp Marek), check for unbalanced form before evaluation, reconnect SWANK server in Connect-Server if already connected (thanks to Philipp Marek), select current form instead of top level form in Macroexpand, bugfixes: Paredit handling of escaped matched characters (e.g. \"), cursor positioning problems when debugger activated, print prompt after Describe.
-
-0.8.1: Added action handling to Inspector, fixed Inspector output, bugfixes: read-string mode was stuck, buffer corruption with two source windows (thanks to Philipp Marek), eliminate multiple CursorHold autocommands (thanks to Philipp Marek), completion with special characters in symbol name (thanks to Philipp Marek), sometimes cursor went to the start of line in insert mode, syntax error in Untrace All (thanks to Philipp Marek), removed ' prefix from symbol selection (except for Inspect), keep cursor position in Describe and Compile-Region.
-
-0.8.0: Major update: added SWANK client (many thanks to Philipp Marek), additional changes: split documentation into three parts, added keymapping hints to GUI menu items, renamed Eval-Last-Expression to Eval-Current-Expression, REPL buffer is not syntax highlighted anymore, switch on filetype plugins, autodetection for Allegro CL, Lisp Cabinet and Leiningen, ask for save before compiling file, map <Tab> for completion, bugfixes: finding start of keyword in completion, deleting escaped " inside string, Up/Down/Enter handling in popup menu.
-
-0.7.7: Find next closing paren when using ,< or ,> in Paredit and not standing on a paren, open REPL buffer upon connecting server, bugfixes: REPL buffer prompt identification was sometimes missing, switch off REPL refresh mode when REPL buffer is not visible (thanks to Philipp Marek), convert Python path on Windows to short 8.3 filename format if it contains space (thanks to Razvan Rotaru).
-
-0.7.6: Cursor position is kept during evaluation, most Slimv commands made silent, bugfixes: find defun start when cursor is on a comment, keep newlines in Compile-Region, infinite loop when selecting form in empty buffer, error when opening REPL buffer with g:slimv_repl_split=0, REPL blinking in insert mode when visualbell is on, added the comma to the list of macro prefix characters (thanks to John Obbele), long/short Windows filename problem for REPL buffer.
-
-0.7.5: Added Cygwin compatibility using the Windows Python (thanks to Jerome Baum), display client error message when eval was not successful, form is passed to client via stdin instead of temp file, bugfixes: automatic reconnection when server closed and reopened, delete and yank also via named registers in paredit.vim, handle double quotes in Compile-Defun and Compile-Region.
-
-0.7.4: Added autodetection for simple 'clojure' command on Linux, removed duplicates from history of commands entered in REPL buffer (those recallable with <Up>), bugfixes: infinite loop during eval when 'in-package' or 'in-ns' was in comment, Lisp prompt identification problems in REPL buffer, input line duplication in SBCL on Linux (assigned "*debug-io*" to stdin), Eval Defun sometimes missed last ")".
-
-0.7.3: Added compatibility with Python 3.x, bugfixes: input lines for REPL were doubled on Linux (thanks to Andrew Hills), however not yet fixed for SBCL, enclose Slimv path in double quotes if contains space, select form when standing on prefix character (e.g. ' or `).
-
-0.7.2: Added autodetection for /usr/local/bin/clojure on Linux, added special characters to Lisp keyword selection (iskeyword), run Vim's original ftplugin/lisp.vim for Clojure filetype, bugfixes: PareditWrap error when g:paredit_shortmaps=1 (thanks to Jon Thacker), buffer selection problems in case of three of more buffers (thanks to Philipp Marek), conflicting keybindings for SlimvGenerateTags, unmap error messages when g:paredit_mode=0.
-
-0.7.1: Added option g:slimv_browser_cmd for opening hyperspec in a custom webbrowser (on behalf of Andreas Salwasser), added paredit handling for d<motion>, c<motion>, p and P commands: keep paren balance when deleting and pasting text, Paredit Toggle function removes and re-adds paredit keybindings, bugfix: D and C deleted till beginning of line if () or [] found, handle escaped \" characters inside string.
-
-0.7.0: Added package/namespace support, new way of refreshing the REPL buffer via autocommands, removed 'RUNNING' mode, cursor stays in the current buffer at evaluation, added option g:slimv_updatetime, removed options related to the old way of refreshing (g:slimv_repl_return and g:slimv_repl_wait), removed debug logging, updated Clojure API to version 1.2, extended keyword definition when selecting symbols, bugfix: defmacro detection problem (again).
-
-0.6.3: Added option to return cursor to the editor window from REPL buffer after evaluating an s-expression, Wrap: if standing on a paren then wrap the whole s-expression, Wrap selection: exit visual mode after command, Bugfixes: inserting double quotes in paredit mode (like "\""), dd in paredit mode when unbalanced form is inside comment, reopen REPL buffer after closing it via ":q", comment and string detection error with noignorecase setting, wrong positioning when moving parenthesis to the right, defmacro detection problem, paredit wrap selection missed last character when 'selection' was not "exclusive".
-
-0.6.2: Added support for Mac OS X via Terminal.app (on behalf of Vlad Hanciuta), added string "clj" as a detector for Clojure (by Vlad Hanciuta), bugfixes: paredit wrap function missed last character when 'selection' was not "exclusive" (thanks to Marcin Fatyga), input was stuck inside SBCL debugger (on behalf of Philipp Marek and Dmitry Petukhov), occasional error messages during REPL buffer update, REPL menu was sometimes missing, occasional command line color problems.
-
-0.6.1: Added Split/Join/Wrap/Splice functions to Paredit Mode, bugfixes: delete commands put erased characters into yank buffer, D does not delete whole line.
-
-0.6.0: Added paredit mode, set wrap for REPL buffer.
-
-0.5.6: Improved REPL buffer response time, added debug log flushing frequency, bugfix: early exit of REPL refresh mode on some machines.
-
-0.5.5: Updated Clojure API to 1.1, expand tilde-prefix to home directory on Linux, autodetect Clojure in the user home directory on Linux.
-
-0.5.4: Added autodetection for clojure-contrib.jar and Clozure CL, applied lisp_rainbow to Clojure's [], renamed Clojure indent plugin to clojure.vim, switched on lisp indentation for Clojure files.
-
-0.5.3: Added Interrupt-Lisp-Process command, added mapping for the REPL menu, added special forms to Clojre API lookup, bugfixes: put cursor after the last character in insert mode when refreshing REPL buffer, fixed some Ctrl-C handling problems.
-
-0.5.2: Adapted Clojure API lookup and autodetection to version 1.0, Complete-Symbol moved to separate Edit submenu, added Close-Form command.
-
-0.5.1: Added symbol name completion based on the Hyperspec database.
-
-0.5.0: Major project reorganization: Slimv is now a Lisp and Clojure filetype plugin, added Common Lisp Hyperspec, Clojure API and JavaDoc lookup, separate menu for REPL buffer, menu items work in every Vim mode, fixed mark 's usage bug.
-
-0.4.1: Added profiler support for SBCL, new commands: Show Profiled/Send Input/Close and Send Input/Previous Input/Next Input, highlight error messages.
-
-0.4.0: Added SLIME's profiling tool with support from Slimv, added command to generate tags file, fixed eval problems of large buffers, fixed Compile And Load filename problems with '\' on Windows, recycle old REPL temporary file at next server startup.
-
-0.3.0: REPL buffer enhancements: added syntax highlighting and automatic indentation, it is possible to enter a multi-line command, Ctrl-C is working; server REPL window performance enhancement on Linux.
-
-0.2.2: Fixed REPL input and output mix-up problems, evaluation performance enhancement, corrected some more macroexpand problems.
-
-0.2.1: Added basic Clojure support, fixed some macroexpand and REPL refresh problems.
-
-0.2.0: Major update: Lisp REPL inside a Vim buffer.
-
-0.1.4: Corrected the delayed display of last line in REPL window on Linux.
- Ctrl+C is propagated to Lisp REPL, so it is possible to interrupt a running program.
-
-0.1.3: Handle DOS and Unix style line endings on Windows, don't write logfile when debug level not set
-
-vim:et:wrap:
View
337 bundle/slimv/doc/paredit.txt
@@ -1,337 +0,0 @@
-*paredit.txt* Slimv Last Change: 08 Aug 2011
-
-Paredit mode for Slimv *paredit* *slimv-paredit*
- Version 0.8.6
-
-The paredit.vim plugin performs structured editing of s-expressions used in
-the Lisp or Clojure programming language.
-
-|paredit-mode| Paredit mode
-|paredit-options| Paredit options
-
-===============================================================================
-PAREDIT MODE *paredit-mode*
-
-Paredit mode is a special editing mode that keeps all matched characters
-(parentheses, square brackets, double quotes) balanced, i.e. all opening
-characters have a matching closing character. Most text entering and erasing
-commands try to maintain the balanced state, so no single matched character is
-added or deleted, they are entered or removed in pairs.
-The function takes care of strings and comments, so no parenthesis and square
-bracket balancing is performed inside a string or comment.
-
-The idea is taken from the paredit mode of Emacs, but not all paredit.el
-editing functions are implemented or behave exactly the same way as they do
-in Emacs.
-
-When you enter a '(' then a matching ')' is automatically inserted.
-If needed, spaces before and/or after the '()' pair are added.
-
-When you press ')' in insert mode then there's no need to insert a closing
-parenthesis mark (it is already there), so the cursor is simply advanced past
-the next closing parenthesis (then the next outer closing parenthesis, etc.).
-The result of this is however that when entering text with paredit mode
-you can use the same keystrokes as without paredit mode and you get the same
-result. Of course you can choose to not enter the closing parenthesis (as
-required without paredit mode), because it is already there.
-
-When you are trying to delete a ')' alone then it is not possible, the cursor
-is simply moved inside the list, where all regular characters can be deleted.
-When the list is finally empty: '()', then the deletion of the opening '('
-makes both parentheses erased at once, so the balanced state is maintained.
-
-All the above holds for [...] and "..." character pairs.
-
-When you are deleting multiple characters at once, e.g. deleting a whole line,
-or deleting till the end of the line, etc, then the deletion logic of a single
-character is iterated. This means that the whole line or the characters till
-the end of the line, etc are not necessarily deleted all. Depending on the
-number of open/close parentheses, square brackets, double quotes some of them
-might be kept in order to maintain the balanced state.
-For example if you press D in Normal mode to delete till the end of line
-between the a and b parameters of the following Clojure function definition:
-
-(defn myfunc [a b c] (+ a b c))
- ^--- press D here
-
-then the closing ] as well as the last closing ) will not be deleted, because
-in the list you have an ( and a [ to be matched, so the result will be:
-
-(defn myfunc [a])
-
-If you are deleting multiple lines, then the above process is performed for
-all lines involved. If a line was not completely cleared, then it is joined
-with the next line and the process continues.
-
-
-Of course not all Vim commands are compatible with the paredit mode (e.g.
-you can yank and paste unbalanced code snippet, or comment out an asymmetrical
-part of the code), and there is also the possibility to edit the source code
-with paredit mode switched off or with another editor to make it unbalanced.
-When paredit mode detects that the underlying code is not balanced, then the
-paredit functionality is suspended until the top level form balance is fixed.
-As soon as all parens are matched, the paredit mode is automatically resumed.
-Paredit needs "syntax on" to identify the syntax elements of the underlying
-code, so if syntax is switched off, then paredit will not be suspended inside
-comments or strings.
-
-
-Slurpage and Barfage known from Emacs is also possible but in a different
-fashion: you don't move the symbols but move the opening or closing parenthesis
-over the symbol or a sub-list. This way you can move any symbol or sub-list
-into or out of the current list. It is not possible to move the parenthesis
-over its pair, so for example if you move the opening parenthesis to the right,
-then it will stop at the matched closing parenthesis.
-
-
-Paredit mode is set by default for .lisp, .cl, .clj, .scm and .rkt files, but
-it is possible to switch it out by putting the following statement in the
-.vimrc file:
-
- let g:paredit_mode = 0
-
-You can enable paredit mode for other file types as well. Here is how to set
-it for Arc files (meant to be added to your .vimrc file):
-
- au BufNewFile,BufRead *.arc call PareditInitBuffer()
-
-It is also possible to use the paredit mode alone, without the other parts of
-Slimv. The easiest way to do it is to delete all Slimv related files from the
-ftplugin directory. If you don't intend to use Slimv's indentation and syntax
-files, then you need to keep only plugin/paredit.vim.
-Another way to prevent Slimv from loading by adding this to your .vimrc file:
-
- let g:slimv_loaded = 1
-
-Slimv core will not be loaded but paredit will be loaded and assigned to
-.lisp, .clj, .scm, etc files.
-
-
-Here follows a list of paredit keybindings:
-
-
-Insert Mode:
-
- ( Inserts '()' and moves the cursor inside. Also adds leading
- or trailing spaces when needed.
- Inserts '(' when inside comment or string.
-
- ) Moves the cursor to the next closing parenthesis mark of
- the current list. When pressed again then moves to the next
- outer closing parenthesis, etc, until the closing of the
- top level form is reached.
- Inserts ')' when inside comment or string.
-
- [ Inserts '[]' and moves the cursor inside. Also adds leading
- or trailing spaces when needed.
- Inserts '[' when inside comment or string.
-
- ] Moves the cursor to the next closing square bracket of the
- current list. When pressed again then moves to the next
- outer closing square bracket, etc, until the closing of the
- top level form is reached.
- Inserts ']' when inside comment or string.
-
- " When outside of string, inserts '""' and moves the cursor
- inside. When inside string then moves to the closing '"'.
- Inserts '"' when inside comment. Also insert '"' when inside
- string and preceded by a '\'.
-
- <BS> When about to delete a (, ), [, ], or " and there are other
- characters inside, then just skip it to the left. When
- about to delete the opening part of the matched character
- with nothing inside, then the whole empty list is removed.
-
- <Del> When about to delete a (, ), [, ], or " and there are other
- characters inside, then just skip it to the right. When
- about to delete the closing part of the matched character
- with nothing inside, then the whole empty list is removed.
-
-
-Normal Mode:
-
- ( Finds opening '(' of the current list. Can be pressed
- repeatedly until the opening of the top level form reached.
-
- ) Finds closing ')' of the current list. Can be pressed
- repeatedly until the closing of the top level form reached.
-
- <Leader>< If standing on a delimiter (parenthesis or square bracket)
- then moves it to the left by slurping or barfing the
- s-expression to the left, depending on the direction of the
- delimiter:
- Pressing '<' when standing on a ')' makes the s-expression
- to the left of the ')' going out of the current list.
- Pressing '<' when standing on a '(' makes the s-expression
- to the left of the '(' coming into the current list.
- For example pressing <Leader>< at position marked with |:
- (aaa bbb|) ---> (aaa) bbb
- aaa |(bbb) ---> (aaa bbb)
-
- <Leader>> If standing on a delimiter (parenthesis or square bracket)
- then moves it to the right by slurping or barfing the
- s-expression to the right, depending on the direction of the
- delimiter:
- Pressing '>' when standing on a '(' makes the s-expression
- to the right of the '(' going out of the current list.
- Pressing '>' when standing on a ')' makes the s-expression
- to the right of the ')' coming into the current list.
- For example pressing <Leader>< at position marked with |:
- (aaa|) bbb ---> (aaa bbb)
- |(aaa bbb) ---> aaa (bbb)
-
- <Leader>J Join two subsequent lists or strings. The first one must end
- before the cursor, the second one must start after the
- cursor position.
- For example pressing <Leader>J at position marked with |:
- (aaa)| (bbb) ---> (aaa bbb)
- "aaa"| "bbb" ---> "aaa bbb"
-
- <Leader>O Split ("Open") current list or string at the cursor position.
- Opposite of Join. Key O is selected because for the original
- Vim mapping J and O are also kind of opposites.
- For example pressing <Leader>O at position marked with |:
- (aaa |bbb) ---> (aaa) (bbb)
- "aaa|bbb" ---> "aaa" "bbb"
-
- <Leader>W Wrap the current symbol in a pair of parentheses. The cursor
- <Leader>w( is then positioned on the opening parenthesis, as wrapping
- is usually done because one wants to call a function with
- the symbol as parameter, so by pressing "a" one can enter
- the function name right after the newly inserted "(".
- For example pressing <Leader>W at position marked with |:
- (aaa b|bb ccc) ---> (aaa (bbb) ccc)
-
- <Leader>w[ Wrap the current symbol in a pair of square brackets,
- similarly to <Leader>W.
- For example pressing <Leader>w[ at position marked with |:
- (aaa b|bb ccc) ---> (aaa [bbb] ccc)
-
- <Leader>w" Wrap the current symbol in a pair of double quotes,
- similarly to <Leader>W.
- For example pressing <Leader>w" at position marked with |:
- (aaa b|bb ccc) ---> (aaa "bbb" ccc)
-
- <Leader>S Splice the current list into the containing list, i.e.
- remove the opening and closing parens. Opposite of wrap.
- For example pressing <Leader>S at position marked with |:
- (aaa (b|bb) ccc) ---> (aaa bbb ccc)
-
- x or <Del> When about to delete a (, ), [, ], or " and there are other
- characters inside, then just skip it to the right. When
- about to delete the closing part of the matched character
- with nothing inside, then the whole empty list is removed.
- When preceded by a <count> value then delete this many
- characters.
-
- X When about to delete a (, ), [, ], or " and there are other
- characters inside, then just skip it to the left. When
- about to delete the opening part of the matched character
- with nothing inside, then the whole empty list is removed.
-
- D Keep deleting characters towards the end of line,
- maintaining the balanced state, i.e. keep the number of
- opening and closing parens the same.
-
- C Same as 'D' but go to insert mode at the end.
-
- s Same as 'x' but go to insert mode at the end.
-
- dd Delete whole line by keeping the balanced state, i.e.
- keep the number of opening and closing parens the same.
- When preceded by a <count> value then delete this many
- lines.
-
- <Leader>S Same as 'dd' but go to insert mode at the end.
-
- d{motion} Delete text till {motion}. Keeps text balanced, so if the
- surrounded text contains unpaired matched characters then
- they are not removed.
-
- c{motion} Delete text till {motion} and start insert mode. Keeps text
- balanced just like d{motion}.
-
- p Put the text after the cursor with all unbalanced matched
- characters removed.
-
- P Put the text before the cursor with all unbalanced matched
- characters removed.
-
-
-Visual Mode:
-
- ( Finds opening '(' of the current list and selects the whole
- list. Can be pressed repeatedly until the top level form
- selected.
-
- ) Finds closing ')' of the current list and selects the whole
- list. Can be pressed repeatedly until the top level form
- selected.
-
- d Delete the current visual selection. Keeps text balanced,
- x so the the selection contains unpaired matched characters
- <Del> then they are not removed.
-
- c Delete the current visual selection and start insert mode.
- Keeps text balanced just like the 'd' command.
-
- <Leader>W Wrap the current visual selection in a pair of parentheses.
- <Leader>w( The visual selection is kept.
-
- <Leader>w[ Wrap the current visual selection in a pair of square
- brackets. The visual selection is kept.
-
- <Leader>w" Wrap the current visual selection in a pair of double
- quotes. The visual selection is kept.
-
-
-Please note that if variable |g:paredit_shortmaps| is nonzero then the
-following normal mode mappings don't get a <Leader> prefix, they are mapped
-to existing (but infrequently used) Vim functions and instead the original Vim
-functions are mapped with the <Leader> prefix:
-
- <, >, J, O, W, S
-
-
-===============================================================================
-PAREDIT OPTIONS *paredit-options*
-
-|g:paredit_leader| Custom <Leader> setting for Paredit.
-|g:paredit_matchlines| Number of lines to look backward and forward
- when checking if the current form is balanced.
-
-|g:paredit_mode| If nonzero, paredit mode is switched on.
-
-|g:paredit_shortmaps| If nonzero, paredit is remapping some one-letter
- Vim commands that are not frequently used.
-
-
- *g:paredit_leader*
-This option allows a custom <Leader> setting for the Paredit keybindings.
-By default it has the same value as |mapleader|. If neither g:paredit_leader
-nor mapleader are defined then the default <Leader> is "," in Paredit.
-Example:
- let g:paredit_leader = '\'
-If this is set in the .vimrc then Wrap will be mapped to \W instead of ,W.
-
-There is a separate |g:slimv_leader| option for the general Slimv keybindings.
-
- *g:paredit_matchlines*
-Number of lines to look backward and forward when checking if the current
-top level form is balanced in paredit mode. Default is 100.
-
- *g:paredit_mode*
-If nonzero then paredit mode is switched on, i.e. Slimv tries to keep the
-balanced state of parens.
-
- *g:paredit_shortmaps*
-If nonzero, paredit is remapping some one-letter normal mode Vim commands that
-are not frequently used. These are <, >, J, O, W, S. The original function of
-these maps then can be reached via <Leader> (which is the "," character
-by default in Paredit).
-Otherwise these paredit functions can be reached via <Leader> maintaining the
-original functions of these keys.
-
-
-===============================================================================
-vim:tw=80:et:wrap:ft=help:norl:
View
1,479 bundle/slimv/doc/slimv.txt
@@ -1,1479 +0,0 @@
-*slimv.txt* Slimv Last Change: 08 Aug 2011
-
-Slimv *slimv*
- Version 0.8.6
-
-The Superior Lisp Interaction Mode for Vim.
-This plugin is aimed to help Lisp development by interfacing between Vim and
-the Lisp REPL, similarly to Emacs/SLIME.
-Slimv works on Windows, Linux, and Mac OS X, however the newly introduced
-Paredit mode is operating system independent. Please visit |paredit.txt| for
-additional information on Paredit mode.
-The current version of Slimv contains a SWANK (TCP server for Emacs) client.
-Please visit |swank.txt| for additional information on the SWANK client.
-
-|slimv-installation| Installation
-|slimv-customization| Customization
-|slimv-swank| SWANK client
-|slimv-usage| Usage
-|slimv-repl| Lisp REPL inside Vim
-|slimv-clojure| Clojure support
-|slimv-scheme| Scheme support
-|slimv-package| Package and Namespace handling
-|slimv-profiling| Profiling
-|slimv-hyperspec| Hyperspec Lookup and Completion
-|slimv-paredit| Paredit mode
-|slimv-external| External utilities
-|slimv-faq| Frequently Asked Questions
-|slimv-changelog| Change Log
-|slimv-issues| Known Issues
-|slimv-todo| Todo
-|slimv-credits| Credits
-
-For Vim version 7.0 and above.
-This plugin is only available if 'compatible' is not set.
-
-{Vi does not have any of this}
-
-===============================================================================
-INSTALLATION *slimv-installation*
-
-Prerequisites:
-
- Note: the system requirements are different for the SWANK client, please find
- details in |swank-installation|.
-
- Required components:
- - Lisp (any console Common Lisp implementation should be OK) or Clojure or
- MIT Scheme (Linux only) installed.
- - Python 2.4 or later installed. When using the SWANK client the same Python
- version is needed that Vim is compiled against.
- When not using the SWANK client then due to a Popen bug in the Cygwin
- Python implementation Cygwin users should install Windows Python,
- which is autodetected by the script.
-
- Optional components:
- - The interrupt functionality needs the pywin32 extension on Windows, but
- only when not using the SWANK server.
- - "Exuberant ctags" for tags file generation (if not bundled with Vim
- already). See |slimv-ctags|.
-
-To install the script:
-
- - Install all required components described above.
- - Download slimv.zip.
- - Extract the zip archive into your vimfiles or runtime directory.
- See Vim help file |usr_05.txt| for details on adding a plugin.
- The archive contains the following files:
-
- doc/paredit.txt
- doc/slimv.txt
- doc/swank.txt
- ftdetect/clojure.vim
- ftplugin/slimv.py
- ftplugin/slimv.vim
- ftplugin/slimv-clhs.vim
- ftplugin/slimv-cljapi.vim
- ftplugin/slimv-javadoc.vim
- ftplugin/swank.py
- ftplugin/clojure/slimv-clojure.vim
- ftplugin/lisp/slimv-lisp.vim
- ftplugin/scheme/slimv-scheme.vim
- indent/clojure.vim
- indent/lisp.vim
- plugin/paredit.vim
- slime/*
- swank-clojure/*
- syntax/clojure/slimv-syntax-clojure.vim
- syntax/scheme/slimv-syntax-scheme.vim
-
- You might already have an ftdetect/clojure.vim file if you already use
- another Clojure filetype plugin. In this case just keep the original file.
-
- - Start Vim or goto an existing instance of Vim.
- - Execute the following command:
->
- :helptags <your runtime directory>/doc
-
- (e.g :helptags $VIMRUNTIME/doc)
-<
- This will generate all the help tags for any file located in the doc
- directory.
- - Enter path definitions into your vimrc (if the default values are not
- valid for your Vim/Python/Lisp installation).
- See |slimv-customization| below on how to do this.
- - On Linux some login shells (like fish) might be incompatible with the Vim
- temporary file generation, which results in getting random E484 errors.
- This is because Vim expects a POSIX-compliant shell and the problem might
- occur in other Vim scripts as well.
- One solution is to add a similar block to the top of .vimrc:
-
- if $SHELL =~ 'bin/fish'
- set shell=/bin/sh
- endif
-
-
-Uninstallation:
-
- - Exit all Vim instances and exit from the REPL server terminal window.
- - Delete the files that were copied to the vimfiles directory during
- installation (see list of files above).
-
-
-===============================================================================
-CUSTOMIZATION *slimv-customization*
-
-|slimv-options| Options
-|slimv-templates| Templates
-|slimv-keyboard| Keyboard mappings
-
--------------------------------------------------------------------------------
- *slimv_options*
-
-The list below contains an alphabetical collection of Slimv options.
-Below that list follows the detailed explanation on each option.
-For the Paredit options please visit |paredit-options|.
-For the Swank options plese visit |swank-configuration|.
-
-|g:slimv_browser_cmd| If nonempty, this command is used to open the
- Common Lisp Hyperspec.
-
-|g:slimv_clhs_root| Base URL for the Common Lisp Hyperspec.
-
-|g:slimv_clhs_user_db| User defined extension for Slimv's built-in
- Common Lisp Hyperspec symbol database.
-
-|g:slimv_clhs_user_root| Base URL for the user defined CLHS extension.
-
-|g:slimv_cljapi_root| Base URL for the Clojure API.
-
-|g:slimv_cljapi_user_db| User defined extension for Slimv's built-in
- Clojure API symbol database.
-
-|g:slimv_cljapi_user_root| Base URL for the user defined Clojure API
- extension.
-
-|g:slimv_client| The whole OS command to start the Slimv client.
- Used for advanced customization, like changing
- the terminal emulator to use for the Lisp REPL.
-
-|g:slimv_ctags| OS command to generate tags file.
-
-|g:slimv_echolines| Echo only this number of lines from the form
- being evaluated.
-
-|g:slimv_impl| The Lisp implementation. Defaults to 'clisp'.
-
-|g:slimv_javadoc_root| Base URL for the JavaDoc.
-
-|g:slimv_keybindings| Predefined Slimv keybindings. Possible values:
- 1 = set #1, 2 = set #2, other = no keybindings
-
-|g:slimv_leader| Custom <Leader> setting for Slimv.
-
-|g:slimv_lisp| Path for the Lisp interpreter.
-
-|g:slimv_menu| If nonzero, Slimv menu is added to the Vim menu.
-
-|g:slimv_package| If nonzero, Slimv package/namespace handling is
- switched on.
-
-|g:slimv_port| TCP/IP port number to use in the Slimv client-
- server communication.
-
-|g:slimv_python| Path for the Python interpreter.
-
-|g:slimv_repl_dir| Directory path for the Lisp REPL buffer file.
-
-|g:slimv_repl_file| Filename without path for the REPL buffer file.
-
-|g:slimv_repl_open| If nonzero, Slimv opens the Lisp REPL buffer
- inside Vim when the server is started.
-
-|g:slimv_repl_split| Open the Lisp REPL buffer in a split window
- or in a separate buffer.
-
-|g:slimv_repl_syntax| Enable syntax coloring for the REPL buffer.
-
-|g:slimv_repl_wrap| Set wrap mode for the REPL buffer.
-
-|g:slimv_swank| Indicates the usage of the SWANK client.
- Please find additional SWANK related options
- in |swank.txt|.
-
-|g:slimv_updatetime| Alternative value for 'updatetime' during REPL
- refresh.
-
-
-Note: Most options require to restart the Vim session when modified.
-
-Slimv tries to autodetect the Python and Lisp installation directories,
-however the algorithm is not very sophisticated.
-If the installation directories are put in the path, then the autodetection
-should find them (this is usually the case on Linux). Otherwise (on Windows)
-some frequently used directories are searched under C:\ and C:\Program Files.
-For a minimum, Slimv needs to know the path of the existing Python and Lisp
-installations, so if autodetection does not work for you, then set the
-following global variables in your vimrc.
-
-Note: On Windows use the / (slash) character instead of \ (backslash) as the
- directory separator to avoid any incidental character escaping problems
- while the paths are beeing passed between the Slimv processes.
- On Linux this is not an issue.
-
- *g:slimv_python*
-This is the installation path of the Python interpreter.
-Normally the Python path is autodetected, but sometimes autodetection fails
-and you need to set up the path in your .vimrc file explicitly.
-If the Python path contains space characters then either the spaces should be
-escaped (Linux) or the short 8.3 filename format should be used (Windows).
-Enclosing the full Python path in double quotes may also work, but this depends
-on the command string handling of the console command used (xterm/cmd.exe/etc).
-Example:
- let g:slimv_python = 'C:/MyPythonDir/python.exe'
-
- *g:slimv_lisp*
-This is the installation path of the Lisp interpreter.
-Example:
- let g:slimv_lisp = 'C:/MyLispDir/mylisp.exe'
-
- *g:slimv_impl*
-This is the Lisp implementation used. Slimv tries to autodetect it at script
-startup. If the autodetection fails, set this to the actual Lisp
-implementation.
-Example:
- let g:slimv_impl = 'sbcl'
-
- *g:slimv_port*
-The default port used by Slimv is 5151. If this port is used by another
-program then set this variable to a free port number.
-It is also possible to run multiple REPLs from multiple Vim processes, just
-set a different port number for each Vim instance.
-Example:
- let g:slimv_port = 10101
-
-There is a separate port definition in Slimv which sets the port number to
-use for the SWANK server, see |g:swank_port| for details.
-
- *g:slimv_client*
-Note: Used only when SWANK client is not enabled.
-
-You may want to use a shell frontend other then the default one (cmd.exe
-on Windows, xterm on Linux) or put additional command line parameters
-for starting the server.
-In this case you can omit the variables above and use g:slimv_client instead.
-This is the complete command that is used to start the client. If not set
-by the user, this is automatically built from the variables above.
-
-The command format is the following (items in [] are optional):
- <python> <slimv> [-p <port>] -r "<server_cmd>"
-Where:
- <python> is the command to start the Python interpreter
- <slimv> is the path of slimv.py
- <port> is the port number to use (if other than default)
- <server_cmd> is the command to start the server
-
-The format of <server_cmd> is the following (please remember to enclose the
-whole command in double quotes, as this will be passed as one parameter
-to the client):
- [<terminal>] <python> <slimv> -l <lisp> -s
-Where:
- <terminal> is the command to open a new terminal window
- <python> is the command to start the Python interpreter
- <slimv> is the path of slimv.py
- <lisp> is the command to start the Lisp REPL
-You can also pass the following shortcuts in <server_cmd>:
- @p equals <python>
- @s equals <slimv>
- @@ use it if you need to insert an @ character
- \" use it to insert a " character
-So <server_cmd> can be rewritten in this shorter form:
- [<terminal>] @p @s -l <lisp> -s
-
-The reason behind the duplication of the <python> and <slimv> part is that
-you may want to start the server/REPL in a shell frontend that needs
-special command line options. For example on Windows I highly recommend
-to use Console (http://sourceforge.net/projects/console/) which is greatly
-configurable and you also get usable select/copy/paste functions.
-
-Note: Remember to escape with a \ all " characters that are supposed to be
- inside a command line argument, otherwise the argument will be split
- by the shell.
-
-Example to start the Slimv server via Console on Windows:
-
- let g:slimv_client =
- \ 'python slimv.py -p 5152 -r "console -r \"/k @p @s -l clisp -s\""'
-
-So the server will be started as if we typed at the command line:
-
- console -r "/k python slimv.py -l clisp -s"
-
-A similar situation is if you want to use a terminal program other than
-xterm on Linux (e.g. Konsole). A typical g:slimv_client setup can be on
-Linux for xterm:
-
- let g:slimv_client =
- \ 'python ~/.vim/plugin/slimv.py -r "xterm -T Slimv -e @p @s -l clisp -s"'
-
-And this can be for Konsole:
-
- let g:slimv_client =
- \ 'python ~/.vim/plugin/slimv.py -r "konsole -T Slimv -e @p @s -l clisp -s"'
-
- *g:slimv_ctags*
-It is possible to generate tags file from within Vim. By default Slimv assumes
-that ctags.exe is stored somewhere along with the standard Vim path designated
-by $vim or $vimruntime. The command for generating tags file is then
-automatically built at script startup.
-If ctags.exe is stored somewhere else, or the default ctags options are
-unsatisfactory, then override this option with the desired command.
-The default ctags command is:
- "ctags.exe -a --language-force=lisp *.lisp *.clj"
-
- *g:slimv_keybindings*
-Defines the keybinding set used by Slimv.
-Value 0 means no keybinding at all.
-Value 1 defines the short keybinding with one-key bindings (after <Leader>).
- Example: Eval-Defun is mapped to ,d
-Value 2 defines the easy keybinding with two-key bindings (after <Leader>).
- Example: Eval-Defun is mapped to ,ed
-Other values mean no predefined keybinding is wanted.
-<Leader> is set to "," by default in Slimv.
-
- *g:slimv_leader*
-This option allows a custom <Leader> setting for the Slimv keybindings.
-By default it has the same value as |mapleader|. If neither g:slimv_leader nor
-mapleader are defined then the default <Leader> is "," in Slimv.
-Example:
- let g:slimv_leader = '\'
-If this is set in the .vimrc then Eval-Defun will be mapped to \d instead of ,d.
-
-There is a separate |g:paredit_leader| option for the Paredit keybindings.
-
- *g:slimv_menu*
-If nonzero then the Slimv menu is added to the end of the global menu.
-Also the Slimv menu can be shown by pressing <Leader>, (defaults to ,,).
-
- *g:slimv_browser_cmd*
-Specifies the command to start the browser in order to display the Common Lisp
-Hyperspec or the Clojure API. If the command contains spaces then enclose the
-whole string in double quotes or escape the spaces with a backslash.
-This option is empty by default, which means that the command associated with
-the .html extension (on Windows) or returned by the Python webbrowser package
-(on Linux) is used to start the browser.
-
- *g:slimv_repl_dir*
-Directory path for the Lisp REPL buffer file. By default this is a directory
-for temporary files, something like /tmp/ on Linux or
-"C:\Documents and Settings\Username\Local Settings\Temp\" on Windows.
-The directory name must end with the pathname separator (/ or \).
-See also |g:slimv_repl_file|.
-
- *g:slimv_repl_file*
-The Lisp REPL output is written to a temporary file by the Slimv server.
-|g:slimv_repl_file| defines the filename part of the REPL output file without
-the directory path. The complete REPL filename is built from
-|g:slimv_repl_dir| and |g:slimv_repl_file|.
-
- *g:slimv_repl_open*
-Slimv opens the Lisp REPL buffer inside Vim by default when the Slimv server
-is started, so there exist actually two REPL-s with the same contents:
-one inside a Vim buffer and another one as a separate terminal window.
-The reason behind this is that the simulation is not perfect, which is caused
-by the lack of asynchronous update possibilities in Vim. Sometimes the REPL
-buffer is not perfectly updated, this is the case for example when a Lisp
-program is running too long and it has infrequent outputs only.
-Slimv refreshes the REPL buffer at every keystroke or when the user doesn't
-press a key for the time specified with 'updatetime'. It is also possible
-to manually refresh the REPL buffer. The default value for 'updatetime' is
-4 secs (=4000 ms), in cases when more precise refreshing is needed you can
-lower the 'updatetime' option, e.g. to one second (=1000 ms):
- set updatetime=1000
-However, it is not recommended to set this to a much lower value.
-Optionally one may check the output of the separate REPL window.
-The |g:slimv_repl_open| = 0 option can be used to disable the built-in REPL
-buffer, so that only the separate REPL window is opened.
-
- *g:slimv_repl_split*
-Open the Lisp REPL buffer in a split window or in a separate buffer in Vim.
-Used only when |g:slimv_repl_open| is nonzero.
-The default is to use split window. If you prefer having REPL being in a hidden
-buffer then set this option to zero. This way the REPL buffer will be opened
-at the first evaluation, but any subsequent evaluation will be performed
-silently, with the REPL buffer kept hidden.
-
-It is also possible to define the desired split direction. The following
-values may be used for |g:slimv_repl_open|:
-
- 0: no split
- 1: horizontal split above (default)
- 2: horizontal split below
- 3: vertical split left
- 4: vertical split right
-
- *g:slimv_updatetime*
-The REPL buffer is refreshed at every keystroke or when the user doesn't press
-a key for the time specified with 'updatetime'. Slimv alters the value for
-'updatetime' to a lower value when the REPL buffer is changed, so that the
-update frequency gets higher while there is new REPL output. The original
-value for 'updatetime' is restored when there is no REPL output.
-The g:slimv_updatetime option defines the alternative (lower) value for
-'updatetime' during REPL refresh. If you don't want that Slimv changes
-'updatetime', then set g:slimv_updatetime to zero.
-The default value is 200 (=0.2 sec).
-
- *g:slimv_package*
-If nonzero then Slimv package/namespace handling is switched on. Please find
-details in the |slimv-package| section.
-
- *g:slimv_repl_syntax*
-Enables syntax highlighting for the REPL buffer. Switched off by default for
-two reasons:
- 1. The REPL buffer also contains the REPL output, which is generally not
- related to s-expressions, therefore may confuse syntax coloring.
- 2. REPL output may contain very long lines, which significantly slows down
- syntax coloring in Vim. If you really want to enable syntax highlighting
- for the REPL buffer, then it is recommended to adjust the |synmaxcol|
- parameter to a relatively low value in order to increase syntax coloring
- speed.
-
- *g:slimv_repl_wrap*
-Set wrap mode for the REPL buffer, which means the lines longer than the
-window width will not be hidden to the right. Instead they will be continued
-in the next display line.
-This is the default behaviour as it is how regular REPL windows work. This
-mode also enables keybindings for cursor movements, so that an <Up> keypress
-will move the cursor one line on the display and not one line in the document.
-
- *g:slimv_echolines*
-If a long form is evaluated then echo only this number of lines from the
-beginning of the form. This option prevents filling the REPL buffer with
-mostly unnecessary information. Closing parens are added to the end even if
-the end of the form is not echoed, so paren balance is kept.
-If this option is set to zero then no line is echoed at all, if set to -1
-then all lines are always echoed.
-
- *g:slimv_clhs_root*
- *g:slimv_cljapi_root*
- *g:slimv_javadoc_root*
-Base URL for the Common Lisp Hyperspec, Clojure API, and JavaDoc.
-If the Hyperspec/API is downloaded to the hard disk, then set these variables
-to the base path of the local copy, something like (where file:// specifies
-the file protocol):
-"file:///c:/doc/HyperSpec/" (Windows).
-or
-"file:///usr/local/doc/HyperSpec/" (Linux).
-It is possible to extend the Hyperspec symbol database with user defined
-symbols, see |g:slimv_clhs_user_db| and |g:slimv_cljapi_user_db|.
-
- *g:slimv_clhs_user_db*
- *g:slimv_cljapi_user_db*
- *g:slimv_clhs_user_root*
- *g:slimv_cljapi_user_root*
-If you want to extend Slimv's built-in Hyperspec/API symbol database, define
-the list of additional symbols in these variables. The format of this list is
-the following: [["symbol1", "url1"], ["symbol2", "url2"], ...].
-If the URL contains a ":" character then it is considered to be a fully
-qualified URL, otherwise it is a relative address to the Hyperspec root
-defined in |g:slimv_clhs_root| or |g:slimv_cljapi_root|.
-It is also possible to define a separate base URL for the user extensions via
-|g:slimv_clhs_user_root| or |g:slimv_cljapi_user_root|.
-
-Example:
- let g:slimv_clhs_user_root = "http://myhyperspec.com/"
- let g:slimv_clhs_user_db = [
- \["my-cool-function", "mycoolfunc.htm"],
- \["my-super-function", "mysuperfunc.htm"],
- \["my-awesome-function", "myawesomefunc.htm"]]
-
-Remember to insert a backslash at the beginning of each additional line of a
-multi-line Vim command.
-
-
--------------------------------------------------------------------------------
- *slimv_templates*
-
-Many Slimv commands are performed by creating a special Lisp form from the
-selected symbol (or list) and send it to the REPL for execution.
-Slimv defines various templates to build these special Lisp forms.
-You can override them to suit your needs. Use %1 for substituting the selected
-symbol's name or the selected list.
-Here follows a list of the templates defined in Slimv.
-
- *g:slimv_template_pprint*
-Lisp form built when issuing the 'Pprint' command.
-Example:
- let g:slimv_template_pprint = '(dolist (o %1)(pprint o))'
-
- *g:slimv_template_undefine*
-Note: Used only when SWANK client is not enabled.
-
-Lisp form built when issuing the 'Undefine' command.
-Example:
- let g:slimv_template_undefine = '(fmakunbound (read-from-string "%1"))'
-
- *g:slimv_template_describe*
-Note: Used only when SWANK client is not enabled.
-
-Lisp form built when issuing the 'Describe' command.
-Example:
- let g:slimv_template_describe = '(describe (read-from-string "%1"))'
-
- *g:slimv_template_trace*
-Note: Used only when SWANK client is not enabled.
-
-Lisp form built when issuing the 'Trace' command.
-Example:
- let g:slimv_template_trace = "(trace %1)"
-
- *g:slimv_template_untrace*
-Note: Used only when SWANK client is not enabled.
-
-Lisp form built when issuing the 'Untrace' command.
-Example:
- let g:slimv_template_untrace = "(untrace %1)"
-
- *g:slimv_template_profile*
-Lisp form built when issuing the 'Profile' command.
-Example:
- let g:slimv_template_profile = "(mon:monitor %1)"
-
- *g:slimv_template_unprofile*
-Lisp form built when issuing the 'Unprofile' command.
-Example:
- let g:slimv_template_unprofile = "(mon:unmonitor %1)"
-
- *g:slimv_template_unprofile_all*
-Lisp form built when issuing the 'Unprofile All' command.
-Example:
- let g:slimv_template_unprofile_all = "(mon:unmonitor)"
-
- *g:slimv_template_show_profiled*
-Lisp form built when issuing the 'Show Profiled' command.
-Example:
- let g:slimv_template_show_profiled = "(pprint mon:*monitored-functions*)"
-
- *g:slimv_template_profile_report*
-Lisp form built when issuing the 'Profile Report' command.
-Example:
- let g:slimv_template_profile_report = "(mon:report-monitoring)"
-
- *g:slimv_template_profile_reset*
-Lisp form built when issuing the 'Profile Reset' command.
-Example:
- let g:slimv_template_profile_reset = "(mon:reset-all-monitoring)"
-
- *g:slimv_template_disassemble*
-Lisp form built when issuing the 'disassemble' command.
-Example:
- let g:slimv_template_disassemble = "(disassemble #'%1)"
-
- *g:slimv_template_inspect*
-Note: Used only when SWANK client is not enabled.
-
-Lisp form built when issuing the 'inspect' command.
-Example:
- let g:slimv_template_inspect = "(inspect %1)"
-
- *g:slimv_template_apropos*
-Lisp form built when issuing the 'apropos' command.
-Example:
- let g:slimv_template_apropos = '(apropos "%1")'
-
- *g:slimv_template_macroexpand*
-Note: Used only when SWANK client is not enabled.
-
-Lisp form built when issuing the 'macroexpand-1' command, after "defmacro"
-string is replaced with "macroexpand-1".
-Example:
- let g:slimv_template_macroexpand = '(pprint %1)'
-
- *g:slimv_template_macroexpand_all*
-Note: Used only when SWANK client is not enabled.
-
-Lisp form built when issuing the 'macroexpand-all' command, after "defmacro"
-string is replaced with "macroexpand".
-Example:
- let g:slimv_template_macroexpand_all = '(pprint %1)'
-
- *g:slimv_template_compile_file*
-Lisp form built when issuing the 'compile-file' command.
-Example:
- let g:slimv_template_compile_file = '(compile-file "%1")'
-
-
--------------------------------------------------------------------------------
- *slimv_keyboard*
-
-The default keybindings (|g:slimv_keybindings|=1) and another easy to remember
-built-in keybinding set (|g:slimv_keybindings|=2) for Slimv are the following.
-Please note that the leading ',' key below refers to <Leader>, which is set
-by Slimv to ',' by default (see |g:slimv_leader|).
-In the graphical menu the currently active keyboard shortcuts are displayed
-beside the menu item names, so one can refer to the GUI menu as a quick
-reference for the keymappings.
-Vim defines timeout values for mapped key sequences. If you find that Vim does
-not allow you enough time between pressing ',' and the last key(s) of the
-sequence, then you may want to fine tune these Vim options:
-|timeout|, |ttimeout|, |timeoutlen|, |ttimeoutlen|.
-
- Set#1 Set#2 Command
- ---------------------------------------------------
- ,, ,, Slimv Menu
-
- Edit commands (Insert mode):
- <C-X>0 Close Form
- <Tab> Complete Symbol
- <Space> Function Arglist (only when using SWANK client)
-
- Edit commands (Normal mode):
- ,) ,tc Close Form
- ,( ,(t Paredit Toggle
-
- Evaluation commands:
- ,d ,ed Eval Defun (current top level form)
- ,e ,ee Eval Current Expression (current subform)
- ,r ,er Eval Region (visual selection)
- ,b ,eb Eval Buffer
- ,v ,ei Interactive Eval (evaluates in frame when in SLDB)
- ,u ,eu Undefine Function
-
- Debug commands:
- ,1 ,m1 Macroexpand-1
- ,m ,ma Macroexpand All
- ,t ,dt Toggle Trace
- ,T ,du Untrace All
- ,l ,dd Disassemble
- ,i ,di Inspect (inspects in frame when in SLDB)
- ,a ,da Abort (only when using SWANK client)
- ,q ,dq Quit to Toplevel (only when using SWANK client)
- ,n ,dc Continue (only when using SWANK client)
- ,H ,dl List Threads
- ,K ,dk Kill Thread
- ,G ,dg Debug Thread
-
- Compile commands:
- ,D ,cd Compile Defun
- ,L ,cl Compile and Load File
- ,F ,cf Compile File
- ,R ,cr Compile Region
-
- Cross Reference commands (only when using SWANK client):
- ,xc ,xc Who Calls
- ,xr ,xr Who References
- ,xs ,xs Who Sets
- ,xb ,xb Who Binds
- ,xm ,xm Who Macroexpands
- ,xp ,xp Who Specializes
- ,xl ,xl List Callers
- ,xe ,xe List Callees
-
- Profile commands:
- ,p ,pp Toggle Profile
- ,B ,pb Profile by Substring
- ,U ,pa Unprofile All
- ,? ,ps Show Profiled
- ,o ,pr Profile Report
- ,x ,px Profile Reset
-
- Documentation commands:
- ,s ,ds Describe Symbol
- ,A ,da Apropos
- ,h ,dh Hyperspec
- ,] ,dt Generate Tags
-
- Repl commands:
- ,c ,rc Connect to Server
- ,y ,ri Interrupt Lisp Process
-
-
- Set#1 Set#2 Command
- ---------------------------------------------------
- ,\ ,\ REPL Menu (separate menu, valid only for the REPL buffer)
-
- REPL menu commands:
- ,. ,rs Send Input
- ,/ ,ro Close and Send Input
- ,g ,rp Set Package (only when using SWANK client)
- <C-C> <C-C> Interrupt Lisp Process
- ,<Up> ,rp Previous Input
- ,<Down> ,rn Next Input
- ,z ,rr Refresh REPL Buffer
-
-
-Also see |slimv-repl| for additional keybindings valid only in the REPL buffer.
-Some menu items or Slimv commands may differ in case Slimv uses the SWANK
-client, please find details in |swank.txt|.
-
-
-===============================================================================
-USAGE *slimv-usage*
-
-After proper installation start Vim and load a *.lisp source file into a
-buffer. When the first Slimv command is entered (either from the menu or
-via keyboard shortcut or entering a :call Slimv...() at the Vim command line)
-then Slimv checks if the server/REPL runs and starts it if nedeed.
-When the server is running, the Slimv commands send the appropriate Lisp
-forms to the server/REPL for processing. That's it.
-
-All you need to know then is the list of possible Slimv commands, how to
-enter them and under what conditions.
-
-It is possible to interrupt a running Lisp program by pressing Ctrl-C,
-at least in some Lisp implementations, like CLISP (does not work for example
-with SBCL).
-In Clojure Ctrl-C exits the REPL by default, but it is possible to change this
-behaviour via the add-break-thread! function:
- user=> (use 'clojure.contrib.repl-utils)
- nil
- user=> (add-break-thread!)
-Then pressing Ctrl-C results in a SIGINT exception in the current thread.
-This may however make bad things to your JVM, so use it with caution.
-
-To end the Lisp session press EOF (Ctrl-D on Linux, Ctrl-Z on Windows)
-in the Lisp REPL window. After exiting the REPL it is possible to open
-a new one from Vim the same way as before.
-
-
-===============================================================================
-LISP REPL *slimv-repl*
-
-The Lisp REPL is displayed as a separate terminal window and also inside a
-Vim buffer. The Lisp REPL buffer is opened when the Slimv server is started.
-The REPL buffer is a more or less regular Vim buffer, all Vim keybindings and
-commands can be used here as well.
-
-There are however some subtle differences. The main idea is that the last line
-in the REPL buffer is a "command line", just like in any REPL. The command
-line usually begins with a prompt, something like "[1] > ". The user types the
-command after the prompt in Insert mode. When Enter (<CR>) is pressed, the
-contents of the command line (which can actually be multiple lines, when
-pasted) is sent to the Lisp REPL for evaluation. It is not allowed to
-backspace before the end of the command line prompt.
-Please remember that this evaluation style is working only in Insert mode,
-in Normal mode the function of <CR> is left unchanged.
-Other areas of the REPL buffer can be used to eval Lisp forms, just like
-from the .lisp source code. So it is possible to move the cursor inside a form
-that was previously eval-ed, make some changes, then eval it again.
-Please note, that after evaluation the REPL buffer is refreshed, so the
-changes made to the form are restored at that location, but the changed form
-will be evaluated at the end of the REPL buffer.
-
-Another difference is the command line history, which can be activated by
-pressing <Up> or <Down> in the command line (also only in Insert mode).
-Outside of the command line the <Up> and <Down> keys move the cursor,
-as usual.
-
-The keys with modified meanings in the Lisp REPL buffer are listed below:
-
-Insert Mode:
-
- <CR> Sends the command typed in the last line to the Lisp REPL
- for evaluation.
-
- <C-CR> Adds missing closing parentheses at the end of the command,
- then sends the command to the Lisp REPL for evaluation.
-
- <BS> In the last line it deletes characters to the left only
- until the end of the Lisp prompt reached.
-
- <Up> Brings up the previous command typed and sent to the Lisp
- REPL when in the command line.
-
- <Down> Brings up the next command typed and sent to the Lisp REPL
- when in the command line.
-
-
-===============================================================================
-CLOJURE SUPPORT *slimv-clojure*
-
-Vim has a built-in support for Lisp, however it has no Clojure support by
-default. As Clojure is a Lisp dialect, Slimv simply reuses Vim's Lisp syntax
-and indent plugins for Clojure. It this does not suit your needs, then it is
-possible to download and install a separate Clojure plugin parallel to Slimv.
-
-In order to launch the Clojure REPL the variable |g:slimv_lisp| must be
-properly set up.
-The simplest definition is something like this, which assumes that the
-directory for clojure.jar is in the PATH. Please note that the whole expression
-needs to be enclosed in double quotes, as it will be passed to the server in
-one single command line argument:
-
- let g:slimv_lisp = '"java -cp clojure.jar;clojure-contrib.jar clojure.main"'
-
-Here follows an example, which starts c:\Clojure\clojure.jar on Windows.
-Remember to escape the backslashes:
-
- let g:slimv_lisp =
- \ '"java -cp c:\\Clojure\\clojure.jar;c:\\Clojure\\clojure-contrib.jar clojure.main"'
-
-
-===============================================================================
-SCHEME SUPPORT *slimv-scheme*
-
-Slimv has a limited support for Scheme: currently only MIT Scheme is supported
-via the SWANK client, using a modified version of swank-mit-scheme.scm in the
-slime/contrib directory.
-The Scheme SWANK server also requires the 'netcat' program to create sockets.
-Please read information about the implementation details in the file header of
-swank-mit-scheme.scm.
-There is no Hyperspec information for Scheme at the moment.
-
-
-===============================================================================
-PACKAGE AND NAMESPACE HANDLING *slimv-package*
-
-Slimv has a basic support for handling Lisp packages and Clojure namespaces.
-This means that at every form evaluation Slimv first searches the source file
-for any preceding '(in-package ...)' form for Lisp and '(in-ns ...)' form for
-Clojure. If found then each time the package/namespace definition is evaluated
-first. This way it is possible to randomly re-evaluate forms in a source (or
-multiple sources) that use multiple packages/namespaces, each time the correct
-package/namespace will be used.
-The package/namespace handling can be switched off via the |g:slimv_package|
-option.
-
-
-===============================================================================
-PROFILING *slimv-profiling*
-
-The SWANK client has the same profiler support as SLIME.
-
-If not using the SWANK client, then Slimv is still capable of utilizing SBCL's
-built-in profiler, and also the same monitoring/profiling package
-(metering.lisp) that is used by SLIME.
-
-SBCL's profiler is ready to use by just starting the Lisp REPL.
-In order to use SLIME's profiler with CLISP it first must be compiled and
-loaded into a running REPL. Perform this with the 'Load-Profiler' command.
-If the compilation was successful then Slimv is ready to profile.
-
-Use the 'Profile' command to select functions for profiling, 'Unprofile' to
-deselect specific functions or 'Unprofile All' to deselect all functions.
-Obtain a list of profiled functions with 'Show Profiled'.
-use 'Profile-Report' to display profiling results.
-Reset profiling counters with 'Profile-Reset'.
-
-When the REPL is restarted, the profiler needs to be reloaded (only in case
-of CLISP): select the 'Load-Profiler' command again (this re-compiles
-metering.lisp).
-
-It is possible to override the default profile commands via the following
-templates (see |slimv_templates|):
-
- |g:slimv_template_profile|
- |g:slimv_template_unprofile|
- |g:slimv_template_unprofile_all|
- |g:slimv_template_show_profiled|
- |g:slimv_template_profile_report|
- |g:slimv_template_profile_reset|
-
-
-===============================================================================
-HYPERSPEC AND COMPLETION *slimv-hyperspec*
-
-Slimv contains Common Lisp Hyperspec, Clojure API and JavaDoc symbol databases.
-When you are looking for the definition of a symbol, just place the cursor on
-the symbol and select the 'Hyperspec' function. If the symbol is found in the
-symbol database then the corresponding web page is displayed in the default
-browser. It is also possible to select this function having just the beginning
-of the symbol name, then the first match is presented to the user, and he/she
-is asked to confirm or edit the symbol name before the hyperspec lookup.
-
-It is possible to use a local copy of the Hyperspec, for this you need to
-define its base URL. See |g:slimv_clhs_root|, |g:slimv_cljapi_root| and
-|g:slimv_javadoc_root| for details.
-
-It is also possible to add user defined symbols to the Hyperspec database,
-see |g:slimv_clhs_user_db| and |g:slimv_cljapi_user_db|.
-
-
-The SWANK client requests simple or fuzzy completion from the SWANK server,
-see |swank-completions| for details.
-
-Without the SWANK client Slimv uses the Hyperspec symbol database for symbol
-name completion, via Vim's omni-completion feature (if it is enabled and
-'omnifunc' is not defined already to something else).
-Start to enter the symbol in Insert mode, then at some point press the
-<C-X><C-O> (omni-complete) key combination or select the 'Complete Symbol'
-function. The first match in the symbol database is inserted at the cursor
-position and a list of matching symbols is displayed in a submenu.
-Use <C-N> to select the next match, <C-P> to select the previous match.
-
-See Vim help file |insert.txt| for details on the usage of the various
-completion functions built in Vim.
-
-
-===============================================================================
-EXTERNAL UTILITIES *slimv-external*
-
-This section is about utilities, settings, etc., not related strongly to Slimv,
-but may be used to aim Lisp development. These are mostly built-in Vim features
-or options, and sometimes external Vim plugins.
-Slimv does not want to copy these functionalities, if they exist and work well.
-
-
-1. Syntax highlighting
-
-The syntax highlighting is done via the default lisp.vim syntax plugin.
-For Clojure files one has two options:
-a. use the Lisp filetype also for Clojure files (that approach is used by Slimv
- for the REPL buffer if no other filetype is set)
-b. install a Clojure Vim syntax plugin, like VimClojure.
-
-
-2. Indentation
-
-The indentation is also done via the default lisp.vim indent plugin, or an
-optionally installed Clojure indent plugin, just like for the syntax
-highlighting.
-When using the SWANK client and it is connected to the server, then indentation
-information is fetched from the SWANK server. This allows special indentation
-methods, e.g. when the given macro has an &body argument then it is indented
-by 2 spaces (instead of indenting the second argument below the first one).
-
-There are some built-in Vim reindentation commands that may come very handy
-when editing Lisp files. One can define a custom key mapping for any of them,
-such mappings are not defined by Slimv.
-
- = Reindent selection, after a text has been selected.
-
- == Reindent current line.
-
- vab= or [(v%= Select current list and reindent it.
-
- 99[(v%= Select top level form and reindent it.
-
- gg=G Reindent whole file.
-
-
-3. Parenthesis handling
-
-First of all there is paredit mode. If you don't like it, Vim still obtains
-many tools to aid working with parentheses. This is a very important topic
-for a Lisp programmer.
-
- :inoremap ( ()<Esc>i Automatically insert closing parenthesis mark when
- an opening one is inserted.
-
- :inoremap [ []<Esc>i Same as above but for square brackets.
-
- :set showmatch Briefly jump with the cursor to the matching
- parenthesis or square bracket when a closing pair
- is inserted.
-
- % Go to the matching parenthesis or square bracket.
-
- :source $VIMRUNTIME/macros/matchit.vim
- Adds extended matching with "%" to Vim.
-
- vab or [(v% Select current list.
- vib Select current list without enclosing parentheses.
- yab Yank current list.
- dab Delete current list.
-
- 99[(v% Select top level form.
-
- g:lisp_rainbow Colorize differing levels of parenthesization with
- different highlighting. Currently works only for
- the 'lisp' filetype, hopefully it will be added
- soon to the Clojure plugins as well.
-
-
-4. Completion
-
- CTRL-N The built-in Vim keyword completion is a very handy
- CTRL-P feature. You start typing a word, and when CTRL-P
- or CTRL-N is pressed, then Vim looks up the keyword
- starting with the same letters as typed in up or
- down direction in the current buffer.
- This is not the same as the omni-completion
- feature (see |slimv-hyperspec|). Omni-completion is
- based on a symbol database and not on the contents
- of the current buffer.
-
- :set complete The |'complete'| option controls how keyword
- completion works.
-
-
-5. Tag lookup
-
-Also see Slimv option |g:slimv_ctags|.
-
- |ctags| "Exuberant ctags" is a powerful utility for
- generating tag database for different kind of
- programming languages, including Lisp. Tag lookup
- is then done via the CTRL-] (or :tag) command,
- return to the previous positon with CTRL-T.
-
- ctags --language-force=lisp *.lisp *.clj
- This or a similar command may be used to generate
- tags file from .lisp and .clj files in a directory.
-
-
-===============================================================================
-FAQ *slimv-faq*
-
-- Q: Why is this plugin called 'Slimv'?
-- A: Because it is trying to mimic the popular Emacs extension 'SLIME'.
- In SLIME 'E' stands for 'Emacs', so here it is replaced with 'V' as Vim.
- The most recent plugin version also contains a SWANK client, so Slimv's
- functionality is getting closer to SLIME.
- To tell the truth, first I gave the name 'Slimvim' to the plugin but
- then I found an (already abandoned) project called 'Slim-Vim' and I did
- not want to interfere with it.
-
-- Q: Why another 'Superior Lisp Mode' if there is already one (for Emacs)?
-- A: Because many programmers prefer Vim as a program text editor over Emacs,
- including me. I don't want to start a holy war or whatsoever, I'm just
- happy if someone else finds this plugin useful.
-
-- Q: But there are other similar projects for Vim. Why having yet another
- SLIMxxx for Vim?
-- A: To my knowledge, none of the above mentioned Vim scripts/extensions
- contain all the functionalities of SLIME (nor does Slimv, to tell the
- truth). There is definitely room for improvement.
- It would be nice to make Vim as usable as Emacs for Lisp programming.
- In my opinion the main barrier is the lack of asynchronous buffer update
- in Vim, but this may change in the future.
-
-- Q: How does Slimv work?
-- A: Slimv consists of three parts by the original concept:
- Vim plugin, client and server.
- The Slimv server is a swank-like server that embeds a console Lisp REPL
- via pipes, catching all REPL input/output.
- The Slimv client interfaces with the server and is responsible
- for sending Lisp commands to the Lisp REPL.
- The Vim plugin is translating editor commands to Lisp commands to be
- sent to the server by the client.
- So the dataflow is like this:
- Vim -> Vim plugin -> Slimv client -> Slimv server -> Lisp REPL
- The plugin resides in 'slimv.vim', the client and the server both
- located in 'slimv.py'.
-
- Slimv also contains a SWANK client that is able to communicate a
- running SWANK server, just as it is done by Emacs with SLIME.
- The SWANK output is regularly polled via the socket connection.
- The SWANK client is located in 'swank.py'.
-
-- Q: There is no Slimv server opened when I evaluate a form in Vim.
-- A: There may be many reasons for that. Try to run the server manually by
- opening a new terminal console window and running this command:
- {python command} {slimv.py path} -l {lisp command} -s
- where
- {python command} is the command to start the Python interpreter,
- {slimv.py} is the path for slimv.py (usually in Vim's ftplugin dir),
- {lisp command} is the command to start Lisp (or Clojure).
- Examples:
- c:\python24\python "c:\Program Files\Vim\vimfiles\ftplugin\slimv.py" -l c:\clisp\clisp.exe -s
- python /home/username/.vim/ftplugin/slimv.py -l sbcl -s
- Please remember to enclose each parameter in double quotes if that
- parameter contains spaces.
- Also check the following Slimv variables in Vim, maybe they are not
- correctly autodetected and you need to override them in your .vimrc:
- :echo g:slimv_python
- :echo g:slimv_lisp
- :echo g:slimv_client
-
-- Q: Why is SLIME functionality XYZ missing from Slimv?
-- A: There are two possible reasons:
- 1. The dataflow of Slimv is one-directional: from client to server.
- There is no data sent back from the server to the client, so if a
- functionality requires that Slimv reads data from REPL, then
- currently it is not possible to implement it.
- 2. It is possible to implement it, but I did not (yet) do it.
- Maybe future releases will contain it. All feature requests are
- welcome.
-
-- Q: Why is the default Slimv port number 5151?
-- A: Hint: what roman numerals are 5,1,5,1? Bingo: VI, doubled.
-
-- Q: What is the version numbering concept?
-- A: <major version>.<minor version>.<bugfix release>, where:
- major version: Let's talk about it when it reaches 1...
- minor version: New functionalities added, that are worth mentioning.
- bugfix release: Only bugfixes or tiny additions.
-
-- Q: Why is the plugin distributed in zip file?
-- A: I want that Windows/Linux/Mac users all can easily extract the plugin
- files. For this reason the vimball or zip format seems to be a good
- choice. There is no native .tar, .tar.gz, .tar.bz2 decompressors on
- Windows (however there exist free tools for the job, like 7zip).
- I'm relatively new to vimball and it looks like a good candidate, but
- I have some problems with it:
- 1. It is uncompressed, and if I want to compress it then I will end up
- having it zipped.
- 2. The .vba extension is also used for Visual Basic scripts on Windows
- and this frequently contains virus, so Windows users may dislike it.
- And remembering the very first time I met a vba file I was thinking
- that someone had created a Visual Basic installer for the script.
- 3. Many Vim users don't know vimball but most of them know zip files.
-
-- Q: Are you a Lisp expert?
-- A: No, not at all. I'm just learning Lisp. Also just learning Vim
- scripting. And I'm not a Python expert either, however (at the moment)
- I have more experience with Python than with Lisp.
-
-- Q: What about Clojure?
-- A: I have even less experience with Clojure than with Lisp.
- But it looks like the Slimv functions can be easily ported for Clojure,
- and as there are not many (yet) Vim scripts written for Clojure, I gave
- it a try.
-
-- Q: Why using Python for the client/server code? Why not Lisp?
-- A: It is needed to use one of Vim's embedded languages for maintaining a
- permanent socket connection from within Vim. There aren't too many choices,
- and Lisp is not (yet?) embedded into Vim.
-
-===============================================================================
-CHANGE LOG *slimv-changelog*
-
-0.8.6 - Handle cl:in-package, common-lisp:in-package (thanks to Philipp Marek).
- - Added option g:swank_host to allow connecting to remote Swank server.
- - Autodetection of Cake for Clojure (thanks to Chris Cahoon).
- - Set Paredit mode also for .cl and .rkt files.
-
-0.8.5 - Switch on indent plugins.
- - Do not complete empty string on <Tab>.
- - Added Clojure keywords to syntax plugin.
- - Use -i option to load swank-clojure.
- - Implementation specific REPL initialization, for Clojure it imports
- source, apropos, javadoc, etc. (thanks to �mer Sinan Agacan).
- - Print Lisp version at REPL startup.
- - Added List-Threads, Kill-Thread, Debug-Thread (thanks to Philipp Marek).
- - Write prompt after Toggle-Trace.
- - Display list of untraced functions for Untrace-All.
- - When in SLDB, Interactive-Eval evaluates expressions in the frame,
- Inspect inspects objects in the frame.
- - Changed g:slimv_echolines logic: set 0 for no lines, -1 for all lines.
- - Bugfix: removed extra linebreak between chunks of long output.
- - Bugfix: indentation problems for symbols with package specification
- (thanks to Philipp Marek).
- - Bugfix: indentation of Clojure's defn.
- - Bugfix: plist indentation (thanks to Philipp Marek).
- - Bugfix: occasional few seconds delay in swank response.
- - Bugfix: running Swank server on Mac OS X (on behalf of Tobias Pflug).
-
-0.8.4 - Added handling for Unicode characters.
- - Truncate arglist output to fit in the status line.
- - Added debugger keybindings: ,a for abort ,q for quit ,n for continue.
- - Changed keybinding for apropos to ,A
- - Added compiler error messages to quickfix list.
- - Map insert mode <Space> and <Tab> only for lisp (and dialects) buffers.
- - Bugfix: wait for the response to :create-repl before calling
- :swank-require (thanks to Philipp Marek).
- - Bugfix: indentation problems with unbalanced parens in comment.
- - Bugfix: arglist ate the <Space> when virtualedit was off.
-
-0.8.3 - Added top/bottom/left/right directions to g:slimv_repl_split.
- - Added :Lisp (and an equivalent :Eval) command with completion.
- - Added g:slimv_leader and g:paredit_leader options.
- - Added g:slimv_echolines to echo only the first few lines of the
- form being evaluated.
- - Added fuzzy completion and option g:slimv_simple_compl (by Philipp Marek).
- - Indent macros with &body argument by two spaces when connected to swank
- (thanks to Philipp Marek and Andreas Fredriksson).
- - Special indentation for flet, labels, macrolet.
- - Default for Set-Package is current package (thanks to Philipp Marek).
- - Bugfix: REPL output ordering problems.
- - Bugfix: problem with inserting Space into visual block.
- - Bugfix: blinking when g:slimv_repl_syntax is on.
- - Bugfix: entering incomplete form in REPL command line.
- - Bugfix: close form when inside comment, string, or with mixed ([.
-
-0.8.2 - Added Paredit and g:lisp_rainbow support for Scheme files.
- - Added SWANK support for MIT Scheme on Linux.
- - Added frame call information to SLDB (thanks to Philipp Marek).
- - Check for unbalanced form before evaluation.
- - Reconnect SWANK server in Connect-Server if already connected
- (thanks to Philipp Marek).
- - Select current form instead of top level form in Macroexpand.
- - Bugfix: Paredit handling of escaped matched characters, like \" or \(.
- - Bugfix: cursor positioning problems when debugger activated.
- - Bugfix: print prompt after Describe.
-
-0.8.1 - Added action handling to Inspector, fixed Inspector output.
- - Bugfix: read-string mode was stuck.
- - Bugfix: buffer corruption with two source windows
- (thanks to Philipp Marek).
- - Bugfix: eliminate multiple CursorHold autocommands
- (thanks to Philipp Marek).
- - Bugfix: completion with special characters in symbol name
- (thanks to Philipp Marek).
- - Bugfix: sometimes cursor went to the start of line in insert mode.
- - Bugfix: syntax error in Untrace All (thanks to Philipp Marek).
- - Bugfix: removed ' prefix from symbol selection (except for Inspect).
- - Bugfix: keep cursor position in Describe and Compile-Region.
-
-0.8.0 - Major update: added SWANK client (many thanks to Philipp Marek).
- - Split documentation into three parts.
- - Added keymapping hints to GUI menu items.
- - Renamed Eval-Last-Expression to Eval-Current-Expression.
- - REPL buffer is not syntax highlighted anymore.
- - Switch on filetype plugins.
- - Autodetection for Allegro CL, Lisp Cabinet and Leiningen.
- - Ask for save before compiling file.
- - Map <Tab> for symbol name completion.
- - Bugfix: finding start of keyword in completion.
- - Bugfix: deleting escaped " inside string.
- - Bugfix: Up/Down/Enter handling in popup menu.
-
-0.7.7 - Paredit: find next closing paren when using ,< or ,> and not standing
- on a paren.
- - Open REPL buffer upon connecting server.
- - Bugfix: REPL buffer prompt identification was sometimes missing.
- - Bugfix: switch off REPL refresh mode when REPL buffer is not visible
- (thanks to Philipp Marek).
- - Bugfix: convert Python path on Windows to short 8.3 filename format
- if it contains space (thanks to Razvan Rotaru).
-
-0.7.6 - Cursor potision is kept during evaluation.
- - Most Slimv commands made silent.
- - Bugfix: find defun start when cursor is on a comment.
- - Bugfix: keep newlines in Compile-Region.
- - Bugfix: infinite loop when selecting form in empty buffer.
- - Bugfix: error when opening REPL buffer with g:slimv_repl_split=0.
- - Bugfix: REPL blinking in insert mode when visualbell is on.
- - Bugfix: added the comma to the list of macro prefix characters
- (thanks to John Obbele).
- - Bugfix: long/short Windows filename problem for REPL buffer.
-
-0.7.5 - Added Cygwin compatibility using the Windows Python
- (thanks to Jerome Baum).
- - Display client error message when eval was not successful.
- - Form is passed to client via stdin instead of temp file.
- - Bugfix: automatic reconnection when server closed and reopened.
- - Bugfix: delete and yank also via named registers in paredit.vim.
- - Bugfix: handle double quotes in Compile-Defun and Compile-Region.
-
-0.7.4 - Added autodetection for simple 'clojure' command on Linux.
- - Removed duplicates from history of commands entered in REPL buffer
- (those recallable with <Up> and <Down>).
- - Bugfix: infinite loop during eval when 'in-package' or 'in-ns'
- was in comment.
- - Bugfix: Lisp prompt identification problems in REPL buffer.
- - Bugfix: input line duplication in SBCL on Linux
- (assigned "*debug-io*" to stdin).
- - Bugfix: Eval Defun missed last ")" if form contained "'('".
-
-0.7.3 - Added compatibility with Python 3.x.
- - Bugfix: input lines for REPL were doubled on Linux (thanks to
- Andrew Hills), however not yet fixed for SBCL.
- - Bugfix: enclose Slimv path in double quotes if it contains space.
- - Bugfix: select form when standing on prefix character (e.g. ' or `).
-
-0.7.2 - Added autodetection for /usr/local/bin/clojure on Linux.
- - Added special characters to Lisp keyword selection (iskeyword).
- - Run Vim's original ftplugin/lisp.vim for Clojure filetype.
- - Bugfix: PareditWrap error when g:paredit_shortmaps=1 (thanks to
- Jon Thacker).
- - Bugfix: buffer selection problems in case of three of more buffers
- (thanks to Philipp Marek).
- - Bugfix: conflicting keybindings for SlimvGenerateTags.
- - Bugfix: unmap error messages when g:paredit_mode=0.
-
-0.7.1 - Added option g:slimv_browser_cmd for opening hyperspec in a custom
- webbrowser (on behalf of Andreas Salwasser).
- - Added paredit handling for d<motion>, c<motion>, p and P commands:
- keep paren balance when deleting and pasting text.
- - Paredit Toggle function removes and re-adds paredit keybindings.
- - Bugfix: D and C deleted till beginning of line if () or [] found.
- - Bugfix: handle escaped \" characters inside string.
-
-0.7.0 - Added package/namespace support.
- - New way of refreshing the REPL buffer via autocommands, removed
- 'RUNNING' mode, cursor stays in the current buffer at evaluation.
- - Added option g:slimv_updatetime.
- - Removed options related to the old way of refreshing:
- g:slimv_repl_return and g:slimv_repl_wait.
- - Removed debug logging.
- - Updated Clojure API to version 1.2.
- - Extended keyword definition when selecting symbols.
- - Bugfix: defmacro detection problem (again).
-
-0.6.3 - Added option g:slimv_repl_return to return cursor to the editor window
- from REPL buffer after evaluating an s-expression.
- - Wrap: if standing on a paren then wrap the whole s-expression.
- - Wrap selection: exit visual mode after command.
- - Bugfix: inserting double quotes in paredit mode (like "\"").
- - Bugfix: dd in paredit mode when unbalanced form is inside comment.
- - Bugfix: reopen REPL buffer after closing it via :q.
- - Bugfix: comment and string detection error with noignorecase setting
- (thanks to Brian Kropf).
- - Bugfix: wrong positioning when moving parenthesis to the right.
- - Bugfix: defmacro detection problem (thanks to Philipp Marek).
- - Bugfix: paredit wrap selection missed last character when 'selection'
- was not "exclusive".
-
-0.6.2 - Added support for Mac OS X via Terminal.app (on behalf of Vlad Hanciuta).
- - Added string "clj" as a detector for Clojure (by Vlad Hanciuta).
- - Bugfix: paredit wrap function missed last character when 'selection'
- was not "exclusive" (thanks to Marcin Fatyga).
- - Bugfix: input was stuck inside SBCL debugger
- (on behalf of Philipp Marek and Dmitry Petukhov).
- - Bugfix: occasional error messages during REPL buffer update.
- - Bugfix: REPL menu was sometimes missing.
- - Bugfix: occasional command line color problems.
-
-0.6.1 - Added Split, Join, Wrap, Splice functions to Paredit Mode.
- - Added g:paredit_shortmaps to select short/long paredit keymaps.
- - Bugfix: delete commands put erased characters into yank buffer.
- - Bugfix: D deletes only characters after the cursor position.
-
-0.6.0 - Added paredit mode.
- - Set wrap mode for REPL buffer with keybindings.
-
-0.5.6 - Improved REPL buffer response time.
- - Added debug log flushing frequency.
- - Bugfix: early exit of REPL refresh mode on some machines.
-
-0.5.5 - Updated Clojure API to 1.1.
- - Expand tilde-prefix to home directory on Linux.
- - Autodetect Clojure in the user home directory on Linux.
-
-0.5.4 - Added autodetection for clojure-contrib.jar.
- - Added autodetection for Clozure CL.
- - Applied lisp_rainbow to Clojure's [].
- - Renamed Clojure indent plugin to clojure.vim
- so that Vim finds and loads it.
- - Switched on lisp mode explicitly for Clojure filetype.
-
-0.5.3 - Added Interrupt-Lisp-Process command.
- - Added mapping for the REPL menu.
- - Added special forms to Clojre API lookup.
- - Bugfix: put cursor after the last character in insert mode when
- continuously refreshing REPL buffer.
- - Fixed some Ctrl-C handling problems.
-
-0.5.2 - Updated Clojure API.
- - Adapted Clojure autodetection to version 1.0 (clojure-1.0.0.jar).
- - Complete-Symbol command moved to separate Edit submenu.
- - Added Close-Form command to the Edit submenu.
-
-0.5.1 - Added symbol name completion based on the Hyperspec database.
-
-0.5.0 - Major project reorganization:
- Slimv is now a Lisp and Clojure filetype plugin.
- - Added Common Lisp Hyperspec, Clojure API, and JavaDoc lookup.
- - Separate menu for REPL buffer, menu items work in every Vim mode.
- - Fixed mark 's usage bug - thanks to Lorenzo Campedelli.
-
-0.4.1 - Added profiler support for SBCL.
- - Added commands/menu items: Profiling: Show Profiled,
- REPL: Send Input, Close and Send Input, Previous Input, Next Input
- - Display Slimv error messages with ErrorMsg highlight.
-
-0.4.0 - Added SLIME's profiling tool with support from Slimv.
- - Added command to generate tags file.
- - Fixed evaluation problems of large buffers on some systems.
- - Fixed Compile And Load filename problems with '\' on Windows.
- - Recycle old REPL temporary file at next server startup.
-
-0.3.0 - Added syntax highlighting and automatic indentation for the REPL
- buffer (needs lisp and/or clojure Vim plugins).
- - It is possible to enter a multi-line command in the REPL buffer,
- until the opening and closing parens match.
- - Insert mode Up and Down keys move cursor when outside of the REPL
- command line.
- - Ctrl-C is working inside the REPL buffer (while waiting for output),
- so Ctrl-X and Ctrl-X Ctrl-X keybindings are removed.
- - REPL window performance enhancement on Linux.
-
-0.2.2 - Fixed REPL input and output mix-up problems.
- - Evaluation performance enhancement.
- - Corrected some more macroexpand problems.
-
-0.2.1 - Added basic Clojure support.
- - Corrected some macroexpand problems.
- - Fixed a REPL buffer refresh bug.
-
-0.2.0 - Major update: Lisp REPL displayed in a Vim buffer.
-
-0.1.4 - Corrected the delayed display of last line in REPL window on Linux.
- - Ctrl-C is propagated to Lisp REPL, so it is possible to interrupt
- a running program. Does not work however with some Lisp
- implementations (like SBCL).
-
-0.1.3 - Handle DOS and Unix style newlines produced by various
- Lisp implementations on Windows.
- - Do not write debug logfile when debug level is zero.
- - Removed unused client command line argument: -c
-
-0.1.2 - Windows users do not need pywin32 anymore.
- - Display buffer is more thread safe.
-
-0.1.1 - Corrected memory fillup problem after a long REPL session.
-
-0.1 - Initial release.
-
-===============================================================================
-ISSUES, LIMITATIONS, KNOWN BUGS *slimv-issues*
-
-- Vim register "s is used for all form selections, so its original content is
- destroyed.
-- Vim mark 's is used to mark the end of the REPL buffer, i.e. the beginning
- of the "command line".
-- Needs Vim version 7.0 or above, because of the intensive use of lists.
-- Needs the same Python version that Vim is compiled against
-- It is not possible to run separate Lisp and Clojure REPL in the same
- Slimv session.
-
-
-===============================================================================
-TODO *slimv-todo*
-
-- Add missing SLIME functions to the SWANK client.
-- Separate SLDB/Inspector/etc buffers from the REPL buffer.
-- Allow connecting remote SWANK server (outside of localhost).
-
-===============================================================================
-CREDITS *slimv-credits*
-
-Author: Tamas Kovacs <kovisoft at gmail dot com>
-
-Please send comments, bug reports, suggestions, etc. to the e-mail address
-above.
-
-Slimv is free software, you can redistribute it and/or modify it any way you
-like, except the embedded SLIME and Swank Clojure.
-
-SLIME is distributed under the terms of the GNU General Public License as
-published by the Free Software Foundation. See the included slime/README file
-or http://common-lisp.net/project/slime/ for details.
-
-Swank Clojure is licensed under the Eclipse Public License. See the file
-swank-clojure/COPYING or https://github.com/technomancy/swank-clojure for
-details.
-
-Credit must go out to Bram Moolenaar and all the Vim developers for making
-the world's (one of the) best editor.
-
-Thanks to Eric Marsden, Luke Gorrie, Helmut Eller, Luke Gorrie, Helmut Eller,
-Tobias C. Rittweiler and all the Emacs/SLIME developers for making SLIME.
-Also special thanks to Erik Naggum, Yuji Minejima and others for making the
-Common Lisp Hyperspec lookup packages for SLIME, and thanks to
-Taylor R. Campbell for the Emacs paredit.el script.
-
-Thanks to Jeffrey Chu, Phil Hagelberg, Hugo Duncan for making Swank Clojure,
-and to Helmut Eller for making Scheme Swank server.
-
-Thanks to the Vim community for testing, commenting and patching the script,
-especially to Philipp Marek for his great number of contributions, patches,
-ideas, suggestions on the SWANK integration.
-
-Also thanks to Vlad Hanciuta, Marcin Fatyga, Dmitry Petukhov,
-Daniel Solano G�mez, Brian Kropf, Len Weincier, Andreas Salwasser,
-Jon Thacker, Andrew Hills, Jerome Baum, John Obbele, Andreas Fredriksson,
-�mer Sinan Agacan, Tobias Pflug, Chris Cahoon for additional notes and
-contributions.
-
-I would also like to say a big thank you to everyone donating to support
-development. This is a one-element list at the moment: :)
-thanks to Paul Michael Bauer.
-
-Last but not least many thanks to my wife Andrea (for the Italians out there:
-hey, this is a female name in Hungary :) for her support and patience.
-
-===============================================================================
-vim:tw=80:et:wrap:ft=help:norl:
View
410 bundle/slimv/doc/swank.txt
@@ -1,410 +0,0 @@
-*swank.txt* Slimv Last Change: 13 Aug 2011
-
-SWANK client for Slimv *swank* *slimv-swank*
- Version 0.8.6
-
-The Superior Lisp Interaction Mode for Vim.
-Slimv contains a SWANK client that can communicate with a running SWANK server
-the same way as done by Emacs with SLIME.
-The SWANK client is part of Slimv, please find additional general purpose
-information about the plugin, like FAQ, changelog, credits, etc in |slimv.txt|.
-
-|swank-installation| Installation
-|swank-configuration| Configuration
-|swank-features| Features
-|swank-functions| SWANK functions implemented
-
-===============================================================================
-INSTALLATION *swank-installation*
-
- Required components:
-
- - Vim 7.0 or newer installed with Python feature enabled.
- This can be verified by the :ver command, look for the +python string.
- It is recommended to have also the +balloon_eval feature for displaying
- symbol descriptions in tooltip.
- - Python installed.
- Must be the same Python version that was Vim compiled against.
- This can also be verified by the :ver command, look for the
- -DDYNAMIC_PYTHON_DLL=\"pythonXX\" string, where XX is the required
- Python version.
- - Lisp or Clojure or MIT Scheme (Linux only) installed.
- Any Lisp implementation is OK that has SLIME support.
-
- The bundle version of Slimv also contains SLIME (in fact the SWANK server
- part of SLIME) and Swank Clojure. If you intend to use your own version of
- SLIME, then you need to have your own SWANK server installed.
- For example Clojure users might consider installing Leiningen and run the
- SWANK server via 'lein swank', or use Cake via 'cake swank'.
-
-
-===============================================================================
-CONFIGURATION *swank-configuration*
-
- *g:slimv_swank_cmd*
- *g:slimv_swank_clojure*
- *g:slimv_swank_scheme*
- Slimv tries to autodetect your Python/Lisp/SWANK installation (please find
- more details about the Python and Lisp autodetection and configuration in
- |slimv-options|).
- If the location for the SWANK server is not identified by the script, or you
- want to use a different command for starting the SWANK server, then you may
- want to customize the g:slimv_swank_cmd (general) and g:slimv_swank_clojure
- (Clojure specific) and g:slimv_swank_scheme (Scheme specific) options in
- your .vimrc file.
- Enter a Vim command here that spawns a detached process that runs the SWANK
- server of your choice. It is important to use a Vim command here that returns
- immediately and does not wait for the termination of the detached process,
- so begin the command with !start on Windows...:
-
- let g:slimv_swank_cmd = '!start "c:\Program Files\Lisp Cabinet\bin\ccl\wx86cl.exe" -l "c:\Program Files\Lisp Cabinet\site\lisp\slime\start-swank.lisp"'
- let g:slimv_swank_clojure = '!start "c:\clojurebox\swank-clojure\src\start-swank.bat"'
-
- ...and end the command with an & on Linux:
-
- let g:slimv_swank_cmd = '! xterm -e sbcl --load /usr/share/common-lisp/source/slime/start-swank.lisp &'
- let g:slimv_swank_clojure = '! xterm -e lein swank &'
-
- On OS X the following or similar command may be used (but sometimes the above
- Linux xterm command also works):
-
- let g:slimv_swank_cmd = '!osascript -e "tell application \"Terminal\" to do script \"sbcl --load ~/.vim/slime/start-swank.lisp\""'
- let g:slimv_swank_clojure = '!osascript -e "tell application \"Terminal\" to do script \"cake swank\""'
-
- These are examples only, the Lisp command and the path to the SWANK server
- may need to be changed in the command depending on the actual configuration.
-
- It is also possible to run the SWANK server manually prior running Vim.
- Slimv detects if a SWANK server is running and connects to it at the first
- evaluation request.
-
- Note: It is recommended to pass
- :dont-close t
- for the swank:create-server function call in the SWANK startup procedure.
- This makes a permanent SWANK server that listens continuously. Otherwise
- each time the SWANK connection is lost, the SWANK server needs to be
- restarted again.
- Some SWANK features (like Xref) require the load of the contributed modules,
- so it is recommended to pass
- :load-contribs t
- for the swank-loader:init function call in the SWANK strartup procedure.
- Example startup script:
-
-(load (merge-pathnames "swank-loader.lisp" *load-truename*))
-
-(swank-loader:init :delete nil
- :reload nil
- :load-contribs t)
-
-(swank:create-server :port 4005
- :coding-system "iso-latin-1-unix"
- :dont-close t)
-
-
- *g:swank_host*
- Host name or IP address of the SWANK server. Default value is 'localhost'.
- The SWANK server may run on a remote machine, but currently only unencryplted
- plain socket communication is supported, no SSH or whatsoever.
- Please note that if the SWANK server is on a remote machine then Slimv is
- unable to start it, so you need to run the SWANK server manually.
-
- *g:swank_port*
- The SWANK server is connected to port 4005 by default. This can be changed
- using the g:swank_port option.
-
- *g:slimv_balloon*
- Specifies if tooltips are on (see |swank-describe|).
-
- *g:slimv_simple_compl*
- If set to 1, swank:simple-completion is used. By default the fuzzy completion
- is active, so that "m-v-b<TAB>" expands to "multiple-value-bind" (see
- |swank-completions|).
-
- *g:slimv_timeout*
- There is a 20 second timeout defined for starting up or connecting to the
- SWANK server. This timeout can be changed via the g:slimv_timeout option.
- Please note that the very first startup of the SWANK server may take more
- time than the subsequent startups, so it is not recommended to make this
- timeout too low.
-
-
-===============================================================================
-FEATURES *swank-features*
-
-The following major SLIME (SWANK) features are implemented in Slimv.
-For a complete reference of SWANK functions implemented see |swank-functions|.
-
-|swank-eval| Evaluation
-|swank-interrupt| Interrupt Lisp process
-|swank-restarts| SLDB: Invoke restarts
-|swank-backtrace| SLDB: Display backtrace with locals
-|swank-arglist| Function argument list in status line
-|swank-describe| Describe symbol in tooltip
-|swank-completions| List of possible symbol completions
-|swank-inspect| Inspector
-|swank-trace| Trace function
-|swank-profile| Profiler
-|swank-xref| Cross Reference
-|swank-quickfix| Compiler errors in quickfix list
-
--------------------------------------------------------------------------------
-EVALUATION *swank-eval*
-
- There are various methods for evaluating an s-expression in the SWANK server.
- It is possible to eval the current top level form, the current subform, the
- visually selected area, or the whole buffer. Consult the "Evaluation commands"
- section in |slimv_keyboard| for the possible functions with their respective
- keyboard shortcuts.
-
-
- If debugger is activated and the cursor is placed on a frame line in the
- Backtrace section, then the Interactive-Eval command evaluates expressions
- in the scope of the given frame ("eval-in-frame").
-
-
--------------------------------------------------------------------------------
-INTERRUPT LISP PROCESS *swank-interrupt*
-
- It is possible to interrupt a running Lisp or Clojure process by selecting
- the Interrupt-Lisp-Process menu item in the REPL or Slimv/Repl submenu,
- or by pressing the keyboard shortcut <Leader>i.
- It is also possible to map the Ctrl-C shortcut in normal mode to perform the
- interrupt, but this may interfere with the "Copy to clipboard" function
- especially on Windows. Here is how to do it:
-
- noremap <silent> <C-C> :call SlimvInterrupt()<CR>
-
- When a Lisp process is interrupted, we are dropped in SLDB (SLime DeBugger)
- and the list of restarts (see |swank-restarts|) and calling frame stack
- (see |swank-backtrace|) is displayed.
- It is possible to inspect variables (see |swank-inspect|) and continue
- or break program execution by selecting the appropriate restart.
- It is also possible to change the value of variables or redefine functions
- before resuming execution.
-
-
--------------------------------------------------------------------------------
-INVOKE RESTARTS *swank-restarts*
-
- In case of an error or when the Lisp process is interrupted SLDB displays
- the condition and the list of possible restarts, each line startin with the
- restart identifier, for example:
-
-DIVISION-BY-ZERO detected
- [Condition of type DIVISION-BY-ZERO]
-
-Restarts:
- 0: [RETRY] Retry SLIME REPL evaluation request.
- 1: [*ABORT] Return to SLIME's top level.
- 2: [ABORT-BREAK] Reset this thread
- 3: [ABORT] Kill this thread
-
-
- If you press Enter in normal mode on a restart line then the given restart
- is invoked.
- The most frequently used restarts have the following shortcuts defined:
-
- ,a Abort
- ,q Quit To Toplevel
- ,n Continue
-
-
--------------------------------------------------------------------------------
-DISPLAY BACKTRACE *swank-backtrace*
-
- SLDB displays the backtrace for the calling frames, each line starting with
- the frame identifier, for example:
-
-Backtrace:
- 0: (CCL::%FIXNUM-TRUNCATE #<Unknown Arguments>)
- 1: (/ 1 0)
- 2: (NIL #<Unknown Arguments>)
- 3: (CCL::CALL-CHECK-REGS / 1 0)
- 4: (CCL::CHEAP-EVAL (/ 1 0))
- 5: (SWANK::EVAL-REGION "(/ 1 0)")
-
-
- If you press Enter in normal mode on a frame line then frame information
- with the local variable bindings for that frame are displayed at the bottom
- of the SLDB printout.
-
- Some commands have modified behaviour when used on a frame:
-
- Interactive-Eval Evaluates expressions in the scope of the frame.
-
- Inspect Inspects objects within the scope of the frame.
-
-
--------------------------------------------------------------------------------
-FUNCTION ARGUMENT LIST *swank-arglist*