Re: assign current line under cursor to extern program

2007-11-30 Fir de Conversatie Gary Johnson

On 2007-11-30, [EMAIL PROTECTED] [EMAIL PROTECTED] wrote:

 On 2007-11-30, Milan Vancura [EMAIL PROTECTED] wrote:

  :.w !foo.sh
 
 I tried but did not work. Cause the directory was not in the PATH, I
 had to use :.w !./foo.sh
 
 foo.sh: echo $*  a.txt
 
 after the command, a.txt had only one empty line.
 
 This returned an empty line.

I think Milan did not understand your request.

   :.w !foo.sh

will write the current line to the standard input of the command 
following the exclamation point (!), whereas what you are looking 
for is a way to pass the current line as a set of arguments to a 
command.

On the other hand, if foo.sh is something you have written yourself, 
another way to solve this problem would be to write foo.sh to accept 
its data from standard input instead of as command-line arguments.  
Then you _could_ just execute

   :.w !./foo.sh

  No functions are needed. This is vim, not emacs :-)

It's true that functions are not needed here, but there is no reason 
to avoid them, either.

Regards,
Gary


--~--~-~--~~~---~--~~
You received this message from the vim_dev maillist.
For more information, visit http://www.vim.org/maillist.php
-~--~~~~--~~--~--~---



Re: assign current line under cursor to extern program

2007-11-30 Fir de Conversatie [EMAIL PROTECTED]

 exe !foo.sh getline(start)

Works fine. like expected.

Thanks -- jerik
--~--~-~--~~~---~--~~
You received this message from the vim_dev maillist.
For more information, visit http://www.vim.org/maillist.php
-~--~~~~--~~--~--~---



Re: assign current line under cursor to extern program

2007-11-30 Fir de Conversatie Charles E Campbell Jr

[EMAIL PROTECTED] wrote:

Hi,

I want to assign the current line under the cursort to an external
program. Example

Textfile:
1 foo
2 bar
3 calvin
4 hobbes

If the cursor is in line 2, want to assign the line 2 bar to a
script, like foo.sh.

If I want to call a external script from vim I type in the command
modus:

:! foo.sh [and hit enter]

Now I want to assign the line in the file to the script via a function
into the .vimrc.

I know how to get the line, but I dont know how to assign it to the
external script. Or better I dont know how to use the variale to
assign the parameter to the script. Basicly I have this in my .vimrc

function Foo(  )
:let start=line( '.' )
:! foo.sh getline(start) this dont work :(
endfunction

command Foo call Foo(  )

This returns the errormessage:
/bin/bash: -c: line 0: syntax error near unexpected token `('
/bin/bash: -c: line 0: ` foo.sh getline( start )'
  

* the :s aren't needed in your Foo function; you're already in Ex mode.
* some reading is in order; read the help on   exe, filter, system()

Your Foo function got the current line number, then passed
   ! foo.sh getline(start)

to the shell.  You shell didn't know what to do with getline(start), 
which I'm supposing was intended not for the shell to handle but for 
vim.  Consider

  exe !foo.sh '.getline(start).'

or

  call system(foo.sh '.getline(start).')

where I'm quoting the entire string received from getline in single quotes.

Regards,
Chip Campbell


--~--~-~--~~~---~--~~
You received this message from the vim_dev maillist.
For more information, visit http://www.vim.org/maillist.php
-~--~~~~--~~--~--~---



Re: assign current line under cursor to extern program

2007-11-30 Fir de Conversatie [EMAIL PROTECTED]

 :.w !foo.sh

I tried but did not work. Cause the directory was not in the PATH, I
had to use :.w !./foo.sh

foo.sh: echo $*  a.txt

after the command, a.txt had only one empty line.

This returned an empty line.

 all chars are important (their order etc.):

 '.' means current line; see ':help :range'
 w ! is important to write well as it is a big difference between ':w! ' and
   ':w !'

 No functions are needed. This is vim, not emacs :-)

Would be nice if it would work ;)

cheers -- jerik

--~--~-~--~~~---~--~~
You received this message from the vim_dev maillist.
For more information, visit http://www.vim.org/maillist.php
-~--~~~~--~~--~--~---