-imap <Leader>trace import ipdb; ipdb.set_trace()
+let python_highlight_all=1
+
+let g:linelength = 88
+
+setlocal sw=4
+setlocal sts=4
+let &l:textwidth=g:linelength
+setlocal autoindent
+
+setlocal formatoptions+=bl
+
+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