add smb mount on personal darwin for keepass; nvim: add collect lsp, make lualline to reuse gitstatus\'s git diff

Pegasust 2023-01-21 15:03:40 -08:00
parent 150534c512
commit 53928208ea
4 changed files with 90 additions and 18 deletions

View File

@ -246,6 +246,60 @@ vim.api.nvim_create_user_command(
end, end,
{ nargs = 0 } { nargs = 0 }
) )
-- `BufLoadFd {fd-args}`
-- WHAT:
-- Batch load the result of `fd <args>` into the buffer.
--
-- WHY;
-- This is especially helpful if you want to collect LSP diagnostics in the
-- current repository:
--
-- EXAMPLES:
-- `BufLoadFd -e ts -e tsx`: Loads all of tsserver-compatible in the current
-- root. Note that `fd` takes account of .gitignore (but not your Git's ignore config)
vim.api.nvim_create_user_command(
'BufLoadFd',
function(opts)
local results = vim.fn.systemlist('fd ' .. opts["args"])
for _k, v in pairs(results) do
vim.cmd("badd " .. v)
end
end,
{ nargs = "*" }
)
-- `CollectLspDiag {fd-args}`
-- WHAT:
-- Opens files matching fd-args search, and go back to your initial buffer
-- This effectively loads files onto your LSP so that you collect Lsp diagnostics.
-- To list diagnostics, maybe use `:Trouble` or similar commands
--
-- WHY:
-- LSPs don't perform diagnostics to every file in the workspace, they are
-- lazily loaded. Sometimes, it's hard to reproduce the LSP diagnostics with
-- the compiler alone, this user command helps collecting all errors and
-- potentially filter the files that you want to ignore with an `fd` query.
--
-- EXAMPLES:
-- `CollectLspDiag -e ts -e tsx`: Loads all Typescript files in the current root,
-- with account of `.gitignore` into "active buffer" for the LSP to diagnose.
vim.api.nvim_create_user_command(
'CollectLspDiag',
function(opts)
--- @type string
local original_buf_path = vim.api.nvim_buf_get_name(0);
local files = vim.fn.systemlist('fd ' .. opts["args"])
for _k, file in pairs(files) do
vim.cmd("e " .. file)
end
vim.cmd('e ' .. original_buf_path);
end,
{ nargs = "*" }
)
vim.api.nvim_create_user_command( vim.api.nvim_create_user_command(
'DoubleSpaces', 'DoubleSpaces',
function(opts) function(opts)
@ -976,7 +1030,21 @@ require('lualine').setup {
}, },
sections = { sections = {
lualine_a = { 'mode' }, lualine_a = { 'mode' },
lualine_b = { 'branch', 'diff', 'diagnostics' }, lualine_b = {
'branch', {
'diff', source = function ()
local gitsigns = vim.b.gitsigns_status_dict
if gitsigns then
return {
added = gitsigns.added,
modified = gitsigns.changed,
removed = gitsigns.removed
}
end
end
},
'diagnostics'
},
lualine_c = { lualine_c = {
{ 'filename', { 'filename',
file_status = true, file_status = true,

View File

@ -43,7 +43,7 @@ let
pkgs.fzf # file name fuzzy search pkgs.fzf # file name fuzzy search
pkgs.ripgrep # content fuzzy search pkgs.ripgrep # content fuzzy search
pkgs.zk # Zettelkasten (limited support) pkgs.zk # Zettelkasten (limited support)
pkgs.fd # Required by a Telescope plugin (?) pkgs.fd # Required by a Telescope plugin - fzf
pkgs.stdenv.cc.cc.lib pkgs.stdenv.cc.cc.lib
pkgs.rnix-lsp # doesn't work, Mason just installs it using cargo pkgs.rnix-lsp # doesn't work, Mason just installs it using cargo
pkgs.rust4cargo pkgs.rust4cargo
@ -56,8 +56,8 @@ let
pkgs.python3Packages.pylint pkgs.python3Packages.pylint
pkgs.python3Packages.flake8 pkgs.python3Packages.flake8
# pkgs.ansible-lint # pkgs.ansible-lint
pkgs.python38Packages.ansible # pkgs.python38Packages.ansible
pkgs.ansible-language-server # pkgs.ansible-language-server
# TODO: the devShell should provide rust-analyzer so that # TODO: the devShell should provide rust-analyzer so that
# cargo test builds binaries compatible with rust-analyzer # cargo test builds binaries compatible with rust-analyzer

View File

@ -1,11 +1,15 @@
{ {
nixConfig = { nixConfig = {
accept-flake-config = true; accept-flake-config = true;
experimental-features = "nix-command flakes"; extra-experimental-features = "nix-command flakes";
extra-substituters = [ extra-substituters = [
"https://nix-community.cachix.org" "https://nix-community.cachix.org"
"https://cache.nixos.org" "https://cache.nixos.org"
]; ];
trusted-substituters = [
"https://nix-community.cachix.org"
"https://cache.nixos.org"
];
extra-trusted-public-keys = [ extra-trusted-public-keys = [
"nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=" "nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs="
"cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=" "cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY="
@ -149,7 +153,7 @@
# don't want to deal with GL stuffs on mac yet :/ # don't want to deal with GL stuffs on mac yet :/
base.graphics.useNixGL.defaultPackage = null; base.graphics.useNixGL.defaultPackage = null;
# NOTE: this actually does not exist # NOTE: this actually does not exist
base.keepass.path = "/Users/hungtran/keepass.kdbx"; base.keepass.path = "/Volumes/PersistentHotStorage/keepass.kdbx";
base.alacritty.font.size = 11.0; base.alacritty.font.size = 11.0;
} }
nerd_font_module nerd_font_module

View File

@ -9,13 +9,13 @@ HOME_MANAGER_DIR="${SCRIPT_DIR}/../nix-conf/home-manager"
# Manage nix.conf. Ideally, this should be done with snapshot-based version # Manage nix.conf. Ideally, this should be done with snapshot-based version
# and with preview on-the-spot, with some timeout # and with preview on-the-spot, with some timeout
if [ -f /etc/nix/nix.conf ]; then # if [ -f /etc/nix/nix.conf ]; then
# managed nix.conf # # managed nix.conf
BACKUP_FILE="/etc/nix/nix.conf.backup" # BACKUP_FILE="/etc/nix/nix.conf.backup"
echo "overwriting /etc/nix/nix.conf. Please find latest backup in ${BACKUP_FILE}" # echo "overwriting /etc/nix/nix.conf. Please find latest backup in ${BACKUP_FILE}"
sudo cp /etc/nix/nix.conf ${BACKUP_FILE} # sudo cp /etc/nix/nix.conf ${BACKUP_FILE}
sudo cp "${HOME_MANAGER_DIR}/hwtr/nix.conf" /etc/nix/ # sudo cp "${HOME_MANAGER_DIR}/hwtr/nix.conf" /etc/nix/
fi # fi
# Mason is bad: it puts binaries onto xdg.data # Mason is bad: it puts binaries onto xdg.data
# let's make mason starts fresh, just in case we introduce RPATH hacks # let's make mason starts fresh, just in case we introduce RPATH hacks