In case anybody is curious, and for the sake of thorough
documentation: I found a solution, with help from the Statalist.
Rather than the Vim plugin Chip Campbell suggested, I ended up leaving
it to the OS. Two very minimalistic Vim functions call a bash script
each. This does the job.

The whole conversation can be traced back from here:
http://www.stata.com/statalist/archive/2011-09/msg00556.html. The
entire code is shown as well.

Best,
Gabi


On Fri, Aug 5, 2011 at 11:09 AM, Charles Campbell
<charles.e.campb...@nasa.gov> wrote:
> 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
>

-- 
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