[slimpl] How to help Slimpl

Larry Clapp larry at theclapp.org
Thu Feb 23 07:56:53 CST 2006


Hi, all,

Paolo Amoroso's recent call to arms on the Gardener's list galvanized
me to actually write the How To Help Slimpl post that I've needed to
do for weeks.

As I see it, Slim-Vim needs a few infrastructure pieces to help it
integrate with Vim, some of which this list has discussed already (and
some of which Slim-Vim can't actually use yet).  I've hesitated to
post such a list in part because it requires more knowledge of Vim or
Perl than Lisp, and because so many of them I could do by myself and
just haven't had time or haven't gotten around to yet.  Well, more
fool I.  :)  Here goes:

- An event system of some kind.  The list has discussed this before,
  so several ideas for this exist.  I just want someone to complete
  it, document it, and package it as a stand-alone Vim module.

  Requirements: I would need to register a Vim function that will get
  called periodically.  Ideally the end-user could specify the period.

  At this point, I feel somewhat leery of anything requiring a change
  to Vim or Slime, but perhaps we could offer differing levels of
  performance based on the sophistication of the user, e.g. a Vim-only
  event system that anyone could use, or a patched Vim for more
  advanced/adventurous users.  (QUICK POLL: Does anyone else share my
  concern along these lines, or would everyone on the list feel
  perfectly comfortable patching Vim and recompiling it for
  themselves?)

- An interface to the Hyperspec, ideally something that interfaces
  with Vim's tag system in a sane way.
  - My VILisp has an interface that works for me, but I've gotten
    little feedback about whether it works for other people.  If
    someone would like to play with it on other operating systems and
    browsers and report bugs, that would help me improve it.  See
    http://www.vim.org/scripts/script.php?script_id=221.
  - A script to convert the Hyperspec to a Vim help file.  (We can't
    just re-release the Hyperspec as a Vim help file, so far as I can
    tell; I think that would count as a "derivative work".)  Such a
    script may already exist for general HTML.  Great; point us to it!

- Sytax highlighting for a slimpl debugger window.  (This will have to
  wait until I *have* a slimpl debugger window, but it's waiting in
  the shed.  (I initially wrote "in the wings", but "in the shed"
  works better with the gardening metaphor. :))

- Testing on other operating systems / versions of Perl / versions of
  Vim / versions/implementations of Lisp.  I've done the vast majority
  of my testing on Debian Linux with Vim 6.4, Perl 5.7/5.8, and clisp
  2.33.  For the foreseeable future, I plan to test against "a recent
  CVS snapshot of Slime", which I'll update every so often, so no need
  to test earlier versions of that.

- Documentation on the slime/swank interface.  This needn't mention
  Slimpl at all, of course, and might get us a few warm fuzzies from
  the Slime team.

- A REPL mode for Vim.  I envision this as a mostly-normal editor
  buffer, except that you can't make changes above the last expression
  (if you try to, the editor should automatically copy the current
  expression to the last line and start editing it there), and if you
  press a certain key, it calls a function (which will call Slim-Vim
  to evaluate the expression and return a result).

- Someone to scrutinize Vim's indentation system and a) tell us how to
  tweak it for best results, b) write an indent-expression that
  adjusts indentation properly, and/or c) tell us how to hook Slim-Vim
  into it.
  
  For example, Vim doesn't, by default, indent FLET expressions very
  well:

  (flet ((some-long-function-name ()
				  (expr)))
    ...)

- Write a Vim function that looks at the current cursor position and
  returns true if it's in a Lisp comment.  This would help with
  extracting "the current expression" from the buffer.  Currently I
  use the % operator, which doesn't ignore text in comments, so if you
  have "(foo" or an emoticon in a comment it breaks Slim-Vim (and
  VILisp, for that matter).

  See also ":help %", and search Vim.org for related modules.

That's about all I can think of at the moment.  Thanks for reading
this far.  :)

-- Larry



More information about the slimpl mailing list