Gate laptop/work language packs behind stow-loaded modules
Neovim now loads either laptop-languages.lua or work-languages.lua depending on which stow packages are active. Work mode suppresses Rust/Go/C/C++/LaTeX servers, DAP, and vimtex entirely via cond guards. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -5,9 +5,14 @@ vim.g.mapleader = ' '
|
|||||||
vim.g.maplocalleader = '\\' -- vimtex uses \ll, \lv, etc.
|
vim.g.maplocalleader = '\\' -- vimtex uses \ll, \lv, etc.
|
||||||
vim.g.have_nerd_font = true
|
vim.g.have_nerd_font = true
|
||||||
|
|
||||||
-- Load work-language extras when the work stow package is active
|
-- work-languages.lua (work stow) → work mode; laptop-languages.lua → laptop mode.
|
||||||
|
-- The two are mutually exclusive: work mode suppresses laptop languages.
|
||||||
local _work = {}
|
local _work = {}
|
||||||
pcall(function() _work = require('work-languages') end)
|
pcall(function() _work = require('work-languages') end)
|
||||||
|
local _lang = {}
|
||||||
|
if not next(_work) then
|
||||||
|
pcall(function() _lang = require('laptop-languages') end)
|
||||||
|
end
|
||||||
|
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
-- Options
|
-- Options
|
||||||
@@ -262,11 +267,12 @@ require('lazy').setup({
|
|||||||
build = ':TSUpdate',
|
build = ':TSUpdate',
|
||||||
main = 'nvim-treesitter.configs',
|
main = 'nvim-treesitter.configs',
|
||||||
opts = {
|
opts = {
|
||||||
ensure_installed = vim.list_extend(
|
ensure_installed = (function()
|
||||||
{ 'bash', 'c', 'cpp', 'go', 'json', 'lua', 'luadoc', 'markdown',
|
local t = { 'bash', 'json', 'lua', 'luadoc', 'markdown', 'markdown_inline', 'vim', 'vimdoc', 'yaml' }
|
||||||
'markdown_inline', 'rust', 'vim', 'vimdoc', 'yaml', 'latex' },
|
vim.list_extend(t, _lang.parsers or {})
|
||||||
_work.parsers or {}
|
vim.list_extend(t, _work.parsers or {})
|
||||||
),
|
return t
|
||||||
|
end)(),
|
||||||
auto_install = true,
|
auto_install = true,
|
||||||
highlight = { enable = true },
|
highlight = { enable = true },
|
||||||
indent = { enable = true },
|
indent = { enable = true },
|
||||||
@@ -379,13 +385,11 @@ require('lazy').setup({
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
opts = {
|
opts = {
|
||||||
formatters_by_ft = vim.tbl_extend('force', {
|
formatters_by_ft = vim.tbl_extend('force',
|
||||||
lua = { 'stylua' },
|
{ lua = { 'stylua' } },
|
||||||
go = { 'goimports', 'gofmt' },
|
_lang.formatters or {},
|
||||||
rust = { 'rustfmt' },
|
_work.formatters or {}
|
||||||
c = { 'clang_format' },
|
),
|
||||||
cpp = { 'clang_format' },
|
|
||||||
}, _work.formatters or {}),
|
|
||||||
format_on_save = { timeout_ms = 500, lsp_fallback = true },
|
format_on_save = { timeout_ms = 500, lsp_fallback = true },
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@@ -453,10 +457,8 @@ require('lazy').setup({
|
|||||||
require('cmp_nvim_lsp').default_capabilities()
|
require('cmp_nvim_lsp').default_capabilities()
|
||||||
)
|
)
|
||||||
|
|
||||||
local servers = vim.tbl_extend('force', {
|
local servers = vim.tbl_extend('force',
|
||||||
clangd = {},
|
{
|
||||||
gopls = {},
|
|
||||||
rust_analyzer = {},
|
|
||||||
lua_ls = {
|
lua_ls = {
|
||||||
settings = {
|
settings = {
|
||||||
Lua = {
|
Lua = {
|
||||||
@@ -469,10 +471,16 @@ require('lazy').setup({
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
}, _work.servers or {})
|
},
|
||||||
|
_lang.servers or {},
|
||||||
|
_work.servers or {}
|
||||||
|
)
|
||||||
|
|
||||||
require('mason-tool-installer').setup({
|
require('mason-tool-installer').setup({
|
||||||
ensure_installed = vim.list_extend({ 'stylua', 'clang-format' }, _work.tools or {}),
|
ensure_installed = vim.list_extend(
|
||||||
|
vim.list_extend({ 'stylua' }, _lang.tools or {}),
|
||||||
|
_work.tools or {}
|
||||||
|
),
|
||||||
})
|
})
|
||||||
|
|
||||||
require('mason-lspconfig').setup({
|
require('mason-lspconfig').setup({
|
||||||
@@ -493,6 +501,7 @@ require('lazy').setup({
|
|||||||
--------------------------------------------------------------------------
|
--------------------------------------------------------------------------
|
||||||
{
|
{
|
||||||
'mfussenegger/nvim-dap',
|
'mfussenegger/nvim-dap',
|
||||||
|
cond = function() return not next(_work) end,
|
||||||
dependencies = {
|
dependencies = {
|
||||||
{
|
{
|
||||||
'rcarriga/nvim-dap-ui',
|
'rcarriga/nvim-dap-ui',
|
||||||
@@ -548,9 +557,10 @@ require('lazy').setup({
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
||||||
-- install codelldb via mason
|
-- install codelldb via mason (laptop only)
|
||||||
{
|
{
|
||||||
'williamboman/mason.nvim',
|
'williamboman/mason.nvim',
|
||||||
|
cond = function() return not next(_work) end,
|
||||||
opts = function(_, opts)
|
opts = function(_, opts)
|
||||||
opts.ensure_installed = opts.ensure_installed or {}
|
opts.ensure_installed = opts.ensure_installed or {}
|
||||||
vim.list_extend(opts.ensure_installed, { 'codelldb' })
|
vim.list_extend(opts.ensure_installed, { 'codelldb' })
|
||||||
@@ -562,6 +572,7 @@ require('lazy').setup({
|
|||||||
--------------------------------------------------------------------------
|
--------------------------------------------------------------------------
|
||||||
{
|
{
|
||||||
'lervag/vimtex',
|
'lervag/vimtex',
|
||||||
|
cond = function() return not next(_work) end,
|
||||||
lazy = false,
|
lazy = false,
|
||||||
init = function()
|
init = function()
|
||||||
vim.g.vimtex_view_method = 'zathura'
|
vim.g.vimtex_view_method = 'zathura'
|
||||||
|
|||||||
17
laptop/.config/nvim/lua/laptop-languages.lua
Normal file
17
laptop/.config/nvim/lua/laptop-languages.lua
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
-- Loaded by init.lua when work-languages.lua is absent (laptop stow only).
|
||||||
|
-- Mirrors dev-settings.el: C/C++, Go, Rust, DAP.
|
||||||
|
return {
|
||||||
|
servers = {
|
||||||
|
clangd = {},
|
||||||
|
gopls = {},
|
||||||
|
rust_analyzer = {},
|
||||||
|
},
|
||||||
|
parsers = { 'c', 'cpp', 'go', 'latex', 'rust' },
|
||||||
|
formatters = {
|
||||||
|
go = { 'goimports', 'gofmt' },
|
||||||
|
rust = { 'rustfmt' },
|
||||||
|
c = { 'clang_format' },
|
||||||
|
cpp = { 'clang_format' },
|
||||||
|
},
|
||||||
|
tools = { 'clang-format' },
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user