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').inoremap local vnoremap = require('astronauta.keymap').vnoremap local tnoremap = 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', 0) u.opt('w', 'colorcolumn', '80') -- 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') 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', false) u.opt('o', 'spelloptions', 'camel') 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', 'auto:1') u.opt('w', 'cursorline', true) u.opt('w', 'conceallevel', 2) u.opt('w', 'concealcursor', '') 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 tnoremap { '', '' } tnoremap { '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 } nnoremap { 'gs', function() require('misc').word_under_cursor(function(s) fn.feedkeys(':%s/' .. s .. '//g'); cmd [[ call feedkeys("\\") ]] end) end } nnoremap { 'gg', function() require('neogit').open({ kind = "split" }) end } nnoremap { 'gm', function() cmd [[ GitMessenger ]] end } vnoremap { 'T', function() cmd [[ retab! | call feedkeys("\") ]] end } -- }}} -- AUTO GROUPS -- {{{ u.augroup2 { yank_highlight = {{ 'TextYankPost', '*', 'silent! lua require("vim.highlight").on_yank()' }}, obvious_active_win = { { 'WinEnter', '*', 'set cul' }, { 'WinLeave', '*', 'set nocul' } }, c_makeprg = {{'BufRead', '*.c', 'set makeprg=ninja\\ -C\\ build' }}, } -- }}} -- USER COMMANDS -- {{{ u.def('BalenaDiagnosticsFold', 'call balena_diagnostics_fold#apply()') u.def('SortLine', 'call setline(".", join(sort(split(getline("."), " ")), " "))') -- }}} -- STATUS LINE -- {{{ 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) local hi = '%*' if mode == 'i' then hi = '%#StatusLineInsert#' elseif mode == 'c' then hi = '%#StatusLineCommand#' elseif mode == 'v' or mode == 'V' or mode == '' then hi = '%#StatusLineVisual#' elseif mode == 'R' or mode == 'Rv' then hi = '%#StatusLineReplace#' end return hi 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