home-manager: Add neovim configuration
Signed-off-by: Christoph Heiss <christoph@c8h4.io>
This commit is contained in:
parent
8d94745d9f
commit
a0bcd443b7
4
extra/nvim/init.lua
Normal file
4
extra/nvim/init.lua
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
require('basic')
|
||||||
|
require('plugins')
|
||||||
|
require('autocmds')
|
||||||
|
require('mappings')
|
83
extra/nvim/lua/autocmds.lua
Normal file
83
extra/nvim/lua/autocmds.lua
Normal file
|
@ -0,0 +1,83 @@
|
||||||
|
vim.api.nvim_create_autocmd({ 'FileType' }, {
|
||||||
|
pattern = { 'lua', 'html', 'nix' },
|
||||||
|
callback = function()
|
||||||
|
vim.opt_local.tabstop = 2
|
||||||
|
vim.opt_local.shiftwidth = 2
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
|
||||||
|
vim.api.nvim_create_autocmd({ 'FileType' }, {
|
||||||
|
pattern = { 'gitsendemail', 'gitcommit', 'mail' },
|
||||||
|
callback = function()
|
||||||
|
vim.opt_local.textwidth = 72
|
||||||
|
vim.opt_local.colorcolumn = '73'
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
|
||||||
|
vim.api.nvim_create_autocmd({ 'FileType' }, {
|
||||||
|
pattern = 'make',
|
||||||
|
callback = function()
|
||||||
|
vim.opt_local.expandtab = false
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
|
||||||
|
vim.api.nvim_create_autocmd({ 'BufWritePre' }, {
|
||||||
|
pattern = '*',
|
||||||
|
callback = function()
|
||||||
|
if vim.bo.ft ~= 'diff' and vim.bo.ft ~= 'markdown' then
|
||||||
|
vim.cmd([[%s/\s\+$//e]])
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
|
||||||
|
vim.api.nvim_create_autocmd({ 'TermEnter' }, {
|
||||||
|
pattern = '*',
|
||||||
|
callback = function()
|
||||||
|
vim.opt_local.scrolloff = 0
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
|
||||||
|
vim.api.nvim_create_autocmd({ 'TermLeave' }, {
|
||||||
|
pattern = '*',
|
||||||
|
callback = function()
|
||||||
|
vim.opt_local.scrolloff = 5
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
|
||||||
|
vim.api.nvim_create_autocmd({ 'BufReadPost' }, {
|
||||||
|
pattern = '*',
|
||||||
|
callback = function()
|
||||||
|
local line = vim.fn.line('\'"')
|
||||||
|
if line > 1 and line <= vim.fn.line('$') then
|
||||||
|
vim.cmd['normal!']('g`"')
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
|
||||||
|
-- Automatically switch between absolute and relative line numbers when
|
||||||
|
-- entering insert mode
|
||||||
|
local numbertoggle_group = vim.api.nvim_create_augroup('numbertoggle', {})
|
||||||
|
|
||||||
|
vim.api.nvim_create_autocmd(
|
||||||
|
{ 'BufEnter', 'FocusGained', 'InsertLeave', 'WinEnter' },
|
||||||
|
{
|
||||||
|
pattern = '*',
|
||||||
|
group = numbertoggle_group,
|
||||||
|
callback = function()
|
||||||
|
if vim.fn.mode() ~= 'i' then
|
||||||
|
vim.opt.relativenumber = true
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
vim.api.nvim_create_autocmd(
|
||||||
|
{ 'BufLeave', 'FocusLost', 'InsertEnter', 'WinLeave' },
|
||||||
|
{
|
||||||
|
pattern = '*',
|
||||||
|
group = numbertoggle_group,
|
||||||
|
callback = function()
|
||||||
|
vim.opt.relativenumber = false
|
||||||
|
end,
|
||||||
|
}
|
||||||
|
)
|
88
extra/nvim/lua/basic.lua
Normal file
88
extra/nvim/lua/basic.lua
Normal file
|
@ -0,0 +1,88 @@
|
||||||
|
-- Basic setup
|
||||||
|
vim.g.mapleader = ','
|
||||||
|
|
||||||
|
vim.cmd.filetype('plugin', 'indent', 'on')
|
||||||
|
vim.cmd.syntax('on')
|
||||||
|
|
||||||
|
vim.opt.ruler = true
|
||||||
|
vim.opt.number = true
|
||||||
|
vim.opt.laststatus = 2
|
||||||
|
vim.opt.colorcolumn = '80,100,120'
|
||||||
|
vim.opt.autoread = true
|
||||||
|
vim.opt.showmode = false
|
||||||
|
|
||||||
|
vim.opt.shell = vim.env.SHELL or '/bin/sh'
|
||||||
|
vim.opt.clipboard:append('unnamedplus')
|
||||||
|
|
||||||
|
-- Modelines
|
||||||
|
vim.opt.modeline = true
|
||||||
|
vim.opt.modelines = 4
|
||||||
|
-- https://github.com/numirias/security/blob/master/doc/2019-06-04_ace-vim-neovim.md
|
||||||
|
vim.opt.modelineexpr = false
|
||||||
|
|
||||||
|
-- Always use UTF-8
|
||||||
|
vim.opt.encoding = 'utf-8'
|
||||||
|
vim.opt.fileencoding = 'utf-8'
|
||||||
|
vim.opt.fileencodings = 'utf-8'
|
||||||
|
vim.opt.fileformats = 'unix,dos,mac'
|
||||||
|
|
||||||
|
-- Fix backspace indent
|
||||||
|
vim.opt.backspace = 'indent,eol,start'
|
||||||
|
|
||||||
|
-- Default indent settings
|
||||||
|
vim.opt.tabstop = 4
|
||||||
|
vim.opt.softtabstop = 0
|
||||||
|
vim.opt.shiftwidth = 4
|
||||||
|
vim.opt.expandtab = true
|
||||||
|
|
||||||
|
-- Hidden buffers
|
||||||
|
vim.opt.hidden = true
|
||||||
|
|
||||||
|
-- Searching options
|
||||||
|
vim.opt.hlsearch = true
|
||||||
|
vim.opt.incsearch = true
|
||||||
|
vim.opt.ignorecase = true
|
||||||
|
vim.opt.smartcase = true
|
||||||
|
|
||||||
|
-- Disable mouse support
|
||||||
|
vim.opt.mouse = ''
|
||||||
|
|
||||||
|
-- Disable netrw
|
||||||
|
vim.g.loaded_netrwPlugin = 0
|
||||||
|
|
||||||
|
-- Wildmenu
|
||||||
|
vim.opt.wildmenu = true
|
||||||
|
vim.opt.wildmode = 'list:longest,list:full'
|
||||||
|
vim.opt.wildignore:append(table.concat({
|
||||||
|
'*.o',
|
||||||
|
'*.so',
|
||||||
|
'*.swp',
|
||||||
|
'*.zip',
|
||||||
|
'*.tar',
|
||||||
|
'*.db',
|
||||||
|
'*.sqlite',
|
||||||
|
'*.obj',
|
||||||
|
'*.rbc',
|
||||||
|
'*.pyc',
|
||||||
|
'*.pdf',
|
||||||
|
'*.webp',
|
||||||
|
'*.png',
|
||||||
|
'*.jpg',
|
||||||
|
'*/.git/*',
|
||||||
|
'*/__pycache__/*',
|
||||||
|
'*/node_modules/*',
|
||||||
|
'*/tmp/*',
|
||||||
|
}, ','))
|
||||||
|
|
||||||
|
-- Host-specific config
|
||||||
|
if vim.fn.hostname() == 'maui' then
|
||||||
|
vim.opt.tabstop = 8
|
||||||
|
vim.opt.softtabstop = 4
|
||||||
|
vim.opt.shiftwidth = 4
|
||||||
|
vim.opt.textwidth = 100
|
||||||
|
vim.opt.noexpandtab = true
|
||||||
|
vim.opt.nocopyindent = true
|
||||||
|
vim.opt.autoindent = true
|
||||||
|
vim.opt.smartindent = true
|
||||||
|
vim.opt.cinoptions = '(0,u0,U0'
|
||||||
|
end
|
35
extra/nvim/lua/mappings.lua
Normal file
35
extra/nvim/lua/mappings.lua
Normal file
|
@ -0,0 +1,35 @@
|
||||||
|
-- Dvorak layout remaps
|
||||||
|
vim.keymap.set('', 'd', '<left>')
|
||||||
|
vim.keymap.set('', 'h', '<down>')
|
||||||
|
vim.keymap.set('', 't', '<up>')
|
||||||
|
vim.keymap.set('', 'n', '<right>')
|
||||||
|
vim.keymap.set('', 'e', 'd')
|
||||||
|
vim.keymap.set('', '<C-e>', '<C-d>')
|
||||||
|
|
||||||
|
-- Split
|
||||||
|
-- Configure like tmux, which reverses the meaning of v- and h-splits
|
||||||
|
vim.keymap.set('', '<leader>v', '<cmd>split<cr>')
|
||||||
|
vim.keymap.set('', '<leader>b', '<cmd>vsplit<cr>')
|
||||||
|
|
||||||
|
-- Window navigation
|
||||||
|
vim.keymap.set('', '<C-d>', '<C-w>h')
|
||||||
|
vim.keymap.set('', '<C-h>', '<C-w>j')
|
||||||
|
vim.keymap.set('', '<C-t>', '<C-w>k')
|
||||||
|
vim.keymap.set('', '<C-n>', '<C-w>l')
|
||||||
|
|
||||||
|
-- Search
|
||||||
|
vim.keymap.set('n', '<leader><space>', '<cmd>nohlsearch<cr>')
|
||||||
|
vim.keymap.set('n', 'l', 'nzzzv')
|
||||||
|
vim.keymap.set('n', 'L', 'Nzzzv')
|
||||||
|
|
||||||
|
-- Maintain visual blocks when shifting
|
||||||
|
vim.keymap.set('v', '<', '<gv')
|
||||||
|
vim.keymap.set('v', '>', '>gv')
|
||||||
|
|
||||||
|
-- Move visual blocks down/up
|
||||||
|
vim.keymap.set('v', 'H', ":move '>+1<cr>gv=gv")
|
||||||
|
vim.keymap.set('v', 'T', ":move '<-2<cr>gv=gv")
|
||||||
|
|
||||||
|
-- Quitting
|
||||||
|
vim.keymap.set('n', '<leader>w', '<cmd>w<cr>')
|
||||||
|
vim.keymap.set('n', '<leader>q', '<cmd>wqall<cr>')
|
311
extra/nvim/lua/plugins.lua
Normal file
311
extra/nvim/lua/plugins.lua
Normal file
|
@ -0,0 +1,311 @@
|
||||||
|
local lazypath = vim.fn.stdpath('data') .. '/lazy/lazy.nvim'
|
||||||
|
|
||||||
|
if not vim.loop.fs_stat(lazypath) then
|
||||||
|
vim.fn.system({
|
||||||
|
'git',
|
||||||
|
'clone',
|
||||||
|
'--filter=blob:none',
|
||||||
|
'https://github.com/folke/lazy.nvim.git',
|
||||||
|
'--branch=stable',
|
||||||
|
lazypath,
|
||||||
|
})
|
||||||
|
end
|
||||||
|
|
||||||
|
vim.opt.rtp:prepend(lazypath)
|
||||||
|
vim.g.loaded_node_provider = 0
|
||||||
|
vim.g.loaded_perl_provider = 0
|
||||||
|
vim.g.loaded_ruby_provider = 0
|
||||||
|
|
||||||
|
require('lazy').setup({
|
||||||
|
{
|
||||||
|
'dracula/vim',
|
||||||
|
name = 'dracula',
|
||||||
|
priority = 100,
|
||||||
|
config = function()
|
||||||
|
vim.g.dracula_colorterm = 0
|
||||||
|
vim.cmd.colorscheme('dracula')
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
'itchyny/lightline.vim',
|
||||||
|
config = function()
|
||||||
|
vim.g.lightline = {
|
||||||
|
enable = {
|
||||||
|
tabline = 0,
|
||||||
|
},
|
||||||
|
colorscheme = 'one',
|
||||||
|
active = {
|
||||||
|
left = {
|
||||||
|
{ 'mode', 'paste' },
|
||||||
|
{ 'readonly', 'filename', 'modified' },
|
||||||
|
{ 'gitbranch' },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
component = {
|
||||||
|
gitbranch = '\226\142\135 %{FugitiveHead()}',
|
||||||
|
},
|
||||||
|
}
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
'romgrk/barbar.nvim',
|
||||||
|
init = function()
|
||||||
|
vim.g.barbar_auto_setup = false
|
||||||
|
vim.keymap.set('n', '<Tab>', '<cmd>BufferNext<cr>')
|
||||||
|
vim.keymap.set('n', '<S-Tab>', '<cmd>BufferPrevious<cr>')
|
||||||
|
vim.keymap.set('n', '<leader><Tab>', '<cmd>BufferPick<cr>')
|
||||||
|
vim.keymap.set('n', '<leader><S-Tab>', '<cmd>BufferPickDelete<cr>')
|
||||||
|
vim.keymap.set('n', '<leader>c', '<cmd>BufferClose<cr>')
|
||||||
|
vim.keymap.set('n', '<S-t>', '<cmd>tabnew<cr>')
|
||||||
|
end,
|
||||||
|
opts = {
|
||||||
|
clickable = false,
|
||||||
|
icons = {
|
||||||
|
button = '',
|
||||||
|
filetype = { enabled = false },
|
||||||
|
pinned = {
|
||||||
|
button = '\240\159\147\140',
|
||||||
|
filename = true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
'tpope/vim-fugitive',
|
||||||
|
init = function()
|
||||||
|
vim.keymap.set('n', '<leader>ga', '<cmd>Git add -p<cr>')
|
||||||
|
vim.keymap.set('n', '<leader>gb', '<cmd>Git blame<cr>')
|
||||||
|
vim.keymap.set('n', '<leader>gd', '<cmd>Git diff<cr>')
|
||||||
|
vim.keymap.set('n', '<leader>gl', '<cmd>Git log --oneline<cr>')
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
|
||||||
|
{ 'tpope/vim-commentary' },
|
||||||
|
{ 'Raimondi/delimitMate' },
|
||||||
|
{ 'editorconfig/editorconfig-vim', submodules = false },
|
||||||
|
{ 'easymotion/vim-easymotion' },
|
||||||
|
|
||||||
|
{
|
||||||
|
'airblade/vim-gitgutter',
|
||||||
|
init = function()
|
||||||
|
vim.keymap.set('n', '<leader>ht', '<Plug>(GitGutterPrevHunk)')
|
||||||
|
vim.keymap.set('n', '<leader>hh', '<Plug>(GitGutterNextHunk)')
|
||||||
|
vim.keymap.set('n', '<leader>hd', '<Plug>(GitGutterPreviewHunk)')
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
'folke/persistence.nvim',
|
||||||
|
tag = 'v1.1.0',
|
||||||
|
opts = {
|
||||||
|
options = { 'buffers', 'curdir', 'tabpages', 'winsize', 'globals' },
|
||||||
|
pre_save = function()
|
||||||
|
vim.api.nvim_exec_autocmds('User', { pattern = 'SessionSavePre' })
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
'junegunn/fzf.vim',
|
||||||
|
dependencies = { 'junegunn/fzf' },
|
||||||
|
init = function()
|
||||||
|
if vim.fn.executable('fzf') == 0 then
|
||||||
|
vim.notify(
|
||||||
|
'`fzf` not found in PATH, all fuzzy-find commands disabled',
|
||||||
|
vim.log.levels.WARN
|
||||||
|
)
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
vim.keymap.set('n', '<leader>b', '<cmd>Buffers<cr>')
|
||||||
|
vim.keymap.set('n', '<leader>y', '<cmd>History:<cr>')
|
||||||
|
vim.keymap.set('n', '<leader>s', '<cmd>BLines<cr>')
|
||||||
|
|
||||||
|
vim.keymap.set(
|
||||||
|
'n',
|
||||||
|
'<leader>u',
|
||||||
|
[[<cmd>call fzf#vim#files('', fzf#vim#with_preview({'sink': 'tabedit'}))<cr>]]
|
||||||
|
)
|
||||||
|
vim.keymap.set(
|
||||||
|
'n',
|
||||||
|
'<leader>e',
|
||||||
|
[[<cmd>call fzf#vim#gitfiles('', fzf#vim#with_preview({'sink': 'tabedit'}))<cr>]]
|
||||||
|
)
|
||||||
|
vim.keymap.set(
|
||||||
|
'n',
|
||||||
|
'<leader>m',
|
||||||
|
[[<cmd>call fzf#vim#gitfiles('?', fzf#vim#with_preview({'sink': 'tabedit'}))<cr>]]
|
||||||
|
)
|
||||||
|
|
||||||
|
if vim.fn.executable('rg') == 0 then
|
||||||
|
vim.notify(
|
||||||
|
'`rg` not found in PATH, fuzzy grep and optimized file search disabled',
|
||||||
|
vim.log.levels.WARN
|
||||||
|
)
|
||||||
|
else
|
||||||
|
vim.env.FZF_DEFAULT_COMMAND =
|
||||||
|
'rg --files --hidden --follow --glob "!.git/*"'
|
||||||
|
vim.keymap.set('n', '<leader>f', '<cmd>Rg<cr>')
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
'Yggdroot/indentLine',
|
||||||
|
config = function()
|
||||||
|
vim.g.indentLine_concealcursor = ''
|
||||||
|
vim.g.indentLine_char = '┆'
|
||||||
|
vim.g.indentLine_faster = 1
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
|
||||||
|
-- HTML
|
||||||
|
{ 'hail2u/vim-css3-syntax', ft = { 'css', 'sass', 'scss' } },
|
||||||
|
{ 'gko/vim-coloresque', ft = { 'html', 'sass', 'scss', 'less', 'yaml' } },
|
||||||
|
|
||||||
|
-- Perl
|
||||||
|
{ 'vim-perl/vim-perl', ft = 'perl' },
|
||||||
|
|
||||||
|
-- Rust
|
||||||
|
{ 'rust-lang/rust.vim', ft = 'rust' },
|
||||||
|
|
||||||
|
-- Nix
|
||||||
|
{ 'LnL7/vim-nix', ft = 'nix' },
|
||||||
|
|
||||||
|
-- Autocomplete
|
||||||
|
{
|
||||||
|
'hrsh7th/nvim-cmp',
|
||||||
|
dependencies = {
|
||||||
|
'neovim/nvim-lspconfig',
|
||||||
|
'hrsh7th/cmp-nvim-lsp',
|
||||||
|
'hrsh7th/cmp-buffer',
|
||||||
|
'hrsh7th/cmp-path',
|
||||||
|
'hrsh7th/cmp-cmdline',
|
||||||
|
'hrsh7th/cmp-nvim-lsp-signature-help',
|
||||||
|
'kdheepak/cmp-latex-symbols',
|
||||||
|
'saadparwaiz1/cmp_luasnip',
|
||||||
|
'rafamadriz/friendly-snippets',
|
||||||
|
{
|
||||||
|
'L3MON4D3/LuaSnip',
|
||||||
|
tag = 'v1.2.1',
|
||||||
|
submodules = false,
|
||||||
|
config = function()
|
||||||
|
require('luasnip.loaders.from_vscode').lazy_load()
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
{ 'j-hui/fidget.nvim', config = true },
|
||||||
|
{
|
||||||
|
'f3fora/cmp-spell',
|
||||||
|
config = function()
|
||||||
|
vim.opt.spell = false
|
||||||
|
vim.opt.spelllang = 'en_us'
|
||||||
|
vim.keymap.set('n', '<leader>p', '<cmd>set spell!<cr>')
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'jose-elias-alvarez/null-ls.nvim',
|
||||||
|
config = function()
|
||||||
|
local null_ls = require('null-ls')
|
||||||
|
|
||||||
|
null_ls.setup({
|
||||||
|
sources = {
|
||||||
|
-- null_ls.builtins.formatting.stylua,
|
||||||
|
},
|
||||||
|
})
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'simrat39/rust-tools.nvim',
|
||||||
|
ft = 'rust',
|
||||||
|
opts = {
|
||||||
|
tools = {
|
||||||
|
inlay_hints = {
|
||||||
|
auto = true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
server = {
|
||||||
|
settings = {
|
||||||
|
['rust-analyzer'] = {
|
||||||
|
checkOnSave = {
|
||||||
|
command = 'clippy',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'saecki/crates.nvim',
|
||||||
|
tag = 'v0.3.0',
|
||||||
|
dependencies = { 'nvim-lua/plenary.nvim' },
|
||||||
|
config = function()
|
||||||
|
local crates = require('crates')
|
||||||
|
|
||||||
|
vim.keymap.set('n', '<leader>rv', crates.show_versions_popup)
|
||||||
|
vim.keymap.set('n', '<leader>rf', crates.show_features_popup)
|
||||||
|
vim.keymap.set('n', '<leader>ri', crates.open_crates_io)
|
||||||
|
|
||||||
|
crates.setup({
|
||||||
|
popup = {
|
||||||
|
autofocus = true,
|
||||||
|
},
|
||||||
|
})
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
config = function()
|
||||||
|
local cmp = require('cmp')
|
||||||
|
|
||||||
|
cmp.setup({
|
||||||
|
snippet = {
|
||||||
|
expand = function(args)
|
||||||
|
require('luasnip').lsp_expand(args.body)
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
window = {
|
||||||
|
completion = cmp.config.window.bordered(),
|
||||||
|
documentation = cmp.config.window.bordered(),
|
||||||
|
},
|
||||||
|
mapping = cmp.mapping.preset.insert({
|
||||||
|
['<C-t>'] = cmp.mapping.scroll_docs(-5),
|
||||||
|
['<C-h>'] = cmp.mapping.scroll_docs(5),
|
||||||
|
['<Tab>'] = cmp.mapping.select_next_item(),
|
||||||
|
['<S-Tab>'] = cmp.mapping.select_prev_item(),
|
||||||
|
['<C-cr>'] = cmp.mapping.complete(),
|
||||||
|
['<C-e>'] = cmp.mapping.abort(),
|
||||||
|
['<cr>'] = cmp.mapping.confirm({ select = true }),
|
||||||
|
}),
|
||||||
|
sources = cmp.config.sources({
|
||||||
|
{ name = 'nvim_lsp' },
|
||||||
|
{ name = 'nvim_lsp_signature_help' },
|
||||||
|
{ name = 'luasnip' },
|
||||||
|
{ name = 'crates' },
|
||||||
|
}, {
|
||||||
|
{ name = 'buffer' },
|
||||||
|
}),
|
||||||
|
})
|
||||||
|
|
||||||
|
cmp.setup.cmdline(':', {
|
||||||
|
mapping = cmp.mapping.preset.cmdline(),
|
||||||
|
sources = cmp.config.sources({
|
||||||
|
{ name = 'path' },
|
||||||
|
}, {
|
||||||
|
{ name = 'cmdline' },
|
||||||
|
}),
|
||||||
|
})
|
||||||
|
|
||||||
|
vim.opt.completeopt = 'menuone,noinsert,noselect'
|
||||||
|
vim.opt.shortmess:append('c')
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
-- Fix color scheme collision
|
||||||
|
vim.cmd.highlight('comment', 'ctermfg=7')
|
||||||
|
|
||||||
|
-- Bring modified buffers to attention
|
||||||
|
vim.cmd['highlight!']('BufferInactiveMod', 'cterm=bold')
|
||||||
|
vim.cmd['highlight!']('BufferCurrentMod', 'cterm=bold')
|
|
@ -5,6 +5,11 @@ let
|
||||||
package = pkgs.apple-cursor;
|
package = pkgs.apple-cursor;
|
||||||
name = "macOS-Monterey";
|
name = "macOS-Monterey";
|
||||||
};
|
};
|
||||||
|
nvimLuaModuleNames = [ "basic" "plugins" "autocmds" "mappings" ];
|
||||||
|
nvimLuaModules = builtins.listToAttrs (map (m: {
|
||||||
|
name = "nvim/lua/${m}.lua";
|
||||||
|
value.source = ../../extra/nvim/lua + "/${m}.lua";
|
||||||
|
}) nvimLuaModuleNames);
|
||||||
in {
|
in {
|
||||||
home-manager.users.christoph = {
|
home-manager.users.christoph = {
|
||||||
imports = [ ./email.nix ./sway.nix ./terminal.nix ];
|
imports = [ ./email.nix ./sway.nix ./terminal.nix ];
|
||||||
|
@ -45,6 +50,9 @@ in {
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
# Needed by the luasnip plugin
|
||||||
|
programs.neovim.extraLuaPackages = luaPkgs: with luaPkgs; [ jsregexp ];
|
||||||
|
|
||||||
programs.ssh = {
|
programs.ssh = {
|
||||||
enable = true;
|
enable = true;
|
||||||
matchBlocks."*" = {
|
matchBlocks."*" = {
|
||||||
|
@ -90,10 +98,13 @@ in {
|
||||||
pinentryFlavor = "tty";
|
pinentryFlavor = "tty";
|
||||||
};
|
};
|
||||||
|
|
||||||
xdg.configFile."latexmk/latexmkrc".text = ''
|
xdg.configFile = {
|
||||||
$pdf_previewer = '${pkgs.zathura}/bin/zathura';
|
"latexmk/latexmkrc".text = ''
|
||||||
$latex = 'latex -interaction=nonstopmode';
|
$pdf_previewer = '${pkgs.zathura}/bin/zathura';
|
||||||
$pdflatex = 'pdflatex -interaction=nonstopmode';
|
$latex = 'latex -interaction=nonstopmode';
|
||||||
'';
|
$pdflatex = 'pdflatex -interaction=nonstopmode';
|
||||||
|
'';
|
||||||
|
"nvim/init.lua".source = ../../extra/nvim/init.lua;
|
||||||
|
} // nvimLuaModules;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue