Initial commit
This commit is contained in:
62
autoload/denote/loclist.vim
Normal file
62
autoload/denote/loclist.vim
Normal file
@@ -0,0 +1,62 @@
|
||||
" Clear location list
|
||||
function denote#loclist#clear()
|
||||
call setloclist(0, [], ' ')
|
||||
endfunction
|
||||
|
||||
" Local helper function to retrieve and format the title.
|
||||
function s:titleFromBuf(buf)
|
||||
let name=denote#meta#noteTitleFromFile(bufname(a:buf))
|
||||
return strchars(name, 1) <= g:denote_loc_title_columns
|
||||
\ ? printf('%' .. g:denote_loc_title_columns .. 's', name)
|
||||
\ : printf('%.' .. (g:denote_loc_title_columns - 1) .. 's', name) .. '…'
|
||||
endfunction
|
||||
|
||||
" Local helper function to truncate text with match at the given column as a
|
||||
" string of at most `width` columns.
|
||||
function s:formatText(text, col, width)
|
||||
return a:col <= a:width
|
||||
\ ? a:text
|
||||
\ : a:text[a:col-float2nr(a:width*0.3):]
|
||||
endfunction
|
||||
|
||||
" This modifies the location list for pretty display.
|
||||
function denote#loclist#textReferences(info)
|
||||
let items=getloclist(a:info.winid)
|
||||
let l=[]
|
||||
let width=winwidth(0) - g:denote_loc_title_columns - 19
|
||||
for idx in range(a:info.start_idx - 1, a:info.end_idx - 1)
|
||||
let e=items[idx]
|
||||
let name=s:titleFromBuf(e.bufnr)
|
||||
let lnum=printf('%5d', e.lnum)
|
||||
let col=printf('%3d', e.col)
|
||||
call add(l, name ..
|
||||
\ ' | ' .. lnum .. ' col ' .. col ..
|
||||
\ ' | ' .. s:formatText(items[idx].text, col, width))
|
||||
endfor
|
||||
return l
|
||||
endfunction
|
||||
|
||||
" This modifies the location list for pretty display.
|
||||
function denote#loclist#textNoteList(info)
|
||||
let items=getloclist(a:info.winid)
|
||||
let l=[]
|
||||
for idx in range(a:info.start_idx - 1, a:info.end_idx - 1)
|
||||
let e=items[idx]
|
||||
let name=s:titleFromBuf(e.bufnr)
|
||||
let ntags=denote#meta#noteTagsFromFile(bufname(e.bufnr))->join()
|
||||
call add(l, name .. ' | ' .. ntags)
|
||||
endfor
|
||||
return l
|
||||
endfunction
|
||||
|
||||
" Load all references to the given note into the location list.
|
||||
function denote#loclist#references(noteId)
|
||||
" Populate location list
|
||||
execute "lvimgrep /\\<denote:" .. a:noteId .. "\\>/gj *"
|
||||
" Adjust location list: set title and specify display function
|
||||
let file=denote#meta#fileFromNoteId(a:noteId)
|
||||
let noteTitle=denote#meta#noteTitleFromFile(file)
|
||||
call setloclist(0, [], 'r',
|
||||
\ {'title': 'References to ' .. noteTitle .. ' (' .. a:noteId .. ')',
|
||||
\ 'quickfixtextfunc' : 'denote#loclist#textReferences'})
|
||||
endfunction
|
||||
Reference in New Issue
Block a user