diff --git a/vim/vim.xdg.symlink/vimrc b/vim/vim.xdg.symlink/vimrc index c64e409..2f8d55d 100644 --- a/vim/vim.xdg.symlink/vimrc +++ b/vim/vim.xdg.symlink/vimrc @@ -1,4 +1,5 @@ -" vim: set ft=vim +vim9script + set nocompatible set termguicolors @@ -6,9 +7,9 @@ set termguicolors set encoding=utf-8 scriptencoding utf-8 -" Plugins +# Plugins -call plug#begin() +plug#begin() Plug 'vimpostor/vim-lumen' @@ -32,65 +33,65 @@ Plug 'elixir-editors/vim-elixir' Plug 'bullets-vim/bullets.vim' -call plug#end() +plug#end() -" Language config -let g:pandoc#syntax#conceal#use = 0 -let g:r_indent_align_args = 0 +# Language config +g:pandoc#syntax#conceal#use = 0 +g:r_indent_align_args = 0 -" Syntax and colors and things +# Syntax and colors and things filetype plugin indent on syntax on -" Disable Swapping +# Disable Swapping set nobackup nowritebackup noswapfile -" Statusline +# Statusline set laststatus=2 set statusline=—[%n\:\ %t]—%=—%y—[%l/%L,\ %c]—%m%r— set fillchars=stl:—,eob:\ set fillchars+=stlnc:— set fillchars+=vert:\| -" Hide intro message +# Hide intro message set shortmess=I set nowrap -" Relative numbering with absolute anchor +# Relative numbering with absolute anchor set number relativenumber set signcolumn=number set cursorline cursorlineopt=both -" Keep buffers open in memory when not visible +# Keep buffers open in memory when not visible set hidden -" Keep buffers up to date with external changes +# Keep buffers up to date with external changes set autoread set backspace=indent,eol,start -" Show invisibles +# Show invisibles set list set listchars=tab:‣\ ,trail:·,extends:◣,precedes:◢,nbsp:○ -" Disable folding +# Disable folding set foldmethod=manual set nofoldenable -" Search fixes +# Search fixes set ignorecase smartcase incsearch hlsearch gdefault -" Show incomplete command-based changes in realtime +# Show incomplete command-based changes in realtime set showcmd -" And breathe... +# And breathe... set scrolloff=5 -" I think left to write, top to bottom +# I think left to write, top to bottom set splitright splitbelow -" Basic whitespace +# Basic whitespace set nojoinspaces set expandtab set shiftwidth=4 @@ -98,36 +99,36 @@ set softtabstop=4 set textwidth=79 set autoindent -" Show me when my lines are too long -" -" I wish to limit my lines to 80 characters long. However, Vim creates -" the n+1th character when you have n characters in a line. Hence, when -" my line is 80 characters long, I see the red line. So, this is set to -" 82, meaning that I only see the line when my lines actually are too long. -call matchadd('ColorColumn', '\%82v', 100) +# Show me when my lines are too long +# +# I wish to limit my lines to 80 characters long. However, Vim creates +# the n+1th character when you have n characters in a line. Hence, when +# my line is 80 characters long, I see the red line. So, this is set to +# 82, meaning that I only see the line when my lines actually are too long. +matchadd('ColorColumn', '\%82v', 100) -" Mappings etc -let mapleader = "\" -let localmapleader = "\\" +# Mappings etc +g:mapleader = "\" +g:localmapleader = "\\" -" Use jk to escape back to normal +# Use jk to escape back to normal inoremap jk inoremap -" Hide search highlights +# Hide search highlights nnoremap :noh nnoremap / :noh -" Switch between recent buffers +# Switch between recent buffers nnoremap -" Fix shift-semicolon to write +# Fix shift-semicolon to write noremap ; : -" Make it easier to use registers +# Make it easier to use registers nnoremap ' " -" I should map these to something useful +# I should map these to something useful inoremap inoremap inoremap @@ -137,19 +138,19 @@ noremap noremap noremap -" Case control +# Case control nnoremap u viwU nnoremap l viwu -" Moving lines around +# Moving lines around nnoremap - ddp== nnoremap _ :-1dpk== -" Quick access vimrc +# Quick access vimrc nnoremap ev :tabedit $MYVIMRC nnoremap es :so $MYVIMRC -" Pane management +# Pane management nnoremap nnoremap nnoremap @@ -159,29 +160,29 @@ inoremap inoremap inoremap -" I'm getting back into visual mode -" And I'm cycling the modes +# I'm getting back into visual mode +# And I'm cycling the modes nnoremap v V nnoremap V nnoremap v -" FZF +# FZF nnoremap o :Files nnoremap b :Buffers nnoremap f :Rg nnoremap g :RG -let g:fzf_vim = {} -let g:fzf_vim.preview_window = [] +g:fzf_vim = {} +g:fzf_vim.preview_window = [] -function! s:build_quickfix_list(lines) - call setqflist(map(copy(a:lines), '{ "filename": v:val, "lnum": 1 }')) +def BuildQuickfixList(lines: list) + setqflist(map(copy(a:lines), '{ "filename": v:val, "lnum": 1 }')) copen cc -endfunction +enddef -let g:fzf_action = { - \ 'ctrl-q': function('s:build_quickfix_list'), +g:fzf_action = { + \ 'ctrl-q': function('BuildQuickfixList'), \ 'ctrl-t': 'tab split', \ 'ctrl-x': 'split', \ 'ctrl-v': 'vsplit' } @@ -192,52 +193,68 @@ augroup FZF autocmd FileType fzf tmap jk augroup END -" Focus mode +# Focus mode -nnoremap z :tabe % +g:is_zoomed = false -" Git blame -nnoremap a :Git blame +def Zoom() + if g:is_zoomed + g:is_zoomed = false + wincmd = + else + g:is_zoomed = true + wincmd _ + wincmd | + endif +enddef -" Make directories in a filename if they don't exist. +# Git blame +nnoremap a Zoom():Git blame -function! EnsureDirExists () - let required_dir = expand("%:h") +# Make directories in a filename if they don't exist. + +def EnsureDirExists() + var required_dir = expand("%:h") if !isdirectory(required_dir) try - call mkdir( required_dir, 'p' ) + mkdir(required_dir, 'p') catch echom "Could not create directory" exit endtry endif -endfunction +enddef augroup AutoMkdir autocmd! - autocmd BufNewFile * :call EnsureDirExists() + autocmd BufNewFile * EnsureDirExists() augroup END -" Use tab for UltiSnips expansion, navigation, and -let g:ulti_expand_or_jump_res = 0 -let g:UltiSnipsExpandOrJumpTrigger = '' +# Use tab for UltiSnips expansion, navigation, and +g:ulti_expand_or_jump_res = 0 +g:UltiSnipsExpandOrJumpTrigger = '' -function! Ulti_ExpandOrJump_and_getRes() - call UltiSnips#ExpandSnippetOrJump() - return g:ulti_expand_or_jump_res -endfunction +export def Ulti_ExpandOrJump_and_getRes(default: string): string + UltiSnips#ExpandSnippetOrJump() -inoremap =(Ulti_ExpandOrJump_and_getRes() > 0)?"":"\" + if g:ulti_expand_or_jump_res == 0 + return default + else + return "" + endif +enddef -" Notes config +inoremap =Ulti_ExpandOrJump_and_getRes("\") -let g:markdown_fenced_languages = ['r', 'elixir', 'python', 'html', 'rust'] -let g:pandoc#syntax#codeblocks#embeds#langs = ['r', 'elixir', 'python', 'html', 'rust'] +# Notes config -" Enable bullets.vim in Quarto files -let g:bullets_enabled_file_types = ['markdown', 'text', 'gitcommit', 'quarto'] -" Disable the bullet changing on indents (for now) -let g:bullets_outline_levels = ['num', 'std-'] +g:markdown_fenced_languages = ['r', 'elixir', 'python', 'html', 'rust'] +g:pandoc#syntax#codeblocks#embeds#langs = ['r', 'elixir', 'python', 'html', 'rust'] + +# Enable bullets.vim in Quarto files +g:bullets_enabled_file_types = ['markdown', 'text', 'gitcommit', 'quarto'] +# Disable the bullet changing on indents (for now) +g:bullets_outline_levels = ['num', 'std-'] def EditCodeBlock() var b = bufnr("%") @@ -325,26 +342,33 @@ enddef augroup CodeBlocks autocmd! - autocmd BufWriteCmd *.codeblock call SaveCodeBlock() + autocmd BufWriteCmd *.codeblock SaveCodeBlock() augroup END augroup Notes autocmd Filetype quarto setl tw=80 fo+=croqt ts=4 sts=4 sw=4 comments=n:> - " Surround mappings for Quarto callouts - autocmd FileType quarto let b:surround_110 = "::: {.callout-note}\n\r\n:::" - autocmd FileType quarto let b:surround_116 = "::: {.callout-tip}\n\r\n:::" - autocmd FileType quarto let b:surround_119 = "::: {.callout-warning}\n\r\n:::" - autocmd FileType quarto let b:surround_105 = "::: {.callout-important}\n\r\n:::" + # Surround mappings for Quarto callouts + autocmd FileType quarto b:surround_110 = "::: {.callout-note}\n\r\n:::" + autocmd FileType quarto b:surround_116 = "::: {.callout-tip}\n\r\n:::" + autocmd FileType quarto b:surround_119 = "::: {.callout-warning}\n\r\n:::" + autocmd FileType quarto b:surround_105 = "::: {.callout-important}\n\r\n:::" - autocmd FileType quarto imap =(Ulti_ExpandOrJump_and_getRes() > 0)?"":"\" + # autocmd FileType quarto imap =Ulti_ExpandOrJump_and_getRes("\") + autocmd FileType quarto imap Ulti_ExpandOrJump_and_getRes("\") autocmd FileType quarto imap autocmd FileType quarto onoremap cb :execute "normal! /^```\rk$ms?^```\rj:noh\rv`s" - autocmd FileType quarto nnoremap ec :call EditCodeBlock() - autocmd FileType quarto inoremap :call EditCodeBlock() + autocmd FileType quarto nnoremap ec EditCodeBlock() + autocmd FileType quarto inoremap EditCodeBlock() augroup END +# Daily notes +def OpenDailyNote(offset: number) + +enddef + + def StartUp() if @% == "" edit ~/tmp/testing.qmd @@ -353,16 +377,16 @@ enddef augroup StartUp autocmd! - autocmd VimEnter * ++nested call StartUp() + autocmd VimEnter * ++nested StartUp() augroup END -" LSP and other completion -let g:ale_completion_enabled = 1 -let g:ale_elixir_elixir_ls_release = '/opt/homebrew/opt/elixir-ls/libexec' -let g:ale_fix_on_save = 1 +# LSP and other completion +g:ale_completion_enabled = 1 +g:ale_elixir_elixir_ls_release = '/opt/homebrew/opt/elixir-ls/libexec' +g:ale_fix_on_save = 1 -let g:ale_fixers = { +g:ale_fixers = { \ 'css': ['prettier'], \ 'elixir': ['mix_format'], \ 'html': ['prettier'], @@ -374,7 +398,7 @@ let g:ale_fixers = { \ 'yaml': ['prettier'], \ } -let g:ale_linters = { +g:ale_linters = { \ 'elixir': ['elixir-ls'], \ 'javascript': ['eslint'], \ } @@ -390,24 +414,24 @@ nnoremap dx :ALEGoToDefinition -split nnoremap dv :ALEGoToDefinition -vsplit nnoremap dt :ALEGoToDefinition -tab -" File Running +# File Running -function! PreviewQuarto() - call ClosePreview() +def PreviewQuarto() + ClosePreview() echom 'Starting preview job' - let b:file = expand('%') - let b:preview_job = job_start( + b:file = expand('%') + b:preview_job = job_start( \ ['quarto', 'preview', b:file], \ ) -endfunc +enddef -function! ClosePreview() +def ClosePreview() if exists("b:preview_job") echo 'Killing existing job...' - call job_stop(b:preview_job) + job_stop(b:preview_job) endif -endfunc +enddef nnoremap r :echo 'No preview configured' nmap r @@ -415,7 +439,7 @@ nmap r augroup Previews autocmd! - autocmd Filetype quarto nnoremap r :call PreviewQuarto() + autocmd Filetype quarto nnoremap r PreviewQuarto() augroup END @@ -427,19 +451,19 @@ augroup TextFormatting autocmd FileType r,elixir setl et sw=2 sts=2 ts=2 augroup END -" Show syntax highlighting groups for word under cursor -" -" This is useful for finding rogue elements I forgot in my colour -" scheme. -nnoremap \ :call SynStack() -function! SynStack() +# Show syntax highlighting groups for word under cursor +# +# This is useful for finding rogue elements I forgot in my colour +# scheme. +def SynStack() if !exists("*synstack") return endif echo map(synstack(line('.'), col('.')), 'synIDattr(v:val,"name")') -endfunc +enddef -" Open syntax file for current +nnoremap \ SynStack() +# Open syntax file for current -" Syntax highlighting +# Syntax highlighting colorscheme mpwb