Skip to content

Commit

Permalink
Close #32 - add signature to :DUddoc
Browse files Browse the repository at this point in the history
  • Loading branch information
idanarye committed Aug 11, 2016
1 parent 1f72863 commit f07b44a
Show file tree
Hide file tree
Showing 2 changed files with 39 additions and 12 deletions.
22 changes: 16 additions & 6 deletions autoload/dutyl.vim
Original file line number Diff line number Diff line change
Expand Up @@ -47,18 +47,28 @@ endfunction
"Exactly what it says on the tin
function! dutyl#displayDDocForSymbolUnderCursor() abort
try
let l:dutyl=dutyl#core#requireFunctions('importPaths','ddocForSymobolInBuffer')
let l:dutyl = dutyl#core#requireFunctions('importPaths', 'signaturesForSymobolInBuffer', 'ddocForSymobolInBuffer')
catch
echoerr 'Unable to display DDoc: '.v:exception
return
endtry
let l:args=dutyl#core#gatherCommonArguments(l:dutyl)
let l:args.symbol=expand('<cword>')
let l:ddocs=l:dutyl.ddocForSymobolInBuffer(l:args)
let l:args = dutyl#core#gatherCommonArguments(l:dutyl)
let l:args.symbol = expand('<cword>')
let l:signatures = l:dutyl.signaturesForSymobolInBuffer(l:args)
let l:ddocs = l:dutyl.ddocForSymobolInBuffer(l:args)

for l:sig in l:signatures
echo "\t" l:sig
endfor

if !empty(l:signatures) && !empty(l:ddocs)
echo ' '
endif

for l:i in range(len(l:ddocs))
if 0<l:i
if 0 < l:i
"Print a vertical line:
echo repeat('_',&columns-1)
echo repeat('_', &columns - 1)
echo ' '
endif
echo l:ddocs[l:i]
Expand Down
29 changes: 23 additions & 6 deletions autoload/dutyl/dcd.vim
Original file line number Diff line number Diff line change
Expand Up @@ -63,17 +63,17 @@ function! s:functions.complete(args) abort
let l:scanResult=s:runDCDToGetAutocompletion(a:args.bufferLines,a:args.bytePos)

"Split the result text to lines.
let resultLines=dutyl#util#splitLines(l:scanResult)
let l:resultLines=dutyl#util#splitLines(l:scanResult)

"if we have less than one line - something wen wrong
if empty(resultLines)
if empty(l:resultLines)
return 'bad...'
endif
"identify completion type via the first line.
if resultLines[0]=='identifiers'
return s:parsePairs(a:args.base,resultLines[1:],'','')
elseif resultLines[0]=='calltips'
return s:parseCalltips(a:args.base,resultLines[1:])
if l:resultLines[0]=='identifiers'
return s:parsePairs(a:args.base,l:resultLines[1:],'','')
elseif l:resultLines[0]=='calltips'
return s:parseCalltips(a:args.base,l:resultLines[1:])
endif
return []
endfunction
Expand Down Expand Up @@ -145,6 +145,23 @@ function! s:functions.declarationsOfSymbol(args) abort
return dutyl#util#unique(l:result)
endfunction

function! s:functions.signaturesForSymobolInBuffer(args) abort
let l:identifierEnd = match(a:args.bufferLines[a:args.lineNumber - 1], '\W', a:args.columnNumber)
let l:replaceLineWith = a:args.bufferLines[a:args.lineNumber - 1][: l:identifierEnd - 1]
let l:bufferLines = a:args.bufferLines[:a:args.lineNumber - 2] + [l:replaceLineWith.'(']
let l:bytePos = a:args.bytePos + l:identifierEnd - a:args.columnNumber + 1

let l:scanResult = s:runDCDToGetAutocompletion(l:bufferLines, l:bytePos)
let l:resultLines = dutyl#util#splitLines(l:scanResult)
if empty(l:resultLines)
return []
elseif 'calltips' != remove(l:resultLines, 0)
return []
endif
call filter(l:resultLines, 'v:val[:4] != "this("')
return l:resultLines
endfunction


"Run DCD to get autocompletion results
function! s:runDCDToGetAutocompletion(bufferLines,bytePos) abort
Expand Down

0 comments on commit f07b44a

Please sign in to comment.