It is working, great!

Happy Vimming!

2017-01-16 15:56 GMT-02:00 Tihomir Mitkov <[email protected]>:

> Hi, Alessandro,
>
> Here is Key_k() function (the other functions are analogous, only
> l:lineToGo and l:columnToGo are set to different values):
>
> function Key_k()
>>     let l:lineToGo = line(".") - 1
>>     let l:columnToGo = col(".")
>>     let b:noteUnderCursor = GetNoteOnLine(l:lineToGo)
>>     call Key_Movement(l:lineToGo, l:columnToGo)
>> endfunction
>
>
> And this is Key_Movement():
>
>
>> function Key_Movement(line, column)
>>     if !empty(b:noteUnderCursor)
>>         if !(b:noteUnderCursor["line"] == a:line)
>>             let l:indentLen = strlen(b:noteUnderCursor["indent"])
>>             " accounting for "| " portion just after whispace indent
>>             let l:indentLen = l:indentLen + 3
>>             if a:column <= l:indentLen
>>                 *call setpos(".", [0, a:line, l:indentLen, 0])*
>>                 return
>>             endif
>>         endif
>>     endif
>>
>     *call setpos(".", [0, a:line, a:column, 0])*
>
> endfunction
>
>
> However, I managed to get it work by mapping the keys without <expr>
> option, like this:
>
> noremap <silent> k :call Key_k()<CR>
>
>
> 2017-01-16 18:11 GMT+02:00 Alessandro Antonello <[email protected]>:
>
>> Hi, Tihomir.
>>
>> Looking at your message I can't see from were the 'a:line' and 'a:column'
>> variables did come from. The way you are calling the set of "Key_*()"
>> functions, you are not passing any information through parameters. So I'm
>> assuming you are discovering these values inside the function. Which is a
>> little bit strange since local variables are prefixed with "l:". "a:"
>> prefix
>> is used for function arguments.
>>
>> Could you send a message with the code that doesn't work? I think it
>> would be
>> more easy to find an issue if we could see the function. Or a bigger
>> snippet.
>>
>>
>> 2017-01-15 10:15 GMT-02:00 Tihomir Mitkov <[email protected]>:
>>
>>> Since vim doesn't support having some lines editable and others not, I
>>> figured it out that I can simulate this by keeping meta data about lines
>>> and remapping all keys to a function which checks cursor position and
>>> decides whether to put the character in question or not. So far so good,
>>> now I need to prohibit the cursor from going to certain locations. I
>>> remapped h,j,k,l keys like this:
>>>
>>> map <expr> h Key_h()
>>> map <expr> j Key_j()
>>> map <expr> k Key_k()
>>> map <expr> l Key_l()
>>>
>>> That also works like a charm. Somewhere in the those functions I call
>>> setpos() like this:
>>>
>>>
>>> call setpos(".", [0, a:line, a:column, 0])
>>>
>>> Unfortunately the only thing this does is to send cursor the first
>>> column at the line it is currently in. Further movement with h,j,k,l does
>>> nothing. From inside the mapped functions Key_h(), Key_j() I return
>>> nothing, since cursor movement is already performed.
>>>
>>> --
>>> --
>>> You received this message from the "vim_use" 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 because you are subscribed to the Google
>>> Groups "vim_use" group.
>>> To unsubscribe from this group and stop receiving emails from it, send
>>> an email to [email protected].
>>> For more options, visit https://groups.google.com/d/optout.
>>>
>>
>> --
>> --
>> You received this message from the "vim_use" 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 because you are subscribed to a topic in the
>> Google Groups "vim_use" group.
>> To unsubscribe from this topic, visit https://groups.google.com/d/to
>> pic/vim_use/fyzeSj9BKNI/unsubscribe.
>> To unsubscribe from this group and all its topics, send an email to
>> [email protected].
>> For more options, visit https://groups.google.com/d/optout.
>>
>
> --
> --
> You received this message from the "vim_use" 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 because you are subscribed to the Google Groups
> "vim_use" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> For more options, visit https://groups.google.com/d/optout.
>

-- 
-- 
You received this message from the "vim_use" 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 because you are subscribed to the Google Groups 
"vim_use" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to