-
Notifications
You must be signed in to change notification settings - Fork 0
/
vimrc
3993 lines (3464 loc) · 192 KB
/
vimrc
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
scriptencoding utf-8
" vim: set shiftwidth=2 tabstop=2 softtabstop=2 ft=vim fdm=marker:
" if &shell =~# 'fish$' | set shell=zsh | endif "some stuff apparently still iffy about this? obvs fucks fish with :terminal etc tho, workaround?
"{{{1 PLUGIN LOAD
filetype off "{{{2
if empty(glob('~/.vim/autoload/plug.vim'))
silent !curl -fLo ~/.vim/autoload/plug.vim --create-dirs https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
autocmd VimEnter * PlugInstall --sync | source $MYVIMRC
endif
call plug#begin() "call plug#begin('~/.vim/plugged')
"}}}
"{{{2 --- FUZZ ME 'ARD | WIT UR <BAR>-LINE PLUG
Plug 'ctrlpvim/ctrlp.vim' "| Plug 'tacahiroy/ctrlp-funky' | Plug 'sgur/ctrlp-extensions.vim' | Plug 'jasoncodes/ctrlp-modified.vim'
" Plug 'nixprime/cpsm', {'do': 'set -x PY3 ON; ./install.sh'} "matcher for ctrlp/deoplete
" Plug 'nixprime/cpsm' "matcher for ctrlp/deoplete
Plug '/usr/local/opt/fzf' | Plug 'junegunn/fzf.vim' "proper way when already have brew fzf. should check if path exists first tho, for linuxbrew etc
" Plug 'Shougo/denite.nvim' "| Plug 'Shougo/neomru.vim', {'on': 'Denite'} | Plug 'Shougo/unite.vim' "if loading denite on demand would need to check if exists before calling setup funcs...
Plug 'liuchengxu/vim-which-key' "show what possble
Plug 'teto/nvim-palette', { 'do': ':UpdateRemotePlugins'} "opts fuzzy. needs: python -mpip install --user pandas
Plug 'francoiscabrol/ranger.vim' | Plug 'rbgrouleff/bclose.vim' "ranger integration, plus neovim dependency
" Plug 'tiagofumo/vim-nerdtree-syntax-highlight' "colored devicons - better than other script?
if !exists('g:pager_mode_so_fuckoff_all_fatasses')
Plug 'vim-airline/vim-airline' "| Plug 'vim-airline/vim-airline-themes'
" Plug 'mg979/vim-xtabline' "extra addons to airline tabline extension
Plug 'mhinz/vim-startify' "nice lil start page/session manager
Plug 'tpope/vim-obsession' | Plug 'dhruvasagar/vim-prosession' "obsession-based manager of joint session manitee to the chair(s) of people's mutual amateur persistance(leninist-revolutionary) pro forma and Bono
Plug 'mbbill/undotree' ", {'on': 'UndotreeToggle'}
Plug 'majutsushi/tagbar' ", {'on': 'TagbarToggle'}
Plug 'scrooloose/nerdtree'
" Plug 'Xuyuanp/nerdtree-git-plugin' "on-again off-again slowdown issues ugh
" Plug 'ryanoasis/vim-devicons' "post-emoji bullshit for adult idiots. so fucking pretty
endif
Plug 'padde/jump.vim' "autojump in vim
" Plug 'mileszs/ack.vim'
" Plug 'rking/ag.vim' "nvim stallign on this leading to the 100% cpu bs, questionmark
Plug 'gcmt/taboo.vim' "rename tabs and stuff
" Plug 'bling/vim-bufferline' "buffer list in cmd bar? sounds nifty, mostly just random spew there anyways. But ugly and too aggro. Fork and fix?
"{{{2 --- SYNTAX B REAL COLERFULL PLUG
Plug 'sheerun/vim-polyglot' "shit ton of different languages
let g:polyglot_disabled=['tmux', 'json', 'python', 'clojure', 'fish'] "have better replacements
"{{{ HONEST HARDWORKING MURICAN SYNTAXES OUT OF A JOB BC POLYGLOT IMGRANTS???
Plug 'xolox/vim-misc' | Plug 'xolox/vim-lua-ftplugin', {'for': 'lua'} "| Plug 'xolox/vim-lua-inspect'
Plug 'darfink/vim-plist' ", {'for': 'plist'} vimplug doesnt recognize plist files
"}}}
Plug 'wilriker/vim-fish', {'for': 'fish'} "more active than 'dag/vim-fish' and kballard fork
Plug 'tmux-plugins/vim-tmux' "polyglot has a bullshit one
Plug 'jez/vim-github-hub' "github ft
" Plug 'MikeCoder/markdown-preview.vim'
Plug 'elzr/vim-json' "proper json hl
Plug 'cyberkov/openhab-vim' "openhab syntax
Plug 'jceb/vim-orgmode' | Plug 'tpope/vim-speeddating' "orgmode a la emacs + date incr/decr support plug so it'll stop complaining...
" Plug 'junegunn/goyo.vim' | Plug 'junegunn/limelight.vim' "for writing normal text or some shit
" Plug 'reedes/vim-pencil' "natural text processing
Plug 'hdima/python-syntax' "better python syntax def
Plug 'octol/vim-cpp-enhanced-highlight' "modern c++
" Plug 'gauteh/vim-cppman' "cppman K integration... does the nomodifiable bug dance + fucks w word settings
" Plug 'skywind3000/vim-cppman' "is this fucking stuff??
Plug 'martong/vim-compiledb-path'
" Plug 'tweekmonster/nvim-api-viewer'
" LANG UTILS
" Plug 'metakirby5/codi.vim' "real-time double-pane REPL
" Plug 'bfredl/nvim-ipy' "ipython integration
" Plug 'Vigemus/iron.nvim', {'branch': 'legacy'} "more python/repl stuff
" Plug 'klen/python-mode', {'for': 'python'}
Plug 'Shougo/vinarise.vim', {'on': 'Vinarise'} "hex viewer
Plug 'powerman/vim-plugin-AnsiEsc' "view files with ansi escape colors.
Plug 'chrisbra/Colorizer' "no {'on': 'ColorToggle'} bc use others first already, cant lazy-load highlight color names/hex w their actual color. mad slow, ugh
Plug 'diepm/vim-rest-console'
Plug 'sophacles/vim-processing'
" Plug 'stevearc/vim-arduino', {'for': 'arduino,cpp'}
" Plug 'sudar/vim-arduino-snippets' "arduino upload etc, overlaps platformio i guess, do i need?
Plug 'othree/yajs.vim', {'for': 'javascript'} | Plug 'othree/es.next.syntax.vim', {'for': 'javascript'} "better javascript syntax inkl ES6+ES7
Plug 'tpope/vim-fireplace' "try rm for clojure because keeps dropping and having to reload files ugh
" Plug 'clojure-vim/acid.nvim', {'for': 'clojure', 'do': 'UpdateRemotePlugins'} "seems buggy. general clojure plug somehow...
" Plug 'clojure-vim/acid.nvim', {'do': 'UpdateRemotePlugins'} "seems buggy. general clojure plug somehow...
Plug 'liquidz/vim-iced' ", {'for': 'clojure'}
" Plug 'markwoodhall/vim-aurepl'
Plug 'clojure-vim/vim-cider', {'for': 'clojure'} "more refactor/cider...
Plug 'arsenerei/vim-sayid'
" Plug 'SevereOverfl0w/vim-replant', { 'do': ':UpdateRemotePlugins' }
" Plug 'dgrnbrg/vim-redl'
" Plug 'clojure-vim/async-clj-highlight', {'for': 'clojure'} "hl local, referred, aliased vars as guns/vim-clojure-highlight, but async for nvim
" then fork and put as different eg clojureUserFunc clojureUserVar etc....
Plug 'venantius/vim-eastwood', {'for': 'clojure'}
Plug 'humorless/vim-kibit'
Plug 'venantius/vim-cljfmt', {'for': 'clojure'} "clojure formatter
Plug 'clojure-vim/clj-refactor.nvim' "refactor-nrepl frontend
Plug 'tpope/vim-classpath', {'for':['clojure', 'java']}
Plug 'tpope/vim-salve', {'for': 'clojure'} "auto clojure/java classpath. could be this fucking me?
Plug 'guns/vim-sexp', {'for': 'clojure'} | Plug 'tpope/vim-sexp-mappings-for-regular-people', {'for': 'clojure'}
" Plug 'kotarak/vimpire', {'for': 'clojure'} "prepl-based ide functionality. maybe worth using one day...
" Plug 'clojure-vim/async-clj-omni' ", {'for': 'clojure'}
" Plug 'snoe/nvim-parinfer.js'
" Plug 'junegunn/rainbow_parentheses.vim' ", {'on': 'RainbowParentheses'} "active fork of kien/rainbow_parentheses.vim
" Plug 'jeaye/color_coded' "fancy clang highlighting...no neovim support yet :/
" Plug 'arakashic/chromatica.nvim' "same but for nvim. p buggy, hl-wise
" Plug 'Shougo/neosnippet' | Plug 'Shougo/neosnippet-snippets'
" Plug 'honza/vim-snippets'
Plug 'w0rp/ale' "neovim lint
" Plug 'meck/ale-platformio' "ale plugin for pio. but ale can parse compile_commands so fuck it
Plug 'SevereOverfl0w/clojure-check', {'do': './install'} "clojure lint for ALE
" Plug 'joonty/vdebug' "adds itself to path again and again it seems
"{{{3 COMPLETE COMPLETE SOURCES
Plug 'ncm2/ncm2' | Plug 'roxma/nvim-yarp'
Plug 'ncm2/ncm2-vim-lsp'
Plug 'ncm2/ncm2-bufword' | Plug 'ncm2/ncm2-path'
"Plug 'ncm2/ncm2-syntax' "shit and broken?
Plug 'ncm2/ncm2-pyclang'
Plug 'ncm2/ncm2-tmux'
Plug 'ncm2/ncm2-vim'
Plug 'clojure-vim/async-clj-omni' ", {'for': 'clojure'}
" Plug 'autozimu/LanguageClient-neovim', {'branch': 'next', 'do': 'bash install.sh'} "unified completion server spec client thingY
Plug 'prabirshrestha/vim-lsp' | Plug 'prabirshrestha/async.vim' "test if less shit?
Plug 'pdavydov108/vim-lsp-cquery' "extra stuff for cquery
" Plug 'Shougo/deoplete.nvim', {'do': ':UpdateRemotePlugins'}
" Plug 'tweekmonster/deoplete-clang2' ", {'for': ['c', 'cpp', 'ObjC', 'ino']}
" Plug 'zchee/deoplete-jedi', {'for': 'python'}
" Plug 'zchee/deoplete-go', {'for': 'go', 'do': 'make'} "breaking ale lol?
" Plug 'mitsuse/autocomplete-swift', {'for': 'swift'}
" Plug 'carlitux/deoplete-ternjs', {'for': ['javascript', 'javascript.jsx']}
" Plug 'ponko2/deoplete-fish', {'for': 'fish'}
" Plug 'Shougo/neco-vim', {'for': 'vim'}
" Plug 'zchee/deoplete-zsh', {'for': 'zsh'}
" Plug 'Shougo/neco-syntax' "super broken keeps adding dup autocmds... filetype syntax completion
Plug 'Shougo/context_filetype.vim'
Plug 'Shougo/neoinclude.vim' "complete from included files?
" Plug 'wellle/tmux-complete.vim'
" Plug 'SevereOverfl0w/deoplete-github'
" Plug 'thalesmello/webcomplete.vim'
"}}}
" Plug 'Shougo/echodoc.vim' "show function args in msg area after completing function name
" Plug 'Shougo/neopairs.vim' "autopairs from shuogo?
Plug 'neomake/neomake' | Plug 'coddingtonbear/neomake-platformio', {'do': ':UpdateRemotePlugins'} "koar linting
" Plug 'artur-shaik/vim-javacomplete2', {'for': 'java'} "more moderny than 'cilquirm/javacomplete'
Plug 'davidhalter/jedi-vim', {'for': 'python'}
" Plug 'ternjs/tern_for_vim', {'for': ['javascript', 'javascript.jsx'], 'do': 'npm install'}
" Plug 'othree/jspc.vim', {'for': ['javascript', 'javascript.jsx']}
Plug 'chrisbra/unicode.vim' "unicode char completion
"{{{2 --- UTILNTTY PLUG
" Plug 'Khouba/indent-detector.vim' "always pissing me off
" Plug 'marcweber/vim-addon-mw-utils' "tinyfunc and utils. noneed?
" Plug 'LucHermitte/vim-refactor' | Plug 'LucHermitte/lh-vim-lib' | Plug 'LucHermitte/lh-tags' | Plug 'LucHermitte/lh-dev' | Plug 'LucHermitte/lh-brackets'
" ^ welp, fuck this asshole then. plug has four deps, some of which create mappings and yell loudly about it, with no ability to disable? fucking dick.
Plug 'tomtom/tcomment_vim', {'on': 'TComment'} "toggle comments better
Plug 'tpope/vim-commentary' "toggle comments with textobjs
Plug 'tpope/vim-surround' "put stuff around stuff
Plug 'tpope/vim-repeat' " . for plugins
" Plug 'kana/vim-arpeggio' "key chord support
Plug 'jiangmiao/auto-pairs' "test if works better than gentle ver
" Plug 'tpope/vim-endwise' "auto endif endfunc etc
Plug 'bfredl/nvim-miniyank' "pro yank killring like in shell
Plug 'machakann/vim-highlightedyank' "should be part of default vim
" Plug 'vim-scripts/highlight.vim' "bare fucks shit up. Find alternative hl shit without :hi. toggle mark-highlight current line etc
Plug 't9md/vim-textmanip' "move lines around visually
Plug 'salsifis/vim-transpose' "transpose words n shit
Plug 'AndrewRadev/splitjoin.vim' "break up single-line statements into multi-line ones, and vice versa
Plug 'tommcdo/vim-exchange' "easily flip two words/motions
Plug 'terryma/vim-expand-region' "select awesomely
" Plug 'tomtom/tinykeymap_vim' "for repeating multikey stuff easier (eg. C-w-+)
" Plug 'tpope/vim-rsi' "readline bindings
Plug 'vim-utils/vim-husk' "less aggro readline bindings?
Plug 'junegunn/vim-easy-align' "easier more better text align than tabular
" Plug 'sbdchd/neoformat' "format code
Plug 'ntpeters/vim-better-whitespace' "only nazis like white spaces
" Plug '907th/vim-auto-save', {'for': 'text'} "autosave, for my note popup term
" Plug 'MarcWeber/vim-addon-local-vimrc', {'for': 'text'} "per folder .localvimrc
Plug 'tpope/vim-tbone' "tmux stuff
" Plug 'benmills/vimux' | Plug 'julienr/vimux-pyutils' "fucking with my mappings, piss off
Plug 'tpope/vim-eunuch' "shell tool unix stuff
Plug 'lambdalisue/suda.vim' "nvim sudo edit. requires both pw + touchid heh
" Plug 'justinmk/vim-dirvish' "aardKORE rename...dir viewer heuh
" Plug 'tpope/vim-dispatch', {'on': 'Dispatch'} | Plug 'radenling/vim-dispatch-neovim' "async shell jobs etc
Plug 'tpope/vim-scriptease' "do debug a scriptz (+ :Verbose = auto redir to preview window, hell yeah)
Plug 'kana/vim-textobj-user' | Plug 'kana/vim-textobj-line' | Plug 'kana/vim-textobj-indent' "custom text objects
Plug 'thinca/vim-textobj-between' | Plug 'saaguero/vim-textobj-pastedtext'
Plug 'jceb/vim-textobj-uri' | Plug 'kana/vim-textobj-syntax' | Plug 'rhysd/vim-textobj-continuous-line'
" Plug 'vimtaku/vim-textobj-keyvalue' | Plug 'kana/vim-textobj-entire' "both these much heavier during startup than other plugs. only 30ms, but since I don't really use them anyways...
" Plug 'vim-scripts/marvim' "save macros and shit, maybe when im better with those
" Plug 'vim-scripts/repeatable-motions.vim' "repeat movements/motions
" Plug 'nathanaelkane/vim-indent-guides'
Plug 'kopischke/vim-stay' "auto-persist position, folds etc on :e etc. bugs in nvim, fix
Plug 'kopischke/vim-fetch' "open file to line/col using format from stack traces and similar
" Plug 'lambdalisue/pinkyless.vim' "maybe good w a different config
Plug 'blueyed/vim-diminactive' "dim inactive windows. love it but maybe a perf issue
" Plug 'mtth/cursorcross.vim'
Plug 'AndrewRadev/linediff.vim' "diff two regions in file
Plug 'skywind3000/vim-preview' "commands for preview window. prob not the ones i actually proper need
Plug 'mhinz/vim-halo' "helper thing sorta to blink current line on timer. incorporate into meta etc...
Plug 'gfontenot/vim-xcode'
" Plug 'mhinz/vim-galore' "not actually a plug, but bunch of good vim infoz
" Plug 'lifepillar/vim-cheat40' "quick-reference
Plug 'huawenyu/new.vim' | Plug 'huawenyu/new-gdb.vim' "more better gdb integration
"{{{2 --- SATNAV YOU A GLONASS PLUG
" Plug 'itchyny/vim-cursorword' "lighter than matchmaker.
Plug 'justinmk/vim-sneak' "best parts of vim-seek and easymotion in one basically
Plug 'haya14busa/incsearch.vim' "atm using own version bc they refuse to fix nvim bug
Plug 'haya14busa/incsearch-fuzzy.vim' "fuzzysearch for incsearch
Plug 'bronson/vim-visual-star-search' "search for selection with *
Plug 'terryma/vim-multiple-cursors' "why is this slow as balls? fantastic, either way
Plug 'embear/vim-foldsearch'
" Plug 'tpope/vim-unimpaired' "shortcuts for stuff via [], would need to rebind
" Plug 'zhaocai/GoldenView.Vim', {'on': 'ToggleGoldenViewAutoResize'} "buggier than a motherfucker
Plug 'szw/vim-maximizer', {'on': 'MaximizerToggle'} "maximize/restore split
Plug 't9md/vim-choosewin' "navigate to windows like tmux overlays, including windowswap functionality. Not actually slow, was only feeling problematic bc of binding and timeouts
Plug 'lacombar/vim-mpage', {'on': 'MPageToggle'} "multipage. view buffer over multiple windows, like a book
Plug 'mhinz/vim-sayonara', {'on': 'Sayonara'} "kill buffer preserve window
Plug 'Shougo/neoyank.vim' "yank history for unite/denite?
" Plug 'tpope/vim-vinegar' "netrw betterer
" Plug 'airblade/vim-rooter' "auto change cwd to proj base. startify can handle?
Plug 'Konfekt/FastFold' "make folds easier lighter on sys
Plug 'chrisbra/NrrwRgn' "narrow region, like metabuffer but for babies I guess
Plug 'kshenoy/vim-signature' "put marks n shit, yo
Plug 'blueyed/vim-qf_resize'
"{{{2 --- B THE DIFFERENCED & ASSORTED LALL PLUG
Plug 'airblade/vim-gitgutter'
Plug 'tpope/vim-fugitive' | Plug 'tpope/vim-rhubarb' "git stuff, hub stuff
" Plug 'gregsexton/gitv', {'on': ['Gitv']}
" Plug 'jreybert/vimagit'
" Plug 'lambdalisue/gina.vim'
" Plug 'jaxbot/github-issues.vim'
" Plug 'diraol/vim-easytags' "maybe slow...
Plug 'ludovicchabant/vim-gutentags'
" Plug 'vim-scripts/yate' "taglist but from manual ctags
" Plug 'brettanomyces/nvim-terminus' ", {'on': 'TerminusOpen'} call nvim from term inside nvim, with :. Can't lazy load, errors
Plug 'kassio/neoterm' "the neovim terminal
Plug 'https://gitlab.com/Lenovsky/nuake.git' "quake term in-nvim
" Plug 'rkitover/vimpager'
" Plug 'lambdalisue/vim-pager' "| Plug 'lambdalisue/vim-manpager'
if !has('nvim')
Plug 'lambdalisue/vim-rplugin'
Plug 'ConradIrwin/vim-bracketed-paste' "auto paste mode and back. not needed for nvim
endif
"{{{2 --- FANCY JOAN FREGERT's FORKS and originals PLUG
" Plug '~/CODE/VIM/forks--/vim-manpager'
Plug '~/CODE/VIM/forks--/semantic-highlight.vim', {'on': 'SemanticHighlightToggle'} "incl patch for guicolors 'jaxbot/semantic-highlight.vim'
" Plug '~/.config/nvim/scripts/ColDevicons' "colored devicons in nerdtree, even prettier
Plug '~/CODE/VIM/forks--/vim-numbertoggle' "forked 'jeffkreeftmeijer/vim-numbertoggle' auto switch on rel numbers for normal and visual?
Plug '~/CODE/VIM/forks--/vim-cursorword' "cant remember what i fixed. performance?
Plug '~/CODE/VIM/forks--/vim-sayonara' "oh wait bwipeout is too much, kills undo history forever etc. but how else get rid of jump garbage? :|
" Plug '~/CODE/VIM/forks--/webcomplete.vim' "quick fix to not auto-launch chrome if not launched, before proper webcomplete implemented...
Plug '~/CODE/VIM/COLORS/bruvbox' "eventual bruvbox
" Plug 'tolgraven/bruvbox' "eventual bruvbox
Plug '~/CODE/VIM/proper-smooth.vim' "super laggy with curr nvim/iterm/tmux etc
" Plug 'tolgraven/proper-smooth.vim' "super laggy with curr nvim/iterm/tmux etc
Plug '~/CODE/VIM/LISTA/metabuffer.nvim' " 'tolgraven/metabuffer.nvim'
Plug '~/CODE/VIM/proper-vim-tmux-nav' " 'tolgraven/proper-vim-tmux-nav'
Plug 'tolgraven/rainbow_parentheses.vim' , {'on': 'RainbowParentheses'}
" Plug '~/CODE/VIM/ale-platformio.vim'
"{{{2 LAST IN ORDER
Plug 'arakashic/chromatica.nvim', {'for': ['c', 'cpp', 'ObjC']} "like color_coded but for nvim
Plug 'numirias/semshi', {'do': ':UpdateRemotePlugins'}
"}}}
"{{{2 PLUG END
call plug#end()
" set runtimepath +=~/.vim/bundle/deoplete.nvim "this doesnt even exist so def not needed lol
let g:plug_threads =96 "more simult instances when updating plugs
augroup VimPlug | autocmd!
" autocmd VimEnter * if len(filter(values(g:plugs), '!isdirectory(v:val.dir)')) | PlugInstall --sync | q | endif "auto install missing plugins on start
augroup END
"}}}
"{{{1 SETTINGS
"{{{2 COLORSCHEME - SET EARLY so vimrc errors dont look gross
let g:bruvbox_number_column ='bg0_h' "
let g:bruvbox_sign_column ='bg0_m'
let g:bruvbox_color_column ='bg0_s' "'bg0_h'
let g:bruvbox_fold_column ='bg0_m' "test
let g:bruvbox_vert_split ='bg1'
let g:bruvbox_italic =1 "bold, underline, undercurl already enabled by default
" let g:bruvbox_italicize_strings =1 "bold, underline, undercurl already enabled by default
" let g:bruvbox_inverse =0
let g:bruvbox_invert_selection =1
" let g:bruvbox_invert_tabline =0
let g:bruvbox_underline_cursorline =1
let &background = get(g:, 'bg_forced', 'dark')
colorscheme bruvbox "gruvbox
let g:airline_theme ='bruvbox'
"}}}
if has('nvim') "{{{2
" let $NVIM_TUI_ENABLE_CURSOR_SHAPE=1 "deprecated in >0.2.0, use guicursor, default is:
" set guicursor=n-v-c-sm:block,i-ci-ve:ver25,r-cr-o:hor20
" let $VISUAL = 'nvr --remote-wait' "--remote-wait-silent
language en_US "fuckface nvim not respecting LANG erww
if $TERM_PROGRAM != 'Apple_Terminal'
set termguicolors "24 bit color, no iterm check bc tmux
endif
if $TERM_PROGRAM =~? 'iTerm.app' "some are already handled by NVIM var above
let &t_te = "\<Esc>]1337;CursorShape=1\x7" "reset cursor on exit (or use autocmd VimLeave)
" let &t_SI = "\<Esc>]1337;CursorShape=1\x7" " Vertical bar in insert mode
" let &t_EI = "\<Esc>]1337;CursorShape=0\x7" " Block in normal mode
" let &t_SR = "\<Esc>]1337;CursorShape=2\x7" " Underline in replace mode
" t_ti = vim start, t_te = vim exit
else
" let g:webdevicons_enable =0 "disable devicons on mobile etc
endif
set noshowcmd "something about nvim + tmux flickering issues...
set mouse =a "no longer autoset in neovim 0.2.0 for some reason? $TERM thing?
set mousemodel =popup_setpos
set inccommand =split "like incsearch but for eg :substitute, showing results on the fly. 'nosplit' same but only for curr visible / without preview window. nvim exclusive feature...
augroup NeovimSpecific | autocmd!
autocmd CompleteDone * silent! pclose!
" autocmd BufEnter term://* startinsert "check how we arrived, first. if from other tab page or something, dont...
" autocmd TermOpen * let g:last_terminal_job_id = b:terminal_job_id
augroup END
" autocmd TermOpen
" autocmd CursorHold * rshada|wshada
augroup END
else "{{{2 REGULAR VIM
if has('syntax') && !exists('g:syntax_on')
syntax enable
endif
if has('autocmd') | filetype plugin indent on | endif
set encoding =utf-8
set undodir =~/.vim/undo "nvim = XDG_DATA_HOME used otherwise which is better anyways
set backupdir =~/.vim/backup
set dir =~/.vim/swap
set viewdir =~/.vim/view
set autoread " auto reload changed file
set wildmenu
set laststatus =2 "2 = statusline even if just one pane/window
endif
"{{{2 use iterm decslrm outside tmux
"if !'$TMUX'
" let &t_ti = &t_ti . "\e[?69h"
" let &t_te = "\e[?69l" . &t_te
" let &t_CV = "\e[%i%p1%d;%p2%ds"
" endif
"{{{2 AUTOCMDS
"{{{3 generic
function! SignScrollbarUpdate()
"use the extended signs function thing or like?
" let l:height = winheight(0)
" let l:po
" let percent =
endfunction
augroup Focus | autocmd!
autocmd FocusGained,BufEnter * silent! checktime "make autoread actually read automatically... once leave+return to window, but that's mostly enough
autocmd BufEnter * silent! normal! ze
"CANT PUT COMMENT ON SAME LINE. dirty hack test, fix so horiz view doesnt stay all shitty after windows are resized. need silent! since craps out when returning from FZF terminal window, somehow gets executed before actually leaving terminal?
" also craps out depending on direction one is switching from? weird ah, happens if other window is covering cursor before switching from right
augroup END
"}}}
augroup VimStart | autocmd!
" autocmd StdinReadPre * let s:std_in=1 "opens nerdtree if vim started bare + ensure startify loads as normal
" how can i get it to not run this when loading a session? and why doesnt that count as args anyways? makes no sense
" XXX also needs a check for how large curr dir is. so dont open tree if > 30 or something...
" autocmd VimEnter * if argc() == 0 && !exists("s:std_in") | Startify | NERDTree | wincmd w | endif
" autocmd VimEnter * if argc() == 1 && isdirectory(argv()[0]) && !exists("s:std_in") | exe 'NERDTree' argv()[0] | wincmd p | enew | endif "opens nerd if vim started with dir
autocmd VimEnter * call DeopleteInit() " | normal! <Esc><Esc>
" ^ this normal <Esc><Esc> was causing the changes-on-start, no idea why or what is was used as a workaround for in the first place... landing in insert i guess? but then why normal lol
" autocmd InsertEnter * call deoplete#enable() "obviouslymaes it reenable and fuck yo_
" autocmd InsertEnter * call DeopleteEnable()
autocmd VimEnter * command! -bang -nargs=* Ag
\ call fzf#vim#ag(<q-args>, <bang>0 ? fzf#vim#with_preview('up:60%') : fzf#vim#with_preview('right:50%:hidden', '?'), <bang>0)
" autocmd BufReadPost * let &colorcolumn=join(range(100,300),',') "fade bg slightly past not 80 but 100 cols bc fuck yall, 43in display innit
" When editing a file, jump to the last known valid cursor pos, unless inside an event handler "is this fucking me? nope something else...
autocmd BufReadPost * if line("'\"") >= 1 && line("'\"") <= line("$") | execute "normal! g`\"" | endif
" USER EVENTS
" autocmd User Gitgutter
" autocmd User Startified call ColDevicons_init()
autocmd User AirlineAfterInit AirlineRefresh "need extra redraw to put my mods in
"below only triggers on exit, not on <C-z>. how hook on that? also not doing it properly anyways so...
" autocmd VimLeave * !echo "\<Esc>]1337;CursorShape=1\x7"
augroup END
"}}}
"{{{2 LOOK
" set background =dark
set number "show line numbers
set numberwidth =3 "min numcol width incl 1 space. 3 = eg '97 '. if <100 LOC less offset from curr line/surrounding ones when using relativenumber. default=4
set showmatch matchtime =3 "quickly jump to highlighted matching bracket, 3 = 0.2s?
set cursorline "hmm maybe turn off since iterm already has line? apparently slows
set showtabline =2 "2 = tabline always. 1 = if multiple... tabs, not buffers :/
set noshowmode "dont show normal/insert etc, cause airline does
set shortmess =atTcA "abbr cmdline msgs, truncate long ones, no completion info, no ATTENTION swapfile
set foldminlines =2 "dont fold < 3 lines. 1 is default = 2 lines
set foldopen +=jump "open folds on jumps duh
set foldlevelstart =1 " default -1. 1 == open first level
set foldcolumn =0 "enable per filetype, where relevant
set fillchars =fold:\ " blank space instead of dashes to fill folds. = not += lest get multiple
set fillchars +=vert:│ "compare '│' to the '|' default regular pipe which leaves gaps and looks like shit. but no different unless proper font / rendering? both look same on iterm 3.0, but good on nightly/3.1 (with Fira Code / ligatures). also might be the reason shit goes slowwww when using splits, both in vim and tmux..
set list "show tabs and trails. nah, annoying, autocleanup instead
" set listchars =tab:░░,trail:▓
" set listchars +=eol:↵
let &listchars ='tab:· ,trail:·,eol:↵'
" extends:❯,precedes:❮, <- fuck these, just waste ONE ENTIRE CHAR of INFORMATION
let &colorcolumn=join(range(100,240),',') "fade bg slightly past not 80 but 100 cols bc fuck yall, 43in display innit
"}}}
set ttimeout ttimeoutlen =10 "timeout for keycode sequence. had at 50 earlier, why?
set timeoutlen =250 "timeout for mapped sequences
set updatetime =350 "time idle before bg shit runs, CursorHold etc
set redrawtime =3000 "default 2000. abort hlsearch, inccommand, :match highlighting if takes more than a sec. might help with Colorizer?
" set lazyredraw "less crazy glitchy spasms but overall even slower?
set maxmempattern =10000 "up from 1000(kb) for big jsons...
set shiftround
set tabstop=2 shiftwidth=2
set expandtab smarttab "converts tabs to spaces/inser spaces instead of tatebs at SOL
set textwidth =0 "0 is default so dunno why the fuck mine gets set to 78
set belloff =mess,spell,wildmode
set title titlelen =60 "set title of terminal window running vim. wrap title at 60 chars
" set titlestring ='' "figure out, statusline syntax
set nowrap "no wrap by default, def right call, just toggle on with keybind
set whichwrap =<,>,[,],b,s "which keys also move past eol. now arrow, b, w etc
set linebreak "wraps a bit smarter
set ignorecase smartcase "use case when explicit
set nostartofline "keep cursor on same column even on larger jumps
" set smartindent "apparently not recommended because something something deprecated and cindent blabla. not sure what difference it makes over regular autoindent.seems to make python kinda retarded?
set autoindent "whatever the difference is supposed to be
set virtualedit =block,onemore "move cursor independent of available characters, in block visual mode. +move one char past EOL
set wrapscan "Wrap search at end
set incsearch
set gdefault "assume /g on :s/
set formatoptions =jc,ro,ql "various but vim default =jcroql? py tcqj so nuke t add rol?...
" j = rm comment ch on J, l = ignore if already longer, r = put comment ch on enter, o = ditto on o/O, q = format comments with gq (super fucked with or without, for inline comments...)
" set sessionoptions+=globals,localoptions "blank,buffers,curdir,folds,help,tabpages,winsize,globals,localoptions
set sessionoptions +=globals "blank,buffers,curdir,folds,help,tabpages,winsize,globals
set sessionoptions -=blank "if contains "blank" windows editing a buffer without a name will be restored <-this causing eg nerdtree bs with sessions? lets try
" set sessionoptions=blank,curdir,folds,help,tabpages,winpos "recommended by startify
set undofile undolevels =20000 "capping a bit seems to make undotree a lil happier. but brings own dangers....
set noswapfile "nope, swap's too annoying. how actally disable the stupid warning? " what no ofc we want a swap file duh, as long as dir is set
" set autowriteall "auto write on everything including :e :q etc. no good, use confirm instead...
set autowrite "auto write on :b, jumps to other files (<C-I/O>) etc
set confirm "prompt instead of error for eg :q and :e
set fileformats =unix,dos,mac "default is mac first, so sort
set hidden "
" set verbosefile =~/.vim/verbosefile "send messages to a file to tail, but what we ought to to instead us per-session so can keep several running at once...
set synmaxcol =10000 "default 3000, stop syntax highlighting after x cols... should prob toggle it based on linewrap?
set conceallevel=2 concealcursor=niv "for neosnippet, according to readme? hmm shouldn't it be switching that on and off automatically like?
" set splitbelow " splits for help etc go below XXX how enable this for everything except preview window? because preview becomes useless when covered by pumenu...
set splitright "and to the right... meaning 'back... and to the left' has finally lost its staying power. I blame bee movie
set switchbuf =usetab "open prev/next buffer in split if not already visible somewhere?
set scrolloff=3 sidescrolloff=2 "autoscrolls before hits end. XXX set smaller bufferlocal vals for preview, quickfix...
set sidescroll =1 "dont jump a zillion columns when scrolling sideways. vim default 0 is bizarre, jumping entire screen. nvim default 1... had at 8, also sorta crap
set winminwidth =0 "fully minimize to side
set winminheight =0 "fully minimize windows =3 "so still see some when maximizing
set previewheight =12 "regular height of preview window unless otherwise specified
set noequalalways "dont fuck with window sizes when I open and close others. better this way, then can just equalize w <C-w>= if needed
set eadirection =ver "ver or hor, default 'both'. tells when equalalways should apply
set cmdwinheight =12 "default 7
if executable('ag') " Use ag over grep
set grepprg=ag\ --nogroup\ --nocolor
" set grepprg='ag --vimgrep'
endif
let mapleader ="\<Space>" "'<Space>' no go... MUST BE SET BEFORE ANY LEADER MAPPINGS ARE DEFINED
let maplocalleader =',' "localleader if I ever get on using that... might be good
"{{{2 COMPLETELY WILD
" set completeopt =longest,menuone,preview,noinsert,noselect "only correct way to set it
set completeopt =menu,preview,noinsert,noselect "skip longest since deoplete fuzzy fucking that anyways
" set complete -=i "i (scan current and included files) isnt in defaults and seems p good anyways, dont get this
set wildmode =list:longest,full "tested: longest,full longest:full list:longest
" set wildmode =longest,list "tested: longest,full longest:full list:longest
set wildignorecase
set wildignore+=*.o,*.obj,*.pyc,*.so,*.swp,*.pdf,*/.git/*,*/.hg/*,*/.svn/*,bower_components,LICENSE,LICEN*E.*,.DS_Store,.localized,*.zip,*/tmp/*,*/undo/*,*.pyi,__pycache__,*.clj[sc].cache.json,*.cljs.cache.json,*.cljc.cache.json
set wildoptions =pum,tagfile
"}}}
"{{{2 default dump, supposed already set:
" set ruler "show position in file, redundant with airline
" set showcmd "show cmds as they are entered? + visual mode selection. apparently fucks nvim/tmux a bit
set viewoptions =cursor,curdir,folds,localoptions,slash,unix "cursor,folds,slash default?
" }}}
"}}}
" {{{1 SETTINGS FOR PLUGINS
"{{{2 ASSORTED
" ###FUN IDEA###: export colorscheme and run statusline etc in lights :D no mistaking the mode
let w:tol_sidebarWidth =20
let g:markdown_fenced_languages = ['cpp', 'c', 'css', 'javascript', 'clojure', 'html', 'python', 'fish', 'bash=sh']
let g:meta#highlight_group ='IncSearch' "default matched text highlight. set up more options!
let g:tinykeymap#map#windows#map ="gw"
let g:maximizer_restore_on_winleave =1 "undo maximizer if switching from maximized window
" let g:maximizer_set_mapping_with_bang =1 "set default action to restore to pre-maximized state even if changed (not really relevant when vimleave opt set...)
let g:maximizer_default_mapping_key ='<M-m>' "shared with tmux through integration. <prefix>z to force tmux zoom from inside vim
let g:suda_smart_edit =1
" let g:colorizer_colornames =0 "dont hl regular color names, only hex. use below instead to fix regular colors...
let g:Hexokinase_virtualText ='■■■■'
let g:Hexokinase_optInPatterns = [
\ 'full_hex',
\ 'triple_hex',
\ 'rgb',
\ 'rgba',
\ 'colour_names' ]
" let g:colorizer_custom_colors = {
" \ 'blue': ''
" \}
" ^ map em to bruvbox. actually, just do it within bruvbox...
let g:taboo_tabline =0 "dont fuck with the tabline, just handle tab naming
let g:taboo_renamed_tab_format =' %l' "' %l%m' "default ' [%l]%m'
let g:taboo_tab_format ='%N%U%f' "N=tab nr, u=num windows unicode in active tab, f=name of first buffer, default ' %f%m ' (m=mod flag, useless since got colors for that, also default * breaks airline...)
let g:taboo_modified_tab_flag =''
let g:taboo_unnamed_tab_label ='<>'
let g:autojump_executable ='/usr/local/etc/autojump.sh'
" let g:better_whitespace_enabled =1
let g:strip_whitespace_on_save =1
let g:strip_only_modified_lines =1
let g:strip_whitespace_confirm =0 "safe since only self-induced is auto stripped
let g:current_line_whitespace_disabled_soft=1
let g:better_whitespace_operator ='_s'
nmap <silent><Leader>ws :ToggleWhitespace<CR>| "careful, w s is swap windows...
" let g:better_whitespace_guicolor ='assholes'
hi! link ExtraWhitespace BruvboxRedBg
let g:better_whitespace_filetypes_blacklist= [
\'diff', 'gitcommit', 'unite', 'qf', 'help', 'markdown', 'startity']
let g:choosewin_label ='123456789'
let g:choosewin_tablabel ='ABCDEFGHI'
let g:choosewin_label_fill =0
let g:choosewin_label_padding =0
let g:choosewin_overlay_enable =0 "cool in theory but SUPER DANGEROUS as it fucks with undolevels and fails to restore it properly and also fucking lands you in fucking insert mode = FUCKKK
" let g:choosewin_color_label ={'gui':['DarkGreen', 'white', 'bold'], 'cterm': [ 22, 15,'bold'] }
" let g:choosewin_color_label_current ={'gui':['LimeGreen', 'black', 'bold'], 'cterm': [ 40, 16, 'bold'] }
" let g:choosewin_color_other ={'gui':['gray20', 'black'], 'cterm': [ 240, 0] }
" let g:choosewin_color_land ={'gui':[ 'LawnGreen', 'Black', 'bold,underline'], 'cterm': ['magenta', 'white'] }
" let g:choosewin_color_overlay { 'gui': ['DarkGreen', 'DarkGreen' ], 'cterm': [ 22, 22 ] },
" let g:choosewin_color_overlay_current { 'gui': ['LimeGreen', 'LimeGreen' ], 'cterm': [ 40, 40 ] },
" let g:choosewin_color_shade ={'gui':[ '', '#777777'], 'cterm': ['', 'grey'] }
let g:choosewin_keymap = {
\ '0': 'tab_first', '$': 'tab_last',
\ 'j': 'tab_prev', 'k': 'tab_next',
\ 'p': 'tab_prev', 'n': 'tab_next',
\ 'x': 'tab_close', 'q': 'tab_close',
\ '-': 'previous', 'z': 'previous', 'w': 'previous', "\<Tab>": 'previous',
\ 's': 'swap', 'S': 'swap_stay',
\ "\<CR>": 'win_land',
\ }
let g:choosewin_label_align ='left'
let g:diminactive_enable_focus =1 "dim every window when vim doesnt have focus
let g:diminactive_max_cols =100
let g:diminactive_buftype_blacklist =['nofile', 'nowrite', 'acwrite', 'quickfix'] ", 'help']
let g:diminactive_filetype_blacklist =['startify']
let g:indent_guides_enable_on_vim_startup =1
let g:indent_guides_indent_levels =12
let g:indent_guides_start_level =2
let g:indent_guides_auto_colors =0
let g:indent_guides_color_change_percent =5
let g:indent_guides_guide_size =2 "doesnt work with tabs ugh.
let g:indent_guides_exclude_filetypes =['help', 'nerdtree', 'undotree', 'tagbar', 'startify', 'nofile', 'quickfix', 'clojure']
let g:linediff_buffer_type ='scratch'
let g:nvim_ipy_perform_mappings =0
let g:neoterm_repl_python ='ptipython'
let g:neoterm_autoinsert =1
augroup Terminal | autocmd!
autocmd BufEnter neoterm i
augroup END "enter terminal insert automaticallh
" let g:neoterm_keep_term_open =0 "
let g:neoterm_automap_keys =0
" let g:neoterm_split_on_tnew =0 "deprecated
let g:easy_align_ignore_comment =0 "dont skip aligning comments
let g:SignatureEnabledAtStartup =0
let g:cursorcross_dynamic ='c' "c = auto cursorline, dont touch abything else. w = disable for other windows. l = fuckoff
let g:cursorcross_mappings =0
" let g:cursorcross_exceptions =[]
let g:ranger_map_keys =0
let g:ranger_replace_netrw =1
let g:indent_detector_echolevel_write =0 "don't spew every fucking write ugH
let g:indent_detector_echolevel_enter =0 "don't spew ever actually. just set the setsings and stfu
"}}}
"{{{2 ALE
" linters n shit:
" luarocks install luacheck
" npm install -g jshint eslint "prettier-eslint(?)
" pip install -U vim-vint yamllint
" pip3 install -U flake8 mypy yapf pylint
" gem install reek rubocop
" let g:ale_emit_conflict_warnings =0
let g:ale_warn_about_trailing_whitespace =0
let g:ale_set_signs =1
let g:ale_sign_column_always =0
let g:ale_sign_error =' ' "'!' '>>'
let g:ale_sign_warning =' ' "' ' "' ' "'?' ''
let g:ale_sign_info ='ℹ ' "'' '
let g:ale_sign_style_error =' '
let g:ale_sign_style_warning =' ' "''
" let g:ale_statusline_format =['%d ', '%d ', '']
let g:ale_statusline_format =['%d '.g:ale_sign_error, '%d '.g:ale_sign_error, '']
let g:ale_echo_msg_format ='%severity% %code%: %s (%linter%)'
let g:ale_echo_msg_error_str =g:ale_sign_error
let g:ale_echo_msg_warning_str =g:ale_sign_warning
let g:ale_echo_msg_info_str =g:ale_sign_info
let g:sign_open_lnum =''
let g:sign_close_lnum =''
let g:ale_open_list =0 "auto open loclist. would be good but opens for every fucking window (duh) and bugs out on close
" let g:ale_open_list =1 "auto open loclist. too annoying
" let g:ale_set_quickfix =0
" let g:ale_lint_delay =&timeoutlen
let g:ale_lint_delay =&updatetime
let g:ale_echo_delay =100
"eh below not working, fucking clangtidy still spewing...
" XXX HOW THROTTLE CPPCHECK?
" let g:ale_linters ={'cpp': ['clangcheck', 'clangformat', 'cppcheck']} "fuck clangtidy
let g:ale_linters ={
\ 'clojure': ['clj-kondo'],
\ 'javascript': [],
\ 'cpp': ['gcc']}
" \ 'clojure': ['clojure_check', 'clj-kondo']} "fuck clangtidy
" eastwood makes mount reload shit (bad) then clojure_check reads logs as errors loll
" let g:ale_linters_ignore={
" \'cpp': ['cppcheck', 'clang', 'ccls', 'clangtidy'],
" \'clojure': ['joker']}
" clangtidy ofc has clang attr errors, figure out what clion does that makes it work...
" \'cpp': ['cquery', 'cppcheck', 'clang'],
" \'cpp': ['clangtidy', 'cppcheck', 'gcc'],
let g:ale_linters ={'cpp': ['gcc']}
" let g:ale_cpp_gcc_executable ='xtensa-lx106-elf-gcc'
let g:ale_cpp_gcc_executable ='xtensa-esp32-elf-gcc'
let g:ale_cpp_gcc_options ='-std=c++17 -fsyntax-only -fno-rtti -Wno-unused-function -Wno-unused-variable -fexceptions -mlongcalls -mtext-section-literals -falign-functions=4 -U__STRICT_ANSI__ -ffunction-sections -fdata-sections -Wall -Wextra'
" let g:ale_cpp_gcc_options ='-std=c++17 -fsyntax-only -fno-rtti -fexceptions -U__STRICT_ANSI__ -Wall -Wextra -Wno-unused-function -Wno-unused-variable'
" on start also gotta do:
" CompileDbPathIfExists compile_commands.json
"
" autocmd FileType cpp let g:ale_cpp_gcc_executable='xtensa-lx106-elf-gcc'
" autocmd FileType cpp let g:ale_cpp_gcc_options=''
let g:ale_c_parse_makefile =0 "1 gives errors. test if helps pio (with makefile from pio --ide clion)
let g:ale_c_parse_compile_commands =1 "1 parses but fucks up with spaces...
let g:ale_c_build_dir_names =['build']
" let g:ale_c_clang_options ='--std=c++11'
" let g:ale_c_cppcheck_options =''
let g:ale_python_flake8_args ='--ignore=E501,C0111'
let g:ale_python_flake8_executable ='python3'
let g:ale_python_pylint_executable ='python3' " or 'python' for Python 2
" let g:ale_python_pylint_options = '-rcfile /path/to/pylint.rc'
let g:ale_python_mypy_options ='--silent-imports'
"{{{2 AIRLINE
"find reasonable alt for cprintf to touchbar, dump LSP stuff (auto-hover, fancy actions etc) in there...
"investigate hammerspoons undocumented crap
let g:airline_powerline_fonts =1 "otherwise, if doc is utf8 it uses crappy unicode ones
let g:airline_left_sep ='' "'⮀' " vs ⮀ '', █ sucks bc no scaling vertically...
let g:airline_left_alt_sep ='' "' ' "'│' |
let g:airline_right_sep ='' "''
let g:airline_right_alt_sep ='' "'│'
let g:airline_skip_empty_sections =1 "only for active window, so pretty much requires either not having right sep or like making fg=bg otherwise
let g:airline_exclude_preview =1 "(dont) let preview window be
let g:airline_inactive_collapse =0
let g:airline_highlighting_cache =1
let g:airline_focuslost_inactive =0
" let g:airline_extensions =['tabline'] "test disable extensions for performance
"{{{3 TABLINE EXTENSION
let g:airline#extensions#tabline#enabled =1
let g:airline#extensions#tabline#left_sep ='' "' ' '
let g:airline#extensions#tabline#left_alt_sep ='' "' ' '│'
let g:airline#extensions#tabline#right_sep ='' "' '
let g:airline#extensions#tabline#right_alt_sep ='' "' ' '│'
" let g:airline#extensions#tabline#left_sep ='' "' ' '
" let g:airline#extensions#tabline#left_alt_sep =' ' "' ' '│'
" let g:airline#extensions#tabline#right_sep =' ' "' '
" let g:airline#extensions#tabline#right_alt_sep =' ' "' ' '│'
let g:airline#extensions#tabline#tabs_label ="FUCKERJ"
"'T' "' ' "'T'
let g:airline#extensions#tabline#buffers_label ='B' "'B' "''
let g:airline#extensions#tabline#overflow_marker ='…'
let g:airline#extensions#tabline#show_tab_nr =0 "taboo handles everything
let g:airline#extensions#tabline#tab_nr_type =1 "show both tab nr and amount of splits
let g:airline#extensions#tabline#show_tab_type =0 "shows whether is displaying tabs or buffers
let g:airline#extensions#tabline#show_splits =0
let g:airline#extensions#tabline#show_close_button=0
let g:airline#extensions#tabline#fnamecollapse =1 "collapse parent dirs (if shown)
let g:airline#extensions#tabline#fnamemod =':t' "Just buf/filename no path in tabs
let g:airline#extensions#tabline#fnametruncate =7
let g:airline#extensions#tabline#formatter ='unique_tail_improved'
let g:airline#extensions#tabline#buffer_idx_format={'0':'⁰', '1':'¹', '2':'²', '3':'³', '4':'⁴',
\ '5':'⁵', '6':'⁶', '7':'⁷', '8':'⁸', '9':'⁹' } "is original but stopped working for some reason? Inc now when explicitly def'd
let g:airline#extensions#tabline#buffer_nr_show =0
let g:airline#extensions#tabline#buffer_nr_format ='%s ' "'%s ' "'%s '
" let g:airline#extensions#tabline#buffer_idx_mode =1 "something about switching buffers not tabs, sux
let g:airline#extensions#tabline#exclude_preview =1
let g:airline#extensions#tabline#excludes =['fish', 'NERD_tree_1', 'NERD_tree', '__Tagbar__.1'] "only works in buffer mode, not when got multiple tabs...
let g:airline#extensions#tabline#ignore_bufadd_pat=
\'\c\vgundo|undotree|vimfiler|tagbar|nerd_tree|nerdtree|buffergator|ctrlp|fzf|vimplug|preview|previewwindow' "avoids unnessesary redraw
"}}}
"shorter mode names. has for I, put somewhere with check for devicons first i guess
let g:airline_mode_map = { '__': '-', 'n': 'N', 'i': '', 'R': 'R', 'c': 'C',
\ 'v': 'v', 'V': 'V ', '': 'V ▢',
\ 's': 's', 'S': 'S ', '': 'S ▢'}
let g:airline#extensions#cursormode#enabled =0
" let g:cursormode_color_map = {
" \ "nlight": '#333333',
" \ "ndark": '#BBBBBB',
" \ "i": g:airline#themes#{g:airline_theme}#palette.insert.airline_a[1],
" \ "R": g:airline#themes#{g:airline_theme}#palette.replace.airline_a[1],
" \ "v": g:airline#themes#{g:airline_theme}#palette.visual.airline_a[1],
" \ "V": g:airline#themes#{g:airline_theme}#palette.visual.airline_a[1],
" \ "\<C-V>": g:airline#themes#{g:airline_theme}#palette.visual.airline_a[1],
" \ }
let g:airline#extensions#default#section_use_groupitems =0 "test if 0 helps colors, yup sure does
let g:airline#extensions#default#formatter ='short_path' "'default' "dont think this affects anything...
let g:airline#extensions#default#layout=[['a', 'c', 'b', 'gutter'],
\['error', 'warning', 'y', 'x', 'z']]
" \['error', 'warning', 'x', 'z']] "hide section y with filetype bs bc doesnt seem to stick when I try to repurpose it?
let g:airline#extensions#default#section_truncate_width ={
\ 'a': 6, 'c': 30, 'b': 60,
\ 'x': 90, 'y': 72, 'z': 40, 'warning': 70, 'error': 79 }
let g:airline#extensions#whitespace#enabled =0
let g:airline#extensions#ale#warning_symbol =g:ale_sign_error
let g:airline#extensions#ale#error_symbol =g:ale_sign_warning
let g:airline#extensions#ale#open_lnum_symbol =g:sign_open_lnum
let g:airline#extensions#ale#close_lnum_symbol =g:sign_close_lnum "')'
let g:airline#extensions#languageclient#error_symbol =g:ale_sign_error
let g:airline#extensions#languageclient#warning_symbol =g:ale_sign_warning
let g:airline#extensions#languageclient#open_lnum_symbol =g:sign_open_lnum
let g:airline#extensions#languageclient#close_lnum_symbol=g:sign_close_lnum
let g:airline#extensions#coc#error_symbol =g:ale_sign_error
let g:airline#extensions#coc#warning_symbol =g:ale_sign_warning
" let g:airline#extensions#coc#stl_format_err =g:sign_open_lnum
" let g:airline#extensions#coc#stl_format_warn =g:sign_close_lnum
if !exists('g:airline_symbols') | let g:airline_symbols = {} | endif
let g:airline_symbols.linenr =' ' " ''
let g:airline_symbols.maxlinenr =''
let g:airline_symbols.paste ='ρ' "curr 'PASTE'
let g:airline_symbols.spell ='Ꞩ' " 'SPELL'
let g:airline_symbols.modified ='' "'◈ ' "'+' "no need right since color differs? was trying some emoji symbols but they cause bg to bug out so no
let g:airline_symbols.dirty =' ✗' "default emoji travesty fucks with tmux, kitty or whatebver it is... but need change font color ughh
let g:airline#extensions#gutentags#enabled =0
let g:airline#extensions#tagbar#enabled =0
let g:airline#extensions#fugitiveline#enabled =0 "fucks formatting of reg files so uhh
let g:airline#extensions#hunks#non_zero_only =1
function! AirlineHunksColored()
call airline#parts#define_function('hunk_added', 'AirlineHunkAdded')
call airline#parts#define_function('hunk_changed', 'AirlineHunkChanged')
call airline#parts#define_function('hunk_deleted', 'AirlineHunkDeleted')
call airline#parts#define_accent( 'hunk_added', 'green')
call airline#parts#define_accent( 'hunk_changed', 'yellow')
call airline#parts#define_accent( 'hunk_deleted', 'red')
let g:airline_section_b = airline#section#create(['hunk_added', 'hunk_changed', 'hunk_deleted', 'branch', ' '])
endfunction
function! AirlineHunkAdded()
let g:hunk_summary = GitGutterGetHunkSummary() "this works but feels... uh, hacky
if g:hunk_summary[0] == 0 | return '' | else | return g:hunk_summary[0] .' ' | endif
endfunction
function! AirlineHunkChanged()
if g:hunk_summary[1] == 0 | return '' | else | return g:hunk_summary[1] .' ' | endif
endfunction
function! AirlineHunkDeleted()
if g:hunk_summary[2] == 0 | return '' | else | return g:hunk_summary[2] .' ' | endif
endfunction
" let g:airline#parts#ffenc#skip_expected_string='utf-8[unix]'
let g:airline#extensions#branch#enbled =0 "0 temp test if can avoid git bug until i figure it out
let g:airline#extensions#branch#format =2 "truncate non-tail of branch
let g:airline#extensions#branch#displayed_head_limit=18
let g:airline#extensions#branch#format ='AirlineCustomBranchName'
function! AirlineCustomBranchName(name)
if a:name == 'master' | let name = 'm'
elseif a:name == 'develop' | let name = 'd'
elseif a:name == 'stable' | let name = 's'
else | let name = a:name | endif | return name
endfunction
function! AirlineWindowNumber(...) "adds window number to the left of section A, in style of section c...
let builder = a:1 | let context = a:2
call builder.add_section('airline_c', ' %{tabpagewinnr(tabpagenr())} ')
return 0
endfunction
function! AirlineInit()
call airline#add_statusline_func('AirlineWindowNumber')
call airline#add_inactive_statusline_func('AirlineWindowNumber')
let g:airline_section_z =airline#section#create_right(['%L', '%2v']) "lines in file, cursor col...
" let g:airline_section_c =expand('%:~:.') "failed try fix default not using ~
"neither of these work...
" let g:airline_section_y =airline#section#create_right(['%-0.30{getcwd()}'])
call AirlineHunksColored() "test whether fucking performance
call airline#parts#define_minwidth('branch', 90)
call airline#parts#define_minwidth('hunks', 80)
call airline#parts#define_minwidth('error', 80)
call airline#parts#define_minwidth('warning', 100)
call airline#parts#define_function('cwd', 'AirlineStatusLineCWD') "{{{3 testing/examples
call airline#parts#define_condition('cwd', 'getcwd() =~ "work_dir"')
call airline#parts#define_minwidth('cwd', 70)
let g:airline_section_y = airline#section#create_right(['cwd', '%t'])
let g:airline_section_y = airline#section#create_right(['%{getcwd()}', '%t'])
" let g:airline_section_b = airline#section#create_left(['hunks', 'branch'])
" let g:airline_section_b =expand('%:~:h') "should show just dir
":p full path :h head last component removed, :t tail last only, :r root one ext rm, :e extension only
" let g:airline_section_y = airline#section#create(['%p'])
" let g:airline_section_z ='
" \%#__accent_bold#%p%#__restore__#
" \%L
" \%{airline#util#wrap(airline#extensions#windowswap#get_status(), 0)}
" \%#__accent_bold#%4l%#__restore__#
" \%{g:airline_symbols.linenr}%#__restore__#
" \%3v
" \%{g:airline_symbols.maxlinenr}'
" call airline#add_statusline_func('AirlineTolStatusline_Right') "}}}
AirlineRefresh "need extra redraw to put my mods in?
endfunction
"{{{3 testing
function! AirlineTolStatusline_Right(...)
let builder = a:1 " first variable is the statusline builder WARNING: the API for the builder is not finalized and may change
" call builder.add_section('Normal', '%f')
" call builder.add_section('WarningMsg', '%{getcwd()}')
call builder.split()
call builder.add_section('airline_z', '**%p%%')
"%{v:register} put in statusline somewhere, shows curr active register.
" also want latest/curr activated search, maybe? good yo know what happens on ctrl-m
" GOOD TO REMEMBER:
" can honestly use both the low tmux statusbar, but also pane statusbars as proxy dumping ground for extra info, should I need it.
" Thinking like showing maybe the first ~10-15 chars of what's currently in the os clipboard / vim unnamed general.
return 1 " tell the core to use the contents of the builder
endfunction
function! AirlineStatusLineCWD()
let l:pwd = exists('$PWD') ? $PWD : getcwd()
return substitute(fnamemodify(l:pwd, ':~'), '\(\~\?/[^/]*/\).*\(/.\{40\}\)', '\1...\2', '')
endfunction
function! AirlineThemePatch(palette)
if g:airline_theme == 'bubblegum'
" for colors in values(a:palette.inactive)
" let colors[3] = 245
" endfor
endif
endfunction
" let g:airline_theme_patch_func = 'AirlineThemePatch'
" function! AccentDemo()
" let keys = ['+','~','-']
" for k in keys | call airline#parts#define_text(k, k) | endfor
" call airline#parts#define_accent('+', 'green')
" call airline#parts#define_accent('~', 'yellow')
" call airline#parts#define_accent('-', 'red')
" " call airline#parts#define_accent('g', 'bold')
" " call airline#parts#define_accent('h', 'italic')
" let g:airline_section_b = airline#section#create(keys)
" endfunction
" autocmd VimEnter * call AccentDemo()
" "}}}
augroup AirlineMods | autocmd!
autocmd User AirlineAfterInit call AirlineInit()
" autocmd User AirlineAfterInit AirlineRefresh "need extra redraw to put my mods in
augroup END
"}}}
"{{{2 NETRW
let g:netrw_banner =0 "no top help bs
let g:netrw_browse_split =4 "open files in prev window
let g:netrw_silent =1
let g:netrw_liststyle =3 "tree view
"{{{2 NERDTree
let NERDTreeShowHidden =1
let NERDTreeWinSize =w:tol_sidebarWidth
let NERDTreeHijackNetrw =0 "replace default filebrowser with NERD. apparently fucks with startify
let NERDTreeMinimalUI =1 "removes help clutter but also .. to go up?
let NERDTreeHighlightCursorline =1
let NERDTreeRespectWildIgnore =1 "shared filter
let NERDTreeChDirMode =2 "change vim cwd with NERDTree root
let NERDTreeMouseMode =2 "open dirs(2) +files(3, annoying) with single-click
let NERDTreeShowBookmarks =1 "auto show bookmarks
let NERDTreeBookmarksSort =0
" let NERDTreeBookmarksFile =$HOME .'/.vim/.NERDTreeBookmarks'
" let NERDTreeCascadeSingleChildDir =1 "bugs out file open?
let NERDTreeCascadeOpenSingleChildDir =1 "open multi dirs if just one inside
let NERDTreeAutoDeleteBuffer =1 "delete buffer when rm file via nerd menu
let NERDTreeCreatePrefix ='silent keepjumps'
let g:NERDTreeDirArrowExpandable ='' "'▸'
let g:NERDTreeDirArrowCollapsible ='' "'' "'▾'
"{{{2 DEVICONS
let g:WebDevIconsUnicodeDecorateFolderNodes =1 "icons for folders
" let g:DevIconsEnableFoldersOpenClose =1 "pretty but buggy offsets
let g:DevIconsEnableFolderExtensionPatternMatching =1 "whatever that means
let g:WebDevIconsUnicodeGlyphDoubleWidth =1 "double/single padding, no effect on terminal or guifont font
let g:WebDevIconsNerdTreeAfterGlyphPadding =' ' "amount of space after the glyph
"Just fucks up spacing unless git symbol plug is active. should make auto toggle on/off depending on whether in git dir?
" let g:WebDevIconsNerdTreeGitPluginForceVAlign =1 "1 is supposed to force extra padding so filetype icons line up vertically
"{{{3 COLDEVICONS
let g:coldevicons_filetypes ='nerdtree,startify,ctrlp,denite' "default: '*'
"}}}
"{{{3 EXTRA MANUAL DEVICONS
" let g:WebDevIconsUnicodeDecorateFileNodesPatternSymbols ={} " needed
" let g:WebDevIconsUnicodeDecorateFileNodesPatternSymbols['.*jquery.*\.js$'] = 'ƛ'
" let g:WebDevIconsUnicodeDecorateFileNodesPatternSymbols['.*rc'] =''
" let g:WebDevIconsUnicodeDecorateFileNodesPatternSymbols['.*node'] ='' "
" let g:WebDevIconsUnicodeDecorateFileNodesPatternSymbols['.*npm'] =''
" let g:WebDevIconsUnicodeDecorateFileNodesPatternSymbols['.*python'] =''
" let g:WebDevIconsUnicodeDecorateFileNodesPatternSymbols['.*pip'] =''