151 lines
4.4 KiB
Lua
151 lines
4.4 KiB
Lua
-- Variables
|
|
HOME = os.getenv("HOME")
|
|
|
|
-- Basic Functions/Settings
|
|
vim.o.backspace = "indent,eol,start" -- backspace works on every char in insert mode
|
|
vim.o.completeopt = 'menuone,noselect'
|
|
vim.o.history = 1000
|
|
vim.o.startofline = true
|
|
|
|
-- UI
|
|
vim.o.background= 'dark'
|
|
vim.o.termguicolors = true
|
|
vim.o.ttyfast = true
|
|
vim.o.autoread = true
|
|
vim.o.hlsearch = true
|
|
vim.o.number = true
|
|
vim.o.title = true
|
|
vim.o.scrolloff = 1000 -- center current line in screen
|
|
vim.o.synmaxcol = 300 -- stop syntax highlight after x lines for performance
|
|
vim.o.laststatus = 2 -- always show status line
|
|
|
|
-- Styleguide/Preferences
|
|
vim.o.autoindent = true
|
|
|
|
-- Localization
|
|
vim.o.encoding = "utf-8"
|
|
vim.o.dictionary = '/usr/share/dict/words'
|
|
vim.o.spelllang = 'en_ca'
|
|
|
|
-- Define files to spellcheck
|
|
vim.api.nvim_create_autocmd(
|
|
{
|
|
"BufRead",
|
|
"BufNewFile"
|
|
},{
|
|
pattern = {
|
|
"gitcommit",
|
|
"gitrebase",
|
|
"*.txt",
|
|
"*.md",
|
|
"*.tex"
|
|
},
|
|
command = "setlocal spell"
|
|
}
|
|
)
|
|
|
|
-- Mapping Timeouts
|
|
vim.o.timeout = false
|
|
vim.o.ttimeout = true
|
|
vim.o.ttimeoutlen = 100
|
|
|
|
-- Display Hints/Highlights
|
|
vim.o.colorcolumn=101
|
|
vim.highlight.create('ColorColumn', {ctermbg=lightred, guibg=lightred}, false)
|
|
vim.highlight.create('ExtraWhitespace', {ctermbg=lightred, guibg=lightred}, false)
|
|
vim.o.showmatch = true -- show matching brackets
|
|
vim.o.list = 'listchars=tab:»\ ,trail:·'
|
|
vim.o.foldenable = false
|
|
vim.o.foldlevel = 4 -- limit folding to 4 levels
|
|
vim.o.foldmethod = 'syntax' -- use language syntax to generate folds
|
|
vim.o.wrap = true --do not wrap lines even if very long
|
|
vim.o.eol = false -- show if there's no eol char
|
|
vim.o.showbreak= '↪' -- character to show when line is broken
|
|
-- Remove trailing whitespace
|
|
vim.api.nvim_create_autocmd(
|
|
{
|
|
"BufWritePre",
|
|
"BufWinEnter",
|
|
"InsertEnter",
|
|
"InsertLeave"
|
|
},{
|
|
pattern = { "*" },
|
|
command = [[%s/\s\+$//e]]
|
|
}
|
|
)
|
|
|
|
-- Sidebar
|
|
vim.o.number = true -- line number on the left
|
|
vim.o.numberwidth = 4 -- always reserve 4 spaces for line number
|
|
vim.o.signcolumn = 'yes' -- keep 1 column for coc.vim check
|
|
vim.o.modelines = 0
|
|
vim.o.showcmd = true -- display command in bottom bar
|
|
|
|
-- Search
|
|
vim.o.incsearch = true -- starts searching as soon as typing, without enter needed
|
|
vim.o.ignorecase = true -- ignore letter case when searching
|
|
vim.o.smartcase = true -- case insentive unless capitals used in search
|
|
vim.o.matchtime = 2 -- delay before showing matching paren
|
|
vim.o.mps = vim.o.mps .. ",<:>"
|
|
|
|
-- White characters
|
|
vim.o.autoindent = true
|
|
vim.o.smartindent = true
|
|
vim.o.tabstop = 4 -- 1 tab = 2 spaces
|
|
vim.o.shiftwidth = 4 -- indentation rule
|
|
vim.o.formatoptions = 'qnj1' -- q - comment formatting; n - numbered lists; j - remove comment when joining lines; 1 - don't break after one-letter word
|
|
vim.o.expandtab = true -- expand tab to spaces
|
|
|
|
-- Backup files
|
|
vim.o.undodir = HOME .. '/.spool/nvim/tmp/undo//' -- undo files
|
|
vim.o.backup = true -- use backup files
|
|
vim.o.writebackup = true -- use temporary backup during write
|
|
vim.o.backupdir = HOME .. '/.spool/nvim/tmp/backup//' -- backups
|
|
vim.o.swapfile = false -- don't use swap file
|
|
--vim.o.directory = HOME .. '/.spool/nvim/tmp/swap//' -- swap files
|
|
|
|
-- Commands mode
|
|
vim.o.wildmenu = true -- on TAB, complete options for system command
|
|
vim.o.wildignore = 'deps,.svn,CVS,.git,.hg,*.o,*.a,*.class,*.mo,*.la,*.so,*.obj,*.swp,*.jpg,*.png,*.xpm,*.gif,.DS_Store,*.aux,*.out,*.toc'
|
|
|
|
-- Executables
|
|
vim.g.python3_host_prog = "/var/home/jpm/.pyenv/shims/python3"
|
|
vim.g.python_host_prog = "/var/home/jpm/.pyenv/shims/python2"
|
|
|
|
-- Theme
|
|
vim.o.background = 'dark'
|
|
vim.colorscheme = 'gruvbox'
|
|
vim.o.t_Co = 16
|
|
vim.cmd([[
|
|
let g:gruvbox_contrast_dark="hard"
|
|
let g:gruvbox_italic=1
|
|
let g:gruvbox_bold=1
|
|
let g:gruvbox_underline=1
|
|
let g:gruvbox_undercurl=1
|
|
let g:gruvbox_termcolors=256
|
|
syn on se title
|
|
]])
|
|
|
|
-- Abbreviations
|
|
vim.cmd([[
|
|
source ${HOME}/.dotfiles/vim/abbreviations/personalAbbreviations.vim
|
|
source ${HOME}/.dotfiles/vim/abbreviations/codingAbbreviations.vim
|
|
]])
|
|
|
|
-- Fix indentation in file
|
|
--viml: map <leader>i mmgg=G`m<CR>
|
|
vim.g.mapleader = ','
|
|
vim.g.maplocalleader = '\\'
|
|
vim.keymap.set("i", "kj", "<esc>", { silent = true })
|
|
|
|
-- Configure tabline
|
|
vim.cmd([[
|
|
set showtabline=2
|
|
let g:tablabel = "%N%{flagship#tabmodified()} %{flagship#tabcwds('shorten',',')}"
|
|
]])
|
|
|
|
-- 100 characters line
|
|
--"execute "set colorcolumn=" . join(range(101,335), ',')
|
|
--highlight ColorColumn ctermbg=Black ctermfg=DarkRed
|
|
|