2318 lines
110 KiB
Text
2318 lines
110 KiB
Text
|
*slimv.txt* Slimv Last Change: 22 Aug 2021
|
|||
|
|
|||
|
Slimv *slimv*
|
|||
|
Version 0.9.14
|
|||
|
|
|||
|
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 is actually a SWANK (TCP server for Emacs) client.
|
|||
|
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.
|
|||
|
|
|||
|
|slimv-installation| Installation
|
|||
|
|slimv-configuration| Configuration
|
|||
|
|slimv-swank| SWANK Features implemented in Slimv
|
|||
|
|slimv-repl| Lisp REPL inside Vim
|
|||
|
|slimv-clojure| Clojure support
|
|||
|
|slimv-scheme| Scheme support
|
|||
|
|slimv-package| Package and Namespace handling
|
|||
|
|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:
|
|||
|
|
|||
|
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 2.4 or later 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.
|
|||
|
|
|||
|
Optional components:
|
|||
|
- "Exuberant ctags" for tags file generation (if not bundled with Vim
|
|||
|
already). See |slimv-ctags|.
|
|||
|
- 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'.
|
|||
|
|
|||
|
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
|
|||
|
ftdetect/clojure.vim
|
|||
|
ftplugin/iterm.applescript
|
|||
|
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/r/slimv-r.vim
|
|||
|
ftplugin/scheme/slimv-scheme.vim
|
|||
|
indent/clojure.vim
|
|||
|
indent/lisp.vim
|
|||
|
indent/scheme.vim
|
|||
|
plugin/paredit.vim
|
|||
|
slime/*
|
|||
|
swank-clojure/*
|
|||
|
syntax/clojure/slimv-syntax-clojure.vim
|
|||
|
syntax/lisp/slimv-syntax-lisp.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/Lisp installation).
|
|||
|
See |slimv-configuration| below on how to do this.
|
|||
|
|
|||
|
|
|||
|
Uninstallation:
|
|||
|
|
|||
|
- Exit all Vim instances and exit from the SWANK server.
|
|||
|
- Delete the files that were copied to the vimfiles directory during
|
|||
|
installation (see list of files above).
|
|||
|
|
|||
|
|
|||
|
===============================================================================
|
|||
|
CONFIGURATION *slimv-configuration*
|
|||
|
|
|||
|
|slimv-options| Options
|
|||
|
|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:scheme_builtin_swank| Enable MIT scheme's built-in swank server.
|
|||
|
|
|||
|
|g:slimv_balloon| Specifies if tooltips are on.
|
|||
|
|
|||
|
|g:slimv_browser_cmd| If nonempty, this shell command is used to
|
|||
|
open the Common Lisp Hyperspec.
|
|||
|
|
|||
|
|g:slimv_browser_cmd_ex| If nonempty, this Ex command is used to
|
|||
|
open the Common Lisp Hyperspec.
|
|||
|
|
|||
|
|g:slimv_browser_cmd_suffix| Optional suffix for |g:slimv_browser_cmd|
|
|||
|
|
|||
|
|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_ctags| OS command to generate tags file.
|
|||
|
|
|||
|
|g:slimv_disable_clojure| Disable Slimv for Clojure files.
|
|||
|
|
|||
|
|g:slimv_disable_lisp| Disable Slimv for Lisp files.
|
|||
|
|
|||
|
|g:slimv_disable_scheme| Disable Slimv for Scheme files.
|
|||
|
|
|||
|
|g:slimv_echolines| Echo only this number of lines from the form
|
|||
|
being evaluated.
|
|||
|
|
|||
|
|g:slimv_fasl_directory| Specify the directory for compiled FASL files to
|
|||
|
be written to.
|
|||
|
|
|||
|
|g:slimv_impl| The Lisp implementation. Defaults to 'clisp'.
|
|||
|
|
|||
|
|g:slimv_indent_disable| Disable slimv indenting, fallback to vim's
|
|||
|
default lispindent() method.
|
|||
|
|
|||
|
|g:slimv_indent_keylists| Enable special indentation for keyword lists.
|
|||
|
|
|||
|
|g:slimv_indent_maxlines| Maximum number of lines searched backwards for
|
|||
|
indenting special forms.
|
|||
|
|
|||
|
|g:slimv_inspect_name| Name of the Inspect buffer.
|
|||
|
|
|||
|
|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_preferred| Name of the preferred lisp implementation.
|
|||
|
|
|||
|
|g:slimv_python_version| If defined, determines Python version to use,
|
|||
|
when 3 use :python3 and friends, otherwise
|
|||
|
:python or :python3 is used as available.
|
|||
|
|
|||
|
|g:slimv_repl_max_len| Maximum number of lines in the REPL buffer.
|
|||
|
|
|||
|
|g:slimv_repl_name| Name of the REPL buffer.
|
|||
|
|
|||
|
|g:slimv_repl_simple_eval| <CR> evaluates form in the REPL buffer.
|
|||
|
|
|||
|
|g:slimv_repl_split| Open the Lisp REPL buffer in a split window
|
|||
|
or in a separate buffer.
|
|||
|
|
|||
|
|g:slimv_repl_split_size| Size of the newly created split window in case
|
|||
|
|g:slimv_repl_split| is set.
|
|||
|
|
|||
|
|g:slimv_repl_syntax| Enable syntax coloring for the REPL buffer.
|
|||
|
|
|||
|
|g:slimv_repl_wrap| Set wrap mode for the REPL buffer.
|
|||
|
|
|||
|
|g:slimv_simple_compl| Use simple completion instead of fuzzy completion.
|
|||
|
|
|||
|
|g:slimv_sldb_name| Name of the SLDB buffer.
|
|||
|
|
|||
|
|g:slimv_sldb_wrap| Set wrap mode for the SLDB buffer.
|
|||
|
|
|||
|
|g:slimv_strip_ansi| Strip ANSI escape sequences from the REPL output.
|
|||
|
|
|||
|
|g:slimv_swank_clojure| Command used to start the Clojure SWANK server.
|
|||
|
|
|||
|
|g:slimv_swank_cmd| Command used to start the Lisp SWANK server.
|
|||
|
|
|||
|
|g:slimv_swank_scheme| Command used to start the Scheme SWANK server.
|
|||
|
|
|||
|
|g:slimv_tags_file| Name of tags file used by Slimv.
|
|||
|
|
|||
|
|g:slimv_threads_name| Name of the Threads buffer.
|
|||
|
|
|||
|
|g:slimv_timeout| Timeout defined for starting up or connecting
|
|||
|
to the SWANK server.
|
|||
|
|
|||
|
|g:slimv_unmap_cr| Do not add special insert mode mapping for <CR>.
|
|||
|
|
|||
|
|g:slimv_unmap_tab| Do not add special insert mode mapping for <Tab>.
|
|||
|
|
|||
|
|g:slimv_unmap_space| Do not add special insert mode mapping for <Space>.
|
|||
|
|
|||
|
|g:slimv_updatetime| Alternative value for 'updatetime' during REPL
|
|||
|
refresh.
|
|||
|
|
|||
|
|g:swank_block_size| SWANK connection output buffer size.
|
|||
|
|
|||
|
|g:swank_host| Host name or IP address of the SWANK server.
|
|||
|
|
|||
|
|g:swank_port| Port number of the SWANK server.
|
|||
|
|
|||
|
|
|||
|
Note: Most options require to restart the Vim session when modified.
|
|||
|
|
|||
|
Slimv tries to autodetect the Lisp installation directory, 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 Lisp installation,
|
|||
|
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_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_preferred*
|
|||
|
Name of the preferred lisp implementation. The autodetection mechanism tries to
|
|||
|
choose this one if possible, i.e. if installed and found in the path or in the
|
|||
|
standard installation directories.
|
|||
|
It's typical use is when there are multiple lisps present in the system and
|
|||
|
the autodetection chooses an undesired implementation.
|
|||
|
|
|||
|
Valid choices are for lisp:
|
|||
|
'sbcl', 'clisp', 'cmu', 'ecl', 'allegro', 'lispworks', 'clozure'
|
|||
|
For Scheme:
|
|||
|
'mit'
|
|||
|
|
|||
|
Example:
|
|||
|
let g:slimv_preferred = 'clisp'
|
|||
|
This means that Slimv will use clisp even if both sbcl and clisp are installed
|
|||
|
and the autodetection would choose sbcl.
|
|||
|
|
|||
|
*g:slimv_disable_clojure*
|
|||
|
*g:slimv_disable_lisp*
|
|||
|
*g:slimv_disable_scheme*
|
|||
|
If any of these options are set then the Slimv will not be loaded and enabled
|
|||
|
for the corresponding filetype.
|
|||
|
|
|||
|
Example:
|
|||
|
You want to use Slimv for Lisp but don't want to use it for Scheme:
|
|||
|
let g:slimv_disable_scheme = 1
|
|||
|
|
|||
|
*g:slimv_swank_cmd*
|
|||
|
*g:slimv_swank_clojure*
|
|||
|
*g:slimv_swank_scheme*
|
|||
|
Slimv tries to autodetect your Lisp/SWANK installation.
|
|||
|
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.
|
|||
|
Example startup script:
|
|||
|
|
|||
|
(load (merge-pathnames "swank-loader.lisp" *load-truename*))
|
|||
|
|
|||
|
(swank-loader:init :delete nil
|
|||
|
:reload nil
|
|||
|
:load-contribs nil)
|
|||
|
|
|||
|
(swank:create-server :port 4005
|
|||
|
:coding-system "iso-latin-1-unix"
|
|||
|
:dont-close t)
|
|||
|
|
|||
|
|
|||
|
*g:swank_block_size*
|
|||
|
By default the SWANK server connection output buffer size is 4 or 8 kbytes.
|
|||
|
All the data sent by the SWANK server is divided into this size blocks, so
|
|||
|
if the SWANK server is sending large amount of data then this may result in
|
|||
|
high number of data blocks sent, which may slow down Slimv. For greater
|
|||
|
performance you may want to increase the block size, e.g. to 64 kbytes:
|
|||
|
let g:swank_block_size = 65536
|
|||
|
|
|||
|
*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 unencrypted
|
|||
|
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.
|
|||
|
Actually there is a workaround for this on Linux: run Vim inside a GNU screen
|
|||
|
session. Slimv will autodetect this and modify the Swank command so that the
|
|||
|
Swank server is run inside a newly opened virtual terminal in screen.
|
|||
|
Slimv also autodetects an existing tmux session, so you can use tmux instead
|
|||
|
of GNU screen for the same purpose.
|
|||
|
|
|||
|
*g:swank_port*
|
|||
|
The SWANK server is connected to port 4005 by default. This can be changed
|
|||
|
using the g:swank_port option.
|
|||
|
|
|||
|
*g:scheme_builtin_swank*
|
|||
|
|
|||
|
Since version 9.1.1 MIT scheme has a built-in swank server that can replace
|
|||
|
contrib/swank-mit-scheme.scm coming with Slime. This option enables the
|
|||
|
built-in swank server.
|
|||
|
Please be aware that this is still experimental, so it is not enabled by
|
|||
|
default. Using it may result in strange errors, but in other areas it also
|
|||
|
may be superior to swank-mit-scheme.scm and it is actively maintained.
|
|||
|
|
|||
|
*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.
|
|||
|
|
|||
|
*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_tags_file*
|
|||
|
The Find-Definition function gets location information from the SWANK server.
|
|||
|
Slimv uses a dedicated tags file for Find-Definitions. By default this is a
|
|||
|
temporary file but the filename can be overridden via this option. If this
|
|||
|
variable is set to the empty string ('') then the whole Find-Definitions
|
|||
|
function is disabled.
|
|||
|
|
|||
|
|
|||
|
*g:slimv_fasl_directory*
|
|||
|
|
|||
|
Specify a directory path that will be passed to the function
|
|||
|
swank:compile-file-for-emacs controlling where the compiled FASL file is
|
|||
|
written to and loaded from when using the Compile File or the Compile and Load
|
|||
|
File commands.
|
|||
|
Example:
|
|||
|
let g:slimv_fasl_directory = '/tmp/'
|
|||
|
If this is set then .fasl files will be placed in /tmp/ instead of the default
|
|||
|
location next to the Lisp source file.
|
|||
|
|
|||
|
*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_unmap_cr*
|
|||
|
*g:slimv_unmap_tab*
|
|||
|
*g:slimv_unmap_space*
|
|||
|
If nonzero then Slimv does not add special insert mode mapping for the
|
|||
|
<CR>/<Tab>/<Space> keys in the editor buffer. This might come in handy when
|
|||
|
additional scripts are installed for Vim together with Slimv and there is a
|
|||
|
collision in the mappings for these keys. Of course in this case the related
|
|||
|
Slimv functions will not work when pressing those keys.
|
|||
|
|
|||
|
Note: in case Paredit is used then the |g:paredit_electric_return| option shall
|
|||
|
also be set to 0 in order to completely disable mappings for <CR>.
|
|||
|
|
|||
|
*g:slimv_leader*
|
|||
|
This option allows a custom <Leader> setting for the Slimv keybindings.
|
|||
|
By default it has the same value as |mapleader|, except when |mapleader| is
|
|||
|
<Space> which <Leader> is currently not supported by Slimv.
|
|||
|
If neither g:slimv_leader nor |mapleader| are defined or |mapleader| is <Space>
|
|||
|
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 shell 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 xdg-open (on Linux) is used to start the
|
|||
|
browser. If xdg-open is not installed then the Python webbrowser package is
|
|||
|
used to identify the default browser on Linux.
|
|||
|
|
|||
|
*g:slimv_browser_cmd_ex*
|
|||
|
Specifies the Ex command to start the browser in order to display the Common
|
|||
|
Lisp Hyperspec or the Clojure API. If |g:slimv_browser_cmd| is empty then this
|
|||
|
Ex command is used.
|
|||
|
|
|||
|
*g:slimv_browser_cmd_suffix*
|
|||
|
When using option |g:slimv_browser_cmd| the Hyperspec page URL is appended to
|
|||
|
the browser command. However sometimes it might be needed to add a suffix
|
|||
|
at the end of the browser command.
|
|||
|
Slimv automatically adds the "&" suffix in order to fork the browser and
|
|||
|
return control immediately to Vim. If you don't want to fork the browser
|
|||
|
then set |g:slimv_browser_cmd_suffix| to "". Also use this option if you want
|
|||
|
to have extra parameters or commands in the browser command after the URL,
|
|||
|
but in this case remember to add the "&" when forking is needed.
|
|||
|
|
|||
|
*g:slimv_repl_name*
|
|||
|
Name of the REPL buffer. Default is 'REPL'. Space and some other special
|
|||
|
characters need to be escaped (e.g. 'Slimv\ REPL', '\#REPL\#').
|
|||
|
Not all special characters are allowed, e.g. '*' does not work in Windows.
|
|||
|
|
|||
|
*g:slimv_sldb_name*
|
|||
|
Name of the SLDB buffer. Default is 'SLDB'. Space and some other special
|
|||
|
characters need to be escaped (e.g. 'Slimv\ Debugger', '\#SLDB\#').
|
|||
|
Not all special characters are allowed, e.g. '*' does not work in Windows.
|
|||
|
|
|||
|
*g:slimv_inspect_name*
|
|||
|
Name of the Inspect buffer. Default is 'INSPECT'. Space and some other special
|
|||
|
characters need to be escaped (e.g. 'Slimv\ Incpector', '\#INSPECT\#').
|
|||
|
Not all special characters are allowed, e.g. '*' does not work in Windows.
|
|||
|
|
|||
|
*g:slimv_threads_name*
|
|||
|
Name of the Threads buffer. Default is 'THREADS'. Space and some other special
|
|||
|
characters need to be escaped (e.g. 'Slimv\ Threads', '\#THREADS\#').
|
|||
|
Not all special characters are allowed, e.g. '*' does not work in Windows.
|
|||
|
|
|||
|
*g:slimv_repl_split*
|
|||
|
Open the Lisp REPL buffer in a split window or in a separate buffer in Vim.
|
|||
|
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_split|:
|
|||
|
|
|||
|
0: no split
|
|||
|
1: horizontal split above (default)
|
|||
|
2: horizontal split below
|
|||
|
3: vertical split left
|
|||
|
4: vertical split right
|
|||
|
|
|||
|
*g:slimv_repl_split_size*
|
|||
|
Size of the newly created split window in case |g:slimv_repl_split| is set.
|
|||
|
The default value is an empty string ('') meaning split size is automatically
|
|||
|
determined by vim. Define this either to 20 or '20' in order to set the split
|
|||
|
window size to 20 lines or columns (depending on the split direction).
|
|||
|
|
|||
|
*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_max_len*
|
|||
|
Maximum number of lines for the REPL buffer. Only the last this number of lines
|
|||
|
are kept in the REPL buffer, all lines before that are erased, but some opening
|
|||
|
parens and/or double quotes may remain in order to maintain their balanced
|
|||
|
state. The default value for this option is 0, meaning that the number of lines
|
|||
|
is unlimited, i.e. no line is ever erased.
|
|||
|
|
|||
|
*g:slimv_repl_simple_eval*
|
|||
|
This option controls the behaviour of insert mode <CR>, <Up>, <Down> in the
|
|||
|
REPL buffer.
|
|||
|
|
|||
|
If nonzero then:
|
|||
|
<CR> Evaluates the form entered in the command line
|
|||
|
<Up> Brings up the previous command from the command line history
|
|||
|
<Down> Brings up the next command from the command line history
|
|||
|
<C-CR> Closes and evaluates the form entered in the command line
|
|||
|
|
|||
|
If the option is zero then:
|
|||
|
<C-CR> Closes and evaluates the form entered in the command line
|
|||
|
<C-Up> Brings up the previous command from the command line history
|
|||
|
<C-Down> Brings up the next command from the command line history
|
|||
|
<CR> Inserts a newline
|
|||
|
<Up> Moves the cursor up
|
|||
|
<Down> Moves the cursor down
|
|||
|
|
|||
|
*g:slimv_repl_syntax*
|
|||
|
Enables syntax highlighting for the REPL buffer. It is enabled by default but
|
|||
|
one may want to switch it off for these reasons:
|
|||
|
1. The REPL buffer contains s-expressions and their output mixed. The REPL
|
|||
|
output 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 don't want to switch REPL syntax coloring
|
|||
|
completely off then it is recommended to adjust the |synmaxcol| parameter
|
|||
|
to a relatively low value 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_sldb_wrap*
|
|||
|
Set wrap mode for the SLDB 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. Disabled by default.
|
|||
|
|
|||
|
*g:slimv_strip_ansi*
|
|||
|
Strip ANSI escape sequences from the REPL output. Vim does not handle ANSI
|
|||
|
escape sequences, therefore without this setting an ANSI colored output
|
|||
|
string looks like this:
|
|||
|
[31mabc[0m
|
|||
|
Here follows the same output with this setting enabled:
|
|||
|
abc
|
|||
|
|
|||
|
*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_indent_disable*
|
|||
|
Disable slimv indenting and use vim's built-in ispindent() method.
|
|||
|
Please note that this option does not completely disable the indenting,
|
|||
|
only changes the way s-expressions are indented.
|
|||
|
|
|||
|
*g:slimv_indent_keylists*
|
|||
|
If nonzero then Slimv indents keyword lists like that:
|
|||
|
|
|||
|
(:foo :bar
|
|||
|
:baz :boo)
|
|||
|
|
|||
|
instead of the function-style indentation:
|
|||
|
|
|||
|
(:foo :bar
|
|||
|
:baz :boo)
|
|||
|
|
|||
|
This option is switched on by default. There are however some special forms
|
|||
|
(defpackage, defsystem) that are always indented in the function-style, e.g.:
|
|||
|
|
|||
|
(defpackage :my-package
|
|||
|
(:use :cl
|
|||
|
:my-utils))
|
|||
|
|
|||
|
*g:slimv_indent_maxlines*
|
|||
|
Maximum number of lines searched backwards for indenting special forms, like
|
|||
|
flet, labels, macrolet. Setting it to a high value may slow down indenting.
|
|||
|
|
|||
|
*g:slimv_balloon*
|
|||
|
Specifies if describe 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 "mvb<TAB>" expands to "multiple-value-bind"
|
|||
|
(see |swank-completions|).
|
|||
|
|
|||
|
*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.
|
|||
|
|
|||
|
*g:slimv_template_apropos*
|
|||
|
Lisp form built when issuing the 'apropos' command.
|
|||
|
Example:
|
|||
|
let g:slimv_template_apropos = '(apropos "%1")'
|
|||
|
|
|||
|
*g:slimv_python_version*
|
|||
|
Selects the python version to use.
|
|||
|
When exists and set to 3, the :python3 and :py3file commands are used, when
|
|||
|
exists and not set to 3, the :python and :pyfile commands are used, and when
|
|||
|
it is not defined, has('python') has('python3') determine which are used.
|
|||
|
|
|||
|
-------------------------------------------------------------------------------
|
|||
|
*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
|
|||
|
<C-]> Find Definitions (Tag Lookup)
|
|||
|
|
|||
|
Edit commands (Normal mode):
|
|||
|
,) ,tc Close Form
|
|||
|
,( ,(t Paredit Toggle
|
|||
|
,j ,fd Find Definitions
|
|||
|
|
|||
|
Evaluation commands:
|
|||
|
["x],d ["x],ed Eval Defun (current top level form) [put in register x]
|
|||
|
["x],e ["x],ee Eval Current Expression (current subform) [put in reg. x]
|
|||
|
["x],r ["x],er Eval Region (visual selection) [or text from register x]
|
|||
|
,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
|
|||
|
,B ,db Set Breakpoint
|
|||
|
,l ,dd Disassemble
|
|||
|
,i ,di Inspect (inspects in frame when in SLDB)
|
|||
|
,a ,da Abort
|
|||
|
,q ,dq Quit to Toplevel
|
|||
|
,n ,dc Continue
|
|||
|
,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
|
|||
|
["x],R ["x],cr Compile Region [or text from register x]
|
|||
|
|
|||
|
Cross Reference commands
|
|||
|
,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
|
|||
|
,- ,- Clear REPL
|
|||
|
,Q ,rq Quit REPL
|
|||
|
|
|||
|
|
|||
|
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
|
|||
|
<C-C> <C-C> Interrupt Lisp Process
|
|||
|
,<Up> ,rp Previous Input
|
|||
|
,<Down> ,rn Next Input
|
|||
|
,- ,- Clear REPL
|
|||
|
|
|||
|
Note:
|
|||
|
Some mappings accept an optional "x prefix (where x is a register name)
|
|||
|
similarly to Vim's p (put) and y (yank) commands. These commands may
|
|||
|
additionally use the given Vim register to store or retrieve text.
|
|||
|
|
|||
|
Commands "Eval Defun" and "Eval Current Expression" also store the form being
|
|||
|
evaluated in the given register. When using uppercase register name, the
|
|||
|
current form is appended to the contents of the register.
|
|||
|
|
|||
|
Commands "Eval Region" and "Compile Region" use the contents of the given
|
|||
|
register (instead of the selected region) for evaluation or compilation.
|
|||
|
|
|||
|
This feature may be used for remembering and recalling a test form used for
|
|||
|
testing parts of the code.
|
|||
|
|
|||
|
Sample workflow:
|
|||
|
1. place the cursor on the test form
|
|||
|
2. "a,d stores the test form in register 'a' and evaluates it
|
|||
|
3. test fails, bug is in other parts of code, try to fix it
|
|||
|
4. send fixed code to the swank server the usual way
|
|||
|
5. "a,r recalls the test form from register 'a' and evaluates it
|
|||
|
6. repeat steps 3.-5.
|
|||
|
|
|||
|
It is possible to create a custom mapping that appends a test form after the
|
|||
|
selected s-expression so that they are evaluated together in one step.
|
|||
|
This can be useful for quick testing. In order to evaluate the current form
|
|||
|
together with a test form use function SlimvEvalTestExp(), to evaluate and test
|
|||
|
the current toplevel form use function SlimvEvalTestDefun().
|
|||
|
Create a custom mapping by passing your test form to any of these functions.
|
|||
|
|
|||
|
Example:
|
|||
|
|
|||
|
noremap ,f :<C-U>call SlimvEvalTestDefun("(my-test-form)")<CR>
|
|||
|
|
|||
|
With the above custom mapping pressing ,f makes the current toplevel form
|
|||
|
evaluated followed by (my-test-form).
|
|||
|
|
|||
|
Instead of appending a test form, it is also possible to wrap the current form
|
|||
|
in a test form. Use the special symbol %1 to define the location where the
|
|||
|
test form shall contain the s-expression to be tested.
|
|||
|
|
|||
|
Example:
|
|||
|
|
|||
|
noremap ,wp :<C-U>call SlimvEvalTestExp("(ps:ps %1)")<CR>
|
|||
|
|
|||
|
The above definition creates a custom mapping to see parenscript output of
|
|||
|
the selected form. Pressing ,wp wraps the current s-expression in a
|
|||
|
(ps:ps ...) test form and sends it to the swank server for evaluation.
|
|||
|
|
|||
|
|
|||
|
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|.
|
|||
|
|
|||
|
|
|||
|
===============================================================================
|
|||
|
SWANK FEATURES *slimv-swank*
|
|||
|
|
|||
|
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-stepper| SLDB: Step through the code
|
|||
|
|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-threads| Threads
|
|||
|
|swank-trace| Trace function
|
|||
|
|swank-profile| Profiler
|
|||
|
|swank-xref| Cross Reference
|
|||
|
|swank-quickfix| Compiler errors in quickfix list
|
|||
|
|swank-functions| SWANK functions implemented
|
|||
|
|
|||
|
-------------------------------------------------------------------------------
|
|||
|
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 Slimv presents
|
|||
|
the Swank debugger (SLDB) buffer. 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*
|
|||
|
|
|||
|
The Swank debugger (SLDB) is presented in a separate dedicated buffer.
|
|||
|
Below the Restarts section 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 and source location information for that frame
|
|||
|
are displayed in a fold. Pressing Enter again toggles the fold close/open.
|
|||
|
|
|||
|
If you press Enter on a filename with source location information then Slimv
|
|||
|
opens the given file in a buffer at the specified location.
|
|||
|
|
|||
|
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.
|
|||
|
|
|||
|
|
|||
|
-------------------------------------------------------------------------------
|
|||
|
STEPPER *step-into* *step-next* *step-out* *step-continue*
|
|||
|
|
|||
|
You can enter the stepper by either wrapping step around your code (e.g.
|
|||
|
(step (your-function arg)) or by putting (break) in your code. If you put
|
|||
|
a (break) in your code, once you get into the debugger, enter step-into to
|
|||
|
enter the stepper. The functions are:
|
|||
|
|
|||
|
step-into: steps into the function
|
|||
|
step-next: steps over the function
|
|||
|
step-out: steps out of the function
|
|||
|
|
|||
|
This has only been tested with sbcl
|
|||
|
|
|||
|
|
|||
|
-------------------------------------------------------------------------------
|
|||
|
FUNCTION ARGUMENT LIST *swank-arglist*
|
|||
|
|
|||
|
When entering an s-expression in insert mode, each time a space is pressed
|
|||
|
after a non-whitespace character, then SWANK is requested for the function
|
|||
|
argument list for the current function. If the function is known by SWANK
|
|||
|
then the function prototype is displayed in the status line. The arglist is
|
|||
|
condensed in order to fit the status line, so for functions with many
|
|||
|
arguments the whole definition may not be visible. In this case use the
|
|||
|
Describe function for displaying the full function definition.
|
|||
|
|
|||
|
Note: the function argument list is not displayed when Slimv is not
|
|||
|
connected to the SWANK server.
|
|||
|
|
|||
|
|
|||
|
-------------------------------------------------------------------------------
|
|||
|
DESCRIBE SYMBOL *swank-describe*
|
|||
|
|
|||
|
When you hover your mouse over a function's name then the function description
|
|||
|
is requested from SWANK and displayed in a tooltip, called balloonexpr in
|
|||
|
Vim terms. This functionality requires that Vim is compiled with the
|
|||
|
+balloon_eval feature enabled.
|
|||
|
|
|||
|
If you don't have +balloon_eval or want to get the description for a general
|
|||
|
symbol then it is possible to select the Describe-Symbol menu item from the
|
|||
|
Slimv/Documentation submenu, or press the <Leader>s keyboard shortcut,
|
|||
|
which then displays the symbol description in the Vim message area.
|
|||
|
|
|||
|
Note: the symbol description is not displayed when Slimv is not connected
|
|||
|
to the SWANK server.
|
|||
|
|
|||
|
|
|||
|
-------------------------------------------------------------------------------
|
|||
|
COMPLETIONS *swank-completions*
|
|||
|
|
|||
|
The Vim omni-completion function requests the possible completions for the
|
|||
|
symbol currently being entered from the SWANK server. The completion list
|
|||
|
is displayed in a popup menu.
|
|||
|
The keyboard shortcut for completion is <Tab>. This brings up the completions
|
|||
|
popup menu if there are multiple choices. In the popup menu subsequent <Tab>
|
|||
|
keypresses select the next possible completion.
|
|||
|
|
|||
|
Option |g:slimv_simple_compl| determines whether simple or fuzzy completion
|
|||
|
is used. Default is fuzzy completion.
|
|||
|
|
|||
|
Note: completions are not displayed when Slimv is not connected to the
|
|||
|
SWANK server. In this case the Hyperspec database is used for symbol lookup.
|
|||
|
|
|||
|
|
|||
|
-------------------------------------------------------------------------------
|
|||
|
INSPECTOR *swank-inspect*
|
|||
|
|
|||
|
The Swank Inspector is presented in a separate buffer. In the Inspect buffer
|
|||
|
the Enter key is remapped in normal mode for traversing the inspector output.
|
|||
|
|
|||
|
When pressing Enter on the top line starting with 'Inspecting' then the
|
|||
|
currently inspected value is reloaded.
|
|||
|
|
|||
|
When pressing Enter on a line starting with <nn> (where nn is the action
|
|||
|
identifier) then nn-th action is called.
|
|||
|
|
|||
|
When pressing Enter on a line starting with [nn] (where nn is the part
|
|||
|
identifier) then nn-th part is inspected.
|
|||
|
|
|||
|
When pressing Enter on the last line starting with [<<] or pressing <Backspace>
|
|||
|
then the inspector is popped up one level, or if this was the topmost level
|
|||
|
then Slimv exits the Inspector.
|
|||
|
Pressing <Leader>q also exits the Inspector.
|
|||
|
|
|||
|
If the object is too big to be fully displayed, this is signaled by the
|
|||
|
[--more--] and [--all---] texts. When pressing Enter on the line containing
|
|||
|
[--more--] then the next part of the inspected object is queried from the
|
|||
|
swank server and displayed in the Inspect buffer.
|
|||
|
When pressing Enter on the [--all---] line then all parts of the inspected
|
|||
|
object are fetched recursively up to the timeout defined by |g:slimv_timeout|.
|
|||
|
Pressing <Esc> stops the recursive fetching process.
|
|||
|
|
|||
|
|
|||
|
If debugger is activated and the cursor is placed on a frame line in the
|
|||
|
Backtrace section, then the Inspect command inspects objects in the given
|
|||
|
frame. It means that it is possible to examine the value of local variables
|
|||
|
within the scope of the given frame ("inspect-in-frame").
|
|||
|
|
|||
|
|
|||
|
-------------------------------------------------------------------------------
|
|||
|
THREADS *swank-threads*
|
|||
|
|
|||
|
The Swank Threads are presented in a separate buffer.
|
|||
|
|
|||
|
When the cursor is placed on a thread-line and <Backspace> or <Leader>k is
|
|||
|
pressed or the Kill-Thread function is selected then the given thread is killed.
|
|||
|
If multiple thread-lines are selected then all marked threads are killed.
|
|||
|
|
|||
|
When the cursor is placed on a thread-line and <Leader>d is pressed or the
|
|||
|
Debug-Thread function is selected then the given thread is interrupted and the
|
|||
|
debugger is invoked.
|
|||
|
|
|||
|
Pressing <Leader>r refreshes the thread list.
|
|||
|
|
|||
|
Pressing <Leader>q exits the Threads buffer.
|
|||
|
|
|||
|
-------------------------------------------------------------------------------
|
|||
|
TRACE *swank-trace*
|
|||
|
|
|||
|
It is possible to tell the SWANK server to trace or untrace functions.
|
|||
|
There are some subtle differences in the trace handling with or
|
|||
|
without SWANK.
|
|||
|
|
|||
|
For the trace handling without SWANK please check options
|
|||
|
|g:slimv_template_trace| and |g:slimv_template_untrace|.
|
|||
|
|
|||
|
When using the SWANK server the Trace command toggles tracing for the
|
|||
|
selected function. In this case there is no Untrace command, but there is
|
|||
|
an Untrace-All command, which completely switches off tracing.
|
|||
|
This complies with the SWANK tracing functionality.
|
|||
|
|
|||
|
|
|||
|
-------------------------------------------------------------------------------
|
|||
|
PROFILER *swank-profile*
|
|||
|
|
|||
|
Slimv supports SLIME's profiler. It is possible to toggle profiling on a
|
|||
|
function, on a set of functions whose name contains a given substring, or
|
|||
|
unprofile all functions. You may query the profiler for the list of profiled
|
|||
|
functions. After the profiling session it is possible to display the profiler
|
|||
|
report. Upon selecting Reset all counters are cleared, so that a new
|
|||
|
profiling session may be started.
|
|||
|
|
|||
|
|
|||
|
-------------------------------------------------------------------------------
|
|||
|
CROSS REFERENCE *swank-xref*
|
|||
|
|
|||
|
SLIME's cross reference functionality can be used to list the functions
|
|||
|
calling a specific function, the list of functions called from a specific
|
|||
|
function, and other variable, macro, etc. references.
|
|||
|
Please note that not all Lisp implementations support the xref functionality.
|
|||
|
|
|||
|
|
|||
|
-------------------------------------------------------------------------------
|
|||
|
QUICKFIX *swank-quickfix*
|
|||
|
|
|||
|
The compiler error messages are fed into Vim's quickfix list, as well as
|
|||
|
printed in the REPL buffer. Enter the :cw command to open the quickfix window.
|
|||
|
Use :cn and :cp to jump to the next and previous error location, use :cr to
|
|||
|
rewind to the first error.
|
|||
|
Consult |quickfix| for details on using the quickfix functionality.
|
|||
|
|
|||
|
|
|||
|
-------------------------------------------------------------------------------
|
|||
|
SWANK FUNCTIONS *swank-functions*
|
|||
|
|
|||
|
This section contains a reference for the Emacs/SLIME/SWANK functions
|
|||
|
currently implemented in the Slimv SWANK client.
|
|||
|
|
|||
|
:emacs-interrupt
|
|||
|
:emacs-pong
|
|||
|
:emacs-return
|
|||
|
:emacs-return-string
|
|||
|
:indentation-update
|
|||
|
swank:compile-file-for-emacs
|
|||
|
swank:compile-string-for-emacs
|
|||
|
swank:connection-info
|
|||
|
swank:create-repl
|
|||
|
swank:debug-nth-thread
|
|||
|
swank:describe-function
|
|||
|
swank:disassemble-form
|
|||
|
swank:eval-string-in-frame
|
|||
|
swank:frame-locals-and-catch-tags
|
|||
|
swank:frame-source-location
|
|||
|
swank:fuzzy-completions
|
|||
|
swank:init-inspector
|
|||
|
swank:inspect-frame-var
|
|||
|
swank:inspect-in-frame
|
|||
|
swank:inspect-nth-part
|
|||
|
swank:inspector-call-nth-action
|
|||
|
swank:inspector-pop
|
|||
|
swank:invoke-nth-restart-for-emacs
|
|||
|
swank:kill-nth-thread
|
|||
|
swank:list-threads
|
|||
|
swank:listener-eval
|
|||
|
swank:load-file
|
|||
|
swank:operator-arglist
|
|||
|
swank:profile-by-substring
|
|||
|
swank:profile-report
|
|||
|
swank:profile-reset
|
|||
|
swank:profiled-functions
|
|||
|
swank:quit-inspector
|
|||
|
swank:quit-lisp
|
|||
|
swank:set-package
|
|||
|
swank:simple-completions
|
|||
|
swank:sldb-abort
|
|||
|
swank:sldb-continue
|
|||
|
swank:sldb-next
|
|||
|
swank:slbb-out
|
|||
|
swank:sldb-step
|
|||
|
swank:swank-macroexpand-1
|
|||
|
swank:swank-macroexpand-all
|
|||
|
swank:swank-require
|
|||
|
swank:swank-toggle-trace
|
|||
|
swank:throw-to-toplevel
|
|||
|
swank:toggle-profile-fdefinition
|
|||
|
swank:undefine-function
|
|||
|
swank:unprofile-all
|
|||
|
swank:untrace-all
|
|||
|
swank:xref
|
|||
|
swank-backend:frame-call
|
|||
|
swank-backend:restart-frame
|
|||
|
|
|||
|
|
|||
|
===============================================================================
|
|||
|
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 SWANK 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 (only in Insert mode).
|
|||
|
When pressing <Up> or <Down> at an empty command prompt then each forms
|
|||
|
previously entered may be recalled from the history. If however some text
|
|||
|
is typed in the command line before pressing <Up> or <Down> then only forms
|
|||
|
beginning with the given searchtext are recalled from the history.
|
|||
|
In other words: text between the prompt and the cursor position is searched
|
|||
|
in command history. Leading whitespaces are ignored both in the searchtext
|
|||
|
and in the matching forms.
|
|||
|
|
|||
|
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.
|
|||
|
|
|||
|
Please note that the behaviour of <CR>, <Up>, <Down> is affected by the value
|
|||
|
of option |g:slimv_repl_simple_eval|.
|
|||
|
|
|||
|
The Lisp REPL can be closed by the 'Quit REPL' command (mapped to <Leader>Q
|
|||
|
by default). This also closes the lisp process running the SWANK server.
|
|||
|
|
|||
|
|
|||
|
===============================================================================
|
|||
|
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. If 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.
|
|||
|
|
|||
|
|
|||
|
===============================================================================
|
|||
|
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.
|
|||
|
|
|||
|
If the SWANK server is not connected, then 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 the following 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.
|
|||
|
c. newest Vim versions contain a specific Clojure syntax script.
|
|||
|
|
|||
|
|
|||
|
*slimv-indentation*
|
|||
|
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 the SWANK client 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.
|
|||
|
|
|||
|
|
|||
|
*slimv-parentheses*
|
|||
|
*slimv-newline*
|
|||
|
3. Parenthesis and newline handling
|
|||
|
|
|||
|
First of all there is paredit mode that is provided by the paredit.vim script
|
|||
|
(also part of Slimv).
|
|||
|
For a detailed introduction on paredit mode please consult the |paredit| help.
|
|||
|
Paredit mode also changes the way newlines are handled, this feature is called
|
|||
|
"electric return", see more on this topic in |g:paredit_electric_return|.
|
|||
|
|
|||
|
If you don't like paredit mode, 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.
|
|||
|
|
|||
|
|
|||
|
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 plugin is actually a SWANK (TCP server for Emacs) client.
|
|||
|
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 is a SWANK client that is able to communicate with a running
|
|||
|
SWANK server, just as it is done by Emacs with SLIME.
|
|||
|
The SWANK output is regularly polled via the socket connection and
|
|||
|
interpreted in the REPL buffer opened in Vim.
|
|||
|
The SWANK client is located in 'swank.py'.
|
|||
|
|
|||
|
- Q: But there was a non-swank functionality built in Slimv, where is it now
|
|||
|
and how can I use it?
|
|||
|
- A: It has been removed since version 0.9.0, because the development focuses
|
|||
|
on providing a fully functional SWANK client, so the non-swank functionality
|
|||
|
was not maintained. If you want the old behaviour then fetch plugin
|
|||
|
version 0.8.6 and set g:slimv_swank to 0 in your vimrc file.
|
|||
|
|
|||
|
- Q: There is no SWANK server opened when I evaluate a form in Vim.
|
|||
|
- A: There may be many reasons for that. Try to run the SWANK server manually,
|
|||
|
Slimv detects if a SWANK server is running and is able to connect it.
|
|||
|
- Check if the port number matches in Slimv and the SWANK server and
|
|||
|
:dont-close is set to 't'.
|
|||
|
- Verify the SWANK server command autodetected by Slimv:
|
|||
|
:echo SlimvSwankCommand()
|
|||
|
- 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_lisp
|
|||
|
:echo g:slimv_swank_cmd (or g:slimv_swank_clojure for Clojure)
|
|||
|
|
|||
|
- Q: The Slimv plugin is not loaded for a .lisp (or .clj, etc) file.
|
|||
|
- A: Filetype plugins should be enabled, check it via the :filetype command.
|
|||
|
If needed, put this in your .vimrc file:
|
|||
|
filetype plugin on
|
|||
|
filetype indent on
|
|||
|
You can check the scripts loaded with the :scriptnames command,
|
|||
|
filetype.vim and ftplugin.vim should be listed in order to load other
|
|||
|
filetype plugins.
|
|||
|
The source buffer filetype should be lisp (or clojure, etc), check it via
|
|||
|
:set ft?
|
|||
|
The Slimv files should be in Vim's runtime path, check the path via
|
|||
|
:set rtp?
|
|||
|
slimv.vim should be in the ftplugin directory in the runtimepath,
|
|||
|
there should be an ftplugin/lisp subdirectory containing slimv-lisp.vim.
|
|||
|
Also make sure that no other ftplugin/lisp.vim is loaded that prevents
|
|||
|
loading of the Slimv scripts.
|
|||
|
|
|||
|
- Q: I experience weird problems when using the plugin, e.g. incorrect key
|
|||
|
mappings, strange error messages, indentation missing, etc.
|
|||
|
- A: You may have an installation problem, try to completely remove then
|
|||
|
reinstall the plugin.
|
|||
|
It may also cause problems when you have the Slimv repository checked
|
|||
|
out directly into vimfiles. Checkout the project to somewhere else and
|
|||
|
copy only the relevant Slimv files to vimfiles.
|
|||
|
Most problems may be spot by enabling Vim's verbose mode and examining
|
|||
|
the resulting logfile. Either run Vim this way: 'vim -V20test.log' or
|
|||
|
enable verbose mode runtime just before the problem happens:
|
|||
|
:set verbosefile=test.log
|
|||
|
:set verbose=20
|
|||
|
It is also possible to save a log of the communication between Slimv and
|
|||
|
the swank server by setting g:swank_log=1 in the .vimrc.
|
|||
|
|
|||
|
- Q: Why is SLIME functionality XYZ missing from Slimv?
|
|||
|
- A: Not all SLIME functions are implemented in the SWANK client, however
|
|||
|
the list of these functions keep growing. Maybe future releases will
|
|||
|
contain it. All feature requests are welcome.
|
|||
|
|
|||
|
- 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.9.13 - Update REPL buffer in the background, no need to bring it into focus.
|
|||
|
- The evaluation result is also displayed in the status line.
|
|||
|
- REPL buffer number is remembered upon creation, no need to find it by name.
|
|||
|
- In Vim 7.4 normal mode cursor movements and winrestview() cannot be
|
|||
|
used in an 'indentexpr'.
|
|||
|
- Concealing should not hide whitespaces in the Inspector buffer.
|
|||
|
- Do not load contribs by default when starting the swank server.
|
|||
|
- Place cursor at prompt position in the REPL buffer upon tab switch.
|
|||
|
- Bugfix: Scheme builtin swank not launching.
|
|||
|
- Fix for pressing Enter on a filename in SLDB when the filename is
|
|||
|
not enclosed in double quotes.
|
|||
|
- Save and restore marks ` and ' in the source buffer while updating REPL.
|
|||
|
- Removed "b:" prefix from function names because latest vim version does not.
|
|||
|
- Raising s-expressions now support [] and {}.
|
|||
|
- Reindent current form after ,< and ,>.
|
|||
|
- Paredit: always leave cursor to opening char's pos after wrapping selection.
|
|||
|
- Paredit: fix possible cursor move problem caused by &indentexpr
|
|||
|
when using the c operator.
|
|||
|
- Added Clozure CL specific code to read environment variable SWANK_PORT.
|
|||
|
- Changed nnoremap to noremap in normal mode movement mappings (, ), [[, ]].
|
|||
|
- R language related fixes.
|
|||
|
- Bugfix: 2 keymaps assumed g:paredit_leader is identical to ','.
|
|||
|
- Fix for paredit 'x' and 'X' when clipboard=unnamed.
|
|||
|
- Paredit: added support for hy.
|
|||
|
- Paredit: use <Leader> instead of mapleader.
|
|||
|
- Paredit: enhanced detection of forms balanced state.
|
|||
|
- Paredit: unescaped square brackets in balance detection.
|
|||
|
- Add support for alternate backspace keybinding.
|
|||
|
- Bugfix: Null character should not be inserted from Python side.
|
|||
|
- Delete contents into the black hole register when exiting the
|
|||
|
Inspect/Threads/Sldb buffer.
|
|||
|
- Added options g:slimv_unmap_cr, g:slimv_unmap_tab, g:slimv_unmap_space.
|
|||
|
- Paredit bugfix: pressing <Tab> (for completion) followed by ')'.
|
|||
|
- Fixed selection handling in EvalRegion and CompileRegion when
|
|||
|
"set clipboard=unnamedplus".
|
|||
|
- Paredit: Remove invalid uses of `call`.
|
|||
|
- Do not destroy clipboard contents in EvalDefun when set clipboard=unnamed.
|
|||
|
- Added missing quotes in the existence check for g:slimv_hs_root.
|
|||
|
- Paredit: fixed problem with 'x' and 'X' commands when erasing
|
|||
|
multi-byte unicode character.
|
|||
|
- Insert mode Ctrl-W does not delete the prompt in the REPL buffer.
|
|||
|
- Replace '\' characters with '/' in the compiled file name returned
|
|||
|
by the swank server.
|
|||
|
- Fix Paredit burfing (by moving parens left or right) when there are
|
|||
|
stings as elements.
|
|||
|
- Bugfix: arglist printing sometimes permanently disabled 'showmode'.
|
|||
|
- Added command 'Quit REPL' mapped to <Leader>Q.
|
|||
|
- Bugfix: wrong number of arguments when calling swank:eval-string-in-frame.
|
|||
|
- Print REPL result string in a new line.
|
|||
|
- Bugfix: MenuMap now correctly sets no keybindings when
|
|||
|
g:slimv_keybindings is other than '1' or '2'.
|
|||
|
- Bugfix: call winrestview() after SlimvCompileDefun.
|
|||
|
- Indentation routine keeps original cursor position.
|
|||
|
- Removed "com" extension from the scheme swank server when loading
|
|||
|
compiled file.
|
|||
|
- Store package in register when SlimvEvalTestDefun() is called
|
|||
|
with an output register.
|
|||
|
- Disable swank completion and arglist display while in :read_string mode.
|
|||
|
- Added Find-Definitions function.
|
|||
|
- Compatibility modifications for Python3.
|
|||
|
- Updated logic for python version selection.
|
|||
|
- Added paredit support for shen language.
|
|||
|
- Use current package in Find-Definition.
|
|||
|
- Fix unicode string length calculation for Python 3.x.
|
|||
|
- Ignore Vim generated tags file.
|
|||
|
- Paredit: Do not skip parens after \\ when searching for pairs.
|
|||
|
- Use :tjump instead of :tag to jump to a definiton upon pressing Ctrl+].
|
|||
|
- Modify Applescript for modern version iTerm.
|
|||
|
- Fixed indentation of 'if' when the swank server does not provide it.
|
|||
|
- Support both old and new style SWANK version strings (YYYY-MM-DD vs X.XX).
|
|||
|
- Updated bundled swank server to slime version 2.19.
|
|||
|
|
|||
|
0.9.12 - Added support for the R language via swank-R (by Philipp Marek).
|
|||
|
- Test form for SlimvEvalTestExp() may wrap the selected s-expression.
|
|||
|
- Added Shift+Tab mapping for cycling backwards in the completion
|
|||
|
popup menu.
|
|||
|
- User defined REPL buffer name may contain some special characters.
|
|||
|
- Pass port number to the swank server in SWANK_PORT environent variable
|
|||
|
on Linux (by Glen Gibb and Federico Churca-Torrusio).
|
|||
|
- Autodetect wx86cl64.exe (Clozure CL) on 64 bit Windows.
|
|||
|
- Added applescript support for starting swank through iTerm
|
|||
|
(by Seth Price).
|
|||
|
- Add Racket support for delimiter '[]' and '{}' (by Jimmy Lu).
|
|||
|
- Bugfix: if the user started a normal mode command prefixed with a count,
|
|||
|
then the count was cleared by the REPL refresh timer.
|
|||
|
- Bugfix: CursorHold trigger ignore mappings to prevent collisions with
|
|||
|
other plugins.
|
|||
|
- Bugfix: preselect function name before starting swank server in the
|
|||
|
Disassemble command.
|
|||
|
- Bugfix: do not append '>' at the prompt if it already ends with it.
|
|||
|
- Bugfix: package name not found when 'noignorecase' was set.
|
|||
|
- Bugfix: Paredit ,< and ,> when 'whichwrap' contains 'h' and 'l'.
|
|||
|
- Bugfix: keep multi-line SLDB abort messages commented all throughout
|
|||
|
(by Federico Churca-Torrusio).
|
|||
|
- Bugfix: prevent call to frame-call on AllegroCL (by Robert Kerr).
|
|||
|
- Bugfix: tag lookup (Ctrl+]) added garbage to symbol name.
|
|||
|
- Bugfix: parsing arrays (and other prefixed forms) returned from the
|
|||
|
swank server.
|
|||
|
- Bugfix: prevent accidental multiple registration of slimv autocommands.
|
|||
|
- Bugfix: disable autocommands for the REPL update, make sure 'updatetime'
|
|||
|
is not too low.
|
|||
|
|
|||
|
0.9.11 - Entering some text in REPL command history, then pressing <Up>/<Down>
|
|||
|
searches for matching lines only.
|
|||
|
- Changed lisp syntax for #\( and #\) to "string".
|
|||
|
- Handle three or more windows layout: assign an id to each slimv
|
|||
|
window, reuse slimv windows.
|
|||
|
- Support for built-in or third party clojure syntax file.
|
|||
|
- Indent with tabs when 'noexpandtab' set after file is loaded.
|
|||
|
- Added options g:paredit_disable_clojure, g:paredit_disable_lisp,
|
|||
|
g:paredit_disable_scheme.
|
|||
|
- Added repeat.vim support to many Paredit modification actions
|
|||
|
(by Logan Campbell).
|
|||
|
- Returning cursor to start position after Paredit " wrap
|
|||
|
(by Logan Campbell).
|
|||
|
- Paredit: do not insert newline if item is selected in completion
|
|||
|
popup menu by pressing <CR>.
|
|||
|
- Paredit: delete into the "*" register when option clipboard=unnamed.
|
|||
|
- Paredit: handle #"" regexp syntax definition also when searching
|
|||
|
for paren matches.
|
|||
|
- Defined <Leader>- mapping (Clear-REPL) for all source buffers.
|
|||
|
- Escape double quotes in text input into (read) in the REPL buffer.
|
|||
|
- Bugfix: indentation after multi-line string.
|
|||
|
- Bugfix: Paredit Wrap accomodates strings (thanks to Colin Jones).
|
|||
|
- Bugfix: fixed error messages when compiling or describing before
|
|||
|
connected to swank server.
|
|||
|
- Bugfix: fixed some indentation issues with multi-line arguments
|
|||
|
involved.
|
|||
|
- Bugfix: fixing buffer confusion when filename contains 'repl'.
|
|||
|
- Bugfix: don't move cursor for Paredit v) when selection mode is
|
|||
|
inclusive (by John Szakmeister).
|
|||
|
- Bugfix: syntax highlighting in clojure REPL for forms containing
|
|||
|
">" in the function name.
|
|||
|
|
|||
|
0.9.10 - Replaced 'readonly' flag with 'nomodifiable' for SLDB, Inspect,
|
|||
|
Threads buffers.
|
|||
|
- Restore window and buffer if SLDB is activated during completion.
|
|||
|
- Allow using Slimv and VimClojure (or other clojure filetype plugin)
|
|||
|
together.
|
|||
|
- Added Restart-Frame command (thanks to Philipp Marek).
|
|||
|
- Added defn- to clojure keywords (thanks to David Soria Parra).
|
|||
|
- Paredit initialization on filetype instead of filename extension.
|
|||
|
- Do not permanently set 'iskeyword' in paredit.vim.
|
|||
|
- Paredit: added '^' macro prefix.
|
|||
|
- Paredit: treat #_(...) type of clojure comments as regular forms.
|
|||
|
- Paredit: handle VimClojure's #"" regexp syntax definition.
|
|||
|
- It is now possible to remove plugin/paredit.vim.
|
|||
|
- Bugfix: fixed missing variable error message.
|
|||
|
- Bugfix: REPL prompt position corruption problems.
|
|||
|
- Bugfix: cursor positioning problems when displaying arglist.
|
|||
|
- Bugfix: paredit 'cc', 'Vc' did not delete line.
|
|||
|
- Bugfix: paredit 'd', 'c', 'vc', 'cW' cursor positioning problems.
|
|||
|
- Bugfix: paredit 'C' extra whitespace and trailing ".
|
|||
|
- Bugfix: reset indent after paredit 'cc'.
|
|||
|
- Bugfix: paredit 'dd', ',>' EOL problem.
|
|||
|
- Bugfix: paredit indentation when 'indentexpr' takes no argument
|
|||
|
(thanks to Tim Pope).
|
|||
|
- Bugfix: keep cursor inside "" when deleting over trailing " via
|
|||
|
paredit 'cW', 'C', etc.
|
|||
|
- Bugfix: use &ft instead of SlimvGetFiletype() in paredit.vim.
|
|||
|
|
|||
|
0.9.9 - Added Paredit functions to Slimv menu (thanks to Conrad Schuler).
|
|||
|
- Inspector: use the same package when pressing [--more--].
|
|||
|
- Inspector: speeding up multi-part object processing.
|
|||
|
- Inspector: save/restore cursor position for previously visited pages.
|
|||
|
- <Leader>rc was doubly mapped, use <Leader>- for REPL Clear.
|
|||
|
- Autodetect ritz-swank.
|
|||
|
- Added Break-on-Exception function for ritz-swank.
|
|||
|
- Added minibuffer operations, this enables [set value] in Inspector.
|
|||
|
- Added smartjumping for Clojure (thanks to dgrnbrg on bitbucket.org).
|
|||
|
- Disable indenting on "set noautoindent".
|
|||
|
- Pass python output to Vim script in variable instead of redirecting
|
|||
|
stdout (hopefully solves 64-bit MacVim problems).
|
|||
|
- Handle [] and {} delimiters in Scheme like in Clojure.
|
|||
|
- Paredit: ignore (, [, or { when preceded by \.
|
|||
|
- Bugfix: arglist on <Space> after pressing 'I' in visual block mode.
|
|||
|
- Bugfix: indentation after multi-line subform.
|
|||
|
- Bugfix: problems with finding function name for arglist.
|
|||
|
- Bugfix: corruption when pasting large text into console Vim.
|
|||
|
- Bugfix: cursor positioning in REPL buffer when virtualedit=all.
|
|||
|
- Bugfix: multi-line entry name parsing in Inspector.
|
|||
|
|
|||
|
0.9.8 - Added autodetection for 'ccl'.
|
|||
|
- Delete empty lines when re-gathering Electric Returns.
|
|||
|
- Inspector: put multiple items in one line (like in Slime).
|
|||
|
- Inspector: highlight selectable parts and actions, hide item id-s.
|
|||
|
- Inspector: display "path" of inspected object.
|
|||
|
- Don't extend s-expression with prefix when macroexpanding.
|
|||
|
- Don't evaluate or compile the REPL buffer.
|
|||
|
- Added device to the path when loading pretty printer patches for SBCL
|
|||
|
(thanks to Andrew Lyon).
|
|||
|
- Added option g:slimv_repl_simple_eval and Electric Return for REPL buffer.
|
|||
|
- Print arglist when pressing Space after closing parens or double quotes,
|
|||
|
also when pressing Enter.
|
|||
|
- Added "Clear REPL" entry to the REPL menu (mapped to <Leader>-).
|
|||
|
- Paredit: special handling of cw, cb, ciw, caw supporting repeat ('.').
|
|||
|
- Do not describe empty symbol.
|
|||
|
- Prefer selecting symbol to the left when cursor is on whitespace.
|
|||
|
- Added "." character to iskeyword for Lisp.
|
|||
|
- Removed "." when selecting symbol for completion for Clojure.
|
|||
|
- Increased fuzzy completion limit.
|
|||
|
- Bugfix: find package/namespace when current form is in a fold.
|
|||
|
- Bugfix: PareditToggle ckecks if buffer was registered for Paredit.
|
|||
|
- Bugfix: Electric Return re-gathering at end of line with no virtualedit.
|
|||
|
- Bugfix: extra character at the end of selection using 'v('
|
|||
|
- Bugfix: garbage upon pressing ')' or Enter in completion popup.
|
|||
|
- Bugfix: Paredit 'x' at end of line when 'whichwrap' includes h,l.
|
|||
|
- Bugfix: arglist sometimes not displayed.
|
|||
|
- Bugfix: Paredit Wrap when line ends in a multibyte character
|
|||
|
(thanks to Sung Pae).
|
|||
|
|
|||
|
0.9.7 - Keep cursor position on expanding [--more--] in the Inspector.
|
|||
|
- Added [--all---] to Inspector for fetching all parts.
|
|||
|
- Don't explicitly check for pythonXX.dll, rely on has('python').
|
|||
|
- Require 'swank-repl' for slime version above 2011-12-04 in case
|
|||
|
contribs are disabled.
|
|||
|
- Identify VimClojure REPL prompt position for paredit (thanks to
|
|||
|
David Greenberg).
|
|||
|
- Paredit: added <leader><Up> for Splice-killing-backward,
|
|||
|
<leader><Down> for Splice-killing-forward, <leader>I for Raise.
|
|||
|
- Paredit: added 'Electric Return' feature and new option
|
|||
|
g:paredit_electric_return.
|
|||
|
- Increased the distance to search for the defun start to 200 lines.
|
|||
|
- Bugfix: positioning the cursor at the end of REPL prompt in insert mode.
|
|||
|
- Bugfix: handle restart/frame number above 999 (thanks to Philipp Marek).
|
|||
|
- Bugfix: form selection when cursor is next to the opening paren.
|
|||
|
- Bugfix: indentation of multi-line strings.
|
|||
|
- Bugfix: indentation of lines with multi-byte characters.
|
|||
|
- Bugfix: cursor movement while indenting.
|
|||
|
|
|||
|
0.9.6 - Perform indenting when <Tab> pressed on whitespace.
|
|||
|
- Added support for newer swank message length counting in bytes.
|
|||
|
- Updated Lisp swank server to version 2012-03-06.
|
|||
|
- Updated Clojure API reference to version 1.3.
|
|||
|
- Identify .cljs files as Clojure type.
|
|||
|
- Enable g:slimv_repl_syntax by default.
|
|||
|
- Restart parenthesis highlighting at each REPL prompt.
|
|||
|
- Scheme: eval buffer and region in a (begin ...) block.
|
|||
|
- Added option g:scheme_builtin_swank for enabling MIT scheme's built-in
|
|||
|
swank server.
|
|||
|
- Added syntax highlight for Scheme quoted symbol.
|
|||
|
- Keep SLDB buffer if swank stays in debugger upon selecting a restart.
|
|||
|
- When reconnecting the swank server wait for disconnection first.
|
|||
|
- Fixed REPL buffer slowdown caused by re-assigning autocommands.
|
|||
|
- Fixed detection of string and comment when no syntax loaded.
|
|||
|
- Fixed Scheme syntax highlight problems in the REPL buffer.
|
|||
|
- Call :frame-source-location and :frame-call only if swank supports them.
|
|||
|
|
|||
|
0.9.5 - Use correct SLDB level when invoking restart.
|
|||
|
- Autodetect tmux session on Linux (thanks to Brett Kosinski).
|
|||
|
- Enable syntax only once to avoid reload of syntax plugins.
|
|||
|
- Added option g:slimv_browser_cmd_suffix.
|
|||
|
- Skip syntax and indent file for disabled filetypes.
|
|||
|
- Check the presence of X on Linux.
|
|||
|
- Indentation fixes: keywords, gap after '(', defsystem, defmacro,
|
|||
|
symbol-macrolet.
|
|||
|
- Use winsaveview()/winrestview() for remembering current view when
|
|||
|
moving around (e.g. searching for package).
|
|||
|
- Find package for arglist and completion.
|
|||
|
- Ignore mapleader when it's <Space>.
|
|||
|
- Print SLDB error description also into the REPL buffer.
|
|||
|
- Evaluate keyword if using Eval-Defun outside of s-expression.
|
|||
|
- Disable unsupported swank features for Scheme.
|
|||
|
- Bugfix: Paredit 'cw' at the end of line.
|
|||
|
- Bugfix: omit REPL prompt from Eval-Defun and Eval-Expression.
|
|||
|
- Bugfix: printing of '\n' and other escaped characters.
|
|||
|
- Bugfix: Paredit delete and put corrupted the "0 register.
|
|||
|
|
|||
|
0.9.4 - Added highlighting of [] and {} for Clojure.
|
|||
|
- Added options to disable Slimv for specific filetypes:
|
|||
|
g:slimv_disable_clojure, g:slimv_disable_lisp, g:slimv_disable_scheme.
|
|||
|
- Added option g:slimv_indent_keylists (thanks to Andrew Smirnoff).
|
|||
|
- Added "set hidden" for safe switching of modified buffers.
|
|||
|
- Added Help to Inspect and Threads buffers.
|
|||
|
- Evaluate register contents if Eval-Region prefixed by ["x].
|
|||
|
- Store form in register if Eval-Defun or Eval-Exp prefixed by ["x].
|
|||
|
- Increased timeout for :create-repl.
|
|||
|
- Stay in REPL buffer if Macroexpand performed in REPL.
|
|||
|
- Search for either (in-ns) or (ns) for Clojure, remove quote character
|
|||
|
from namespace name.
|
|||
|
- Added SlimvEvalTestDefun() and SlimvEvalTestExp() for immediate testing
|
|||
|
of the form(s) being evaluated.
|
|||
|
- Bugfix: various indentation issues (function name is a subform,
|
|||
|
let, let*, do, defpackage, defsystem, and [] for Clojure).
|
|||
|
- Bugfix: Eval-Range problem in visual mode.
|
|||
|
- Bugfix: SLDB parsing problem with newlines in description of restarts.
|
|||
|
- Bugfix: REPL autoscroll incidentally stopping (thanks to Andrew Lyon).
|
|||
|
- Bugfix: added some index out of range checks (thanks to Philipp Marek).
|
|||
|
|
|||
|
0.9.3 - Start Swank server in virtual terminal when running in GNU screen
|
|||
|
on Linux (thanks to Oleg Terenchuk).
|
|||
|
- Reuse a window for slimv also when there are three or more windows open.
|
|||
|
- Don't go to end of REPL buffer if user moved the cursor away from EOF.
|
|||
|
- Use xdg-open for default browser in Linux.
|
|||
|
- Removed option g:slimv_python.
|
|||
|
- Added option g:slimv_repl_max_len for limiting the number of lines in
|
|||
|
the REPL buffer.
|
|||
|
- Added option g:slimv_preferred to choose preferred lisp implementation.
|
|||
|
- Query additional parts of big inspected object upon pressing Enter on
|
|||
|
[--more--].
|
|||
|
- Thread List is displayed and handled in a separate Threads buffer.
|
|||
|
- Bugfix: window navigation problems between source/REPL/SLDB/etc.
|
|||
|
- Bugfix: error messages when Swank server window is closed.
|
|||
|
- Bugfix: return control to vim after starting browser defined by
|
|||
|
g:slimv_browser_cmd.
|
|||
|
- Bugfix: fixed indentation of arguments before &body argument.
|
|||
|
- Bugfix: autocomplete for dotted package/namespace names.
|
|||
|
- Bugfix: indentation of aif.
|
|||
|
|
|||
|
0.9.2 - Added option g:swank_log to enable swank debug log.
|
|||
|
- Added options g:slimv_repl_name, g:slimv_sldb_name, g:slimv_inspect_name.
|
|||
|
- Added option g:slimv_indent_maxlines.
|
|||
|
- Changed Debug-Thread mapping to <leader>dT (g:slimv_keybindings=2)
|
|||
|
due to conflict with Generate-Tags.
|
|||
|
- Label thread ID in thread list (by Philipp Marek).
|
|||
|
- Set balloonexpr for all buffers (thanks to Philipp Marek).
|
|||
|
- Connect swank server when needed instead of printing an error message
|
|||
|
(by Philipp Marek).
|
|||
|
- Set expandtab for lisp and clojure files.
|
|||
|
- Kill-Thread kills all threads in the selected range (by Philipp Marek).
|
|||
|
- Bugfix: added missing parts of Set-Breakpoint introduced in 0.9.1.
|
|||
|
- Bugfix: test source lookup (upon pressing Enter) before testing
|
|||
|
fold toggle in SLDB (by Philipp Marek).
|
|||
|
- Bugfix: indentation of flet, labels, macrolet.
|
|||
|
- Bugfix: Kill-Thread now really kills thread (by Philipp Marek).
|
|||
|
- Bugfix: inspect gensyms in frame (by Philipp Marek).
|
|||
|
|
|||
|
0.9.1 - Improved frame number identification in SLDB buffer.
|
|||
|
- Moved frame source location above frame locals in SLDB.
|
|||
|
- Fold frame source location if more than 2 lines.
|
|||
|
- Inspect-In-Frame: preselect symbol under cursor only in variable lines.
|
|||
|
- Inspect-In-Frame: open Inspector in the other window.
|
|||
|
- Improved XRef file location parsing.
|
|||
|
- Use current paragraph when no range set for Eval-Region and
|
|||
|
Compile-Region.
|
|||
|
- Added option g:slimv_sldb_wrap, do not set wrap for source buffers.
|
|||
|
- Added Set-Breakpoint command mapped to <leader>B (thanks to
|
|||
|
Philipp Marek), changed Profile-By-Substring mapping to <leader>P.
|
|||
|
- Set Lisp keyword characters also in SLDB buffer.
|
|||
|
- Bugfix: error messages at Connect-Server.
|
|||
|
- Bugfix: error message for frame source location without filename.
|
|||
|
- Bugfix: XRef output sometimes cut.
|
|||
|
|
|||
|
0.9.0 - Separate buffers for SLDB and Inspector.
|
|||
|
- Toggle frame information in SLDB buffer by pressing Enter.
|
|||
|
- Look up source when pressing Enter on filename with location in SLDB.
|
|||
|
- Added option g:swank_block_size to override Swank output buffer size
|
|||
|
(thanks to stassats on #lisp and Philipp Marek).
|
|||
|
- Removed old non-swank functionality.
|
|||
|
- Removed option g:slimv_repl_open.
|
|||
|
- Paredit: new mappings [[ and ]] for previous and next defun.
|
|||
|
- Bugfix: various refresh problems (thanks to Philipp Marek).
|
|||
|
- Bugfix: disable debug mode when reconnecting Swank (by Philipp Marek).
|
|||
|
- Bugfix: display multi-line debug condition and frame source location,
|
|||
|
quote characters in compile (by Philipp Marek).
|
|||
|
- Bugfix: use proper SLDB level when invoking restart (by Philipp Marek).
|
|||
|
- Bugfix: restore all lisp keyword characters in iskeyword.
|
|||
|
- Bugfix: indentation of defgeneric.
|
|||
|
- Bugfix: use proper filename and location when compiling defun or region.
|
|||
|
- Bugfix: buffer corruption when re-triggering timer in insert mode.
|
|||
|
- Bugfix: <End> moved cursor to the right edge of screen in REPL buffer
|
|||
|
when virtualmode=all.
|
|||
|
|
|||
|
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.
|
|||
|
- Recognise domain reversed package names in form com.gigamonkeys.pathnames
|
|||
|
(thanks to has2k1).
|
|||
|
- Added curly braces rainbow parenthesis for Clojure.
|
|||
|
- Added paredit handling of curly braces for Clojure.
|
|||
|
- Use SlimvIndent also for Clojure.
|
|||
|
- Handle line number returned in :compilation-result.
|
|||
|
- Bugfix: removed double newline in :read-string (text input).
|
|||
|
- Bugfix: when editing with cw in paredit mode, keep ending whitespaces
|
|||
|
(thanks to Mats Rauhala).
|
|||
|
- Bugfix: compilation error when Swank does not return file name.
|
|||
|
- Bugfix: skip dot character when Swank returns a dotted pair (a . b).
|
|||
|
|
|||
|
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 <20>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.
|
|||
|
- 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.
|
|||
|
- Recent macvim (OS X) 64-bit versions seem to have a Python 2.7 binding problem
|
|||
|
causing segmentation faults when Slimv tries to connect to the Swank server.
|
|||
|
One possible solution is to use the 32-bit version of macvim.
|
|||
|
Another solution is to rebuild macvim with Python binding changed to 2.6.
|
|||
|
|
|||
|
|
|||
|
===============================================================================
|
|||
|
TODO *slimv-todo*
|
|||
|
|
|||
|
- Add missing SLIME functions to the SWANK client.
|
|||
|
- Allow connecting remote SWANK server (outside of localhost) via SSH.
|
|||
|
- Allow multiple REPL buffers in the same Vim session.
|
|||
|
- Allow multiple inferior lisps (e.g. one REPL to CLISP, another one to SBCL).
|
|||
|
|
|||
|
===============================================================================
|
|||
|
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,
|
|||
|
<EFBFBD>mer Sinan Agacan, Tobias Pflug, Chris Cahoon, Mats Rauhala, Oleg Terenchuk,
|
|||
|
Andrew Lyon, Andrew Smirnoff, Brett Kosinski, David Greenberg, Sung Pae,
|
|||
|
Conrad Schuler, Tim Pope, David Soria Parra, Colin Jones, Logan Campbell,
|
|||
|
John Szakmeister, Glen Gibb, Federico Churca-Torrusio, Robert Kerr, Jimmy Lu,
|
|||
|
Seth Price, Philip Xu, Junegunn Choi, and github users elmart, chiku-samugari,
|
|||
|
dusenberrymw, bclube, vi1, FreeBlues, bnoordhuis, bvnierop, mattn, D4ryus,
|
|||
|
jakykong, Prajjwal, Neetless, jurov 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:
|