local cmd = vim.cmd local fn = vim.fn local g = vim.g local o = vim.o local nnoremap = require('astronauta.keymap').nnoremap local inoremap = require('astronauta.keymap').tnoremap g.mapleader = ' ' -- key to g.maplocalleader = '\\' require('plugins') require('hardmode') local u = require('utils') -- OPTIONS -- {{{ cmd('set clipboard+=unnamedplus') u.opt('o', 'exrc', true) u.opt('o', 'title', true) u.opt('o', 'shiftround', true) u.opt('o', 'termguicolors', true) u.opt('o', 'incsearch', true) u.opt('o', 'inccommand', 'split') u.opt('o', 'smartcase', true) u.opt('o', 'hidden', true) u.opt('w', 'list', true) u.opt('w', 'number', true) u.opt('w', 'wrap', true) u.opt('o', 'scrolloff', 3) cmd('set listchars+=trail:¬') u.opt('o', 'showbreak', '↪ ') u.opt('b', 'textwidth', 80) -- TODO see if this is annoying u.opt('w', 'colorcolumn', '+1') -- depends on 'textwidth' u.opt('w', 'foldenable', true) u.opt('w', 'foldlevel', 0) u.opt('w', 'foldmethod', 'marker') u.opt('o', 'fillchars', 'fold:─') u.opt('o', 'complete', '.,w,b,u') u.opt('o', 'completeopt', 'menuone,noinsert,noselect,preview') cmd('set shortmess+=c') u.opt('w', 'statusline', '%!luaeval("statusline()")') u.opt('o', 'cmdheight', 1) u.opt('o', 'showmode', true) u.opt('o', 'showcmd', false) u.opt('o', 'laststatus', 2) u.opt('o', 'ruler', true) u.opt('o', 'mouse', 'a') u.opt('o', 'spell', true) u.opt('o', 'lazyredraw', true) u.opt('o', 'backspace', 'indent,eol,start') u.opt('o', 'undolevels', 1000) u.opt('o', 'updatetime', 300) u.opt('o', 'signcolumn', 'yes') u.opt('w', 'conceallevel', 2) u.opt('w', 'concealcursor', 'cv') u.opt('o', 'expandtab', true) -- }}} -- COLORS -- {{{ -- g.nihoncolors_transparent_background = true cmd('colorscheme lush') -- }}} -- KEY BINDS -- {{{ nnoremap { 'Q', function() cmd [[ quitall ]] end, silent = false } nnoremap { 'gb', function() cmd [[ bnext ]] end } nnoremap { 'gB', function() cmd [[ bprevious ]] end } -- terminal u.map('t', '', '') u.map('t', 'qq', ':bdelete!') nnoremap { 'gf', function() require('misc').open_under_cursor('open') end } nnoremap { 'gF', function() require('misc').open_under_cursor() end } nnoremap { 'gx', function() require('misc').open_under_cursor('url-launcher') end } nnoremap { 'gGw', function() require('misc').word_under_cursor(function(s) require('telescope.builtin.files').grep_string({ search = s }) end) end } nnoremap { 'gGe', function() require('misc').expr_under_cursor(function(s) require('telescope.builtin.files').grep_string({ search = s }) end) end } nnoremap { 'gGf', function() require('misc').file_under_cursor(function(s) require('telescope.builtin.files').grep_string({ search = s }) end) end } -- }}} -- AUTO GROUPS -- {{{ u.augroup2 { yank_highlight = {{ 'TextYankPost', '*', 'silent! lua require("vim.highlight").on_yank()' }} } -- }}} -- USER COMMANDS -- {{{ u.def('BalenaDiagnosticsFold', 'call balena_diagnostics_fold#apply()') u.def('SortLine', 'call setline(".", join(sort(split(getline("."), " ")), " "))') -- }}} -- STATUS LINE -- {{{ vim.api.nvim_command('hi StatusLineInsert guifg=#00ffff guibg=None') vim.api.nvim_command('hi StatusLineCommand guifg=#ff3300 guibg=None') statusline = function() local sl = '' -- left sl = sl .. statusline_color(vim.fn.mode()) sl = sl .. [[ ⢷ %<%F %-m %-r ]] -- right sl = sl .. [[ %=  %l:%v %y ]] return sl end statusline_color = function(mode) if mode == 'i' then return '%#StatusLineInsert#' elseif mode == 'c' then return '%#StatusLineCommand#' elseif mode == 'v' or mode == 'V' or mode == '' then return '%#Visual#' elseif mode == 'R' or mode == 'Rv' then return '%1*' -- return '%#Include#' else return '%1*' end end -- }}} -- source .nvimrc if it exists local local_vimrc = vim.fn.getcwd()..'/.nvimrc' if vim.loop.fs_stat(local_vimrc) then vim.cmd('source '..local_vimrc) end