From: Stefano Zacchiroli <zack@bononia.it>
To: caml-list@inria.fr
Subject: [Caml-list] vim - switching between .ml and .mli
Date: Mon, 17 Nov 2003 17:40:12 +0100 [thread overview]
Message-ID: <20031117164012.GC2553@fistandantilus.takhisis.org> (raw)
In-Reply-To: <20031117113030.GA2649@localhost>
On Mon, Nov 17, 2003 at 03:30:30AM -0800, Issac Trotts wrote:
> For those who use Vim and have the matchit.vim plugin installed,
> here are a few lines to put in $HOME/.vim/ftplugin/ocaml.vim :
Thanks! This is what I offer in exchange: support for switching from .ml
to .mli with ",s" and ",S" (the latter split a new window). It requires
vim-python in order to remember the previous position in a file:
" switching between interfaces (.mli) and implementations (.ml)
if !exists("g:did_ocaml_switch") && has("python")
let g:did_ocaml_switch = 1
map ,s :call OCaml_switch_switch()<CR>
map ,S :call OCaml_switch_switch_new()<CR>
fun OCaml_switch_pynit()
python << EOF
import vim
positions = {}
def ocaml_save_position():
positions[vim.current.buffer.name] = vim.current.window.cursor
def ocaml_restore_position():
try:
vim.current.window.cursor = positions[vim.current.buffer.name]
except KeyError:
pass
EOF
endfun
call OCaml_switch_pynit()
fun OCaml_switch_switch()
if (match(bufname(""), "\\.mli$") >= 0)
python ocaml_save_position()
exec "edit " . substitute(bufname(""), "\\.mli$", ".ml", "")
python ocaml_restore_position()
elseif (match(bufname(""), "\\.ml$") >= 0)
python ocaml_save_position()
exec "edit " . bufname("") . "i"
python ocaml_restore_position()
endif
endfun
fun OCaml_switch_switch_new() " as above but in a new window
if (match(bufname(""), "\\.mli$") >= 0)
python ocaml_save_position()
exec "new " . substitute(bufname(""), "\\.mli$", ".ml", "")
python ocaml_restore_position()
elseif (match(bufname(""), "\\.ml$") >= 0)
python ocaml_save_position()
exec "new " . bufname("") . "i"
python ocaml_restore_position()
endif
endfun
endif
--
^Stefano Zacchiroli -- Master in Computer Science @ Uni. Bologna, Italy$
^zack@{cs.unibo.it,debian.org,bononia.it} -- http://www.bononia.it/zack$
^Frequentando il mio maestro mi ero reso conto [.] che la logica poteva$
^servire a molto a condizione di entrarci dentro e poi di uscirne -Adso$
-------------------
To unsubscribe, mail caml-list-request@inria.fr Archives: http://caml.inria.fr
Bug reports: http://caml.inria.fr/bin/caml-bugs FAQ: http://caml.inria.fr/FAQ/
Beginner's list: http://groups.yahoo.com/group/ocaml_beginners
prev parent reply other threads:[~2003-11-17 16:40 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2003-11-17 11:30 [Caml-list] Jumping to matching keywords with % in Vim Issac Trotts
2003-11-17 16:15 ` Aleksey Nogin
2003-11-17 16:48 ` Issac Trotts
2003-11-17 16:40 ` Stefano Zacchiroli [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20031117164012.GC2553@fistandantilus.takhisis.org \
--to=zack@bononia.it \
--cc=caml-list@inria.fr \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).