mirror of
https://github.com/SpaceVim/SpaceVim.git
synced 2025-02-02 22:40:06 +08:00
fix(vimchat): fix cursor highlight position
This commit is contained in:
parent
d2c65f8038
commit
49dcb6a7f2
@ -25,7 +25,7 @@ function! chat#gitter#enter_room(room) abort
|
||||
return 0
|
||||
endif
|
||||
call s:fetch(roomid)
|
||||
let cmd = printf('curl -s -N -H "Accept: application/json" -H "Authorization: Bearer %s" "https://stream.gitter.im/v1/rooms/%s/chatMessages"',g:chat_gitter_token , roomid)
|
||||
let cmd = printf('curl -s --show-error --fail -N -H "Accept: application/json" -H "Authorization: Bearer %s" "https://stream.gitter.im/v1/rooms/%s/chatMessages"',g:chat_gitter_token , roomid)
|
||||
let jobid = s:JOB.start(cmd, {
|
||||
\ 'on_stdout' : function('s:gitter_stdout'),
|
||||
\ 'on_stderr' : function('s:gitter_stderr'),
|
||||
@ -113,7 +113,7 @@ let s:fetch_response = {}
|
||||
function! s:fetch(roomid) abort
|
||||
let room = s:roomid_to_room(a:roomid)
|
||||
if !has_key(s:fetch_response, room)
|
||||
let cmd = printf( 'curl -s -H "Accept: application/json" -H "Authorization: Bearer %s" "https://api.gitter.im/v1/rooms/%s/chatMessages?limit=50"', g:chat_gitter_token, a:roomid)
|
||||
let cmd = printf( 'curl -s --show-error --fail -H "Accept: application/json" -H "Authorization: Bearer %s" "https://api.gitter.im/v1/rooms/%s/chatMessages?limit=50"', g:chat_gitter_token, a:roomid)
|
||||
let s:fetch_response[room] = {
|
||||
\ 'response' : [],
|
||||
\ 'jobid' : s:JOB.start(cmd,
|
||||
@ -208,7 +208,7 @@ function! s:get_all_channels() abort
|
||||
\ 'msg' : 'listing gitter channels',
|
||||
\ 'time': strftime("%Y-%m-%d %H:%M"),
|
||||
\ })
|
||||
let cmd = printf('curl -s -H "Accept: application/json" -H "Authorization: Bearer %s" "https://api.gitter.im/v1/rooms"', g:chat_gitter_token)
|
||||
let cmd = printf('curl -s --show-error --fail -H "Accept: application/json" -H "Authorization: Bearer %s" "https://api.gitter.im/v1/rooms"', g:chat_gitter_token)
|
||||
let s:list_all_channels_jobid = s:JOB.start(cmd, {
|
||||
\ 'on_stdout' : function('s:get_all_channels_stdout'),
|
||||
\ 'on_stderr' : function('s:get_all_channels_stderr'),
|
||||
|
@ -119,7 +119,7 @@ function! chat#windows#open() abort
|
||||
elseif char ==# "\<LeftRelease>" || char ==# "\x80\xfd-"
|
||||
let mouse_left_release_lnum = v:mouse_lnum
|
||||
let mouse_left_relsese_col = getmousepos().column
|
||||
let selected_text = s:high_pso(mouse_left_lnum, mouse_left_col, mouse_left_release_lnum, mouse_left_relsese_col)
|
||||
let selected_text = s:high_pos(mouse_left_lnum, mouse_left_col, mouse_left_release_lnum, mouse_left_relsese_col)
|
||||
elseif char ==# "\<C-c>"
|
||||
" copy select text
|
||||
if exists('selected_text') && !empty(selected_text)
|
||||
@ -267,11 +267,31 @@ function! s:disable_r_mode(timer) abort
|
||||
let s:c_r_mode = 0
|
||||
endfunction
|
||||
|
||||
function! s:high_pso(l, c, rl, rc) abort
|
||||
function! s:has_conceal(l) abort
|
||||
return getline(a:l) =~# '**`[^`]*`\*\*'
|
||||
endfunction
|
||||
|
||||
function! s:get_really_col(c, l) abort
|
||||
let [str, conceal_begin, conceal_end] = matchstrpos(getline(a:l), '**`[^`]*`\*\*')
|
||||
if a:c > conceal_end - 6
|
||||
return a:c + 6
|
||||
elseif a:c > conceal_begin
|
||||
return a:c + 3
|
||||
endif
|
||||
return a:c
|
||||
endfunction
|
||||
|
||||
function! s:high_pos(l, c, rl, rc) abort
|
||||
let l = a:l
|
||||
let rl = a:rl
|
||||
let c = strlen(strpart(getline(l), 0, a:c)) + 1
|
||||
if s:has_conceal(l)
|
||||
let c = s:get_really_col(c, l)
|
||||
endif
|
||||
let rl = a:rl
|
||||
let rc = strlen(strpart(getline(rl), 0, a:rc)) + 1
|
||||
if s:has_conceal(rl)
|
||||
let rc = s:get_really_col(rc, rl)
|
||||
endif
|
||||
call clearmatches()
|
||||
let selected_text = []
|
||||
if l ==# rl && c == rc
|
||||
|
Loading…
Reference in New Issue
Block a user