Hi

I made some functions to use with Python programming. I noticed however
a problem with indentation. The functions are called from insert mode.
An generic example is given below. 

        imap \sf <c-o>:call insert_text()<CR>

        function! insert_text()
                let pos = getpos('.')
                execute "normal! iSome text that can span several lines"
                call setpos(pos)
        endfunction


Now, say I have typed:

        def some_func():
                '''Some func'''
                
                print "Hello World"

                |
        
(| = cursor position)

if I now use the \sf mapping then the cursor moves to:

                print "Hello World"

        |

and the text gets inserted like:

                print "Hello World"

        Some text that can span several lines

In Python I cannot relay on = because it cannot know if I meant to go
out an indentation level or not.

I have mapped the function in this way:

        imap \sf x<c-o>x<c-o>:call insert_text()<CR>
        
which solves the problem as the cursor doesn't jump out, but isn't
there a cleaner way to do this?

Thanks in advance

Preben

Reply via email to