Get rid of project-specific vim

This commit is contained in:
Charlotte Van Petegem 2020-05-06 15:23:19 +02:00
parent 1afb00a3de
commit 0459c372a0
9 changed files with 182 additions and 317 deletions

View file

@ -1,145 +0,0 @@
{ pkgs, ... }:
let
customPlugins.snow-color-theme = pkgs.vimUtils.buildVimPlugin {
name = "snow";
src = pkgs.fetchFromGitHub {
owner = "nightsense";
repo = "snow";
rev = "f9800e987e404efed4748fe8098e04ddbec9770b";
sha256 = "099fky1bpppac5785bhx1jc26gfpm8n837p8487j1rf1lwq83q33";
};
};
in
{
customRC = ''
set autoread
"" Theming
set termguicolors
set background=light
colorscheme snow
"" General settings
" Undo over sessions
set undofile
set undodir=~/.cache/nvimundo
" Automatically save sessions on exit and load them on start
function! MakeSession()
let b:sessiondir = $HOME . "/.config/nvim/sessions" . getcwd()
if (filewritable(b:sessiondir) != 2)
exe 'silent !mkdir -p ' b:sessiondir
redraw!
endif
let b:filename = b:sessiondir . '/session.vim'
exe "mksession! " . b:filename
endfunction
function! LoadSession()
let b:sessiondir = $HOME . "/.config/nvim/sessions" . getcwd()
let b:sessionfile = b:sessiondir . "/session.vim"
if (filereadable(b:sessionfile))
exe 'source ' b:sessionfile
else
echo "No session loaded."
endif
endfunction
if(argc() == 0)
au VimEnter * nested :call LoadSession()
au VimLeave * :call MakeSession()
endif
"" Filetype configuration
" Base settings for all files
syntax enable
set number
set showcmd
set scrolloff=8
set expandtab
set tabstop=4
set shiftwidth=4
set linebreak
set list
set listchars=tab:·\ ,trail:·
set inccommand=split
set clipboard=unnamedplus
filetype plugin indent on
"" Fuzzy search in vim
function! s:completedFiles(winid, filename, ...) abort
bdelete!
call win_gotoid(a:winid)
if filereadable(a:filename)
let lines = readfile(a:filename)
if !empty(lines)
exe ':e ' . lines[0]
endif
call delete(a:filename)
endif
endfunction
function! FzyFiles()
let file = tempname()
let winid = win_getid()
let cmd = split(&shell) + split(&shellcmdflag) + ["${pkgs.ripgrep.out}/bin/rg --files --hidden -g '!/.git' --smart-case | ${pkgs.fzy.out}/bin/fzy > " . file]
let F = function('s:completedFiles', [winid, file])
botright 10 new
call termopen(cmd, {'on_exit': F})
startinsert
endfunction
function! s:completedGrep(winid, filename, ...) abort
bdelete!
call win_gotoid(a:winid)
if filereadable(a:filename)
let lines = readfile(a:filename)
if !empty(lines)
let list = split(lines[0], ':')
let file = list[0]
let line = list[1]
exe ':e ' . file
exe line
endif
call delete(a:filename)
endif
endfunction
function! FzyGrep()
let file = tempname()
let winid = win_getid()
let cmd = split(&shell) + split(&shellcmdflag) + ["${pkgs.ripgrep.out}/bin/rg --vimgrep --hidden -g '!/.git' '^' | ${pkgs.fzy.out}/bin/fzy > " . file]
let F = function('s:completedGrep', [winid, file])
botright 10 new
call termopen(cmd, {'on_exit': F})
startinsert
endfunction
nnoremap <C-f> :call FzyFiles()<CR>
nnoremap <C-g> :call FzyGrep()<CR>
"" Plugin configuration
let g:ale_fixers = { '*': ['remove_trailing_lines', 'trim_whitespace'] }
let g:ale_fix_on_save = 1
let g:deoplete#enable_at_startup = 1
'';
vam.knownPlugins = pkgs.vimPlugins // customPlugins;
vam.pluginDictionaries = [
{
names = [
"ale"
"auto-pairs"
"deoplete-nvim"
"editorconfig-vim"
"snow-color-theme"
"vim-nix"
];
}
];
}

View file

@ -1,11 +1,185 @@
with import <nixpkgs> { }; { pkgs, ... }:
let
customPlugins = {
snow-color-theme = pkgs.vimUtils.buildVimPlugin {
name = "snow";
src = pkgs.fetchFromGitHub {
owner = "nightsense";
repo = "snow";
rev = "f9800e987e404efed4748fe8098e04ddbec9770b";
sha256 = "099fky1bpppac5785bhx1jc26gfpm8n837p8487j1rf1lwq83q33";
};
};
kotlin-vim = pkgs.vimUtils.buildVimPlugin {
name = "kotlin-vim";
src = pkgs.fetchFromGitHub {
owner = "udalov";
repo = "kotlin-vim";
rev = "b9fa728701a0aa0b9a2ffe92f10880348fc27a8f";
sha256 = "1yqzxabhpc4jbdlzhsysp0vi1ayqg0vnpysvx4ynd9961q2fk3sz";
};
};
};
jdtls = import ../../packages/jdtls/default.nix { inherit pkgs; stdenv = pkgs.stdenv; };
kotlinls = import ../../packages/kotlin-language-server/default.nix { inherit pkgs; };
nodePackages = import ../../packages/node/default.nix { inherit pkgs; };
in
{ {
home-manager.users.charlotte = { pkgs, ... }: { home-manager.users.charlotte = { pkgs, ... }: {
home.packages = [ home.packages = [
( (
pkgs.neovim.override { pkgs.neovim.override {
configure = (import ./base.nix { inherit pkgs; }); configure = {
customRC = ''
set autoread
"" Theming
set termguicolors
set background=light
colorscheme snow
"" General settings
" Undo over sessions
set undofile
set undodir=~/.cache/nvimundo
" Automatically save sessions on exit and load them on start
function! MakeSession()
let b:sessiondir = $HOME . "/.config/nvim/sessions" . getcwd()
if (filewritable(b:sessiondir) != 2)
exe 'silent !mkdir -p ' b:sessiondir
redraw!
endif
let b:filename = b:sessiondir . '/session.vim'
exe "mksession! " . b:filename
endfunction
function! LoadSession()
let b:sessiondir = $HOME . "/.config/nvim/sessions" . getcwd()
let b:sessionfile = b:sessiondir . "/session.vim"
if (filereadable(b:sessionfile))
exe 'source ' b:sessionfile
else
echo "No session loaded."
endif
endfunction
if(argc() == 0)
au VimEnter * nested :call LoadSession()
au VimLeave * :call MakeSession()
endif
"" Filetype configuration
" Base settings for all files
syntax enable
set number
set showcmd
set scrolloff=8
set expandtab
set tabstop=4
set shiftwidth=4
set linebreak
set list
set listchars=tab:·\ ,trail:·
set inccommand=split
set clipboard=unnamedplus
filetype plugin indent on
"" Fuzzy search in vim
function! s:completedFiles(winid, filename, ...) abort
bdelete!
call win_gotoid(a:winid)
if filereadable(a:filename)
let lines = readfile(a:filename)
if !empty(lines)
exe ':e ' . lines[0]
endif
call delete(a:filename)
endif
endfunction
function! FzyFiles()
let file = tempname()
let winid = win_getid()
let cmd = split(&shell) + split(&shellcmdflag) + ["${pkgs.ripgrep.out}/bin/rg --files --hidden -g '!/.git' --smart-case | ${pkgs.fzy.out}/bin/fzy > " . file]
let F = function('s:completedFiles', [winid, file])
botright 10 new
call termopen(cmd, {'on_exit': F})
startinsert
endfunction
function! s:completedGrep(winid, filename, ...) abort
bdelete!
call win_gotoid(a:winid)
if filereadable(a:filename)
let lines = readfile(a:filename)
if !empty(lines)
let list = split(lines[0], ':')
let file = list[0]
let line = list[1]
exe ':e ' . file
exe line
endif
call delete(a:filename)
endif
endfunction
function! FzyGrep()
let file = tempname()
let winid = win_getid()
let cmd = split(&shell) + split(&shellcmdflag) + ["${pkgs.ripgrep.out}/bin/rg --vimgrep --hidden -g '!/.git' '^' | ${pkgs.fzy.out}/bin/fzy > " . file]
let F = function('s:completedGrep', [winid, file])
botright 10 new
call termopen(cmd, {'on_exit': F})
startinsert
endfunction
nnoremap <C-f> :call FzyFiles()<CR>
nnoremap <C-g> :call FzyGrep()<CR>
"" Plugin configuration
let g:ale_fixers = { '*': ['remove_trailing_lines', 'trim_whitespace'] }
let g:ale_fix_on_save = 1
let g:deoplete#enable_at_startup = 1
" Required for operations modifying multiple buffers like rename
set hidden
let g:LanguageClient_serverCommands = {
\ 'vue': ['${nodePackages.vue-language-server}/bin/vls'],
\ 'javascript': ['${nodePackages.javascript-typescript-langserver}/bin/javascript-typescript-stdio'],
\ 'typescript': ['${nodePackages.typescript-language-server}/bin/typescript-language-server', '--stdio'],
\ 'java': ['${jdtls}/bin/jdtls'],
\ 'kotlin': ['${kotlinls}/bin/kotlin-language-server']
\ 'ruby': ['${pkgs.solargraph}/bin/solargraph', 'stdio'],
\ }
'';
vam.knownPlugins = pkgs.vimPlugins // customPlugins;
vam.pluginDictionaries = [
{
names = [
"ale"
"auto-pairs"
"deoplete-nvim"
"editorconfig-vim"
"kotlin-vim"
"LanguageClient-neovim"
"snow-color-theme"
"vim-ledger"
"vim-nix"
"vim-ruby"
"vim-vue"
"yats-vim"
];
}
];
};
} }
) )
]; ];

View file

@ -8,7 +8,7 @@ buildGradle {
envSpec = ./gradle-env.json; envSpec = ./gradle-env.json;
src = fetchTarball { src = fetchTarball {
url = "https://github.com/fwcd/kotlin-language-server/archive/master.tar.gz"; url = "https://github.com/fwcd/kotlin-language-server/archive/master.tar.gz";
sha256 = "0spcxrk6gyxrrwnffsmr2f5y8zs0nq1fq2pkscih56zxz0v3dm50"; sha256 = "16qddjwcj1n79c4p9dqlj1vg6yg5rkvzb8r15jbyxsy82mp6ib3k";
}; };
gradleFlags = [ "server:installDist" ]; gradleFlags = [ "server:installDist" ];
installPhase = '' installPhase = ''

View file

@ -1,8 +1,5 @@
let let
pkgs = import <nixpkgs> { config.android_sdk.accept_license = true; }; pkgs = import <nixpkgs> { config.android_sdk.accept_license = true; };
baseVimConfig = import ../programs/neovim/base.nix { inherit pkgs; };
jdtls = import ../packages/jdtls/default.nix { inherit pkgs; stdenv = pkgs.stdenv; };
kotlinls = import ../packages/kotlin-language-server/default.nix { inherit pkgs; };
buildToolsVersion = "28.0.3"; buildToolsVersion = "28.0.3";
composed = pkgs.androidenv.composeAndroidPackages { composed = pkgs.androidenv.composeAndroidPackages {
toolsVersion = "26.1.1"; toolsVersion = "26.1.1";
@ -24,15 +21,6 @@ let
# useGoogleTVAddOns = false; # useGoogleTVAddOns = false;
# includeExtras = [ "extras;google;gcm" ]; # includeExtras = [ "extras;google;gcm" ];
}; };
customPlugins.kotlin-vim = pkgs.vimUtils.buildVimPlugin {
name = "kotlin-vim";
src = pkgs.fetchFromGitHub {
owner = "udalov";
repo = "kotlin-vim";
rev = "b9fa728701a0aa0b9a2ffe92f10880348fc27a8f";
sha256 = "1yqzxabhpc4jbdlzhsysp0vi1ayqg0vnpysvx4ynd9961q2fk3sz";
};
};
gradle-fhs-nix = pkgs.writeText "gradle-fhs.nix" '' gradle-fhs-nix = pkgs.writeText "gradle-fhs.nix" ''
{ run }: { run }:
let let
@ -73,31 +61,6 @@ pkgs.mkShell {
gradle-run-script gradle-run-script
sign-release sign-release
jdk11 jdk11
jdtls
(
neovim.override {
configure = {
customRC = baseVimConfig.customRC + ''
" Required for operations modifying multiple buffers like rename
set hidden
let g:LanguageClient_serverCommands = {
\ 'java': ['${jdtls}/bin/jdtls'],
\ 'kotlin': ['${kotlinls}/bin/kotlin-language-server']
\ }
'';
vam.knownPlugins = baseVimConfig.vam.knownPlugins // customPlugins;
vam.pluginDictionaries = (baseVimConfig.vam.pluginDictionaries or [ ]) ++ [
{
names = [
"kotlin-vim"
"LanguageClient-neovim"
];
}
];
};
}
)
]; ];
shellHook = '' shellHook = ''
export ANDROID_SDK_ROOT="${composed.androidsdk}/libexec/android-sdk/" export ANDROID_SDK_ROOT="${composed.androidsdk}/libexec/android-sdk/"

View file

@ -1,6 +1,6 @@
let let
pkgs = import <nixpkgs> { }; pkgs = import <nixpkgs> { };
baseVimConfig = import ../programs/neovim/base.nix { inherit pkgs; }; baseVimConfig = import ../configurations/neovim/base.nix { inherit pkgs; };
in in
pkgs.mkShell { pkgs.mkShell {
buildInputs = with pkgs; [ buildInputs = with pkgs; [
@ -9,29 +9,6 @@ pkgs.mkShell {
ruby_2_7 ruby_2_7
taglib taglib
zlib zlib
(
neovim.override {
configure = {
customRC = baseVimConfig.customRC + ''
" Required for operations modifying multiple buffers like rename
set hidden
let g:LanguageClient_serverCommands = {
\ 'ruby': ['${solargraph}/bin/solargraph', 'stdio'],
\ }
'';
vam.knownPlugins = baseVimConfig.vam.knownPlugins;
vam.pluginDictionaries = (baseVimConfig.vam.pluginDictionaries or [ ]) ++ [
{
names = [
"LanguageClient-neovim"
"vim-ruby"
];
}
];
};
}
)
( (
pkgs.writeScriptBin "start-db" '' pkgs.writeScriptBin "start-db" ''
#!/${pkgs.zsh}/bin/zsh #!/${pkgs.zsh}/bin/zsh

View file

@ -1,34 +1,10 @@
let let
pkgs = import <nixpkgs> { }; pkgs = import <nixpkgs> { };
baseVimConfig = import ../programs/neovim/base.nix { inherit pkgs; };
nodePackages = import ../packages/node/default.nix { inherit pkgs; };
in in
pkgs.mkShell { pkgs.mkShell {
buildInputs = with pkgs; [ buildInputs = with pkgs; [
nodejs-12_x nodejs-12_x
python38
yarn yarn
(
neovim.override {
configure = {
customRC = baseVimConfig.customRC + ''
" Required for operations modifying multiple buffers like rename
set hidden
let g:LanguageClient_serverCommands = {
\ 'vue': ['${nodePackages.vue-language-server}/bin/vls'],
\ }
'';
vam.knownPlugins = baseVimConfig.vam.knownPlugins;
vam.pluginDictionaries = (baseVimConfig.vam.pluginDictionaries or [ ]) ++ [
{
names = [
"LanguageClient-neovim"
"vim-vue"
];
}
];
};
}
)
]; ];
} }

View file

@ -1,7 +1,5 @@
let let
pkgs = import <nixpkgs> { }; pkgs = import <nixpkgs> { };
baseVimConfig = import ../programs/neovim/base.nix { inherit pkgs; };
nodePackages = import ../packages/node/default.nix { inherit pkgs; };
in in
pkgs.mkShell { pkgs.mkShell {
buildInputs = with pkgs; [ buildInputs = with pkgs; [
@ -13,7 +11,7 @@ pkgs.mkShell {
zlib zlib
( (
pkgs.writeScriptBin "start-db" '' pkgs.writeScriptBin "start-db" ''
#!${pkgs.zsh}/bin/zsh #!${zsh}/bin/zsh
trap "docker stop dodona-db" 0 trap "docker stop dodona-db" 0
trap "docker stop dodona-cache" 0 trap "docker stop dodona-cache" 0
@ -25,32 +23,6 @@ pkgs.mkShell {
wait $child wait $child
'' ''
) )
(
neovim.override {
configure = {
customRC = baseVimConfig.customRC + ''
" Required for operations modifying multiple buffers like rename
set hidden
let g:LanguageClient_serverCommands = {
\ 'ruby': ['${solargraph}/bin/solargraph', 'stdio'],
\ 'javascript': ['${nodePackages.javascript-typescript-langserver}/bin/javascript-typescript-stdio'],
\ 'typescript': ['${nodePackages.typescript-language-server}/bin/typescript-language-server', '--stdio'],
\ }
'';
vam.knownPlugins = baseVimConfig.vam.knownPlugins;
vam.pluginDictionaries = (baseVimConfig.vam.pluginDictionaries or [ ]) ++ [
{
names = [
"LanguageClient-neovim"
"vim-ruby"
"yats-vim"
];
}
];
};
}
)
]; ];
shellHook = '' shellHook = ''
export DATABASE_URL="mysql2://root:dodona@127.0.0.1:3306/dodona" export DATABASE_URL="mysql2://root:dodona@127.0.0.1:3306/dodona"

View file

@ -1,7 +1,6 @@
let let
pkgs = import <nixpkgs> { }; pkgs = import <nixpkgs> { };
baseVimConfig = import ../programs/neovim/base.nix { inherit pkgs; }; baseVimConfig = import ../configurations/neovim/base.nix { inherit pkgs; };
jdtls = import ../packages/jdtls/default.nix { inherit pkgs; stdenv = pkgs.stdenv; };
extraRpath = pkgs.stdenv.lib.strings.makeLibraryPath (with pkgs; [ ffmpeg ]); extraRpath = pkgs.stdenv.lib.strings.makeLibraryPath (with pkgs; [ ffmpeg ]);
in in
pkgs.mkShell { pkgs.mkShell {
@ -15,40 +14,6 @@ pkgs.mkShell {
'' ''
) )
jdk11 jdk11
jdtls
openjfx11 openjfx11
(
pkgs.writeScriptBin "pmd" ''
#!${pkgs.zsh}/bin/zsh
${pkgs.pmd}/bin/run.sh pmd $@
''
)
(
neovim.override {
configure = {
customRC = baseVimConfig.customRC + ''
" Required for operations modifying multiple buffers like rename
set hidden
let g:LanguageClient_serverCommands = {
\ 'java': ['${jdtls}/bin/jdtls'],
\ }
let g:ale_linters = {
\ 'java': ['pmd'],
\}
'';
vam.knownPlugins = baseVimConfig.vam.knownPlugins;
vam.pluginDictionaries = (baseVimConfig.vam.pluginDictionaries or [ ]) ++ [
{
names = [
"LanguageClient-neovim"
];
}
];
};
}
)
]; ];
} }

View file

@ -1,17 +0,0 @@
let
pkgs = import <nixpkgs> { };
baseVimConfig = import ../programs/neovim/base.nix { inherit pkgs; };
in
pkgs.mkShell {
buildInputs = with pkgs; [
(
neovim.override {
configure = {
customRC = baseVimConfig.customRC;
vam.knownPlugins = baseVimConfig.vam.knownPlugins;
vam.pluginDictionaries = (baseVimConfig.vam.pluginDictionaries or [ ]) ++ [{ name = "vim-ledger"; }];
};
}
)
];
}