Hi Marc,

On Thu, Feb 12, at 04:34 Marc Chantreux wrote:
> 
> hello world,
> 
> This is my attempt to add neat menus in vim using buffers. It can be
> usefull if you have a script that can save some options in a file.
> 
> the idea is: 
> 
> - call NewBufferAsMenu('Foo') opens a new buffer with some content (r!ls
>   is just for test). Foo will be executed when the <space> key is
>   pressed. 
> - Foo stores the current line in g:boom that will be used for another
>   function.
> 
> My pb is that Foo doesn't carre about the line under the cursor and
> always reply 0. 
> 
> I don't want to debug this script in particular: i just want to have a
> menu that can return a value that can be different to the thing actually
> showed (for exemple: return the id of a label in a database). Don't
> hesitate to tell me another (more vimish?) way.
> 
> regards
> 
> function! NewBufferAsMenu( cb )
>       " Create a new buffer as menu
>       " usage: NewBufferAsMenu('Foo')
>       " hi CursorLine ctermfg=white ctermbg=red
>       unlet! g:CallBack
>       let g:CallBack = function(a:cb)
>       new
>       r!ls " this is just for test
>       " Todo:  resize buffer
>       setlocal nomodifiable
>       setlocal cursorline
>       nnoremap <buffer> <space> :echo g:CallBack()<cr>
> endfunction
> 
> function! Foo()
>       echo 'find '.line('').', add'.getline(line(''))
>       let g:boom=getline(line(''))
>       bd!
> endfunc

I have nothing to say about "if there is another way to do it", but
if you want to make your function work, you just have to add a dot to
the line('') function, where dot means current line.

read more in :help line()

Regards,
Ag.

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

Reply via email to