ghuiber wrote:
I have a similar problem. I use Vim to edit Stata scripts (stata.com). These
scripts are called do-files. They are simple text files, but with a .do
extension, which Stata uses to recognize them as scripts. The Stata command
for executing such a script, say called filename.do, is "do filename".

In Windows, there is a way to launch Stata from Vim to execute either a
do-file, or a set of selected lines in a do-file that is being edited in
Vim. This can be repeated as many times as you want, whether or not Stata is
already running, inside the same instance of Stata. I would like to get
MacVim to do the same.

The Windows solution consists of two parts. The first is a rundo.exe file
written with an AutoIt script as described here --
http://s281191135.onlinehome.us/2008/20080427-stata.html. The second is a
Vim script as described here --
http://www.stata.com/statalist/archive/2006-06/msg00905.html.

This Vim script goes into _gvimrc, and it describes two Vim functions:
RunIt() for making Stata execute a do-file being edited in Vim, and
RunDoLines() for making Stata execute a subset of selected lines of that
file.

For my first attempt at getting this to work in MacVim, I modified the
script as shown below:

" STATA DO-FILE SCRIPT

function RunIt()
   wa
   !open -a StataMP --args do "%:p"
endfunction

:map<F7>  :<C-U>call RunIt()
:imap<F7>  <Esc>:<C-U>call RunIt()

function RunDoLines()
   let selectedLines = getbufline('%', line("'<"), line("'>"))

  if col("'>")<  strlen(getline(line("'>")))
    let selectedLines[-1] = strpart(selectedLines[-1], 0, col("'>"))
  endif
  if col("'<") != 1
    let selectedLines[0] = strpart(selectedLines[0], col("'<")-1)
  endif

  let temp = tempname() . ".do"
    call writefile(selectedLines, temp)

    exec "!open -a StataMP --args do " . temp

    " Delete the temp file after Vim closes
    au VimLeave * silent exe '!rm "'.$TEMP.'\*.do"'
endfunction

:map<F8>  :<C-U>call RunDoLines()
:imap<F8>  <Esc>:<C-U>call RunDoLines()

I'm more curious than otherwise; have you considered using RunVIew with let b:runview_filtcmd="open -a StataMP --args do"?

You may get a new version of RunView from:

   http://mysite.verizon.net/astronaut/vim/index.html#RUNVIEW     (beta)

To install, simply:

   vim RunView.vba.gz
   :so %
   :q

I don't have StataMP to test this out, so the b:runview_filtcmd may or may not be correct for RunView and StatMP. If it is correct, you'd want to have it in .vim/ftplugin/[pick-a-suffix].vim or .vim/ftplugin/[pick-a-suffix]/statmp.vim .

Regards,
Chip Campbell

--
You received this message from the "vim_mac" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

Reply via email to