Skip to content
Merged
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
renamed *_ghost_text to ghost_text_*, moved nvim/vim detection to lla…
…ma#init()
  • Loading branch information
m18coppola committed Oct 22, 2024
commit 85cea66dbbc6f7a8d39f984fb5320e277b0249a0
56 changes: 28 additions & 28 deletions examples/llama.vim
Original file line number Diff line number Diff line change
Expand Up @@ -93,21 +93,6 @@ let s:default_config = {

let g:llama_config = get(g:, 'llama_config', s:default_config)

let s:nvim_ghost_text = exists('*nvim_buf_get_mark')
let s:vim_ghost_text = has('textprop')

if s:vim_ghost_text
let s:hlgroup_hint = 'llama_hl_hint'
let s:hlgroup_info = 'llama_hl_info'

if empty(prop_type_get(s:hlgroup_hint))
call prop_type_add(s:hlgroup_hint, {'highlight': s:hlgroup_hint})
endif
if empty(prop_type_get(s:hlgroup_info))
call prop_type_add(s:hlgroup_info, {'highlight': s:hlgroup_info})
endif
endif

function! s:get_indent(str)
let l:count = 0
for i in range(len(a:str))
Expand Down Expand Up @@ -156,6 +141,21 @@ function! llama#init()

let s:current_job = v:null

let s:ghost_text_nvim = exists('*nvim_buf_get_mark')
let s:ghost_text_vim = has('textprop')

if s:ghost_text_vim
let s:hlgroup_hint = 'llama_hl_hint'
let s:hlgroup_info = 'llama_hl_info'

if empty(prop_type_get(s:hlgroup_hint))
call prop_type_add(s:hlgroup_hint, {'highlight': s:hlgroup_hint})
endif
if empty(prop_type_get(s:hlgroup_info))
call prop_type_add(s:hlgroup_info, {'highlight': s:hlgroup_info})
endif
endif

augroup llama
autocmd!
autocmd InsertEnter * inoremap <expr> <silent> <C-F> llama#fim_inline(v:false)
Expand Down Expand Up @@ -355,9 +355,9 @@ function! s:ring_update()
\ ]

" no callbacks because we don't need to process the response
if s:nvim_ghost_text
if s:ghost_text_nvim
call jobstart(l:curl_command, {})
elseif s:vim_ghost_text
elseif s:ghost_text_vim
call job_start(l:curl_command, {})
endif
endfunction
Expand Down Expand Up @@ -465,21 +465,21 @@ function! llama#fim(is_auto) abort
\ ]

if s:current_job != v:null
if s:nvim_ghost_text
if s:ghost_text_nvim
call jobstop(s:current_job)
elseif s:vim_ghost_text
elseif s:ghost_text_vim
call job_stop(s:current_job)
endif
endif

" send the request asynchronously
if s:nvim_ghost_text
if s:ghost_text_nvim
let s:current_job = jobstart(l:curl_command, {
\ 'on_stdout': function('s:fim_on_stdout', [s:pos_x, s:pos_y, a:is_auto]),
\ 'on_exit': function('s:fim_on_exit'),
\ 'stdout_buffered': v:true
\ })
elseif s:vim_ghost_text
elseif s:ghost_text_vim
let s:current_job = job_start(l:curl_command, {
\ 'out_cb': function('s:fim_on_stdout', [s:pos_x, s:pos_y, a:is_auto]),
\ 'exit_cb': function('s:fim_on_exit')
Expand Down Expand Up @@ -531,10 +531,10 @@ function! llama#fim_cancel()
" clear the virtual text
let l:bufnr = bufnr('%')

if s:nvim_ghost_text
if s:ghost_text_nvim
let l:id_vt_fim = nvim_create_namespace('vt_fim')
call nvim_buf_clear_namespace(l:bufnr, l:id_vt_fim, 0, -1)
elseif s:vim_ghost_text
elseif s:ghost_text_vim
call prop_remove({'type': s:hlgroup_hint, 'all': v:true})
call prop_remove({'type': s:hlgroup_info, 'all': v:true})
endif
Expand All @@ -553,9 +553,9 @@ endfunction

" callback that processes the FIM result from the server and displays the suggestion
function! s:fim_on_stdout(pos_x, pos_y, is_auto, job_id, data, event = v:null)
if s:nvim_ghost_text
if s:ghost_text_nvim
let l:raw = join(a:data, "\n")
elseif s:vim_ghost_text
elseif s:ghost_text_vim
let l:raw = a:data
endif

Expand Down Expand Up @@ -700,7 +700,7 @@ function! s:fim_on_stdout(pos_x, pos_y, is_auto, job_id, data, event = v:null)
" display virtual text with the suggestion
let l:bufnr = bufnr('%')

if s:nvim_ghost_text
if s:ghost_text_nvim
let l:id_vt_fim = nvim_create_namespace('vt_fim')
endif

Expand Down Expand Up @@ -731,7 +731,7 @@ function! s:fim_on_stdout(pos_x, pos_y, is_auto, job_id, data, event = v:null)
endif

" display the suggestion and append the info to the end of the first line
if s:nvim_ghost_text
if s:ghost_text_nvim
call nvim_buf_set_extmark(l:bufnr, l:id_vt_fim, s:pos_y - 1, s:pos_x - 1, {
\ 'virt_text': [[s:content[0], 'llama_hl_hint'], [l:info, 'llama_hl_info']],
\ 'virt_text_win_col': virtcol('.') - 1
Expand All @@ -741,7 +741,7 @@ function! s:fim_on_stdout(pos_x, pos_y, is_auto, job_id, data, event = v:null)
\ 'virt_lines': map(s:content[1:], {idx, val -> [[val, 'llama_hl_hint']]}),
\ 'virt_text_win_col': virtcol('.')
\ })
elseif s:vim_ghost_text
elseif s:ghost_text_vim
let l:new_suffix = s:content[0]
if !empty(l:new_suffix)
call prop_add(s:pos_y, s:pos_x + 1, {
Expand Down
Loading