imap <Leader>t import ipdb; ipdb.set_trace() # noqa:E402,E702 # fmt: skip
imap <Leader>m if __name__ == "__main__":<CR>import sys<CR>sys.exit()<ESC>i
+
+if executable('ruffxx')
+ au User lsp_setup call lsp#register_server({
+ \ 'name': 'ruff',
+ \ 'cmd': {server_info->['ruff', 'server']},
+ \ 'allowlist': ['python'],
+ \ 'workspace_config': {},
+ \ })
+endif
+
+if executable('pylsp')
+ au User lsp_setup call lsp#register_server({
+ \ 'name': 'pylsp',
+ \ 'cmd': {server_info->['pylsp']},
+ \ 'allowlist': ['python'],
+ \ 'workspace_config': {},
+ \ })
+endif
+
+let b:ale_linters = ["mypy", "vim-lsp", "ruff"]
+let b:ale_fixers = [
+ \ "add_blank_lines_for_python_control_statements",
+ \ "ruff",
+ \ "ruff_format"
+ \]
+
+let g:ale_echo_msg_format = '[%linter%] %s [%severity%]'
+
+imap <silent> <F7> :ALELint<CR>
+nmap <silent> <F7> :ALELint<CR>
+imap <silent> <F8> :ALEFix<CR>
+nmap <silent> <F8> :ALEFix<CR>
+
+nmap <silent> <C-k> <Plug>(ale_previous_wrap)
+nmap <silent> <C-j> <Plug>(ale_next_wrap)
+
+inoremap <expr> <Tab> pumvisible() ? "\<C-n>" : "\<Tab>"
+inoremap <expr> <S-Tab> pumvisible() ? "\<C-p>" : "\<S-Tab>"
+inoremap <expr> <cr> pumvisible() ? asyncomplete#close_popup() : "\<cr>"
+
+let g:asyncomplete_auto_popup = 1
+
+imap <c-@> <Plug>(asyncomplete_force_refresh)
+
+setlocal scl=no
" sidescrolloff
" minimal number of columns to keep left and right of the cursor
" set siso=0
-set siso=0
+set siso=1
" display
" include "lastline" to show the last line even if it doesn't fit
" completeopt
" whether to use a popup menu for Insert mode completion
" set cot=menu,preview
+set cot=menu,noinsert,popup,preview,fuzzy
" pumheight
" maximum height of the popup menu
iab :thumbsup: 👍️
+let g:ale_completion_enabled = 0
+let g:ale_fixers = { '*': [ "remove_trailing_lines", "trim_whitespace" ] }
+let g:ale_sign_error = '>>'
+let g:ale_sign_warning = '--'
+let g:ale_set_loclist = 1
+let g:ale_open_list = 1
+let g:ale_virtualtext_cursor = 'current'
+let g:ale_floating_window_border = repeat([''], 8)
+
try
execute pathogen#infect()
catch