summaryrefslogtreecommitdiffstats
path: root/jeschli/2configs/vim.nix
diff options
context:
space:
mode:
Diffstat (limited to 'jeschli/2configs/vim.nix')
-rw-r--r--jeschli/2configs/vim.nix102
1 files changed, 102 insertions, 0 deletions
diff --git a/jeschli/2configs/vim.nix b/jeschli/2configs/vim.nix
new file mode 100644
index 0000000..43fcb19
--- /dev/null
+++ b/jeschli/2configs/vim.nix
@@ -0,0 +1,102 @@
+{ config, pkgs, ... }:
+
+
+# let
+# customPlugins.ultisnips = pkgs.vimUtils.buildVimPlugin {
+# name = "ultisnips";
+# src = pkgs.fetchFromGitHub {
+# owner = "SirVer";
+# repo = "ultisnips";
+# rev = "3.1";
+# sha256 = "0p9d91h9pm0nx0d77lqsgv6158q052cyj4nm1rd6zvbay9bkkf8b";
+# };
+# };
+#
+let
+ customPlugins.vim-javascript = pkgs.vimUtils.buildVimPlugin {
+ name = "vim-javascript";
+ src = pkgs.fetchFromGitHub {
+ owner = "pangloss";
+ repo = "vim-javascript";
+ rev = "1.2.5.1";
+ sha256 = "08l7ricd3j5h2bj9i566byh39v9n5wj5mj75f2c8a5dsc732b2k7";
+ };
+ };
+ customPlugins.vim-jsx = pkgs.vimUtils.buildVimPlugin {
+ name = "vim-jsx";
+ src = pkgs.fetchFromGitHub {
+ owner = "mxw";
+ repo = "vim-jsx";
+ rev = "5b968dfa512c57c38ad7fe420f3e8ab75a73949a";
+ sha256 = "1z3yhhbmbzfw68qjzyvpbmlyv2a1p814sy5q2knn04kcl30vx94a";
+ };
+ };
+in {
+# {
+ environment.systemPackages = [
+ (pkgs.vim_configurable.customize {
+ name = "vim";
+
+ vimrcConfig.customRC = ''
+ :imap jk <Esc>
+ :vmap v v
+ :map gr :GoRun<Enter>
+ :nnoremap <S-TAB> :bnext<CR>
+ :nnoremap <C-TAB> <c-w><c-w>
+ set autowrite
+ set number
+ set ruler
+
+ noremap x "_x
+ set clipboard=unnamedplus
+
+ let g:jsx_ext_required = 0
+
+ let g:go_list_type = "quickfix"
+ let g:go_test_timeout = '10s'
+ let g:go_fmt_command = "goimports"
+ let g:go_snippet_case_type = "camelcase"
+ let g:go_highlight_types = 1
+ let g:go_highlight_fields = 1
+ let g:go_highlight_functions = 1
+ let g:go_highlight_methods = 1
+ let g:go_highlight_extra_types = 1
+ autocmd BufNewFile,BufRead *.go setlocal noexpandtab tabstop=4 shiftwidth=4
+ let g:rehash256 = 1
+ let g:molokai_original = 1
+ colorscheme molokai
+ let g:go_metalinter_enabled = ['vet', 'golint', 'errcheck']
+ let g:go_metalinter_autosave = 1
+ " let g:go_metalinter_autosave_enabled = ['vet', 'golint']
+ " let g:go_def_mode = 'godef'
+ " let g:go_decls_includes = "func,type"
+
+
+ " Trigger configuration. Do not use <tab> if you use https://github.com/Valloric/YouCompleteMe.
+ let g:UltiSnipsExpandTrigger="<c-e>"
+ let g:UltiSnipsJumpForwardTrigger="<c-t>"
+ let g:UltiSnipsJumpBackwardTrigger="<c-q>"
+
+ " If you want :UltiSnipsEdit to split your window.
+ let g:UltiSnipsEditSplit="vertical"
+
+ if has('persistent_undo') "check if your vim version supports it
+ set undofile "turn on the feature
+ set undodir=$HOME/.vim/undo "directory where the undo files will be stored
+ endif
+ '';
+
+ vimrcConfig.vam.knownPlugins = pkgs.vimPlugins // customPlugins;
+ vimrcConfig.vam.pluginDictionaries = [
+ { names = [ "undotree" "molokai" ]; } # wanted: fatih/molokai
+ # vim-nix handles indentation better but does not perform sanity
+ { names = [ "vim-addon-nix" ]; ft_regex = "^nix\$"; }
+ { names = [ "vim-go" ]; ft_regex = "^go\$"; } # wanted: nsf/gocode
+ { names = [ "vim-javascript" ]; ft_regex = "^js\$"; }
+ { names = [ "vim-jsx" ]; ft_regex = "^js\$"; }
+ { names = [ "UltiSnips" ]; ft_regex = "^go\$"; }
+ ];
+
+ })
+ ];
+}