summaryrefslogtreecommitdiff
path: root/.vim/autoload/omni/common/utils.vim
blob: c880ad21b8d9e366821f15486afd131f21f1eb89 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
" Description: Omni completion utils
" Maintainer:  Vissale NEANG
" Last Change: 26 sept. 2007

" For sort numbers in list
function! omni#common#utils#CompareNumber(i1, i2)
    let num1 = eval(a:i1)
    let num2 = eval(a:i2)
    return num1 == num2 ? 0 : num1 > num2 ? 1 : -1
endfunc

" TagList function calling the vim taglist() with try catch
" The only throwed exception is 'TagList:UserInterrupt'
" We also force the noignorecase option to avoid linear search when calling
" taglist()
function! omni#common#utils#TagList(szTagQuery)
    let result = []
    let bUserIgnoreCase = &ignorecase
    " Forcing noignorecase search => binary search can be used in taglist()
    " if tags in the tag file are sorted
    if bUserIgnoreCase
        set noignorecase
    endif
    try
        let result = taglist(a:szTagQuery)
    catch /^Vim:Interrupt$/
        " Restoring user's setting
        if bUserIgnoreCase
            set ignorecase
        endif
        throw 'TagList:UserInterrupt'
    catch
        "Note: it seems that ctags can generate corrupted files, in this case
        "taglist() will fail to read the tagfile and an exception from
        "has_add() is thrown
    endtry

    " Restoring user's setting
    if bUserIgnoreCase
        set ignorecase
    endif
    return result
endfunc

" Same as TagList but don't throw exception
function! omni#common#utils#TagListNoThrow(szTagQuery)
    let result = []
    try
        let result = omni#common#utils#TagList(a:szTagQuery)
    catch
    endtry
    return result
endfunc

" Get the word under the cursor
function! omni#common#utils#GetWordUnderCursor()
    let szLine = getline('.')
    let startPos = getpos('.')[2]-1
    let startPos = (startPos < 0)? 0 : startPos
    if szLine[startPos] =~ '\w'
        let startPos = searchpos('\<\w\+', 'cbn', line('.'))[1] - 1
    endif

    let startPos = (startPos < 0)? 0 : startPos
    let szResult = matchstr(szLine, '\w\+', startPos)
    return szResult
endfunc
7&follow=1'>Update copyrightRené 'Necoro' Neumann1-1/+1 2011-02-07Instead of overloading the normal 'render' function, add a 'render_utf8' methodRené 'Necoro' Neumann3-6/+3 2011-02-07missed oneRené 'Necoro' Neumann1-1/+1 2011-02-07unicode aware formRené 'Necoro' Neumann1-1/+10 2011-02-07Use Unicode as expectedRené 'Necoro' Neumann1-2/+2 2010-08-26but not editRené 'Necoro' Neumann1-1/+8 2010-08-26Make add redirect to addRené 'Necoro' Neumann1-1/+1 2010-07-27Add datepicker to add/editRené 'Necoro' Neumann3-3/+23 2010-07-27Fix sizes of datepickerRené 'Necoro' Neumann1-3/+3 2010-07-27Add jQuery UI -- DatepickerRené 'Necoro' Neumann17-0/+1168 2010-07-27Add category manipulation supportRené 'Necoro' Neumann10-6/+85 2010-07-26Konstante KostenRené 'Necoro' Neumann1-1/+1 2010-07-26Added link to edit the constant stuffRené 'Necoro' Neumann1-1/+1 2010-07-26Added addition and modification of constant stuffRené 'Necoro' Neumann3-8/+106 2010-07-05Only show right nav arrow, if the following month is not in the futureRené 'Necoro' Neumann2-14/+20 2010-07-05Add month navigationRené 'Necoro' Neumann6-5/+35 2010-07-05Add iconRené 'Necoro' Neumann2-1/+2 2010-07-05change cursorRené 'Necoro' Neumann1-0/+5 2010-07-05Some restructuringRené 'Necoro' Neumann3-28/+45 2010-07-05Closed/Open imagesRené 'Necoro' Neumann4-0/+146 2010-05-25Move page templates into their own folderRené 'Necoro' Neumann5-5/+7 2010-05-25Added the ability to edit an expenseRené 'Necoro' Neumann3-9/+34 2010-05-12FixRené 'Necoro' Neumann1-2/+2 2010-05-12Show more detailsRené 'Necoro' Neumann4-19/+42 2010-05-12Create new form each timeRené 'Necoro' Neumann1-24/+26 2010-05-10Fix redirect in AddRené 'Necoro' Neumann1-1/+1 2010-05-10Added the 'add expense' stuffRené 'Necoro' Neumann4-3/+69