diff --git a/.config/vim/general.vim b/.config/vim/general.vim index c5c75e5..17871f4 100644 --- a/.config/vim/general.vim +++ b/.config/vim/general.vim @@ -2,6 +2,8 @@ set nocompatible syntax on " Editing settings +set autoindent +set cindent set expandtab " use spaces set tabstop=4 set shiftwidth=4 diff --git a/.config/vim/init.vim b/.config/vim/init.vim index 68cf1d8..12f455b 100644 --- a/.config/vim/init.vim +++ b/.config/vim/init.vim @@ -2,4 +2,5 @@ source ~/.config/vim/general.vim source ~/.config/vim/paths.vim source ~/.config/vim/netrw.vim source ~/.config/vim/keybindings.vim +source ~/.config/vim/typograf.vim source ~/.config/vim/lsp.vim diff --git a/.config/vim/netrw.vim b/.config/vim/netrw.vim index 13d9257..66ac033 100644 --- a/.config/vim/netrw.vim +++ b/.config/vim/netrw.vim @@ -1,5 +1,9 @@ +function! HideIgnoredByGit(...) + return substitute(substitute(system('git ls-files --other --ignored --exclude-standard --directory'), '\n', ',', 'g'), ',$', '', '') +endfunction + " let g:netrw_keepdir=0 let g:netrw_altv=1 " split window to the right let g:netrw_liststyle=3 " tree style listing -let g:netrw_list_hide=netrw_gitignore#Hide() +let g:netrw_list_hide=HideIgnoredByGit() let g:netrw_winsize = 30 diff --git a/.config/vim/typograf.vim b/.config/vim/typograf.vim new file mode 100644 index 0000000..8323a53 --- /dev/null +++ b/.config/vim/typograf.vim @@ -0,0 +1,46 @@ +function! SendVisualToHttp() range + let url = 'https://typograf.ru/webservice/?chr=UTF-8' + " Получаем выделенный текст + let [line_start, column_start] = getpos("'<")[1:2] + let [line_end, column_end] = getpos("'>")[1:2] + let lines = getline(line_start, line_end) + + " Корректируем для выделения в пределах строки + if line_start == line_end + let text = lines[0][column_start-1 : column_end-1] + else + if column_start > 1 + let lines[0] = lines[0][column_start-1 :] + endif + if column_end < strlen(lines[-1]) + let lines[-1] = lines[-1][ : column_end-1] + endif + let text = join(lines, "\n") + endif + + " URL-кодируем текст + let encoded_text = substitute(system('python3 -c "import urllib.parse; print(urllib.parse.quote(input()))"', text), '\n', '', 'g') + + " Формируем полный URL + let full_url = url . (stridx(url, '?') == -1 ? '?' : '&') . 'text=' . encoded_text + + " Отправляем запрос и получаем ответ + let response = system('curl -s -X POST ' . shellescape(full_url)) + + " Заменяем выделенный текст на ответ + if line_start == line_end + let new_line = lines[0][: column_start-2] . response . lines[0][column_end :] + call setline(line_start, new_line) + else + " Удаляем старые строки + execute line_start . ',' . line_end . 'd' + + " Вставляем ответ (разбиваем по строкам если нужно) + let response_lines = split(response, '\n') + call append(line_start-1, response_lines) + endif + + echo "Текст заменён ответом от сервера" +endfunction + +command! -range -nargs=0 HttpSend ,call SendVisualToHttp()