├── .EverVim.project.sample ├── .EverVim.vimrc.sample ├── .appveyor.yml ├── .gitignore ├── .gitmodules ├── Boot-EverVim.ps1 ├── Boot-EverVim.sh ├── LICENSE.md ├── README.md ├── core ├── arrowkey-fix.vim ├── basics.vim ├── core.vim ├── formatting.vim ├── functions.vim ├── general.vim ├── gui.vim ├── keymap.vim ├── platform.vim ├── session.vim ├── vimui.vim └── windows.vim ├── plugins ├── appearance │ ├── airline.vim │ ├── appearance.bundles │ ├── lightline.vim │ ├── sieya.vim │ ├── vim-devicons.vim │ ├── vim-minimap.vim │ ├── vim-nerdtree-highlight.vim │ └── vim-startify.vim ├── bash │ └── bash.bundles ├── cpp │ ├── c.vim │ ├── clang_complete.vim │ └── cpp.bundles ├── crystal │ ├── crystal.bundles │ └── vim-crystal.vim ├── css │ └── css.bundles ├── d │ └── d.bundles ├── dart │ └── dart.bundles ├── deoplete │ ├── deoplete.bundles │ ├── deoplete.vim │ └── ultisnips.vim ├── elixir │ └── elixir.bundles ├── erlang │ └── erlang.bundles ├── fsharp │ ├── fsharp.bundles │ └── vim-fsharp.vim ├── general │ ├── comfortable-motion.vim │ ├── ctrlp.vim │ ├── ctrlsf.vim │ ├── fzf.vim │ ├── general.bundles │ ├── golden-ratio.vim │ ├── incsearch.vim │ ├── localvimrc.vim │ ├── matchit.vim │ ├── nerdtree.vim │ ├── tabman.vim │ ├── undotree.vim │ ├── vim-bookmarks.vim │ ├── vim-choosewin.vim │ ├── vim-lastplace.vim │ ├── vim-leader-guide.vim │ ├── vim-qf.vim │ ├── vim-windowswap.vim │ ├── vimcommander.vim │ ├── wildfire.vim │ └── winresize.vim ├── go │ ├── go.bundles │ └── go.vim ├── haskell │ ├── ghcmod.vim │ └── haskell.bundles ├── html │ ├── html.bundles │ └── html5.vim ├── java │ ├── java.bundles │ └── vim-javacomplete2.vim ├── javascript │ ├── javascript-libraries-syntax.vim │ ├── javascript.bundles │ ├── vim-javascript.vim │ └── vim-jsdoc.vim ├── julia │ └── julia.bundles ├── latex │ └── latex.bundles ├── lua │ └── lua.bundles ├── matlab │ └── matlab.bundles ├── misc │ ├── calendar.vim │ └── misc.bundles ├── neocomplete │ ├── neocomplete.bundles │ ├── neocomplete.vim │ └── snippets.vim ├── php │ ├── pdv.vim │ ├── php.bundles │ └── vim-php-namespace.vim ├── plugin-config.vim ├── plugins.vim ├── programming │ ├── agit.vim │ ├── ale.vim │ ├── indentline.vim │ ├── json.vim │ ├── neoformat.vim │ ├── omnicomplete.vim │ ├── programming.bundles │ ├── rainbow.vim │ ├── sessionman.vim │ ├── syntastic.vim │ ├── tabular.vim │ ├── tagbar.vim │ ├── uncrustify.vim │ ├── vim-autoformat.vim │ ├── vim-dispatch.vim │ ├── vim-fugitive.vim │ ├── vim-header.vim │ ├── vim-indent-guides.vim │ ├── vim-multiple-cursors.vim │ ├── vim-polyglot.vim │ └── vim-signify.vim ├── puppet │ └── puppet.bundles ├── python │ ├── python-mode.vim │ └── python.bundles ├── r │ ├── r.bundles │ └── r.md ├── ruby │ └── ruby.bundles ├── rust │ └── rust.bundles ├── scala │ └── scala.bundles ├── snipmate │ └── snipmate.bundles ├── swift │ ├── swift.bundles │ └── swift.vim ├── typescript │ ├── tsuquyomi.vim │ └── typescript.bundles ├── writing │ ├── goyo.vim │ ├── limelight.vim │ ├── previm.vim │ ├── textobj-quote.vim │ ├── textobj-sentence.vim │ ├── vim-markdown.vim │ ├── vim-orgmode.vim │ ├── vimwiki.vim │ └── writing.bundles └── youcompleteme │ ├── ultisnips.vim │ ├── ycm_global_conf.py │ ├── youcompleteme.bundles │ └── youcompleteme.vim ├── tools └── ctags │ ├── ctags │ └── markdown2ctags.py └── vimrc /.EverVim.project.sample: -------------------------------------------------------------------------------- 1 | " EverVim Project Specific Settings 2 | " Configuration in this file will override your global vim config. 3 | " EverVim: https://github.com/LER0ever/EverVim 4 | 5 | " Formatting 6 | " 7 | " setlocal tabstop=4 shiftwidth=4 softtabstop=4 expandtab 8 | " au BufWrite *.h,*.cpp,*.c :Autoformat 9 | 10 | " Dispatch 11 | " 12 | " autocmd FileType c,cpp let b:dispatch = 'cd build; cmake ..; make' 13 | -------------------------------------------------------------------------------- /.EverVim.vimrc.sample: -------------------------------------------------------------------------------- 1 | " Modeline and Notes { 2 | " EverVim is a modern & powerful vim distribution 3 | " Repo URL: https://github.com/LER0ever/EverVim 4 | " Made by [LER0ever](https://github.com/LER0ever) 5 | " Licensed under 6 | " * Apache License, Version 2.0, ([LICENSE-APACHE](LICENSE.md) or http://www.apache.org/licenses/LICENSE-2.0) 7 | " } 8 | 9 | " EverVim options { 10 | 11 | " Disable folding 12 | " let g:evervim_disable_folding=1 13 | " 14 | 15 | " EverVim Bundle Groups 16 | " Bundle Group name is just folders under ~/.EverVim/plugins 17 | " Below is the default config, uncomment and make your own 18 | " let g:evervim_bundle_groups=['general', 'appearance', 'writing', 'youcompleteme', 'programming', 'python', 'javascript', 'typescript', 'html', 'css', 'misc', 'go', 'rust', 'cpp', 'lua'] 19 | 20 | " Color Theme 21 | " Use :Colors for a list of available colorschemes 22 | " let g:evervim_color_theme="dracula" 23 | " let g:evervim_airline_theme="dracula" 24 | " let g:evervim_light_background = 1 25 | 26 | " Customize Patched Font 27 | " Pick one at https://github.com/ryanoasis/nerd-fonts 28 | " By default it's "Knack Nerd Font" on Unix and "Knack NF" on Windows 29 | " let g:evervim_font="Knack Nerd Font" 30 | " let g:evervim_font_size="12" 31 | 32 | " Disable Patched Font 33 | " let g:evervim_no_patched_fonts = 1 34 | 35 | " Override Bundle Configuration 36 | " You can add additional plugins, or disable a set of plugins instead of 37 | " adding/removing a whole bundle 38 | " Simply uncomment the following line and add remove plugins in the 39 | " ~/.EverVim.bundles file using `Plug` and `UnPlug` commands 40 | " let g:override_evervim_bundles = 1 41 | " 42 | " in ~/.EverVim.bundles, 43 | " Plug 'Someone/AwesomePlugin' 44 | " UnPlug 'Someone/PluginToDisable' 45 | 46 | " Automatically changing to open file directory 47 | " May cause airline to misbehave 48 | " let g:evervim_autochdir = 1 49 | 50 | " Default statusline is vim-airline 51 | " You can change to the more configurable lightline.vim by uncomment the following 52 | " let g:evervim_use_lightline = 1 53 | 54 | " Header constants for generating and updating the comment header 55 | " let g:header_field_author = 'YOUR_NAME' 56 | " let g:header_field_author_email = 'YOUR_EMAIL_ADDRESS' 57 | 58 | " Startup Screen 59 | " You can customize the welcome message by changing the following line 60 | " let g:evervim_welcome_message = "Code your life with EverVim!" 61 | 62 | " Leader keys 63 | " let g:evervim_leader=',' 64 | " let g:evervim_localleader='\\' 65 | 66 | " Restore cursor 67 | " Automatically restore your cursor to the place you left 68 | " Disable by uncommenting the following line. 69 | " let g:evervim_no_restore_cursor = 1 70 | 71 | " Linting engine 72 | " Use ALE by default. But if you are using an older version 73 | " of vim or experiencing issues with ALE, you can switch to 74 | " Syntastic by uncommenting the following line 75 | " let g:evervim_use_syntastic = 1 76 | 77 | " Fuzzy Finder 78 | " By default, CtrlP is used on Windows and FZF.vim on Unix 79 | " Fall back to CtrlP by uncommenting the following line (Unix only) 80 | " let g:evervim_use_ctrlp = 1 81 | 82 | " Enable smooth scrolling 83 | " Use physics-based smooth scrolling for half-page/full-page scrolling 84 | " Friction and air-drag can be override here 85 | " let g:evervim_smooth_scrolling = 1 86 | 87 | " Enable transparent background on terminal vim/nvim 88 | " let g:evervim_transparent_bg = 1 89 | 90 | " Disable easier moving in tabs and windows 91 | " only if you need for jumping or other conflicting plugin 92 | " keybinding 93 | " let g:evervim_no_easyWindows = 1 94 | 95 | " Disable wrap relative motion for start/end line motions 96 | " let g:evervim_no_wrapRelMotion = 1 97 | 98 | " Disable fast tab navigation 99 | " let g:evervim_no_fastTabs = 1 100 | 101 | " Enable NerdTree Sync across tabs 102 | " Synchronize view and focus between different tabs 103 | " let g:evervim_nerdtree_tabs_sync = 1 104 | 105 | " Clear search highlighting 106 | " let g:evervim_clear_search_highlight = 1 107 | 108 | " Disable neosnippet expansion 109 | " This maps over and does some Supertab 110 | " emulation with snippets 111 | " let g:evervim_no_neosnippet_expand = 1 112 | 113 | " Disable whitespace stripping 114 | " let g:evervim_keep_trailing_whitespace = 1 115 | 116 | " vim files directory 117 | " let g:evervim_consolidated_directory = 118 | " eg: let g:evervim_consolidated_directory = $HOME . '/.vim/' 119 | 120 | " This makes the completion popup strictly passive. 121 | " Keypresses acts normally. takes you of insert mode, words don't 122 | " automatically complete, pressing inserts a newline, etc. Iff the 123 | " menu is open, tab will cycle through it. If a snippet is selected, 124 | " expands it and jumps between fields. 125 | " let g:evervim_noninvasive_completion = 1 126 | 127 | " Don't turn conceallevel or concealcursor 128 | " let g:evervim_no_conceal = 1 129 | 130 | " Disable omni complete 131 | " let g:evervim_no_omni_complete = 1 132 | 133 | " Prefer indentguides 134 | " let g:evervim_use_indentguides = 1 135 | 136 | " Prefer Neoformat over vim-autoformat 137 | " let g:evervim_use_neoformat = 1 138 | 139 | " Disable autoformat on write 140 | " You can still use fm to manually format the file 141 | " let g:evervim_no_autoformat = 1 142 | 143 | " Hybrid Linenumber 144 | " Show absolute line number for current line and relative 145 | " for the rest 146 | " let g:evervim_hybrid_linenumber = 1 147 | 148 | " 80 Column Warning 149 | " Shows a magenta line at column 81 only for those lines that exceeds 80 150 | " let g:evervim_80_column_warning = 1 151 | 152 | " Minimap Support 153 | " Shows a minimap on the right hand side, need has_python 154 | " let g:evervim_minimap 155 | 156 | " Don't create default mappings for multicursors 157 | " See :help multiple-cursors-mappings 158 | " let g:multi_cursor_use_default_mapping=0 159 | " let g:multi_cursor_next_key='' 160 | " let g:multi_cursor_prev_key='' 161 | " let g:multi_cursor_skip_key='' 162 | " let g:multi_cursor_quit_key='' 163 | " Require a special keypress to enter multiple cursors mode 164 | " let g:multi_cursor_start_key='+' 165 | 166 | " Mappings for editing/applying evervim config 167 | " let g:evervim_edit_config_mapping='ec' 168 | " let g:evervim_apply_config_mapping='ac' 169 | " } 170 | 171 | -------------------------------------------------------------------------------- /.appveyor.yml: -------------------------------------------------------------------------------- 1 | # EverVim Appveyor Autobuild 2 | version: "{build}" 3 | 4 | skip_tags: true 5 | 6 | init: 7 | - "set PATH=\ 8 | %SystemRoot%\\system32\ 9 | ;%SystemRoot%\ 10 | ;%SystemRoot%\\System32\\Wbem\ 11 | ;C:\\Program Files\\7-Zip\ 12 | ;C:\\Program Files\\Git\\cmd\ 13 | ;C:\\Program Files\\AppVeyor\\BuildAgent\ 14 | ;C:\\msys64\\usr\\bin\ 15 | " 16 | 17 | 18 | before_build: 19 | - cd %HOMEPATH% 20 | - appveyor DownloadFile https://github.com/neovim/neovim/releases/download/v0.2.2/nvim-win32.zip 21 | - 7z x nvim-win32.zip -y -o"%APPVEYOR_BUILD_FOLDER%" 22 | - rm -f nvim-win32.zip 23 | - git clone https://github.com/LER0ever/EverVim .EverVim 24 | 25 | 26 | build_script: 27 | - echo "Building ..." 28 | - cd %HOMEPATH%\.EverVim 29 | - ps: .\Boot-EverVim.ps1 30 | - cd %APPVEYOR_BUILD_FOLDER% 31 | - .\Neovim\bin\nvim.exe --headless +PlugInstall +qa >NUL 32 | 33 | after_build: 34 | - xcopy "%HOMEPATH%\.EverVim\bundle" "%APPVEYOR_BUILD_FOLDER%\bundle" /s /e /y /i 35 | - cd %APPVEYOR_BUILD_FOLDER% 36 | - ls 37 | - 7z a EverVim-bundle-win32.zip %APPVEYOR_BUILD_FOLDER%\bundle 38 | 39 | on_failure: 40 | - ps: "$blockRdp = $true; iex ((new-object net.webclient).DownloadString((\ 41 | 'https://raw.githubusercontent.com/appveyor/ci/master/scripts/\ 42 | enable-rdp.ps1')))" 43 | 44 | artifacts: 45 | - path: EverVim-bundle-win32.zip 46 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .vim/ 2 | .vimbackup/ 3 | .vimswap/ 4 | *viminfo 5 | .vimundo/ 6 | .vimviews/ 7 | .cache/ 8 | _* 9 | .NERD* 10 | *.local 11 | home/ 12 | neovim/ 13 | vim-x86/ 14 | autoload/ 15 | bundle/ 16 | init.vim 17 | ginit.vim 18 | .netrwhist 19 | UltiSnips/ 20 | 21 | -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "docs"] 2 | path = docs 3 | url = https://github.com/LER0ever/EverVim.wiki.git 4 | -------------------------------------------------------------------------------- /Boot-EverVim.ps1: -------------------------------------------------------------------------------- 1 | echo "Welcome to EverVim, a powerful & modern vim distribution" 2 | echo "Booting EverVim ..." 3 | 4 | if (!([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator")) { 5 | echo "Setup script needs administrator priviliges to create symlinks" 6 | exit 7 | } 8 | 9 | Push-Location ~ 10 | 11 | if (!(Test-Path "~\.EverVim")) { 12 | echo "Cloning into ~\.EverVim ..." 13 | git clone https://github.com/LER0ever/EverVim ~\.EverVim 14 | } 15 | 16 | echo "Processing files and directories ..." 17 | mkdir -Path ~\.EverVim\autoload -Force 18 | mkdir -Path ~\.EverVim\bundle -Force 19 | cmd /c rmdir %LOCALAPPDATA%\nvim\ 20 | cmd /c rmdir %USERPROFILE%\vimfiles\ 21 | cmd /c rmdir %USERPROFILE%\.vim\ 22 | if (Test-Path "~\.EverVim\init.vim" -PathType Leaf){ 23 | Remove-Item -Path ~\.EverVim\init.vim -Force -Recurse 24 | Remove-Item -Path ~\.EverVim\ginit.vim -Force -Recurse 25 | } 26 | 27 | echo "Soft-Linking Vim/NeoVim Config ..." 28 | cmd /c mklink /D %USERPROFILE%\vimfiles\ %USERPROFILE%\.EverVim\ 29 | cmd /c mklink /D %USERPROFILE%\.vim\ %USERPROFILE%\.EverVim\ 30 | cmd /c mklink /D %LOCALAPPDATA%\nvim\ %USERPROFILE%\.EverVim\ 31 | cmd /c mklink %USERPROFILE%\.EverVim\init.vim %USERPROFILE%\.EverVim\vimrc 32 | cmd /c mklink %USERPROFILE%\.EverVim\ginit.vim %USERPROFILE%\.EverVim\core\gui.vim 33 | 34 | if (!(Test-Path "~\.EverVim.vimrc")) { 35 | echo "Copied EverVim configuration sample to ~\.EverVim.vimrc" 36 | Copy-Item -Path ~\.EverVim\.EverVim.vimrc.sample -Destination ~\.EverVim.vimrc -Force 37 | } 38 | 39 | echo "Downloading Vim-Plug ..." 40 | $uri = 'https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim' 41 | (New-Object Net.WebClient).DownloadFile($uri, $ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath("~\.EverVim\autoload\plug.vim")) 42 | 43 | Pop-Location 44 | 45 | echo "All done with the setup. " 46 | echo "Now please open up your vim and Type :PlugInstall in your vim to complete the plugin installation" 47 | -------------------------------------------------------------------------------- /Boot-EverVim.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | echo 'Welcome to EverVim, a powerful & modern vim distribution' 4 | echo 'Booting EverVim ...' 5 | 6 | cd ~ 7 | 8 | if [ ! -d ".EverVim" ]; then 9 | echo "Cloning into ~/.EverVim ..." 10 | git clone https://github.com/LER0ever/EverVim ~/.EverVim 11 | else 12 | echo "Updating EverVim Config ..." 13 | git -C ~/.EverVim pull 14 | fi 15 | 16 | # Ensure we have .config 17 | mkdir -p ~/.config/ 18 | 19 | echo 'Soft-Linking Vim/NeoVim Config ...' 20 | ln -sfnv ~/.EverVim ~/.vim 21 | ln -sfnv ~/.EverVim ~/.config/nvim 22 | ln -sfnv ~/.EverVim/vimrc ~/.EverVim/init.vim 23 | ln -sfnv ~/.EverVim/core/gui.vim ~/.EverVim/ginit.vim 24 | 25 | if [ ! -f ".EverVim.vimrc" ]; then 26 | echo "Copied EverVim configuration sample to ~/.EverVim.vimrc" 27 | cp ~/.EverVim/.EverVim.vimrc.sample ~/.EverVim.vimrc 28 | fi 29 | 30 | echo 'Downloading Vim-Plug' 31 | curl -fLo ~/.vim/autoload/plug.vim --create-dirs \ 32 | https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim 33 | 34 | if [ ! -f ".ctags" ]; then 35 | echo 'Configuring CTags ...' 36 | ln -sfnv ~/.EverVim/tools/ctags/ctags ~/.ctags 37 | fi 38 | 39 | echo 'All done with this script, now run vim/neovim and execute ":PlugInstall"' 40 | -------------------------------------------------------------------------------- /LICENSE.md: -------------------------------------------------------------------------------- 1 | Apache License 2 | ============== 3 | 4 | _Version 2.0, January 2004_ 5 | _<>_ 6 | 7 | ### Terms and Conditions for use, reproduction, and distribution 8 | 9 | #### 1. Definitions 10 | 11 | “License” shall mean the terms and conditions for use, reproduction, and 12 | distribution as defined by Sections 1 through 9 of this document. 13 | 14 | “Licensor” shall mean the copyright owner or entity authorized by the copyright 15 | owner that is granting the License. 16 | 17 | “Legal Entity” shall mean the union of the acting entity and all other entities 18 | that control, are controlled by, or are under common control with that entity. 19 | For the purposes of this definition, “control” means **(i)** the power, direct or 20 | indirect, to cause the direction or management of such entity, whether by 21 | contract or otherwise, or **(ii)** ownership of fifty percent (50%) or more of the 22 | outstanding shares, or **(iii)** beneficial ownership of such entity. 23 | 24 | “You” (or “Your”) shall mean an individual or Legal Entity exercising 25 | permissions granted by this License. 26 | 27 | “Source” form shall mean the preferred form for making modifications, including 28 | but not limited to software source code, documentation source, and configuration 29 | files. 30 | 31 | “Object” form shall mean any form resulting from mechanical transformation or 32 | translation of a Source form, including but not limited to compiled object code, 33 | generated documentation, and conversions to other media types. 34 | 35 | “Work” shall mean the work of authorship, whether in Source or Object form, made 36 | available under the License, as indicated by a copyright notice that is included 37 | in or attached to the work (an example is provided in the Appendix below). 38 | 39 | “Derivative Works” shall mean any work, whether in Source or Object form, that 40 | is based on (or derived from) the Work and for which the editorial revisions, 41 | annotations, elaborations, or other modifications represent, as a whole, an 42 | original work of authorship. For the purposes of this License, Derivative Works 43 | shall not include works that remain separable from, or merely link (or bind by 44 | name) to the interfaces of, the Work and Derivative Works thereof. 45 | 46 | “Contribution” shall mean any work of authorship, including the original version 47 | of the Work and any modifications or additions to that Work or Derivative Works 48 | thereof, that is intentionally submitted to Licensor for inclusion in the Work 49 | by the copyright owner or by an individual or Legal Entity authorized to submit 50 | on behalf of the copyright owner. For the purposes of this definition, 51 | “submitted” means any form of electronic, verbal, or written communication sent 52 | to the Licensor or its representatives, including but not limited to 53 | communication on electronic mailing lists, source code control systems, and 54 | issue tracking systems that are managed by, or on behalf of, the Licensor for 55 | the purpose of discussing and improving the Work, but excluding communication 56 | that is conspicuously marked or otherwise designated in writing by the copyright 57 | owner as “Not a Contribution.” 58 | 59 | “Contributor” shall mean Licensor and any individual or Legal Entity on behalf 60 | of whom a Contribution has been received by Licensor and subsequently 61 | incorporated within the Work. 62 | 63 | #### 2. Grant of Copyright License 64 | 65 | Subject to the terms and conditions of this License, each Contributor hereby 66 | grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, 67 | irrevocable copyright license to reproduce, prepare Derivative Works of, 68 | publicly display, publicly perform, sublicense, and distribute the Work and such 69 | Derivative Works in Source or Object form. 70 | 71 | #### 3. Grant of Patent License 72 | 73 | Subject to the terms and conditions of this License, each Contributor hereby 74 | grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, 75 | irrevocable (except as stated in this section) patent license to make, have 76 | made, use, offer to sell, sell, import, and otherwise transfer the Work, where 77 | such license applies only to those patent claims licensable by such Contributor 78 | that are necessarily infringed by their Contribution(s) alone or by combination 79 | of their Contribution(s) with the Work to which such Contribution(s) was 80 | submitted. If You institute patent litigation against any entity (including a 81 | cross-claim or counterclaim in a lawsuit) alleging that the Work or a 82 | Contribution incorporated within the Work constitutes direct or contributory 83 | patent infringement, then any patent licenses granted to You under this License 84 | for that Work shall terminate as of the date such litigation is filed. 85 | 86 | #### 4. Redistribution 87 | 88 | You may reproduce and distribute copies of the Work or Derivative Works thereof 89 | in any medium, with or without modifications, and in Source or Object form, 90 | provided that You meet the following conditions: 91 | 92 | * **(a)** You must give any other recipients of the Work or Derivative Works a copy of 93 | this License; and 94 | * **(b)** You must cause any modified files to carry prominent notices stating that You 95 | changed the files; and 96 | * **(c)** You must retain, in the Source form of any Derivative Works that You distribute, 97 | all copyright, patent, trademark, and attribution notices from the Source form 98 | of the Work, excluding those notices that do not pertain to any part of the 99 | Derivative Works; and 100 | * **(d)** If the Work includes a “NOTICE” text file as part of its distribution, then any 101 | Derivative Works that You distribute must include a readable copy of the 102 | attribution notices contained within such NOTICE file, excluding those notices 103 | that do not pertain to any part of the Derivative Works, in at least one of the 104 | following places: within a NOTICE text file distributed as part of the 105 | Derivative Works; within the Source form or documentation, if provided along 106 | with the Derivative Works; or, within a display generated by the Derivative 107 | Works, if and wherever such third-party notices normally appear. The contents of 108 | the NOTICE file are for informational purposes only and do not modify the 109 | License. You may add Your own attribution notices within Derivative Works that 110 | You distribute, alongside or as an addendum to the NOTICE text from the Work, 111 | provided that such additional attribution notices cannot be construed as 112 | modifying the License. 113 | 114 | You may add Your own copyright statement to Your modifications and may provide 115 | additional or different license terms and conditions for use, reproduction, or 116 | distribution of Your modifications, or for any such Derivative Works as a whole, 117 | provided Your use, reproduction, and distribution of the Work otherwise complies 118 | with the conditions stated in this License. 119 | 120 | #### 5. Submission of Contributions 121 | 122 | Unless You explicitly state otherwise, any Contribution intentionally submitted 123 | for inclusion in the Work by You to the Licensor shall be under the terms and 124 | conditions of this License, without any additional terms or conditions. 125 | Notwithstanding the above, nothing herein shall supersede or modify the terms of 126 | any separate license agreement you may have executed with Licensor regarding 127 | such Contributions. 128 | 129 | #### 6. Trademarks 130 | 131 | This License does not grant permission to use the trade names, trademarks, 132 | service marks, or product names of the Licensor, except as required for 133 | reasonable and customary use in describing the origin of the Work and 134 | reproducing the content of the NOTICE file. 135 | 136 | #### 7. Disclaimer of Warranty 137 | 138 | Unless required by applicable law or agreed to in writing, Licensor provides the 139 | Work (and each Contributor provides its Contributions) on an “AS IS” BASIS, 140 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, 141 | including, without limitation, any warranties or conditions of TITLE, 142 | NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are 143 | solely responsible for determining the appropriateness of using or 144 | redistributing the Work and assume any risks associated with Your exercise of 145 | permissions under this License. 146 | 147 | #### 8. Limitation of Liability 148 | 149 | In no event and under no legal theory, whether in tort (including negligence), 150 | contract, or otherwise, unless required by applicable law (such as deliberate 151 | and grossly negligent acts) or agreed to in writing, shall any Contributor be 152 | liable to You for damages, including any direct, indirect, special, incidental, 153 | or consequential damages of any character arising as a result of this License or 154 | out of the use or inability to use the Work (including but not limited to 155 | damages for loss of goodwill, work stoppage, computer failure or malfunction, or 156 | any and all other commercial damages or losses), even if such Contributor has 157 | been advised of the possibility of such damages. 158 | 159 | #### 9. Accepting Warranty or Additional Liability 160 | 161 | While redistributing the Work or Derivative Works thereof, You may choose to 162 | offer, and charge a fee for, acceptance of support, warranty, indemnity, or 163 | other liability obligations and/or rights consistent with this License. However, 164 | in accepting such obligations, You may act only on Your own behalf and on Your 165 | sole responsibility, not on behalf of any other Contributor, and only if You 166 | agree to indemnify, defend, and hold each Contributor harmless for any liability 167 | incurred by, or claims asserted against, such Contributor by reason of your 168 | accepting any such warranty or additional liability. 169 | 170 | _END OF TERMS AND CONDITIONS_ 171 | 172 | ### APPENDIX: How to apply the Apache License to your work 173 | 174 | To apply the Apache License to your work, attach the following boilerplate 175 | notice, with the fields enclosed by brackets `[]` replaced with your own 176 | identifying information. (Don't include the brackets!) The text should be 177 | enclosed in the appropriate comment syntax for the file format. We also 178 | recommend that a file or class name and description of purpose be included on 179 | the same “printed page” as the copyright notice for easier identification within 180 | third-party archives. 181 | 182 | Copyright [yyyy] [name of copyright owner] 183 | 184 | Licensed under the Apache License, Version 2.0 (the "License"); 185 | you may not use this file except in compliance with the License. 186 | You may obtain a copy of the License at 187 | 188 | http://www.apache.org/licenses/LICENSE-2.0 189 | 190 | Unless required by applicable law or agreed to in writing, software 191 | distributed under the License is distributed on an "AS IS" BASIS, 192 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 193 | See the License for the specific language governing permissions and 194 | limitations under the License. 195 | 196 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # EverVim: The Ultimate Vim Distribution 2 | ![EverVim](https://img.shields.io/badge/Coded%20with-EverVim-bd93f9.svg?style=flat-square) 3 | ![EverVim-Dev-Notice](https://img.shields.io/badge/Develop%20Branch-Breaking%20Changes%20Taking%20Place-yellow.svg) 4 | [![Build status](https://ci.appveyor.com/api/projects/status/v06dkj0d3irjxntr?svg=true)](https://ci.appveyor.com/project/LER0ever/evervim) 5 | 6 | ![evervim-header-1](https://i.imgur.com/T0CBBbk.png "EverVim with VimR on macOS") 7 | ![evervim-header-2](https://i.imgur.com/BK4vSuP.png "EverVim with GVIM on Windows") 8 | 9 | * * * 10 | 11 | ## | [About](https://github.com/LER0ever/EverVim/blob/master/README.md#about) | [Installation](https://github.com/LER0ever/EverVim/blob/master/README.md#installation) | [Features](https://github.com/LER0ever/EverVim/blob/master/README.md#features) | [ScreenShots](https://github.com/LER0ever/EverVim/blob/master/README.md#screenshots) | [Documentation!](https://github.com/LER0ever/EverVim/wiki) | [License](https://github.com/LER0ever/EverVim/blob/master/README.md#license) | 12 | 13 | | Repository | L.E.R Code | GitLab | Github | 14 | | :---: | :---: | :---: | :---: | 15 | | Mirror Links | [![L.E.R Code](https://i.imgur.com/GUOHP8J.jpg)](https://code.rongyi.io/LER0ever/EverVim) | [![Gitlab](https://i.imgur.com/N98H7NZ.png)](https://gitlab.com/LER0ever/EverVim) | [![MS Github](https://i.imgur.com/MSiHESF.png)](https://github.com/LER0ever/EverVim) | 16 | 17 | ## About 18 | EverVim is the ultimate vim distribution that supports **NeoVim**, Vim, GVim and MacVim. It ships with tons of powerful features through vim plugins, which makes it easy to get started for both newcomers and experienced users. 19 | 20 | The distribution is completely customizable using a ~/.EverVim.vimrc Vim config files. 21 | 22 | Unlike other vim configuration such as spf13-vim, EverVim always keeps its modern features up-to-date. It uses [Vim-Plug](https://github.com/junegunn/vim-plug) as a plugin manager, which is async and is about 10x faster than Vundle. Keeping your plugins always up to date is just a command away. Vim-Plug uses a plugin bundle so that having lots of them won't mess up the folder structure. 23 | 24 | The default config of EverVim is powerful and easy to use just out of the box, and is suitable for most vim users. Customization is easy as well. With `.EverVim.vimrc` file, you can customize the whole collection without modify the original files. That means you're still able to update the EverVim config using `git pull` without compromizing your own modification. 25 | 26 | ## Installation 27 | ### Detailed installation instruction 28 | ### | [Linux](https://github.com/LER0ever/EverVim/wiki/Installation-on-Linux) | [macOS](https://github.com/LER0ever/EverVim/wiki/Installation-on-macOS) | [Windows](https://github.com/LER0ever/EverVim/wiki/Installation-on-Windows) | 29 | Finished the installation above? 30 | Before you started, please read the [Wiki](https://github.com/LER0ever/EverVim/wiki) to have an overview about some of EverVim's essential keybindings and plugins. 31 | 32 | * * * 33 | 34 | ##### tl;dr. A brief how-to-install 35 |
36 | 0. Still 37 | You are strongly encouraged to use the full instruction on your first installation of EverVim. 38 |
39 |
40 | 1. Install prerequisites and patched font 41 |
  • Download and install the [Knack Nerd Font](https://github.com/ryanoasis/nerd-fonts/raw/master/patched-fonts/Hack/Regular/complete/Knack%20Regular%20Nerd%20Font%20Complete%20Mono.ttf)
  • 42 |
  • Make **git, curl** is on your system. Python is also needed for Linux. Ctags is optional but highly recommended.
  • 43 |
    44 | 45 |
    46 | 2. Clone and Boot 47 |
  • git clone https://github.com/LER0ever/EverVim ~/.EverVim
  • 48 |
  • cd .EverVim
  • 49 |
  • sh Boot-EverVim.sh or .\Boot-EverVim.ps1
  • 50 |
    51 |
    52 | 3. Install the plugins 53 |
  • Fire up your vim
  • 54 |
  • Wait for Plugin Initiation to finish
  • 55 |
  • Restart Vim.
  • 56 |
    57 | 58 | ### Keep EverVim up-to-date 59 | Press **`u`** at EverVim start screen. Configuration and plugins will be automatically updated. 60 | 61 | # Features 62 | ### Cross Platform 63 | - Support Vim 7.4.x, Vim 8, MacVim and of course Neovim 64 | - Tested under all platforms 65 | - Windows (gvim, vim, neovim-qt, Oni) 66 | - Linux (neovim, neovim-qt, vim, gvim, neovim-gtk, Oni) 67 | - macOS (MacVim, VimR, Oni) 68 | - FreeBSD (GVim, NeoVim) 69 | - Android (neovim, vim under Termux) 70 | 71 | ### Powerful & Easy to use 72 | - Easy to setup, just one bash away. 73 | - All the wonderful features are enabled out of the box 74 | - Full IDE-like support for C/C++, Go, Rust, javascript, etc. 75 | - Use YouCompleteMe by default, neocomplete as a windows fallback 76 | - NERDTree as file explorer 77 | - Git operation right inside vim with fugitive 78 | - Syntastic provides syntax check on every save 79 | - Jump to anywhere in 2 key with EasyMotion 80 | - Markdown CTags support via markdown2ctags 81 | 82 | ### Pleasant to code 83 | - Fancy Dracula Theme 84 | - Lightline for statusline and tabline 85 | - TagBar for code navigation 86 | - Startup screen to pick up recent files (using Startify) 87 | 88 | ### Asynchronous 89 | - Use Vim-Plug as vim plugin manager 90 | - Parallel installation 91 | - 10x faster initial PlugInstall 92 | - FZF as Fuzzy Finder 93 | - Support fuzzy search for Files, Code, Git history, Help tags and much more. 94 | 95 | ### Other Awesomeness 96 | - Collaboration using CoVim 97 | - AGit for detailed git log 98 | 99 | ## ScreenShots 100 | #### Updated screenshots at [Wiki/Gallery](https://github.com/LER0ever/EverVim/wiki/Gallery) 101 | 102 | ## [Documentation](https://github.com/LER0ever/EverVim/wiki) 103 | 104 | ## License 105 | EverVim is licensed under **Apache 2.0**. See [LICENSE.md](https://github.com/LER0ever/EverVim/blob/master/LICENSE.md) for details. 106 | 107 | This repo contains part of code from [spf13-vim](https://github.com/spf13/spf13-vim), 108 | which is also licensed under [Apache 2.0](https://github.com/spf13/spf13-vim/blob/3.0/LICENSE.txt) 109 | -------------------------------------------------------------------------------- /core/arrowkey-fix.vim: -------------------------------------------------------------------------------- 1 | " Arrow Key Fix 2 | if &term[:4] == "xterm" || &term[:5] == 'screen' || &term[:3] == 'rxvt' 3 | inoremap OC 4 | endif 5 | -------------------------------------------------------------------------------- /core/basics.vim: -------------------------------------------------------------------------------- 1 | " Basics 2 | set nocompatible " Must be first line 3 | if !WINDOWS() 4 | set shell=/bin/sh 5 | if ANDROID() 6 | set shell=/system/bin/sh 7 | endif 8 | endif 9 | -------------------------------------------------------------------------------- /core/core.vim: -------------------------------------------------------------------------------- 1 | " EverVim Core Config 2 | 3 | " Identify platform { 4 | source $evervim_root/core/platform.vim 5 | " } 6 | 7 | " Basics { 8 | source $evervim_root/core/basics.vim 9 | " } 10 | 11 | " Windows Compatible { 12 | source $evervim_root/core/windows.vim 13 | " } 14 | 15 | " Arrow Key Fix { 16 | source $evervim_root/core/arrowkey-fix.vim 17 | " } 18 | 19 | " Functions { 20 | source $evervim_root/core/functions.vim 21 | " } 22 | 23 | " Use config if available { 24 | if filereadable(expand("~/.EverVim.vimrc")) 25 | source ~/.EverVim.vimrc 26 | endif 27 | " } 28 | 29 | " Use bundles config { 30 | if filereadable(expand($evervim_root . "/plugins/plugins.vim")) 31 | source $evervim_root/plugins/plugins.vim 32 | endif 33 | " } 34 | 35 | " General { 36 | source $evervim_root/core/general.vim 37 | " } 38 | 39 | " Vim UI { 40 | source $evervim_root/core/vimui.vim 41 | " } 42 | 43 | " Formatting { 44 | source $evervim_root/core/formatting.vim 45 | " } 46 | 47 | " Session { 48 | source $evervim_root/core/session.vim 49 | " } 50 | 51 | " Key (re)Mappings { 52 | source $evervim_root/core/keymap.vim 53 | " } 54 | " 55 | " Plugin Configuration { 56 | source $evervim_root/plugins/plugin-config.vim 57 | " } 58 | " 59 | " GUI Config { 60 | source $evervim_root/core/gui.vim 61 | " } 62 | -------------------------------------------------------------------------------- /core/formatting.vim: -------------------------------------------------------------------------------- 1 | " Formatting 2 | set nowrap " Do not wrap long lines 3 | set autoindent " Indent at the same level of the previous line 4 | set shiftwidth=4 " Use indents of 4 spaces 5 | set expandtab " Tabs are spaces, not tabs 6 | set tabstop=4 " An indentation every four columns 7 | set softtabstop=4 " Let backspace delete indent 8 | set nojoinspaces " Prevents inserting two spaces after punctuation on a join (J) 9 | set splitright " Puts new vsplit windows to the right of the current 10 | set splitbelow " Puts new split windows to the bottom of the current 11 | "set matchpairs+=<:> " Match, to be used with % 12 | set pastetoggle= " pastetoggle (sane indentation on pastes) 13 | set autoread " Automatically reload if file is changed externally 14 | if OSX() 15 | set nofsync " Disable fsync under macOS, for it wont work on NTFS 16 | endif 17 | "set comments=sl:/*,mb:*,elx:*/ " auto format comment blocks 18 | " Remove trailing whitespaces and ^M chars 19 | " To disable the stripping of whitespace, add the following to your 20 | " .vimrc.before.local file: 21 | " let g:evervim_keep_trailing_whitespace = 1 22 | autocmd FileType c,cpp,java,go,php,javascript,puppet,python,rust,twig,xml,yml,yaml,perl,sql autocmd BufWritePre if !exists('g:evervim_keep_trailing_whitespace') | call StripTrailingWhitespace() | endif 23 | "autocmd FileType go autocmd BufWritePre Fmt 24 | autocmd BufNewFile,BufRead *.html.twig set filetype=html.twig 25 | autocmd BufNewFile,BufRead *.nox,*.pts set filetype=gohtmltmpl 26 | autocmd BufNewFile,BufRead *.amber set filetype=pug 27 | autocmd BufNewFile,BufRead *.scss set filetype=scss.css 28 | autocmd BufNewFile,BufRead *.csv,*.dat set filetype=csv 29 | autocmd FileType haskell,puppet,ruby,yml,yaml setlocal expandtab shiftwidth=2 softtabstop=2 30 | autocmd FileType html,xml,gohtmltmpl setlocal expandtab shiftwidth=2 softtabstop=2 31 | autocmd FileType typescript setlocal expandtab shiftwidth=4 softtabstop=4 32 | " preceding line best in a plugin but here for now. 33 | 34 | autocmd BufNewFile,BufRead *.coffee set filetype=coffee 35 | autocmd BufNewFile,BufRead *.bundles,*.EverVim.local,*.EverVim.project,*.EverVim.Project set filetype=vim 36 | autocmd BufNewFile *.EverVim.project,*.EverVim.Project,*.EverVim.local 0r $evervim_root/.EverVim.project.sample 37 | autocmd BufNewFile,BufRead wscript set filetype=python 38 | 39 | " Workaround vim-commentary for Haskell 40 | autocmd FileType haskell setlocal commentstring=--\ %s 41 | " Workaround broken colour highlighting in Haskell 42 | autocmd FileType haskell,rust setlocal nospell 43 | 44 | 45 | -------------------------------------------------------------------------------- /core/functions.vim: -------------------------------------------------------------------------------- 1 | " Functions 2 | 3 | " Initialize directories { 4 | function! InitializeDirectories() 5 | let parent = $HOME 6 | let prefix = 'vim' 7 | let dir_list = { 8 | \ 'backup': 'backupdir', 9 | \ 'views': 'viewdir', 10 | \ 'swap': 'directory' } 11 | 12 | if has('persistent_undo') 13 | let dir_list['undo'] = 'undodir' 14 | endif 15 | 16 | " To specify a different directory in which to place the vimbackup, 17 | " vimviews, vimundo, and vimswap files/directories, add the following to 18 | " your .vimrc.before.local file: 19 | " let g:evervim_consolidated_directory = 20 | " eg: let g:evervim_consolidated_directory = $HOME . '/.vim/' 21 | if exists('g:evervim_consolidated_directory') 22 | let common_dir = g:evervim_consolidated_directory . prefix 23 | else 24 | let common_dir = parent . '/.' . prefix 25 | endif 26 | 27 | for [dirname, settingname] in items(dir_list) 28 | let directory = common_dir . dirname . '/' 29 | if exists("*mkdir") 30 | if !isdirectory(directory) 31 | call mkdir(directory) 32 | endif 33 | endif 34 | if !isdirectory(directory) 35 | echo "Warning: Unable to create backup directory: " . directory 36 | echo "Try: mkdir -p " . directory 37 | else 38 | let directory = substitute(directory, " ", "\\\\ ", "g") 39 | exec "set " . settingname . "=" . directory 40 | endif 41 | endfor 42 | endfunction 43 | call InitializeDirectories() 44 | " } 45 | 46 | " Initialize NERDTree as needed { 47 | function! NERDTreeInitAsNeeded() 48 | redir => bufoutput 49 | buffers! 50 | redir END 51 | let idx = stridx(bufoutput, "NERD_tree") 52 | if idx > -1 53 | NERDTreeMirror 54 | NERDTreeFind 55 | wincmd l 56 | endif 57 | endfunction 58 | " } 59 | 60 | " Strip whitespace { 61 | function! StripTrailingWhitespace() 62 | " Preparation: save last search, and cursor position. 63 | let _s=@/ 64 | let l = line(".") 65 | let c = col(".") 66 | " do the business: 67 | %s/\s\+$//e 68 | " clean up: restore previous search history, and cursor position 69 | let @/=_s 70 | call cursor(l, c) 71 | endfunction 72 | " } 73 | 74 | " Unix Dos Conversion { 75 | function! Dos2Unix() 76 | execute 'update | e ++ff=dos | setlocal ff=unix' 77 | silent %s/\r//ge 78 | execute 'w' 79 | endfunction 80 | 81 | function! Unix2Dos() 82 | execute 'update | e ++ff=dos | w' 83 | endfunction 84 | " } 85 | 86 | " Shell command { 87 | function! s:RunShellCommand(cmdline) 88 | botright new 89 | 90 | setlocal buftype=nofile 91 | setlocal bufhidden=delete 92 | setlocal nobuflisted 93 | setlocal noswapfile 94 | setlocal nowrap 95 | setlocal filetype=shell 96 | setlocal syntax=shell 97 | 98 | call setline(1, a:cmdline) 99 | call setline(2, substitute(a:cmdline, '.', '=', 'g')) 100 | execute 'silent $read !' . escape(a:cmdline, '%#') 101 | setlocal nomodifiable 102 | 1 103 | endfunction 104 | 105 | command! -complete=file -nargs=+ Shell call s:RunShellCommand() 106 | " e.g. Grep current file for : Shell grep -Hn % 107 | " } 108 | 109 | function! s:ExpandFilenameAndExecute(command, file) 110 | execute a:command . " " . expand(a:file, ":p") 111 | endfunction 112 | 113 | function! EditEverVimConfig() 114 | call ExpandFilenameAndExecute("tabedit", "~/.EverVim.vimrc") 115 | endfunction 116 | 117 | function! ReplaceInFile(file, regexmatch, replace) 118 | execute 'args ' . a:file | execute 'argdo %s/' . a:regexmatch . '/' . a:replace . '/gce' | execute 'argdo wq' 119 | endfunction 120 | 121 | function! DeleteLinesInFile(file, regexmatch) 122 | execute 'args ' . a:file . ' | argdo g/' . a:regexmatch . '/d | argdo wq' 123 | endfunction 124 | 125 | function! EverVimBundleDir(bundlename) 126 | return $evervim_root . "/bundle/" . a:bundlename 127 | endfunction 128 | 129 | function! EverVimUpdateConfig() 130 | if WINDOWS() 131 | execute '!git -C \%USERPROFILE\%/.EverVim pull' 132 | else 133 | execute '!git -C ~/.EverVim pull' 134 | endif 135 | execute "source ~/.EverVim/vimrc" 136 | endfunction 137 | 138 | function! EverVimUpdatePlugins() 139 | execute 'PlugUpgrade' 140 | execute 'PlugClean!' 141 | execute 'PlugUpdate' 142 | echo 'Update Completed!' 143 | endfunction 144 | 145 | function! EverVimShowLog() 146 | if exists(':Agit') 147 | echo 'Showing git log for EverVim, press `q` to exit.' 148 | sleep 500m 149 | execute 'Agit --dir=~/.EverVim' 150 | endif 151 | " TODO: Log without AGit 152 | endfunction 153 | 154 | function! EverVimFullUpgrade() 155 | copen 156 | cexpr "Running EverVim Full Upgrade ...\n". 157 | \ "This will take about 2-5 minutes, depending on your network condition.\n" . 158 | \ "After finish updating, you can try:\n". 159 | \ " - press `D` to see the changes for plugins.\n" . 160 | \ " - run `:call EverVimShowLog()` to view the git log for EverVim in Agit\n" . 161 | \ "A restart is **required** after the updating process is finished.\n" . "Enjoy!" 162 | sleep 1000m 163 | silent! call EverVimUpdateConfig() 164 | silent! call EverVimUpdatePlugins() 165 | endfunction 166 | 167 | function! EverVimInitPlugins() 168 | if !isdirectory(expand('~/.EverVim/bundle')) 169 | execute 'PlugInstall' 170 | endif 171 | endfunction 172 | 173 | function! SourceConfigsIn(dir) 174 | let filelist = split(globpath(a:dir, '*.vim'), '\n') 175 | for vimconf in filelist 176 | execute 'source' vimconf 177 | endfor 178 | endfunction 179 | -------------------------------------------------------------------------------- /core/general.vim: -------------------------------------------------------------------------------- 1 | " General 2 | let g:vimrc_author='LER0ever' 3 | let g:vimrc_email='etasry@gmail.com' 4 | let g:vimrc_homepage='https://rongyi.blog' 5 | 6 | set background=dark " Assume a dark background 7 | 8 | " if !has('gui') 9 | "set term=$TERM " Make arrow and other keys work 10 | " endif 11 | filetype plugin indent on " Automatically detect file types. 12 | syntax on 13 | set foldmethod=indent " Syntax highlighting | using indentation as foldmethod to speed up vim 14 | set mouse=a " Automatically enable mouse usage 15 | set mousehide " Hide the mouse cursor while typing 16 | set guicursor= " Do not modify the cursor shape 17 | scriptencoding utf-8 18 | set fileencodings=utf-8,ucs-bom,gb18030,gbk,gb2312,cp936 " support for open multi-byte encoded file 19 | set encoding=utf-8 20 | 21 | if has('clipboard') 22 | if has('unnamedplus') " When possible use + register for copy-paste 23 | set clipboard=unnamed,unnamedplus 24 | else " On mac and Windows, use * register for copy-paste 25 | set clipboard=unnamed 26 | endif 27 | endif 28 | 29 | " Most prefer to automatically switch to the current file directory when 30 | " a new buffer is opened; to prevent this behavior, add the following to 31 | " your .vimrc.before.local file: 32 | " let g:evervim_autochdir = 1 33 | if exists('g:evervim_autochdir') 34 | autocmd BufEnter * if bufname("") !~ "^\[A-Za-z0-9\]*://" | lcd %:p:h | endif 35 | " Always switch to the current file directory 36 | endif 37 | 38 | "set autowrite " Automatically write a file when leaving a modified buffer 39 | set shortmess+=filmnrxoOtT " Abbrev. of messages (avoids 'hit enter') 40 | set viewoptions=folds,options,cursor,unix,slash " Better Unix / Windows compatibility 41 | set virtualedit=onemore " Allow for cursor beyond last character 42 | set history=1000 " Store a ton of history (default is 20) 43 | set nospell " Switch off Spell checking by default 44 | set hidden " Allow buffer switching without saving 45 | set iskeyword-=. " '.' is an end of word designator 46 | set iskeyword-=# " '#' is an end of word designator 47 | set iskeyword-=- " '-' is an end of word designator 48 | 49 | " Instead of reverting the cursor to the last position in the buffer, we 50 | " set it to the first line when editing a git commit message 51 | au FileType gitcommit au! BufEnter COMMIT_EDITMSG call setpos('.', [0, 1, 1, 0]) 52 | 53 | " http://vim.wikia.com/wiki/Restore_cursor_to_file_position_in_previous_editing_session 54 | " Restore cursor to file position in previous editing session 55 | " This may cause NERDTree and tagbar's abnormal behavior 56 | " To disable this, add the following to your .vimrc.before.local file: 57 | " let g:evervim_no_restore_cursor = 1 58 | " deprecated, replaced by vim-lastplace 59 | 60 | "if !exists('g:evervim_no_restore_cursor') 61 | "function! ResCur() 62 | "if line("'\"") <= line("$") 63 | "silent! normal! g`" 64 | "return 1 65 | "endif 66 | "endfunction 67 | 68 | "augroup resCur 69 | "autocmd! 70 | "autocmd BufWinEnter * call ResCur() 71 | "augroup END 72 | "endif 73 | 74 | " Setting up the directories { 75 | set backup " Backups are nice ... 76 | if has('persistent_undo') 77 | set undofile " So is persistent undo ... 78 | set undolevels=1000 " Maximum number of changes that can be undone 79 | set undoreload=10000 " Maximum number lines to save for undo on a buffer reload 80 | endif 81 | " } 82 | -------------------------------------------------------------------------------- /core/gui.vim: -------------------------------------------------------------------------------- 1 | " GUI Settings { 2 | 3 | " GVIM (here instead of .gvimrc) 4 | if has('gui_running') 5 | set guioptions-=T " Remove the toolbar 6 | set lines=40 " 40 lines of text instead of 24 7 | if !exists("g:evervim_no_big_font") 8 | if LINUX() && has("gui_running") 9 | execute 'set guifont=' . fnameescape(g:evervim_font . ' ') . g:evervim_font_size . ',Noto\ Mono\ Regular\ 12,Menlo\ Regular\ 11,Consolas\ Regular\ 12,Courier\ New\ Regular\ 14' 10 | elseif OSX() && has("gui_running") 11 | execute 'set guifont=' . fnameescape(g:evervim_font) . ':h' . g:evervim_font_size . ',Menlo\ Regular:h11,Consolas\ Regular:h12,Courier\ New\ Regular:h14' 12 | elseif WINDOWS() && has("gui_running") 13 | execute 'set guifont=' . substitute(g:evervim_font, ' ', '_', 'g') . ':h' . g:evervim_font_size . ',Consolas:h10,Courier_New:h10' 14 | endif 15 | endif 16 | else 17 | if &term == 'xterm' || &term == 'screen' || &term == 'fbterm' 18 | set t_Co=256 " Enable 256 colors to stop the CSApprox warning and make xterm vim shine 19 | endif 20 | "set term=builtin_ansi " Make arrow and other keys work 21 | endif 22 | 23 | " NeoVim-Qt (here instead of ginit.vim) 24 | if exists('g:GuiLoaded') 25 | if !WINDOWS() 26 | execute 'Guifont! ' . g:evervim_font . ':h' . g:evervim_font_size 27 | else 28 | execute 'Guifont! ' . g:evervim_font . ':h' . g:evervim_font_size 29 | endif 30 | endif 31 | 32 | if REMOTE() 33 | set termguicolors " Useful when using Neovim Remote and nvim-qt remote mode 34 | endif 35 | 36 | if NVIMGTK() 37 | call rpcnotify(1, 'Gui', 'Font', g:evervim_font . ' ' . g:evervim_font_size) 38 | call rpcnotify(1, 'Gui', 'Option', 'Tabline', 0) 39 | endif 40 | 41 | if VIMR() 42 | set termguicolors 43 | endif 44 | 45 | if NVIM() 46 | let g:terminal_color_0 = "#282a36" 47 | let g:terminal_color_1 = "#ff5555" 48 | let g:terminal_color_2 = "#50fa7b" 49 | let g:terminal_color_3 = "#f1fa8c" 50 | let g:terminal_color_4 = "#bd93f9" 51 | let g:terminal_color_5 = "#ff79c6" 52 | let g:terminal_color_6 = "#8be9fd" 53 | let g:terminal_color_7 = "#e9e9f4" 54 | let g:terminal_color_8 = "#282a36" 55 | let g:terminal_color_9 = "#ff5555" 56 | let g:terminal_color_10 = "#50fa7b" 57 | let g:terminal_color_11 = "#f1fa8c" 58 | let g:terminal_color_12 = "#bd93f9" 59 | let g:terminal_color_13 = "#ff79c6" 60 | let g:terminal_color_14 = "#8be9fd" 61 | let g:terminal_color_15 = "#e9e9f4" 62 | let g:terminal_color_background = g:terminal_color_0 63 | let g:terminal_color_foreground = g:terminal_color_7 64 | if &background == "light" 65 | let g:terminal_color_background = g:terminal_color_7 66 | let g:terminal_color_foreground = g:terminal_color_2 67 | endif 68 | endif 69 | 70 | " } 71 | -------------------------------------------------------------------------------- /core/keymap.vim: -------------------------------------------------------------------------------- 1 | " Key (Re)Mappings 2 | 3 | " The default leader is '\', but many people prefer ',' as it's in a standard 4 | " location. To override this behavior and set it back to '\' (or any other 5 | " character) add the following to your .vimrc.before.local file: 6 | " let g:evervim_leader='\' 7 | if !exists('g:evervim_leader') 8 | let mapleader = ',' 9 | else 10 | let mapleader=g:evervim_leader 11 | endif 12 | if !exists('g:evervim_localleader') 13 | let maplocalleader = '\' 14 | else 15 | let maplocalleader=g:evervim_localleader 16 | endif 17 | 18 | " The default mappings for editing and applying the evervim configuration 19 | " are ev and sv respectively. Change them to your preference 20 | " by adding the following to your .vimrc.before.local file: 21 | " let g:evervim_edit_config_mapping='ec' 22 | " let g:evervim_apply_config_mapping='sc' 23 | if !exists('g:evervim_edit_config_mapping') 24 | let s:evervim_edit_config_mapping = 'ec' 25 | else 26 | let s:evervim_edit_config_mapping = g:evervim_edit_config_mapping 27 | endif 28 | if !exists('g:evervim_apply_config_mapping') 29 | let s:evervim_apply_config_mapping = 'ac' 30 | else 31 | let s:evervim_apply_config_mapping = g:evervim_apply_config_mapping 32 | endif 33 | 34 | " TODO: edit config not working yet 35 | execute "noremap " . s:evervim_edit_config_mapping " :call EditEverVimConfig()" 36 | execute "noremap " . s:evervim_apply_config_mapping . " :source ~/.EverVim/vimrc" 37 | 38 | " Easier moving in tabs and windows 39 | " The lines conflict with the default digraph mapping of 40 | " If you prefer that functionality, add the following to your 41 | " .vimrc.before.local file: 42 | " let g:evervim_easyWindows = 1 43 | if !exists('g:evervim_no_easyWindows') 44 | map j 45 | map k 46 | map l 47 | map h 48 | nnoremap jh 1w 49 | nnoremap jl 1b 50 | endif 51 | 52 | " Wrapped lines goes down/up to next row, rather than next line in file. 53 | noremap j gj 54 | noremap k gk 55 | 56 | " Remove keybinding for Ex Mode 57 | nnoremap Q 58 | 59 | " Remap ; to : in visual mode 60 | nnoremap ; : 61 | 62 | " End/Start of line motion keys act relative to row/wrap width in the 63 | " presence of `:set wrap`, and relative to line for `:set nowrap`. 64 | " Default vim behaviour is to act relative to text line in both cases 65 | " If you prefer the default behaviour, add the following to your 66 | " .vimrc.before.local file: 67 | " let g:evervim_no_wrapRelMotion = 1 68 | if !exists('g:evervim_no_wrapRelMotion') 69 | " Same for 0, home, end, etc 70 | function! WrapRelativeMotion(key, ...) 71 | let vis_sel="" 72 | if a:0 73 | let vis_sel="gv" 74 | endif 75 | if &wrap 76 | execute "normal!" vis_sel . "g" . a:key 77 | else 78 | execute "normal!" vis_sel . a:key 79 | endif 80 | endfunction 81 | 82 | " Map g* keys in Normal, Operator-pending, and Visual+select 83 | noremap $ :call WrapRelativeMotion("$") 84 | noremap :call WrapRelativeMotion("$") 85 | noremap 0 :call WrapRelativeMotion("0") 86 | noremap :call WrapRelativeMotion("0") 87 | noremap ^ :call WrapRelativeMotion("^") 88 | " Overwrite the operator pending $/ mappings from above 89 | " to force inclusive motion with :execute normal! 90 | onoremap $ v:call WrapRelativeMotion("$") 91 | onoremap v:call WrapRelativeMotion("$") 92 | " Overwrite the Visual+select mode mappings from above 93 | " to ensure the correct vis_sel flag is passed to function 94 | vnoremap $ :call WrapRelativeMotion("$", 1) 95 | vnoremap :call WrapRelativeMotion("$", 1) 96 | vnoremap 0 :call WrapRelativeMotion("0", 1) 97 | vnoremap :call WrapRelativeMotion("0", 1) 98 | vnoremap ^ :call WrapRelativeMotion("^", 1) 99 | endif 100 | 101 | " The following two lines conflict with moving to top and 102 | " bottom of the screen 103 | " If you prefer that functionality, add the following to your 104 | " .vimrc.before.local file: 105 | " let g:evervim_no_fastTabs = 1 106 | if !exists('g:evervim_no_fastTabs') 107 | map gT 108 | map gt 109 | endif 110 | 111 | " Stupid shift key fixes 112 | if !exists('g:evervim_no_keyfixes') 113 | if has("user_commands") 114 | command! -bang -nargs=* -complete=file E e 115 | command! -bang -nargs=* -complete=file W w 116 | command! -bang -nargs=* -complete=file Wq wq 117 | command! -bang -nargs=* -complete=file WQ wq 118 | command! -bang Wa wa 119 | command! -bang WA wa 120 | command! -bang Q q 121 | command! -bang QA qa 122 | command! -bang Qa qa 123 | endif 124 | 125 | cmap Tabe tabe 126 | endif 127 | 128 | " Yank from the cursor to the end of the line, to be consistent with C and D. 129 | nnoremap Y y$ 130 | 131 | " Code folding options 132 | nmap o0 :set foldlevel=0 133 | nmap o1 :set foldlevel=1 134 | nmap o2 :set foldlevel=2 135 | nmap o3 :set foldlevel=3 136 | nmap o4 :set foldlevel=4 137 | nmap o5 :set foldlevel=5 138 | nmap o6 :set foldlevel=6 139 | nmap o7 :set foldlevel=7 140 | nmap o8 :set foldlevel=8 141 | nmap o9 :set foldlevel=9 142 | 143 | " Most prefer to toggle search highlighting rather than clear the current 144 | " search results. To clear search highlighting rather than toggle it on 145 | " and off, add the following to your .vimrc.before.local file: 146 | " let g:evervim_clear_search_highlight = 1 147 | if exists('g:evervim_clear_search_highlight') 148 | nmap / :nohlsearch 149 | else 150 | nmap / :set invhlsearch 151 | endif 152 | 153 | " Helper for saving file 154 | noremap :update 155 | vnoremap :update 156 | inoremap :update 157 | 158 | " Helper for sync scrolling and Diffing 159 | " Mark current buffer for syncing view 160 | noremap wv :set scb 161 | " Mark current buffer for diffing 162 | noremap wd :diffthis 163 | 164 | " Find merge conflict markers 165 | noremap FindMergeConflictMarker /\v^[<\|=>]{7}( .*\|$) 166 | map fx FindMergeConflictMarker 167 | 168 | " Shortcuts 169 | " Change Working Directory to that of the current file 170 | cmap cwd lcd %:p:h 171 | cmap cd. lcd %:p:h 172 | 173 | " Visual shifting (does not exit Visual mode) 174 | vnoremap < >gv 176 | 177 | " Allow using the repeat operator with a visual selection (!) 178 | " http://stackoverflow.com/a/8064607/127816 179 | vnoremap . :normal . 180 | 181 | " For when you forget to sudo.. Really Write the file. 182 | cmap w!! w !sudo tee % >/dev/null 183 | 184 | " Dos Unix FF Conversion 185 | nnoremap fcu :call Dos2Unix() 186 | nnoremap fcd :call Unix2Dos() 187 | 188 | " Some helpers to edit mode 189 | " http://vimcasts.org/e/14 190 | cnoremap %% =fnameescape(expand('%:h')).'/' 191 | map ew :e %% 192 | map es :sp %% 193 | map ev :vsp %% 194 | map et :tabe %% 195 | 196 | " Adjust viewports to the same size 197 | map = = 198 | 199 | " Map ff to display all lines with keyword under cursor 200 | " and ask which one to jump to 201 | nnoremap FindTextUnderCursor [I:let nr = input("Which one to jump to: ")exe "normal " . nr ."[\t" 202 | nmap ff FindTextUnderCursor 203 | 204 | " Easier horizontal scrolling 205 | map zl zL 206 | map zh zH 207 | 208 | " Easier formatting 209 | nnoremap fq gwip 210 | nnoremap fQ ggVGgq 211 | nnoremap fk vipJ 212 | nnoremap fK :%norm vipJ 213 | 214 | " fullscreen mode for GVIM and Terminal, need 'wmctrl' in you PATH 215 | map :call system("wmctrl -ir " . v:windowid . " -b toggle,fullscreen") 216 | 217 | " Open a new instance tab 218 | nnoremap tn :tabnew +Startify 219 | 220 | if has('nvim') 221 | tnoremap 222 | nnoremap te :tabe term://$SHELLi 223 | nnoremap tv :vsp term://$SHELLi 224 | nnoremap ts :sp term://$SHELLi 225 | nnoremap :call GuiClose() 226 | endif 227 | -------------------------------------------------------------------------------- /core/platform.vim: -------------------------------------------------------------------------------- 1 | " Identify platform 2 | silent function! OSX() 3 | return has('macunix') 4 | endfunction 5 | silent function! LINUX() 6 | return has('unix') && !has('macunix') && !has('win32unix') 7 | endfunction 8 | silent function! BSD() 9 | return system('uname -s') =~ "BSD" 10 | endfunction 11 | silent function! WINDOWS() 12 | return (has('win32') || has('win64')) 13 | endfunction 14 | silent function! WSL() 15 | return LINUX() && system('uname -r') =~ 'Microsoft' 16 | endfunction 17 | silent function! CROS() 18 | return LINUX() && (system('cat /proc/version') =~ 'chrome-bot') 19 | endfunction 20 | silent function! ANDROID() 21 | return isdirectory(expand('/system/priv-app')) 22 | endfunction 23 | silent function! KERNELVERSION() 24 | return substitute(system('uname -r'), '[\n]\+', '', 'g') 25 | endfunction 26 | silent function! DISTRO() 27 | return substitute(system('lsb_release -si'), '[\n]\+', '', 'g') 28 | endfunction 29 | silent function! DISTROVERSION() 30 | return executable('dpkg') ? substitute(system('lsb_release -sd'), '[\n|\"]\+', '', 'g'): 31 | \ CROS() ? substitute(system('lsb_release -sir'), '[\n|\"]\+', '', 'g') : 32 | \ substitute(system('lsb_release -sdr'), '[\n|\"]\+', '', 'g') 33 | endfunction 34 | silent function! BSDDistro() 35 | return substitute(system('uname -s'), '[\n]\+', '', 'g') 36 | endfunction 37 | silent function! OSXVERSION() 38 | return substitute(system("echo $(sw_vers -productVersion)"), '[\n]\+', '', '') 39 | endfunction 40 | silent function! NTVERSION() 41 | return substitute(system('ver'), '[^0-9|\.]\+', '', 'g') 42 | endfunction 43 | silent function! WINVERSION() 44 | let ntversion = NTVERSION() 45 | return ntversion =~ "4.10" ? "Windows 98" : 46 | \ ntversion =~ "5.0" ? "Windows 2000" : 47 | \ ntversion =~ "5.1" ? "Windows XP" : 48 | \ ntversion =~ "5.2" ? "Windows XP x64" : 49 | \ ntversion =~ "6.0" ? "Windows Vista" : 50 | \ ntversion =~ "6.1" ? "Windows 7" : 51 | \ ntversion =~ "6.2" ? "Windows 8" : 52 | \ ntversion =~ "6.3" ? "Windows 8.1" : 53 | \ ntversion =~ "10.0" ? "Windows 10" : 54 | \ "Windows (version unknown)" 55 | endfunction 56 | silent function! NVIM() 57 | return has('nvim') 58 | endfunction 59 | silent function! GVIM() 60 | return has('gui_running') 61 | endfunction 62 | silent function! NVIMQT() 63 | return exists('g:GuiLoaded') 64 | endfunction 65 | silent function! NVIMGTK() 66 | return exists('g:GtkGuiLoaded') 67 | endfunction 68 | silent function! GONVIM() 69 | return exists('g:gonvim_running') 70 | endfunction 71 | silent function! ONI() 72 | return exists('g:gui_oni') 73 | endfunction 74 | silent function! VIMR() 75 | return has('gui_vimr') 76 | endfunction 77 | silent function! TERMUX() 78 | return isdirectory(expand('/data/data/com.termux')) " #FIXME: Dirty judge 79 | endfunction 80 | silent function! REMOTE() 81 | return NVIM() && (v:servername =~ "127.0.0.1" || v:servername =~ "0.0.0.0" || v:servername =~ "localhost") 82 | endfunction 83 | -------------------------------------------------------------------------------- /core/session.vim: -------------------------------------------------------------------------------- 1 | augroup NoSimultaneousEdits 2 | autocmd! 3 | autocmd SwapExists * let v:swapchoice = 'o' 4 | autocmd SwapExists * echohl ErrorMsg 5 | autocmd SwapExists * echo 'EverVim: Duplicate session, opening read-only ...' 6 | autocmd SwapExists * echohl None 7 | autocmd SwapExists * sleep 2 8 | augroup END 9 | -------------------------------------------------------------------------------- /core/vimui.vim: -------------------------------------------------------------------------------- 1 | " Vim UI 2 | if !exists('g:evervim_color_theme') 3 | if filereadable(expand(EverVimBundleDir("vim/colors/dracula.vim"))) 4 | let g:evervim_color_theme = "dracula" 5 | else 6 | silent !echo "No color theme available, falling back to desert ..." 7 | let g:evervim_color_theme = "desert" 8 | endif 9 | endif 10 | 11 | if !exists('g:evervim_airline_theme') 12 | " Default to dracula, "Dracula" for lightline. 13 | let g:evervim_airline_theme = "dracula" 14 | endif 15 | 16 | if !exists('g:evervim_light_background') 17 | set background=dark " Assume a dark background 18 | else 19 | set background=light 20 | endif 21 | 22 | " Colorscheme changed here 23 | execute 'color ' . g:evervim_color_theme 24 | 25 | " Default Font setting 26 | if !exists('g:evervim_font') 27 | let g:evervim_font = WINDOWS() ? (NVIM() ? "Knack NF" : "Knack_NF") : "Knack Nerd Font Mono" 28 | endif 29 | if !exists('g:evervim_font_size') 30 | let g:evervim_font_size = WINDOWS() ? "11" : "12" 31 | endif 32 | 33 | set tabpagemax=15 " Only show 15 tabs 34 | set showmode " Display the current mode 35 | 36 | set cursorline " Highlight current line 37 | "set cursorcolumn " Highlight current column 38 | 39 | highlight clear SignColumn " SignColumn should match background 40 | highlight clear LineNr " Current line number row will have same background color in relative mode 41 | "highlight clear CursorLineNr " Remove highlight color from current line number 42 | 43 | if has('cmdline_info') 44 | set ruler " Show the ruler 45 | set rulerformat=%30(%=\:b%n%y%m%r%w\ %l,%c%V\ %P%) " A ruler on steroids 46 | set showcmd " Show partial commands in status line and Selected characters/lines in visual mode 47 | endif 48 | 49 | if has('statusline') 50 | set laststatus=2 51 | 52 | " Broken down into easily includeable segments 53 | set statusline=%<%f\ " Filename 54 | set statusline+=%w%h%m%r " Options 55 | set statusline+=\ [%{&ff}/%Y] " Filetype 56 | set statusline+=\ [%{getcwd()}] " Current dir 57 | set statusline+=%=%-14.(%l,%c%V%)\ %p%% " Right aligned file nav info 58 | endif 59 | 60 | set backspace=indent,eol,start " Backspace for dummies 61 | set linespace=0 " No extra spaces between rows 62 | if !exists('g:evervim_hybrid_linenumber') 63 | set number " Line numbers on 64 | else 65 | set relativenumber 66 | set number 67 | endif 68 | set showmatch " Show matching brackets/parenthesis 69 | set incsearch " Find as you type search 70 | set hlsearch " Highlight search terms 71 | set winminheight=0 " Windows can be 0 line high 72 | set ignorecase " Case insensitive search 73 | set smartcase " Case sensitive when uc present 74 | set wildmenu " Show list instead of just completing 75 | set wildmode=list:longest,full " Command completion, list matches, then longest common part, then all. 76 | set whichwrap=b,s,h,l,<,>,[,] " Backspace and cursor keys wrap too 77 | set scrolljump=5 " Lines to scroll when cursor leaves screen 78 | " Workaround for oni issue #395 79 | if !ONI() 80 | set scrolloff=3 " Minimum lines to keep above and below cursor 81 | endif 82 | if exists('g:evervim_disable_folding') 83 | set nofoldenable " Disable Auto fold code 84 | else 85 | set foldenable " Auto fold code 86 | endif 87 | 88 | set list 89 | set listchars=tab:\│\ ,trail:•,extends:#,nbsp:· " Highlight problematic whitespace, tab: › 90 | if exists('g:evervim_80_column_warning') 91 | highlight ColorColumn ctermbg=magenta guibg=magenta 92 | call matchadd('ColorColumn', '\%81v[^\n]', 100) 93 | endif 94 | -------------------------------------------------------------------------------- /core/windows.vim: -------------------------------------------------------------------------------- 1 | " Windows Compatible 2 | " On Windows, also use '.vim' instead of 'vimfiles'; this makes synchronization 3 | " across (heterogeneous) systems easier. 4 | if WINDOWS() 5 | set runtimepath=$HOME/.vim,$VIM/vimfiles,$VIMRUNTIME,$VIM/vimfiles/after,$HOME/.vim/after 6 | 7 | " Be nice and check for multi_byte even if the config requires 8 | " multi_byte support most of the time 9 | if has("multi_byte") 10 | " Windows cmd.exe still uses cp850. If Windows ever moved to 11 | " Powershell as the primary terminal, this would be utf-8 12 | set termencoding=cp850 13 | " Let Vim use utf-8 internally, because many scripts require this 14 | set encoding=utf-8 15 | setglobal fileencoding=utf-8 16 | " Windows has traditionally used cp1252, so it's probably wise to 17 | " fallback into cp1252 instead of eg. iso-8859-15. 18 | " Newer Windows files might contain utf-8 or utf-16 LE so we might 19 | " want to try them first. 20 | set fileencodings=ucs-bom,utf-8,utf-16le,cp1252,iso-8859-15 21 | endif 22 | endif 23 | -------------------------------------------------------------------------------- /plugins/appearance/airline.vim: -------------------------------------------------------------------------------- 1 | if isdirectory(expand(EverVimBundleDir("vim-airline"))) 2 | set laststatus=2 3 | if !exists('g:evervim_airline_theme') 4 | let g:airline_theme = 'dracula' " 'molokai' 'solarized' 5 | else 6 | let g:airline_theme = g:evervim_airline_theme 7 | endif 8 | let g:airline#extensions#tabline#enabled = 1 9 | "let g:airline#extensions#bufferline#enabled = 1 10 | let g:airline#extensions#tabline#buffer_nr_show = 1 11 | let g:airline#extensions#tabline#buffer_nr_format = '%s:' 12 | if !exists('g:evervim_no_patched_fonts') 13 | " Use the default set of separators with a few customizations 14 | let g:airline_powerline_fonts = 1 15 | let g:airline_left_sep='' 16 | let g:airline_left_alt_sep='' 17 | let g:airline_right_sep='' 18 | let g:airline_right_alt_sep='' 19 | let g:airline#extensions#tabline#left_sep = "" 20 | let g:airline#extensions#tabline#left_alt_sep = '' 21 | let g:airline#extensions#tabline#right_sep = "" 22 | let g:airline#extensions#tabline#right_alt_sep = '' 23 | let g:airline#extensions#tabline#buffers_label = '' 24 | let g:airline#extensions#tabline#tabs_label = '' 25 | endif 26 | endif 27 | -------------------------------------------------------------------------------- /plugins/appearance/appearance.bundles: -------------------------------------------------------------------------------- 1 | " EverVim Appearance Bundles 2 | Plug 'tiagofumo/vim-nerdtree-syntax-highlight' 3 | if exists('g:evervim_use_lightline') 4 | Plug 'itchyny/lightline.vim' 5 | Plug 'taohex/lightline-buffer' 6 | else 7 | Plug 'vim-airline/vim-airline' 8 | Plug 'vim-airline/vim-airline-themes' 9 | endif 10 | Plug 'mhinz/vim-startify' 11 | " Make sure we run devicons after the above 12 | if !TERMUX() && !exists('g:evervim_no_patched_fonts') 13 | Plug 'ryanoasis/vim-devicons' 14 | endif 15 | if exists('g:evervim_minimap') 16 | Plug 'severin-lemaignan/vim-minimap' 17 | endif 18 | Plug 'miyakogi/seiya.vim' 19 | " Additional Color Schemes 20 | " Some of them are already included in the vim-colorscheme pack 21 | " But just missing the airline/lightline color 22 | Plug 'tomasiser/vim-code-dark' 23 | Plug 'altercation/vim-colors-solarized' 24 | Plug 'spf13/vim-colors' 25 | Plug 'flazz/vim-colorschemes' 26 | Plug 'joshdick/onedark.vim' 27 | Plug 'rakr/vim-one' 28 | Plug 'morhetz/gruvbox' 29 | Plug 'reedes/vim-colors-pencil' 30 | Plug 'liuchengxu/space-vim-dark' 31 | Plug 'sonph/onehalf', {'rtp': 'vim/'} 32 | Plug 'nightsense/vimspectr' 33 | Plug 'noahfrederick/vim-noctu' 34 | -------------------------------------------------------------------------------- /plugins/appearance/lightline.vim: -------------------------------------------------------------------------------- 1 | if isdirectory(expand(EverVimBundleDir("lightline.vim"))) 2 | if !exists('g:evervim_airline_theme') || g:evervim_airline_theme == "dracula" 3 | let g:lightline_theme = 'Dracula' 4 | else 5 | let g:lightline_theme = g:evervim_airline_theme 6 | endif 7 | let g:lightline = { 8 | \ 'colorscheme': g:lightline_theme, 9 | \ 'enable': { 10 | \ 'statusline': 1, 11 | \ 'tabline': 1, 12 | \ }, 13 | \ 'active': { 14 | \ 'left': [ [ 'mode', 'paste' ], 15 | \ [ 'fugitive', 'filename' ]], 16 | \ 'right': [ ['percent', 'lineinfo'], ['fileformat', 'fileencoding', 'filetype'], ['synatastic'] ] 17 | \ }, 18 | \ 'component': { 19 | \ 'readonly': '%{&readonly?"":""}', 20 | \ 'modified': '%{&filetype=="help"?"":&modified?"+":&modifiable?"":"-"}', 21 | \ 'buffericon': '', 22 | \ }, 23 | \ 'component_function': { 24 | \ 'filetype': 'DeviconsFileType', 25 | \ 'fileformat': 'DeviconsFileFormat', 26 | \ 'fugitive': 'LightlineFugitive', 27 | \ 'mode': 'LightlineMode', 28 | \ 'fileencoding': 'LightlineFileencoding', 29 | \ 'filename': 'LightlineFilename', 30 | \ 'bufferbefore': 'lightline#buffer#bufferbefore', 31 | \ 'bufferafter': 'lightline#buffer#bufferafter', 32 | \ 'bufferinfo': 'lightline#buffer#bufferinfo', 33 | \ }, 34 | \ 'tabline': { 35 | \ 'left': [ ['bufferinfo'], ['tabs'] ], 36 | \ 'right': [ ['buffericon'], ['bufferbefore', 'buffercurrent', 'bufferafter'] ] 37 | \ }, 38 | \ 'tab': { 39 | \ 'active': ['tabnum', 'filename', 'modified'], 40 | \ 'inactive': ['tabnum', 'modified'], 41 | \ }, 42 | \ 'component_expand': { 43 | \ 'buffercurrent': 'lightline#buffer#buffercurrent2', 44 | \ }, 45 | \ 'component_type': { 46 | \ 'buffercurrent': 'tabsel', 47 | \ }, 48 | \ 'separator': { 'left': '', 'right': '' }, 49 | \ 'subseparator': { 'left': '', 'right': '' }, 50 | \ 'tabline_separator': { 'left': '', 'right': '' }, 51 | \ 'tabline_subseparator': { 'left': '', 'right': '' } 52 | \} 53 | 54 | let g:lightline_buffer_show_bufnr = 1 55 | let g:lightline_buffer_rotate = 1 56 | 57 | let g:lightline_buffer_logo = ' ' 58 | let g:lightline_buffer_readonly_icon = '' 59 | let g:lightline_buffer_modified_icon = '✭' 60 | let g:lightline_buffer_git_icon = '' 61 | let g:lightline_buffer_ellipsis_icon = '..' 62 | let g:lightline_buffer_expand_left_icon = '' 63 | let g:lightline_buffer_expand_right_icon = '' 64 | let g:lightline_buffer_active_buffer_left_icon = '' 65 | let g:lightline_buffer_active_buffer_right_icon = '' 66 | let g:lightline_buffer_separator_icon = '' 67 | let g:lightline_buffer_reservelen = 40 68 | let g:lightline_buffer_maxflen = 20 69 | let g:lightline_buffer_minflen = 10 70 | let g:lightline_buffer_excludes = ['vimfiler', 'No Name'] 71 | let g:lightline_right_arrow = '  ' 72 | 73 | if exists('g:evervim_no_patched_fonts') 74 | let g:lightline.separator = {} 75 | let g:lightline.subseparator = {} 76 | let g:lightline.tabline_separator = {} 77 | let g:lightline.tabline_subseparator = {} 78 | let g:lightline_buffer_logo = ' ' 79 | let g:lightline_buffer_readonly_icon = '' 80 | let g:lightline_buffer_modified_icon = '' 81 | let g:lightline_buffer_git_icon = ' ' 82 | let g:lightline_right_arrow = ' | ' 83 | endif 84 | 85 | " show tabline by default 86 | set showtabline=2 87 | " show tabline even in GVIM 88 | if has('gui_running') 89 | set guioptions-=e 90 | endif 91 | 92 | function! DeviconsFileType() 93 | if !exists('g:evervim_no_patched_fonts') 94 | return winwidth(0) > 65 ? (strlen(&filetype) ? &filetype . ' ' . WebDevIconsGetFileTypeSymbol() : 'no ft') : '' 95 | else 96 | return winwidth(0) > 65 ? (strlen(&filetype) ? &filetype : 'no ft') : '' 97 | endif 98 | endfunction 99 | 100 | function! DeviconsFileFormat() 101 | if !exists('g:evervim_no_patched_fonts') 102 | return winwidth(0) > 75 ? (&fileformat . ' ' . WebDevIconsGetFileFormatSymbol()) : '' 103 | else 104 | return winwidth(0) > 75 ? &fileformat : '' 105 | endif 106 | endfunction 107 | 108 | " Functions from lightline author 109 | function! LightlineFugitive() 110 | if winwidth(0) < 65 111 | return '' 112 | endif 113 | if &ft !~? 'vimfiler\|gundo' && exists("*fugitive#head") 114 | let branch = fugitive#head() 115 | return branch !=# '' ? g:lightline_buffer_git_icon . branch : '' 116 | endif 117 | return '' 118 | endfunction 119 | 120 | function! LightlineBufferline() 121 | call bufferline#refresh_status() 122 | return [ g:bufferline_status_info.before, g:bufferline_status_info.current, g:bufferline_status_info.after] 123 | endfunction 124 | 125 | function! LightlineModified() 126 | return &ft =~ 'help' ? '' : &modified ? '+' : &modifiable ? '' : '-' 127 | endfunction 128 | 129 | function! LightlineReadonly() 130 | return &ft !~? 'help' && &readonly ? g:lightline_buffer_readonly_icon : '' 131 | endfunction 132 | 133 | function! LightlineFilename() 134 | let fname = expand('%:t') 135 | return fname == 'ControlP' && has_key(g:lightline, 'ctrlp_item') ? g:lightline.ctrlp_item : 136 | \ fname =~ '__Tagbar__' ? "" : 137 | \ fname =~ '__Gundo\|NERD_tree' ? '' : 138 | \ fname =~ 'FZF' ? 'Fuzzy Finder' : 139 | \ &ft == 'vimfiler' ? vimfiler#get_status_string() : 140 | \ &ft == 'unite' ? unite#get_status_string() : 141 | \ &ft == 'leaderGuide' ? 'Guide' : 142 | \ &ft == 'vimshell' ? vimshell#get_status_string() : 143 | \ ('' != LightlineReadonly() ? LightlineReadonly() . g:lightline_right_arrow: '') . 144 | \ ('' != fname ? fname . g:lightline_right_arrow : '[No Name]' . g:lightline_right_arrow ) . 145 | \ ('' != LightlineModified() ? ' ' . LightlineModified() : '') 146 | endfunction 147 | 148 | function! LightlineMode() 149 | let fname = expand('%:t') 150 | let longmode = lightline#mode() 151 | return fname =~ '__Tagbar__' ? 'Tagbar' : 152 | \ fname == 'ControlP' ? 'CtrlP' : 153 | \ fname == '__Gundo__' ? 'Gundo' : 154 | \ fname == '__Gundo_Preview__' ? 'Gundo Preview' : 155 | \ fname =~ 'NERD_tree' ? 'NERDTree' : 156 | \ fname =~ 'FZF' ? ' FZF' : 157 | \ &ft == 'unite' ? 'Unite' : 158 | \ &ft == 'vimfiler' ? 'VimFiler' : 159 | \ &ft == 'leaderGuide' ? 'Leader' : 160 | \ &ft == 'vimshell' ? 'VimShell' : 161 | \ winwidth(0) > 75 ? longmode : 162 | \ longmode == 'NORMAL' ? 'N' : 163 | \ longmode == 'INSERT' ? 'I' : 164 | \ longmode == 'VISUAL' ? 'V' : 165 | \ longmode == 'V-BLOCK' ? 'B' : 166 | \ longmode 167 | endfunction 168 | 169 | function! LightlineFileencoding() 170 | return winwidth(0) > 70 ? (&fenc !=# '' ? &fenc : &enc) : '' 171 | endfunction 172 | 173 | let g:tagbar_status_func = 'TagbarStatusFunc' 174 | 175 | function! TagbarStatusFunc(current, sort, fname, ...) abort 176 | let g:lightline.fname = a:fname 177 | return lightline#statusline(0) 178 | endfunction 179 | 180 | function! CtrlPMark() 181 | if expand('%:t') =~ 'ControlP' && has_key(g:lightline, 'ctrlp_item') 182 | call lightline#link('iR'[g:lightline.ctrlp_regex]) 183 | return lightline#concatenate([g:lightline.ctrlp_prev, g:lightline.ctrlp_item 184 | \ , g:lightline.ctrlp_next], 0) 185 | else 186 | return '' 187 | endif 188 | endfunction 189 | 190 | let g:ctrlp_status_func = { 191 | \ 'main': 'CtrlPStatusFunc_1', 192 | \ 'prog': 'CtrlPStatusFunc_2', 193 | \ } 194 | 195 | function! CtrlPStatusFunc_1(focus, byfname, regex, prev, item, next, marked) 196 | let g:lightline.ctrlp_regex = a:regex 197 | let g:lightline.ctrlp_prev = a:prev 198 | let g:lightline.ctrlp_item = a:item 199 | let g:lightline.ctrlp_next = a:next 200 | return lightline#statusline(0) 201 | endfunction 202 | 203 | function! CtrlPStatusFunc_2(str) 204 | return lightline#statusline(0) 205 | endfunction 206 | endif 207 | -------------------------------------------------------------------------------- /plugins/appearance/sieya.vim: -------------------------------------------------------------------------------- 1 | if isdirectory(expand(EverVimBundleDir('seiya.vim'))) 2 | if exists("g:evervim_transparent_bg") 3 | let g:seiya_auto_enable = 1 4 | endif 5 | " Unfortunately no toggle yet 6 | nnoremap wte :SeiyaEnable 7 | nnoremap wtd :SeiyaDisable 8 | endif 9 | -------------------------------------------------------------------------------- /plugins/appearance/vim-devicons.vim: -------------------------------------------------------------------------------- 1 | if isdirectory(expand(EverVimBundleDir('vim-devicons'))) 2 | let g:WebDevIconsUnicodeDecorateFolderNodes = 1 3 | " let g:DevIconsEnableFoldersOpenClose = 1 4 | let g:WebDevIconsNerdTreeAfterGlyphPadding = ' ' 5 | let g:WebDevIconsNerdTreeGitPluginForceVAlign = 1 6 | let g:WebDevIconsUnicodeDecorateFileNodesPatternSymbols = {} 7 | let g:WebDevIconsUnicodeDecorateFileNodesPatternSymbols['\.EverVim\.*'] = '⋞' 8 | " Refresh devicons on resourcing vimrc, i.e. ac 9 | if exists("g:loaded_webdevicons") 10 | call webdevicons#refresh() 11 | endif 12 | endif 13 | -------------------------------------------------------------------------------- /plugins/appearance/vim-minimap.vim: -------------------------------------------------------------------------------- 1 | if isdirectory(expand(EverVimBundleDir('vim-minimap'))) 2 | let g:minimap_highlight='Visual' 3 | let g:minimap_show='' 4 | let g:minimap_update='' 5 | let g:minimap_close='' 6 | let g:minimap_toggle='wm' 7 | endif 8 | -------------------------------------------------------------------------------- /plugins/appearance/vim-nerdtree-highlight.vim: -------------------------------------------------------------------------------- 1 | if isdirectory(expand(EverVimBundleDir('vim-nerdtree-syntax-highlight'))) 2 | let g:NERDTreeHighlightFolders = 1 " enables folder icon highlighting using exact match 3 | let g:NERDTreeLimitedSyntax = 1 4 | endif 5 | -------------------------------------------------------------------------------- /plugins/appearance/vim-startify.vim: -------------------------------------------------------------------------------- 1 | if isdirectory(expand(EverVimBundleDir("vim-startify"))) 2 | function! PLATFORM_ICON_STRING() 3 | let platform_icon = "" 4 | let platform_string = "" 5 | if WINDOWS() 6 | let platform_icon = "" 7 | let platform_string = WINVERSION() . " (NT " . NTVERSION() . ")" 8 | elseif OSX() 9 | let platform_icon = "" 10 | let platform_string = "macOS " . OSXVERSION() . " (Darwin " . KERNELVERSION() . ")" 11 | elseif BSD() 12 | let platform_icon = "" 13 | let platform_string = BSDDistro() . " (" . KERNELVERSION() . ")" 14 | elseif LINUX() 15 | let distro = DISTRO() 16 | let platform_icon = distro =~ "Arch" ? "" : 17 | \ distro =~ "CentOS" ? "" : 18 | \ distro =~ "Debian" ? "" : 19 | \ distro =~ "Fedora" ? "" : 20 | \ distro =~ "Mint" ? "" : 21 | \ distro =~ "SUSE" ? "" : 22 | \ distro =~ "Ubuntu" ? "" : 23 | \ distro =~ "Gentoo" ? "" : 24 | \ distro =~ "Elementary" ? "" : 25 | \ "" 26 | let platform_string = "Linux " . "[" . DISTROVERSION() . "] (" . KERNELVERSION() . ")" 27 | if WSL() 28 | let platform_icon = "" 29 | let platform_string = "WSL [" . DISTROVERSION() . " on Windows 10]" 30 | elseif CROS() 31 | let platform_icon = "" 32 | let platform_string = "Chrome OS [" . DISTROVERSION() . " with Chronos]" 33 | elseif ANDROID() 34 | let platform_icon = "" 35 | let platform_string = "Android" 36 | endif 37 | else 38 | let platform_icon = "" 39 | let platform_string = "UNIX" 40 | endif 41 | if exists('g:evervim_no_patched_fonts') 42 | let platform_icon = '' 43 | endif 44 | return platform_icon . " " . platform_string 45 | endfunction 46 | 47 | function! s:boxed_header(line) 48 | let boxed_header = "" 49 | if (strwidth(a:line) <= 70) 50 | let boxed_header = a:line . repeat(' ', 70 - strwidth(a:line)) 51 | else 52 | let boxed_header = strpart(a:line, 0, 70) 53 | endif 54 | let boxed_header = "|| " . boxed_header . "||" 55 | return boxed_header 56 | endfunction 57 | 58 | function! s:tic(icon) 59 | if !exists('g:evervim_no_patched_fonts') 60 | return a:icon 61 | else 62 | return '' 63 | endif 64 | endfunction 65 | 66 | let startify_icon_vim = s:tic('') 67 | let startify_icon_update = s:tic('') 68 | let startify_icon_vulkan = s:tic('') 69 | let startify_icon_love = s:tic('') 70 | let startify_icon_link = s:tic('') 71 | let startify_icon_github = s:tic('') 72 | let startify_icon_key = s:tic('') 73 | let startify_icon_watch = s:tic('') 74 | let startify_icon_color = s:tic('') 75 | let startify_icon_airline = s:tic('') 76 | let startify_icon_font = s:tic('') 77 | let startify_icon_fontsize = s:tic('') 78 | let startify_icon_server = s:tic('') 79 | 80 | let startify_vim_version = "" 81 | let startify_platform_string = PLATFORM_ICON_STRING() 82 | let startify_vim_components = "{" . 83 | \ (has('python3') == 1 ? "+Python3" : "-Python3") . "|" . 84 | \ (has('python') == 1 ? "+Python" : "-Python") . "|" . 85 | \ (has('lua') == 1 ? "+Lua" : "-Lua") . "|" . 86 | \ (has('clipboard') == 1 ? "+Clip" : "-Clip") . 87 | \ "}" 88 | let startify_evervim_lastupdated = startify_icon_update . " EverVim Updated " . (WINDOWS()?substitute(system('git -C %USERPROFILE%\.EverVim show --format="%ar" --quiet'), '[\n]\+', '', 'g'):substitute(system('git -C ~/.EverVim show --format="%ar" --quiet'), '[\n]\+', '', 'g')) 89 | if NVIM() 90 | if ONI() 91 | let startify_vim_version = startify_icon_vim . " Oni (NeoVim " . matchstr(execute('version'), 'NVIM \zs[^\n]*') . ")" 92 | elseif VIMR() 93 | let startify_vim_version = startify_icon_vim . " VimR (NeoVim " . matchstr(execute('version'), 'NVIM \zs[^\n]*') . ")" 94 | else 95 | let startify_vim_version = startify_icon_vim . " NeoVim " . matchstr(execute('version'), 'NVIM \zs[^\n]*') 96 | endif 97 | else 98 | let startify_vim_version = startify_icon_vim . " Vim " . substitute(v:version, '[\0]', '.', '') 99 | endif 100 | 101 | "highlight StartifyHeader ctermfg=120 guifg=#87ff87 102 | hi link StartifyHeader Function 103 | let g:startify_custom_header = [ 104 | \' _______ ___ ___ _______ ________ ___ ___ ___ _____ ______ ', 105 | \'|\ ___ \ |\ \ / /|\ ___ \ |\ __ \|\ \ / /|\ \|\ _ \ _ \ ', 106 | \'\ \ __/|\ \ \ / / | \ __/|\ \ \|\ \ \ \ / / | \ \ \ \\\__\ \ \ ', 107 | \' \ \ \_|/_\ \ \/ / / \ \ \_|/_\ \ _ _\ \ \/ / / \ \ \ \ \\|__| \ \ ', 108 | \' \ \ \_|\ \ \ / / \ \ \_|\ \ \ \\ \\ \ / / \ \ \ \ \ \ \ \ ', 109 | \' \ \_______\ \__/ / \ \_______\ \__\\ _\\ \__/ / \ \__\ \__\ \ \__\', 110 | \' \|_______|\|__|/ \|_______|\|__|\|__|\|__|/ \|__|\|__| \|__|', 111 | \' ||=======================================================================||', 112 | \' ' . s:boxed_header(startify_icon_vulkan . ' Welcome to EverVim. The Ultimate Vim Distribution for everyone.'), 113 | \' ' . s:boxed_header(startify_icon_love . ' Made with <3 by LER0ever | ' . startify_icon_link . ' Freenode IRC: #EverVim'), 114 | \' ' . s:boxed_header(startify_icon_github . ' Github Repository: https://github.com/LER0ever/EverVim'), 115 | \' ||-----------------------------------------------------------------------||'] 116 | 117 | if exists('g:evervim_welcome_message') 118 | let g:startify_custom_header = g:startify_custom_header + [ 119 | \' ' . s:boxed_header(g:evervim_welcome_message), 120 | \' ||-----------------------------------------------------------------------||'] 121 | endif 122 | if !exists('g:evervim_no_startify_detail') 123 | let g:startify_custom_header = g:startify_custom_header + [ 124 | \' ' . s:boxed_header(startify_vim_version . " " . startify_vim_components), 125 | \' ' . s:boxed_header(startify_platform_string), 126 | \' ' . s:boxed_header(startify_icon_color . " Color Scheme: " .g:evervim_color_theme . " | " . startify_icon_airline . " Airline Theme: " . g:evervim_airline_theme), 127 | \' ' . s:boxed_header(startify_icon_font . " Gui Font: " . g:evervim_font . " | " . startify_icon_fontsize . " Size: " . g:evervim_font_size), 128 | \' ' . s:boxed_header(startify_icon_key . " Leader Key: `" . mapleader . "` | Leader Guide: "), 129 | \' ' . s:boxed_header(startify_evervim_lastupdated . ' | ' . startify_icon_watch . ' Now: ' . strftime("%y/%m/%d %H:%M", localtime()))] 130 | if (REMOTE()) 131 | let g:startify_custom_header = g:startify_custom_header + [ 132 | \ ' ' . s:boxed_header(startify_icon_server . " NeoVim Remote Mode: " . v:servername)] 133 | endif 134 | 135 | let g:startify_custom_header = g:startify_custom_header + [ 136 | \' ||=======================================================================||'] 137 | endif 138 | let g:startify_files_number = 5 139 | let g:startify_list_order = [ 140 | \ [' [MRU] Most Recently Used files:'], 141 | \ 'files', 142 | \ [' [MRU] in current directory:'], 143 | \ 'dir', 144 | \ [' [CMD] Common Commands:'], 145 | \ 'commands', 146 | \ [' Sessions:'], 147 | \ 'sessions', 148 | \ [' Bookmarks:'], 149 | \ 'bookmarks', 150 | \ ] 151 | let g:startify_commands = [ 152 | \ {'u': ['Update EverVim', 'call EverVimFullUpgrade()']}, 153 | \ {'c': ['Edit EverVim Config', 'call EditEverVimConfig()']}, 154 | \ {'l': ['See EverVim Changelog', 'call EverVimShowLog()']}, 155 | \ ] 156 | if NVIM() 157 | let g:startify_commands = g:startify_commands + [{'t': ['Open Terminal', 'edit term://$SHELL | normal! i']}] 158 | endif 159 | autocmd Filetype startify setlocal nofoldenable 160 | endif 161 | -------------------------------------------------------------------------------- /plugins/bash/bash.bundles: -------------------------------------------------------------------------------- 1 | " EverVim Bash Bundles 2 | Plug 'WolfgangMehner/bash-support' 3 | -------------------------------------------------------------------------------- /plugins/cpp/c.vim: -------------------------------------------------------------------------------- 1 | if isdirectory(expand(EverVimBundleDir('c.vim'))) 2 | let g:C_MapLeader = '\' 3 | endif 4 | 5 | -------------------------------------------------------------------------------- /plugins/cpp/clang_complete.vim: -------------------------------------------------------------------------------- 1 | if isdirectory(expand(EverVimBundleDir('clang_complete'))) 2 | let g:deoplete#sources#clang#libclang_path = "" 3 | if LINUX() 4 | let g:clang_library_path='/usr/lib/' 5 | elseif OSX() 6 | let g:clang_library_path = '/Toolchains/XcodeDefault.xctoolchain/usr/lib/libclang.dylib' 7 | endif 8 | endif 9 | -------------------------------------------------------------------------------- /plugins/cpp/cpp.bundles: -------------------------------------------------------------------------------- 1 | " EverVim CPP Bundles 2 | Plug 'octol/vim-cpp-enhanced-highlight' 3 | Plug 'vim-scripts/c.vim' 4 | Plug 'vim-scripts/a.vim' 5 | Plug 'peterhoeg/vim-qml' 6 | if count(g:evervim_bundle_groups, 'deoplete') 7 | Plug 'tweekmonster/deoplete-clang2' 8 | endif 9 | -------------------------------------------------------------------------------- /plugins/crystal/crystal.bundles: -------------------------------------------------------------------------------- 1 | Plug 'rhysd/vim-crystal' 2 | -------------------------------------------------------------------------------- /plugins/crystal/vim-crystal.vim: -------------------------------------------------------------------------------- 1 | if isdirectory(expand(EverVimBundleDir("vim-crystal"))) 2 | let g:crystal_define_mappings=0 3 | augroup crystal-keybindings 4 | autocmd! 5 | autocmd FileType crystal nmap ld (crystal-jump-to-definition) 6 | autocmd FileType crystal nmap lc (crystal-show-context) 7 | autocmd FileType crystal nmap lss (crystal-spec-switch) 8 | autocmd FileType crystal nmap lsa (crystal-spec-run-all) 9 | autocmd FileType crystal nmap lsc (crystal-spec-run-current) 10 | augroup END 11 | endif 12 | -------------------------------------------------------------------------------- /plugins/css/css.bundles: -------------------------------------------------------------------------------- 1 | Plug 'hail2u/vim-css3-syntax' 2 | Plug 'groenewege/vim-less' 3 | Plug 'wavded/vim-stylus' 4 | Plug 'cakebaker/scss-syntax.vim' 5 | -------------------------------------------------------------------------------- /plugins/d/d.bundles: -------------------------------------------------------------------------------- 1 | Plug 'kiith-sa/DSnips' 2 | Plug 'idanarye/vim-dutyl', {'for': ['d']} 3 | if count(g:evervim_bundle_groups, 'deoplete') 4 | Plug 'landaire/deoplete-d', { 'for': ['d'] } 5 | endif 6 | -------------------------------------------------------------------------------- /plugins/dart/dart.bundles: -------------------------------------------------------------------------------- 1 | " EverVim Dart Bundles 2 | Plug 'dart-lang/dart-vim-plugin' 3 | -------------------------------------------------------------------------------- /plugins/deoplete/deoplete.bundles: -------------------------------------------------------------------------------- 1 | if !NVIM() 2 | Plug 'roxma/nvim-yarp' 3 | Plug 'roxma/vim-hug-neovim-rpc' 4 | endif 5 | if (has('python3') == 0) 6 | echoerr "Deoplete needs NeoVim with +Python3 support!" 7 | endif 8 | Plug 'Shougo/deoplete.nvim', { 'do': ':UpdateRemotePlugins' } 9 | Plug 'Shougo/neco-syntax' 10 | "Plug 'autozimu/LanguageClient-neovim' 11 | Plug 'SirVer/ultisnips' 12 | Plug 'honza/vim-snippets' 13 | -------------------------------------------------------------------------------- /plugins/deoplete/deoplete.vim: -------------------------------------------------------------------------------- 1 | if isdirectory(expand(EverVimBundleDir("deoplete.nvim"))) 2 | let g:deoplete#enable_at_startup = 1 3 | let g:deoplete#enable_smart_case = 1 4 | let g:deoplete#auto_complete_start_length = 2 5 | inoremap pumvisible() ? "\" : "\" 6 | inoremap pumvisible() ? "\" : "\" 7 | endif 8 | -------------------------------------------------------------------------------- /plugins/deoplete/ultisnips.vim: -------------------------------------------------------------------------------- 1 | if isdirectory(expand(EverVimBundleDir('ultisnips'))) 2 | let g:UltiSnipsEditSplit="vertical" 3 | 4 | " remap Ultisnips for compatibility for YCM 5 | let g:UltiSnipsExpandTrigger = "" 6 | let g:UltiSnipsJumpForwardTrigger = "" 7 | let g:UltiSnipsJumpBackwardTrigger = "" 8 | endif 9 | -------------------------------------------------------------------------------- /plugins/elixir/elixir.bundles: -------------------------------------------------------------------------------- 1 | " EverVim Elixir Bundles 2 | Plug 'elixir-lang/vim-elixir', {'for': 'elixir'} 3 | Plug 'carlosgaldino/elixir-snippets', {'for': 'elixir'} 4 | Plug 'mattreduce/vim-mix', {'for': 'elixir'} 5 | -------------------------------------------------------------------------------- /plugins/erlang/erlang.bundles: -------------------------------------------------------------------------------- 1 | Plug 'vim-erlang/vim-erlang-runtime' 2 | Plug 'vim-erlang/vim-erlang-omnicomplete' 3 | Plug 'vim-erlang/vim-erlang-compiler' 4 | -------------------------------------------------------------------------------- /plugins/fsharp/fsharp.bundles: -------------------------------------------------------------------------------- 1 | Plug 'fsharp/vim-fsharp' 2 | -------------------------------------------------------------------------------- /plugins/fsharp/vim-fsharp.vim: -------------------------------------------------------------------------------- 1 | if isdirectory(expand(EverVimBundleDir('vim-fsharp'))) 2 | let g:fsharp_completion_helptext = 1 3 | let g:fsharp_map_prefix = 'l' " for language-specific keybinding prefix 4 | endif 5 | -------------------------------------------------------------------------------- /plugins/general/comfortable-motion.vim: -------------------------------------------------------------------------------- 1 | if isdirectory(expand(EverVimBundleDir('comfortable-motion.vim'))) 2 | let g:comfortable_motion_friction = 80.0 3 | let g:comfortable_motion_air_drag = 2.0 4 | endif 5 | -------------------------------------------------------------------------------- /plugins/general/ctrlp.vim: -------------------------------------------------------------------------------- 1 | if isdirectory(expand(EverVimBundleDir("ctrlp.vim"))) 2 | let g:ctrlp_working_path_mode = 'ra' 3 | nnoremap :CtrlP 4 | nnoremap :CtrlPMRU 5 | let g:ctrlp_custom_ignore = { 6 | \ 'dir': '\.git$\|\.hg$\|\.svn$', 7 | \ 'file': '\.exe$\|\.so$\|\.dll$\|\.pyc$' } 8 | 9 | if executable('ag') 10 | let s:ctrlp_fallback = 'ag %s --nocolor -l -g ""' 11 | elseif executable('ack-grep') 12 | let s:ctrlp_fallback = 'ack-grep %s --nocolor -f' 13 | elseif executable('ack') 14 | let s:ctrlp_fallback = 'ack %s --nocolor -f' 15 | " On Windows use "dir" as fallback command. 16 | elseif WINDOWS() 17 | let s:ctrlp_fallback = 'dir %s /-n /b /s /a-d' 18 | else 19 | let s:ctrlp_fallback = 'find %s -type f' 20 | endif 21 | if exists("g:ctrlp_user_command") 22 | unlet g:ctrlp_user_command 23 | endif 24 | let g:ctrlp_user_command = { 25 | \ 'types': { 26 | \ 1: ['.git', 'cd %s && git ls-files . --cached --exclude-standard --others'], 27 | \ 2: ['.hg', 'hg --cwd %s locate -I .'], 28 | \ }, 29 | \ 'fallback': s:ctrlp_fallback 30 | \ } 31 | 32 | if isdirectory(expand(EverVimBundleDir("ctrlp-funky"))) 33 | " CtrlP extensions 34 | let g:ctrlp_extensions = ['funky'] 35 | 36 | "funky 37 | nnoremap fu :CtrlPFunky 38 | endif 39 | endif 40 | -------------------------------------------------------------------------------- /plugins/general/ctrlsf.vim: -------------------------------------------------------------------------------- 1 | if isdirectory(expand(EverVimBundleDir('ctrlsf.vim'))) 2 | nnoremap sf :CtrlSF 3 | nnoremap st :CtrlSFToggle 4 | endif 5 | -------------------------------------------------------------------------------- /plugins/general/fzf.vim: -------------------------------------------------------------------------------- 1 | if isdirectory(expand(EverVimBundleDir('fzf.vim'))) 2 | 3 | " fzf drop down 4 | let g:fzf_layout = { 'down': '~40%' } 5 | 6 | " fzf mappings 7 | nnoremap .f :Files 8 | nnoremap .l :Lines 9 | nnoremap .t :Tags 10 | nnoremap .b :Buffers 11 | nnoremap .c :Commands 12 | nnoremap .w :Windows 13 | nnoremap .a :Ag 14 | nnoremap .g :GitFiles 15 | nnoremap .o :Locate 16 | nnoremap .m :Maps 17 | nnoremap .h :History 18 | nnoremap .s :Snippets 19 | nnoremap .i :Commits 20 | nnoremap .r :Colors 21 | nnoremap .e :Helptags 22 | nnoremap ..c :BCommits 23 | nnoremap ..t :BTags 24 | nnoremap ..l :BLines 25 | 26 | " CtrlP compatibility 27 | nnoremap :Files 28 | 29 | nmap z . 30 | 31 | if isdirectory(expand(EverVimBundleDir('lightline.vim'))) 32 | autocmd! User FzfStatusLine call lightline#update_once() 33 | endif 34 | 35 | " Command override (with preview) 36 | command! -bang -nargs=? -complete=dir Files 37 | \ call fzf#vim#files(, fzf#vim#with_preview(), 0) 38 | command! -bang -nargs=* Ag 39 | \ call fzf#vim#ag(, 40 | \ 0 ? fzf#vim#with_preview('up:60%') 41 | \ : fzf#vim#with_preview('right:50%:hidden', '?'), 42 | \ 0) 43 | endif 44 | -------------------------------------------------------------------------------- /plugins/general/general.bundles: -------------------------------------------------------------------------------- 1 | " EverVim General Bundles 2 | if NVIM() 3 | Plug 'equalsraf/neovim-gui-shim' 4 | endif 5 | Plug 'scrooloose/nerdtree', { 'on': ['NERDTreeToggle', 'NERDTreeTabsToggle'] } 6 | Plug 'jistr/vim-nerdtree-tabs', { 'on': ['NERDTreeToggle', 'NERDTreeTabsToggle'] } 7 | Plug 'tpope/vim-surround' 8 | Plug 'tpope/vim-speeddating' 9 | Plug 'tpope/vim-repeat' 10 | Plug 'simeji/winresizer' 11 | Plug 't9md/vim-choosewin' 12 | Plug 'Konfekt/FastFold' 13 | Plug 'rhysd/conflict-marker.vim' 14 | Plug 'romainl/vim-qf' 15 | " Fuzzy finder choice 16 | if exists('g:evervim_use_ctrlp') || WINDOWS() 17 | Plug 'ctrlpvim/ctrlp.vim' 18 | Plug 'tacahiroy/ctrlp-funky' 19 | else 20 | Plug 'junegunn/fzf', { 'do': './install --bin' } 21 | Plug 'junegunn/fzf.vim' 22 | endif 23 | 24 | Plug 'dyng/ctrlsf.vim' 25 | Plug 'hecal3/vim-leader-guide', {'do' : ':call DeleteLinesInFile(EverVimBundleDir(\"vim-leader-guide/autoload/leaderGuide.vim\"), \"statusline=\")'} 26 | if !NVIM() && !WINDOWS() 27 | Plug 'Shougo/vimproc.vim', {'do' : 'make'} 28 | Plug 'Shougo/vimshell.vim' 29 | endif 30 | Plug 'vim-scripts/sessionman.vim' 31 | "Plug 'matchit.zip' " no longer use vim-scripts 32 | Plug 'tmhedberg/matchit' 33 | Plug 'jlanzarotta/bufexplorer' 34 | Plug 'easymotion/vim-easymotion' 35 | Plug 'haya14busa/incsearch.vim' 36 | Plug 'osyo-manga/vim-over' 37 | Plug 'kien/tabman.vim' 38 | Plug 'MattesGroeger/vim-bookmarks' 39 | Plug 'embear/vim-localvimrc' 40 | Plug 'zhaocai/GoldenView.Vim' 41 | "Plug 'justincampbell/vim-eighties' 42 | Plug 'dracula/vim' " Main theme for EverVim 43 | Plug 'mbbill/undotree' 44 | if !exists('g:evervim_use_indentguides') 45 | Plug 'Yggdroot/indentLine' 46 | else 47 | Plug 'nathanaelkane/vim-indent-guides' 48 | endif 49 | if !exists('g:evervim_no_restore_cursor') 50 | Plug 'farmergreg/vim-lastplace' 51 | endif 52 | if exists('g:evervim_smooth_scrolling') 53 | Plug 'yuttie/comfortable-motion.vim' 54 | endif 55 | Plug 'tpope/vim-abolish' 56 | Plug 'jamessan/vim-gnupg' 57 | Plug 'kana/vim-textobj-user' 58 | Plug 'kana/vim-textobj-indent' 59 | Plug 'gcmt/wildfire.vim' 60 | Plug 'ap/vim-css-color' 61 | " Plug 'FredKSchott/CoVim' 62 | -------------------------------------------------------------------------------- /plugins/general/golden-ratio.vim: -------------------------------------------------------------------------------- 1 | if isdirectory(expand(EverVimBundleDir('vim-eighties'))) 2 | let g:eighties_enabled = 1 3 | let g:eighties_minimum_width = 80 4 | let g:eighties_extra_width = 0 " Increase this if you want some extra room 5 | let g:eighties_compute = 1 " Disable this if you just want the minimum + extra 6 | let g:eighties_bufname_additional_patterns = ['fugitiveblame', 'NERD_tree_1', 'nerdtree', 'Tagbar'] " Defaults to [], 'fugitiveblame' is only an example. Takes a comma delimited list of bufnames as strings. 7 | endif 8 | if isdirectory(expand(EverVimBundleDir('GoldenView.Vim'))) 9 | let g:goldenview__enable_default_mapping = 0 10 | let g:goldenview__enable_at_startup = 0 11 | " 1. split to tiled windows 12 | nmap GoldenViewSplit 13 | 14 | " 2. quickly switch current window with the main pane 15 | " and toggle back 16 | nmap GoldenViewSwitchMain 17 | nmap GoldenViewSwitchToggle 18 | 19 | " 3. jump to next and previous window 20 | nmap gn GoldenViewNext 21 | nmap gp GoldenViewPrevious 22 | 23 | nmap gre GoldenViewResize 24 | endif 25 | -------------------------------------------------------------------------------- /plugins/general/incsearch.vim: -------------------------------------------------------------------------------- 1 | if isdirectory(expand(EverVimBundleDir('incsearch.vim'))) 2 | map / (incsearch-forward) 3 | map ? (incsearch-backward) 4 | map g/ (incsearch-stay) 5 | endif 6 | if isdirectory(expand(EverVimBundleDir('vim-over'))) 7 | let g:over_command_line_prompt = "IncReplace > " 8 | map sr :OverCommandLine%s/ 9 | endif 10 | -------------------------------------------------------------------------------- /plugins/general/localvimrc.vim: -------------------------------------------------------------------------------- 1 | if isdirectory(expand(EverVimBundleDir('vim-localvimrc'))) 2 | let g:localvimrc_name = [ 3 | \".EverVim.project", 4 | \".EverVim.Project", 5 | \".EverVim.local" 6 | \] 7 | let g:localvimrc_persistent = 1 8 | let g:localvimrc_sandbox = 0 9 | endif 10 | -------------------------------------------------------------------------------- /plugins/general/matchit.vim: -------------------------------------------------------------------------------- 1 | if isdirectory(expand(EverVimBundleDir("matchit.zip"))) 2 | let b:match_ignorecase = 1 3 | endif 4 | 5 | -------------------------------------------------------------------------------- /plugins/general/nerdtree.vim: -------------------------------------------------------------------------------- 1 | if isdirectory(expand(EverVimBundleDir("nerdtree"))) 2 | let g:NERDShutUp=1 3 | " map NERDTreeTabsToggle 4 | map :NERDTreeToggle 5 | map nf :NERDTreeFind 6 | nmap nt :NERDTreeToggle 7 | 8 | let g:NERDTreeWinSize=30 9 | let NERDTreeShowBookmarks=1 10 | let NERDTreeIgnore=['\.py[cd]$', '\~$', '\.swo$', '\.swp$', '^\.git$', '^\.hg$', '^\.svn$', '\.bzr$'] 11 | let NERDTreeChDirMode=2 12 | let NERDTreeQuitOnOpen=0 13 | let NERDTreeMouseMode=2 14 | let NERDTreeShowHidden=1 15 | let NERDTreeKeepTreeInNewTab=1 16 | let g:NERDTreeUpdateOnWrite = 0 17 | let g:nerdtree_tabs_open_on_gui_startup=0 18 | if !exists('g:evervim_nerdtree_tabs_sync') 19 | let g:nerdtree_tabs_open_on_new_tab=0 20 | let g:nerdtree_tabs_synchronize_view=0 21 | endif 22 | let NERDTreeMapOpenRecursively='' 23 | 24 | " NerdTree git integration 25 | let g:NERDTreeIndicatorMapCustom = { 26 | \ "Modified" : "±", 27 | \ "Staged" : "⊕", 28 | \ "Untracked" : "⊱", 29 | \ "Renamed" : "➜", 30 | \ "Unmerged" : "═", 31 | \ "Deleted" : "⋈", 32 | \ "Dirty" : "✗", 33 | \ "Clean" : "✓", 34 | \ 'Ignored' : '∅', 35 | \ "Unknown" : "?" 36 | \ } 37 | let g:NERDTreeShowIgnoredStatus = 1 38 | endif 39 | -------------------------------------------------------------------------------- /plugins/general/tabman.vim: -------------------------------------------------------------------------------- 1 | if isdirectory(expand(EverVimBundleDir('tabman.vim'))) 2 | let g:tabman_toggle = 'tm' 3 | let g:tabman_focus = 'tf' 4 | endif 5 | -------------------------------------------------------------------------------- /plugins/general/undotree.vim: -------------------------------------------------------------------------------- 1 | if isdirectory(expand(EverVimBundleDir("undotree"))) 2 | nnoremap ut :UndotreeToggle 3 | " If undotree is opened, it is likely one wants to interact with it. 4 | let g:undotree_SetFocusWhenToggle=1 5 | let g:undotree_WindowLayout=3 6 | endif 7 | -------------------------------------------------------------------------------- /plugins/general/vim-bookmarks.vim: -------------------------------------------------------------------------------- 1 | if isdirectory(expand(EverVimBundleDir("vim-bookmarks"))) 2 | let g:bookmark_no_default_key_mappings = 1 3 | let g:bookmark_highlight_lines=1 4 | let g:bookmark_manage_per_buffer = 1 5 | nmap bb BookmarkToggle 6 | nmap bi BookmarkAnnotate 7 | nmap ba BookmarkShowAll 8 | nmap bj BookmarkNext 9 | nmap bk BookmarkPrev 10 | nmap bc BookmarkClear 11 | nmap bx BookmarkClearAll 12 | nmap bkk BookmarkMoveUp 13 | nmap bjj BookmarkMoveDown 14 | endif 15 | -------------------------------------------------------------------------------- /plugins/general/vim-choosewin.vim: -------------------------------------------------------------------------------- 1 | if isdirectory(expand(EverVimBundleDir('vim-choosewin'))) 2 | nmap - (choosewin) 3 | let g:choosewin_overlay_enable = 1 4 | endif 5 | -------------------------------------------------------------------------------- /plugins/general/vim-lastplace.vim: -------------------------------------------------------------------------------- 1 | if isdirectory(expand(EverVimBundleDir('vim-lastplace'))) 2 | let g:lastplace_ignore = "gitcommit,gitrebase,svn,hgcommit" 3 | let g:lastplace_ignore_buftype = "quickfix" 4 | endif 5 | -------------------------------------------------------------------------------- /plugins/general/vim-leader-guide.vim: -------------------------------------------------------------------------------- 1 | if isdirectory(expand(EverVimBundleDir('vim-leader-guide'))) 2 | let g:vim_leader_guide_map = { 3 | \ mapleader: { 4 | \ 'name': '', 5 | \ '.': { 'name' : 'FZF!', 6 | \ '.': { 'name': 'Current Buffer' } 7 | \ }, 8 | \ ',': ['call feedkeys("\(easymotion-prefix)")', 'EasyMotion Prefix'], 9 | \ '': ['call UltiSnips#ExpandSnippets()', 'Expand Snippets'], 10 | \ 'a': { 'name' : 'Tabularize' }, 11 | \ 'b': { 'name' : 'Buffer/Bookmark' }, 12 | \ 'c': { 'name' : 'Comments' }, 13 | \ 'd': { 'name' : 'Dispatch' }, 14 | \ 'e': { 'name' : 'Edit' }, 15 | \ 'f': { 'name' : 'Find/Format', 16 | \ 'c': { 'name': "Change FileFormat" } 17 | \ }, 18 | \ 'g': { 'name' : 'Git' }, 19 | \ 'i': { 'name' : 'Alternate File Switch' }, 20 | \ 'j': { 'name' : 'Jump' }, 21 | \ 'l': { 'name' : 'Language Specific' }, 22 | \ 'm': { 'name' : 'User-Defined Keymaps' }, 23 | \ 'n': { 'name' : 'NerdTree' }, 24 | \ 'o': { 'name' : 'Fold' }, 25 | \ 'r': { 'name' : 'Resize/Rainbow' }, 26 | \ 's': { 'name' : 'Search/Session' }, 27 | \ 't': { 'name' : 'Tab/Terminal/Tagbar' }, 28 | \ 'u': { 'name' : 'UndoTree' }, 29 | \ 'v': { 'name' : 'VimWiki' }, 30 | \ 'w': { 'name' : 'Writing/Window', 31 | \ 's': { 'name': 'Swap Window' } 32 | \ }, 33 | \ 'y': { 'name' : 'YouCompleteMe' }, 34 | \ }, 35 | \ maplocalleader: { 36 | \ 'name': '', 37 | \ }, 38 | \ } 39 | call leaderGuide#register_prefix_descriptions('', 'g:vim_leader_guide_map') 40 | 41 | function! s:evervim_leaderguide_displayfunc() 42 | let g:leaderGuide#displayname = substitute(g:leaderGuide#displayname, '#', '', '') 43 | let g:leaderGuide#displayname = substitute(g:leaderGuide#displayname, '\c$', '', '') 44 | let g:leaderGuide#displayname = substitute(g:leaderGuide#displayname, '^', '', '') 45 | let g:leaderGuide#displayname = substitute(g:leaderGuide#displayname, '^', '', '') 46 | let g:leaderGuide#displayname = substitute(g:leaderGuide#displayname, ':call ', '', '') 47 | endfunction 48 | if exists('g:leaderGuide_displayfunc') 49 | call add(g:leaderGuide_displayfunc, function('s:evervim_leaderguide_displayfunc')) 50 | else 51 | let g:leaderGuide_displayfunc = [function('s:evervim_leaderguide_displayfunc')] 52 | endif 53 | 54 | nnoremap :LeaderGuide mapleader 55 | vnoremap :LeaderGuideVisual mapleader 56 | map m leaderguide-global 57 | nnoremap :LeaderGuide maplocalleader 58 | vnoremap :LeaderGuideVisual maplocalleader 59 | map . leaderguide-buffer 60 | endif 61 | -------------------------------------------------------------------------------- /plugins/general/vim-qf.vim: -------------------------------------------------------------------------------- 1 | if isdirectory(expand(EverVimBundleDir('vim-qf'))) 2 | let g:qf_auto_resize = 1 3 | let g:qf_max_height = 8 4 | let g:qf_loclist_window_bottom = 0 5 | nmap we qf_loc_toggle 6 | nmap wf qf_qf_toggle 7 | nmap qf_loc_previous 8 | nmap qf_loc_next 9 | endif 10 | -------------------------------------------------------------------------------- /plugins/general/vim-windowswap.vim: -------------------------------------------------------------------------------- 1 | if isdirectory(expand(EverVimBundleDir('vim-windowswap'))) 2 | let g:windowswap_map_keys = 0 3 | nnoremap wsm :call WindowSwap#MarkWindowSwap() 4 | nnoremap wsd :call WindowSwap#DoWindowSwap() 5 | nnoremap wss :call WindowSwap#EasyWindowSwap() 6 | endif 7 | -------------------------------------------------------------------------------- /plugins/general/vimcommander.vim: -------------------------------------------------------------------------------- 1 | if isdirectory(expand(EverVimBundleDir("vimcommander"))) 2 | noremap vc :cal VimCommanderToggle() 3 | endif 4 | 5 | -------------------------------------------------------------------------------- /plugins/general/wildfire.vim: -------------------------------------------------------------------------------- 1 | let g:wildfire_objects = { 2 | \ "*" : ["i'", 'i"', "i)", "i]", "i}", "ip"], 3 | \ "html,xml" : ["at"], 4 | \ } 5 | -------------------------------------------------------------------------------- /plugins/general/winresize.vim: -------------------------------------------------------------------------------- 1 | let g:winresizer_start_key = 're' 2 | -------------------------------------------------------------------------------- /plugins/go/go.bundles: -------------------------------------------------------------------------------- 1 | " EverVim Go Bundles 2 | "Plug 'Blackrush/vim-gocode' 3 | Plug 'fatih/vim-go', {'for': ['go', 'html', 'gohtmltmpl', 'pts', 'nox']} 4 | if count(g:evervim_bundle_groups, 'deoplete') 5 | Plug 'zchee/deoplete-go' 6 | endif 7 | -------------------------------------------------------------------------------- /plugins/go/go.vim: -------------------------------------------------------------------------------- 1 | if count(g:evervim_bundle_groups, 'go') 2 | let g:go_highlight_functions = 1 3 | let g:go_highlight_methods = 1 4 | let g:go_highlight_structs = 1 5 | let g:go_highlight_operators = 1 6 | let g:go_highlight_build_constraints = 1 7 | let g:go_fmt_command = "goimports" 8 | let g:syntastic_go_checkers = ['golint', 'govet', 'errcheck'] 9 | let g:syntastic_mode_map = { 'mode': 'active', 'passive_filetypes': ['go'] } 10 | au FileType go nmap ls (go-implements) 11 | au FileType go nmap ln (go-info) 12 | au FileType go nmap li (go-install) 13 | au FileType go nmap le (go-rename) 14 | au FileType go nmap lr (go-run) 15 | au FileType go nmap lb (go-build) 16 | au FileType go nmap lt (go-test) 17 | au FileType go nmap ld (go-doc) 18 | au FileType go nmap lc (go-coverage) 19 | endif 20 | -------------------------------------------------------------------------------- /plugins/haskell/ghcmod.vim: -------------------------------------------------------------------------------- 1 | if isdirectory(expand(EverVimBundleDir('ghcmod-vim'))) 2 | autocmd BufWritePost *.hs GhcModCheckAndLintAsync 3 | endif 4 | -------------------------------------------------------------------------------- /plugins/haskell/haskell.bundles: -------------------------------------------------------------------------------- 1 | " EverVim Haskell Bundles 2 | Plug 'travitch/hasksyn' 3 | Plug 'dag/vim2hs' 4 | Plug 'Twinside/vim-haskellConceal' 5 | Plug 'Twinside/vim-haskellFold' 6 | Plug 'lukerandall/haskellmode-vim' 7 | Plug 'eagletmt/neco-ghc' 8 | Plug 'eagletmt/ghcmod-vim' 9 | Plug 'adinapoli/cumino' 10 | Plug 'bitc/vim-hdevtools' 11 | -------------------------------------------------------------------------------- /plugins/html/html.bundles: -------------------------------------------------------------------------------- 1 | " EverVim HTML Bundles 2 | Plug 'othree/html5.vim' 3 | Plug 'alvan/vim-closetag' 4 | Plug 'tpope/vim-haml' 5 | Plug 'mattn/emmet-vim' 6 | Plug 'digitaltoad/vim-pug' 7 | -------------------------------------------------------------------------------- /plugins/html/html5.vim: -------------------------------------------------------------------------------- 1 | if isdirectory(expand(EverVimBundleDir('html5.vim'))) 2 | let g:html5_event_handler_attributes_complete = 0 3 | let g:html5_rdfa_attributes_complete = 0 4 | let g:html5_microdata_attributes_complete = 0 5 | let g:html5_aria_attributes_complete = 0 6 | endif 7 | -------------------------------------------------------------------------------- /plugins/java/java.bundles: -------------------------------------------------------------------------------- 1 | Plug 'artur-shaik/vim-javacomplete2' 2 | -------------------------------------------------------------------------------- /plugins/java/vim-javacomplete2.vim: -------------------------------------------------------------------------------- 1 | if isdirectory(expand(EverVimBundleDir('vim-javacomplete2'))) 2 | autocmd FileType java setlocal omnifunc=javacomplete#Complete 3 | 4 | augroup javacomplete-key 5 | " Keymaps for java complete 6 | autocmd FileType java nmap lI (JavaComplete-Imports-AddMissing) 7 | autocmd FileType java nmap lR (JavaComplete-Imports-RemoveUnused) 8 | autocmd FileType java nmap li (JavaComplete-Imports-AddSmart) 9 | autocmd FileType java nmap lii (JavaComplete-Imports-Add) 10 | 11 | autocmd FileType java imap I (JavaComplete-Imports-AddMissing) 12 | autocmd FileType java imap R (JavaComplete-Imports-RemoveUnused) 13 | autocmd FileType java imap i (JavaComplete-Imports-AddSmart) 14 | autocmd FileType java imap ii (JavaComplete-Imports-Add) 15 | 16 | autocmd FileType java nmap lM (JavaComplete-Generate-AbstractMethods) 17 | 18 | autocmd FileType java imap jM (JavaComplete-Generate-AbstractMethods) 19 | 20 | autocmd FileType java nmap lA (JavaComplete-Generate-Accessors) 21 | autocmd FileType java nmap ls (JavaComplete-Generate-AccessorSetter) 22 | autocmd FileType java nmap lg (JavaComplete-Generate-AccessorGetter) 23 | autocmd FileType java nmap la (JavaComplete-Generate-AccessorSetterGetter) 24 | autocmd FileType java nmap lts (JavaComplete-Generate-ToString) 25 | autocmd FileType java nmap leq (JavaComplete-Generate-EqualsAndHashCode) 26 | autocmd FileType java nmap lc (JavaComplete-Generate-Constructor) 27 | autocmd FileType java nmap lcc (JavaComplete-Generate-DefaultConstructor) 28 | 29 | autocmd FileType java imap s (JavaComplete-Generate-AccessorSetter) 30 | autocmd FileType java imap g (JavaComplete-Generate-AccessorGetter) 31 | autocmd FileType java imap a (JavaComplete-Generate-AccessorSetterGetter) 32 | 33 | autocmd FileType java vmap ls (JavaComplete-Generate-AccessorSetter) 34 | autocmd FileType java vmap lg (JavaComplete-Generate-AccessorGetter) 35 | autocmd FileType java vmap la (JavaComplete-Generate-AccessorSetterGetter) 36 | 37 | autocmd FileType java nmap ln (JavaComplete-Generate-NewClass) 38 | autocmd FileType java nmap lN (JavaComplete-Generate-ClassInFile) 39 | augroup END 40 | endif 41 | -------------------------------------------------------------------------------- /plugins/javascript/javascript-libraries-syntax.vim: -------------------------------------------------------------------------------- 1 | if isdirectory(expand(EverVimBundleDir('javascript-libraries-syntax.vim'))) 2 | let g:used_javascript_libs = 'jquery,angularjs,angularui' 3 | endif 4 | -------------------------------------------------------------------------------- /plugins/javascript/javascript.bundles: -------------------------------------------------------------------------------- 1 | " EverVim Javascript Bundles 2 | " Javascript and React syntax/indentation 3 | Plug 'neoclide/vim-jsx-improve' 4 | " ES Next syntax 5 | Plug 'othree/es.next.syntax.vim' 6 | Plug 'othree/javascript-libraries-syntax.vim' 7 | " CoffeeScript 8 | Plug 'kchmck/vim-coffee-script' 9 | " Vue.js 10 | Plug 'posva/vim-vue' 11 | " Elm syntax 12 | Plug 'ElmCast/elm-vim' 13 | Plug 'othree/yajs.vim' 14 | Plug 'moll/vim-node' 15 | Plug 'elzr/vim-json' 16 | Plug 'heavenshell/vim-jsdoc' 17 | if executable('flow') 18 | Plug 'flowtype/vim-flow' 19 | endif 20 | 21 | if count(g:evervim_bundle_groups, 'deoplete') 22 | Plug 'carlitux/deoplete-ternjs' 23 | endif 24 | -------------------------------------------------------------------------------- /plugins/javascript/vim-javascript.vim: -------------------------------------------------------------------------------- 1 | if isdirectory(expand(EverVimBundleDir('vim-javascript'))) 2 | if exists('g:evervim_js_ligatures') 3 | let g:javascript_conceal_function = "ƒ" 4 | let g:javascript_conceal_null = "ø" 5 | let g:javascript_conceal_this = "@" 6 | let g:javascript_conceal_return = "⇚" 7 | let g:javascript_conceal_undefined = "¿" 8 | let g:javascript_conceal_NaN = "ℕ" 9 | let g:javascript_conceal_prototype = "¶" 10 | let g:javascript_conceal_super = "Ω" 11 | let g:javascript_conceal_arrow_function = "⇒" 12 | let g:javascript_conceal_noarg_arrow_function = "🞅" 13 | let g:javascript_conceal_underscore_arrow_function = "🞅" 14 | endif 15 | if executable('flow') 16 | let g:javascript_plugin_flow = 1 17 | endif 18 | endif 19 | -------------------------------------------------------------------------------- /plugins/javascript/vim-jsdoc.vim: -------------------------------------------------------------------------------- 1 | if isdirectory(expand(EverVimBundleDir('vim-jsdoc'))) 2 | nmap ld (jsdoc) 3 | endif 4 | -------------------------------------------------------------------------------- /plugins/julia/julia.bundles: -------------------------------------------------------------------------------- 1 | Plug 'JuliaEditorSupport/julia-vim' 2 | if count(g:evervim_bundle_groups, 'deoplete') 3 | Plug 'JuliaEditorSupport/deoplete-julia' 4 | endif 5 | -------------------------------------------------------------------------------- /plugins/latex/latex.bundles: -------------------------------------------------------------------------------- 1 | " EverVim LaTeX Bundles 2 | Plug 'lervag/vimtex' 3 | -------------------------------------------------------------------------------- /plugins/lua/lua.bundles: -------------------------------------------------------------------------------- 1 | " EverVim Lua Bundles 2 | Plug 'WolfgangMehner/lua-support' 3 | Plug 'leafo/moonscript-vim' 4 | -------------------------------------------------------------------------------- /plugins/matlab/matlab.bundles: -------------------------------------------------------------------------------- 1 | Plug 'WolfgangMehner/matlab-support' 2 | -------------------------------------------------------------------------------- /plugins/misc/calendar.vim: -------------------------------------------------------------------------------- 1 | if isdirectory(expand(EverVimBundleDir('calendar.vim'))) 2 | " Alias command clock 3 | command -nargs=0 Clock :Calendar -view=clock 4 | endif 5 | -------------------------------------------------------------------------------- /plugins/misc/misc.bundles: -------------------------------------------------------------------------------- 1 | " EverVim Misc Bundles 2 | Plug 'tpope/vim-cucumber' 3 | Plug 'quentindecock/vim-cucumber-align-pipes' 4 | Plug 'saltstack/salt-vim' 5 | Plug 'adelarsq/vim-hackernews' 6 | Plug 'itchyny/calendar.vim' 7 | Plug 'chrisbra/csv.vim' 8 | Plug 'chemzqm/wxapp.vim' 9 | if executable('xmake') 10 | Plug 'luzhlon/xmake.vim' 11 | endif 12 | -------------------------------------------------------------------------------- /plugins/neocomplete/neocomplete.bundles: -------------------------------------------------------------------------------- 1 | " EverVim NeoComplete Bundles 2 | Plug 'Shougo/neocomplete.vim' 3 | Plug 'Shougo/neosnippet' 4 | Plug 'Shougo/neosnippet-snippets' 5 | Plug 'honza/vim-snippets' 6 | -------------------------------------------------------------------------------- /plugins/neocomplete/neocomplete.vim: -------------------------------------------------------------------------------- 1 | if count(g:evervim_bundle_groups, 'neocomplete') 2 | let g:acp_enableAtStartup = 0 3 | let g:neocomplete#enable_at_startup = 1 4 | let g:neocomplete#enable_smart_case = 1 5 | let g:neocomplete#enable_auto_delimiter = 1 6 | let g:neocomplete#max_list = 15 7 | let g:neocomplete#force_overwrite_completefunc = 1 8 | 9 | 10 | " Define dictionary. 11 | let g:neocomplete#sources#dictionary#dictionaries = { 12 | \ 'default' : '', 13 | \ 'vimshell' : $HOME.'/.vimshell_hist', 14 | \ 'scheme' : $HOME.'/.gosh_completions' 15 | \ } 16 | 17 | " Define keyword. 18 | if !exists('g:neocomplete#keyword_patterns') 19 | let g:neocomplete#keyword_patterns = {} 20 | endif 21 | let g:neocomplete#keyword_patterns['default'] = '\h\w*' 22 | 23 | " Plugin key-mappings { 24 | " These two lines conflict with the default digraph mapping of 25 | if !exists('g:evervim_no_neosnippet_expand') 26 | imap (neosnippet_expand_or_jump) 27 | smap (neosnippet_expand_or_jump) 28 | endif 29 | if exists('g:evervim_noninvasive_completion') 30 | inoremap 31 | " takes you out of insert mode 32 | inoremap pumvisible() ? "\\" : "\" 33 | " accepts first, then sends the 34 | inoremap pumvisible() ? "\\" : "\" 35 | " and cycle like and 36 | inoremap pumvisible() ? "\" : "\" 37 | inoremap pumvisible() ? "\" : "\" 38 | " Jump up and down the list 39 | inoremap pumvisible() ? "\\\" : "\" 40 | inoremap pumvisible() ? "\\\" : "\" 41 | else 42 | " Complete Snippet 43 | " Jump to next snippet point 44 | imap neosnippet#expandable() ? 45 | \ "\(neosnippet_expand_or_jump)" : (pumvisible() ? 46 | \ "\" : "\(neosnippet_expand_or_jump)") 47 | smap (neosnippet_jump_or_expand) 48 | 49 | inoremap neocomplete#undo_completion() 50 | inoremap neocomplete#complete_common_string() 51 | "inoremap neocomplete#complete_common_string() 52 | 53 | " : close popup 54 | " : close popup and save indent. 55 | inoremap pumvisible() ? neocomplete#smart_close_popup()."\" : "\" 56 | 57 | function! CleverCr() 58 | if pumvisible() 59 | if neosnippet#expandable() 60 | let exp = "\(neosnippet_expand)" 61 | return exp . neocomplete#smart_close_popup() 62 | else 63 | return neocomplete#smart_close_popup() 64 | endif 65 | else 66 | return "\" 67 | endif 68 | endfunction 69 | 70 | " close popup and save indent or expand snippet 71 | imap CleverCr() 72 | " , : close popup and delete backword char. 73 | inoremap neocomplete#smart_close_popup()."\" 74 | inoremap neocomplete#smart_close_popup() 75 | endif 76 | " : completion. 77 | inoremap pumvisible() ? "\" : "\" 78 | inoremap pumvisible() ? "\" : "\" 79 | 80 | " Courtesy of Matteo Cavalleri 81 | 82 | function! CleverTab() 83 | if pumvisible() 84 | return "\" 85 | endif 86 | let substr = strpart(getline('.'), 0, col('.') - 1) 87 | let substr = matchstr(substr, '[^ \t]*$') 88 | if strlen(substr) == 0 89 | " nothing to match on empty string 90 | return "\" 91 | else 92 | " existing text matching 93 | if neosnippet#expandable_or_jumpable() 94 | return "\(neosnippet_expand_or_jump)" 95 | else 96 | return neocomplete#start_manual_complete() 97 | endif 98 | endif 99 | endfunction 100 | 101 | imap CleverTab() 102 | " } 103 | 104 | " Enable heavy omni completion. 105 | if !exists('g:neocomplete#sources#omni#input_patterns') 106 | let g:neocomplete#sources#omni#input_patterns = {} 107 | endif 108 | let g:neocomplete#sources#omni#input_patterns.php = '[^. \t]->\h\w*\|\h\w*::' 109 | let g:neocomplete#sources#omni#input_patterns.perl = '\h\w*->\h\w*\|\h\w*::' 110 | let g:neocomplete#sources#omni#input_patterns.c = '[^.[:digit:] *\t]\%(\.\|->\)' 111 | let g:neocomplete#sources#omni#input_patterns.cpp = '[^.[:digit:] *\t]\%(\.\|->\)\|\h\w*::' 112 | let g:neocomplete#sources#omni#input_patterns.ruby = '[^. *\t]\.\h\w*\|\h\w*::' 113 | endif 114 | -------------------------------------------------------------------------------- /plugins/neocomplete/snippets.vim: -------------------------------------------------------------------------------- 1 | if count(g:evervim_bundle_groups, 'neocomplcache') || 2 | \ count(g:evervim_bundle_groups, 'neocomplete') 3 | 4 | " Use honza's snippets. 5 | let g:neosnippet#snippets_directory=EverVimBundleDir('vim-snippets/snippets') 6 | 7 | " Enable neosnippet snipmate compatibility mode 8 | let g:neosnippet#enable_snipmate_compatibility = 1 9 | 10 | " For snippet_complete marker. 11 | if !exists("g:evervim_no_conceal") 12 | if has('conceal') 13 | set conceallevel=2 concealcursor=i 14 | endif 15 | endif 16 | 17 | " Enable neosnippets when using go 18 | let g:go_snippet_engine = "neosnippet" 19 | 20 | " Disable the neosnippet preview candidate window 21 | " When enabled, there can be too much visual noise 22 | " especially when splits are used. 23 | set completeopt-=preview 24 | endif 25 | -------------------------------------------------------------------------------- /plugins/php/pdv.vim: -------------------------------------------------------------------------------- 1 | if isdirectory(expand(EverVimBundleDir('pdv'))) 2 | let g:pdv_template_dir = $HOME . "/.vim/bundle/pdv/templates_snip" 3 | nnoremap lp :call pdv#DocumentWithSnip() 4 | endif 5 | -------------------------------------------------------------------------------- /plugins/php/php.bundles: -------------------------------------------------------------------------------- 1 | " EverVim PHP Bundles 2 | Plug 'arnaud-lb/vim-php-namespace' 3 | Plug '2072/PHP-Indenting-for-VIm' 4 | Plug 'lvht/phpcd.vim', { 'for': 'php', 'do': 'composer install' } 5 | Plug 'StanAngeloff/php.vim' 6 | Plug 'tobyS/pdv' 7 | Plug 'hhvm/vim-hack' 8 | 9 | " Outdate Plugins: 10 | " Plug 'beyondwords/vim-twig' 11 | " Plug 'spf13/PIV' 12 | -------------------------------------------------------------------------------- /plugins/php/vim-php-namespace.vim: -------------------------------------------------------------------------------- 1 | if isdirectory(expand(EverVimBundleDir('vim-php-namespace'))) 2 | " Automatic insert use according to source code 3 | function! IPhpInsertUse() 4 | call PhpInsertUse() 5 | call feedkeys('a', 'n') 6 | endfunction 7 | autocmd FileType php inoremap lu :call IPhpInsertUse() 8 | autocmd FileType php noremap lu :call PhpInsertUse() 9 | " Expand class 10 | function! IPhpExpandClass() 11 | call PhpExpandClass() 12 | call feedkeys('a', 'n') 13 | endfunction 14 | autocmd FileType php inoremap le :call IPhpExpandClass() 15 | autocmd FileType php noremap le :call PhpExpandClass() 16 | " Sort uses 17 | let g:php_namespace_sort_after_insert = 1 18 | autocmd FileType php inoremap ls :call PhpSortUse() 19 | autocmd FileType php noremap ls :call PhpSortUse() 20 | endif 21 | -------------------------------------------------------------------------------- /plugins/plugin-config.vim: -------------------------------------------------------------------------------- 1 | " Plugin Configuration { 2 | for $bundle_group in g:evervim_bundle_groups 3 | call SourceConfigsIn($evervim_root . "/plugins/" . $bundle_group) 4 | endfor 5 | " } 6 | -------------------------------------------------------------------------------- /plugins/plugins.vim: -------------------------------------------------------------------------------- 1 | " Modeline and Notes { 2 | " EverVim is a modern & powerful vim distribution 3 | " Repo URL: https://github.com/LER0ever/EverVim 4 | " Made by [LER0ever](https://github.com/LER0ever) 5 | " Licensed under 6 | " * Apache License, Version 2.0, ([LICENSE-APACHE](LICENSE.md) or http://www.apache.org/licenses/LICENSE-2.0) 7 | " } 8 | 9 | " Setup Vim-Plug Support { 10 | call plug#begin(EverVimBundleDir('')) 11 | " } 12 | 13 | " Bundles { 14 | 15 | " list only the bundle groups you will use 16 | if !exists('g:evervim_bundle_groups') 17 | if WINDOWS() 18 | let g:evervim_bundle_groups=['general', 'appearance', 'writing', 'neocomplete', 'programming', 'python', 'javascript', 'typescript', 'html', 'css', 'misc', 'go', 'rust', 'cpp', 'lua'] 19 | else 20 | let g:evervim_bundle_groups=['general', 'appearance', 'writing', 'youcompleteme', 'programming', 'python', 'javascript', 'typescript', 'html', 'css', 'misc', 'go', 'rust', 'cpp', 'lua'] 21 | endif 22 | endif 23 | 24 | if exists('g:override_evervim_bundles') 25 | " Disable a specific plugin 26 | " https://github.com/junegunn/vim-plug/issues/469#issuecomment-226965736 27 | function! s:evervim_disable_plugin(repo) 28 | let repo = substitute(a:repo, '[\/]\+$', '', '') 29 | let name = fnamemodify(repo, ':t:s?\.git$??') 30 | call remove(g:plugs, name) 31 | call remove(g:plugs_order, index(g:plugs_order, name)) 32 | endfunction 33 | 34 | command! -nargs=1 -bar UnPlug call s:evervim_disable_plugin() 35 | endif 36 | 37 | for $bundle_group in g:evervim_bundle_groups 38 | source $evervim_root/plugins/$bundle_group/$bundle_group.bundles 39 | endfor 40 | 41 | " Use local bundles config if available { 42 | if exists('g:override_evervim_bundles') && filereadable(expand("~/.EverVim.bundles")) 43 | source ~/.EverVim.bundles 44 | endif 45 | " } 46 | 47 | " Run PlugInstall if bundle does not exists 48 | autocmd VimEnter * call EverVimInitPlugins() 49 | " } 50 | 51 | " Vim-Plug Teardown { 52 | call plug#end() 53 | " } 54 | -------------------------------------------------------------------------------- /plugins/programming/agit.vim: -------------------------------------------------------------------------------- 1 | if isdirectory(expand(EverVimBundleDir('agit.vim'))) 2 | nnoremap ga :Agit 3 | 4 | let g:agit_max_log_lines = 1000 5 | 6 | autocmd filetype agit_diff setlocal nofoldenable 7 | endif 8 | -------------------------------------------------------------------------------- /plugins/programming/ale.vim: -------------------------------------------------------------------------------- 1 | if isdirectory(expand(EverVimBundleDir("ale"))) 2 | " Disable realtime linting due to performance issue 3 | let g:ale_lint_on_text_changed = 'normal' 4 | " Ensure ale use location list 5 | let g:ale_set_loclist = 1 6 | let g:ale_open_list = 1 7 | let g:ale_list_window_size = 8 8 | " Check on bufenter 9 | let g:ale_lint_on_enter = 1 10 | let g:ale_set_signs = 1 11 | let g:ale_sign_column_always = 1 12 | endif 13 | -------------------------------------------------------------------------------- /plugins/programming/indentline.vim: -------------------------------------------------------------------------------- 1 | if isdirectory(expand(EverVimBundleDir("indentLine"))) 2 | " Vim 3 | let g:indentLine_color_term = 156 4 | 5 | "GVim 6 | let g:indentLine_color_gui = '#A4E57E' 7 | 8 | " none X terminal 9 | let g:indentLine_color_tty_light = 7 " (default: 4) 10 | let g:indentLine_color_dark = 1 " (default: 2) 11 | let g:indentLine_enabled = 1 12 | 13 | " https://www.reddit.com/r/vim/comments/7bcado/setting_default_values_for_plugins_global/ 14 | let g:indentLine_char = get(g:, 'indentLine_char', '│') "  15 | let g:indentLine_fileTypeExclude = ['startify', '' , 'help', 'nerdtree', 'tutor', 'calendar'] 16 | endif 17 | -------------------------------------------------------------------------------- /plugins/programming/json.vim: -------------------------------------------------------------------------------- 1 | nmap jt :%!python -m json.tool:set filetype=json 2 | let g:vim_json_syntax_conceal = 0 3 | -------------------------------------------------------------------------------- /plugins/programming/neoformat.vim: -------------------------------------------------------------------------------- 1 | if isdirectory(expand(EverVimBundleDir("neoformat"))) 2 | noremap fm :Neoformat 3 | if !exists('g:evervim_no_autoformat') 4 | augroup neofmt 5 | autocmd BufWritePre *.c,*.cpp,*.h,*.hpp,*.cxx Neoformat 6 | autocmd BufWritePre *.rust,*.rs Neoformat 7 | autocmd BufWritePre *.cs Neoformat 8 | autocmd BufWritePre *.java Neoformat 9 | autocmd BufWritePre *.py Neoformat 10 | autocmd BufWritePre *.css Neoformat 11 | autocmd BufWritePre *.ts Neoformat 12 | augroup END 13 | endif 14 | end 15 | -------------------------------------------------------------------------------- /plugins/programming/omnicomplete.vim: -------------------------------------------------------------------------------- 1 | " To disable omni complete, add the following to your .vimrc.before.local file: 2 | " let g:evervim_no_omni_complete = 1 3 | if !exists('g:evervim_no_omni_complete') 4 | if has("autocmd") && exists("+omnifunc") 5 | autocmd Filetype * 6 | \if &omnifunc == "" | 7 | \setlocal omnifunc=syntaxcomplete#Complete | 8 | \endif 9 | endif 10 | 11 | hi Pmenu guifg=#000000 guibg=#F8F8F8 ctermfg=black ctermbg=Lightgray 12 | hi PmenuSbar guifg=#8A95A7 guibg=#F8F8F8 gui=NONE ctermfg=darkcyan ctermbg=lightgray cterm=NONE 13 | hi PmenuThumb guifg=#F8F8F8 guibg=#8A95A7 gui=NONE ctermfg=lightgray ctermbg=darkcyan cterm=NONE 14 | 15 | " Some convenient mappings 16 | "inoremap pumvisible() ? "\" : "\" 17 | if exists('g:evervim_map_cr_omni_complete') 18 | inoremap pumvisible() ? "\" : "\" 19 | endif 20 | inoremap pumvisible() ? "\" : "\" 21 | inoremap pumvisible() ? "\" : "\" 22 | inoremap pumvisible() ? "\\\" : "\" 23 | inoremap pumvisible() ? "\\\" : "\" 24 | 25 | " Automatically open and close the popup menu / preview window 26 | au CursorMovedI,InsertLeave * if pumvisible() == 0|silent! pclose|endif 27 | set completeopt=menu,preview,longest 28 | 29 | " Enable omni-completion. 30 | autocmd FileType css setlocal omnifunc=csscomplete#CompleteCSS 31 | autocmd FileType html,markdown setlocal omnifunc=htmlcomplete#CompleteTags 32 | autocmd FileType javascript setlocal omnifunc=javascriptcomplete#CompleteJS 33 | autocmd FileType python setlocal omnifunc=pythoncomplete#Complete 34 | autocmd FileType xml setlocal omnifunc=xmlcomplete#CompleteTags 35 | autocmd FileType ruby setlocal omnifunc=rubycomplete#Complete 36 | autocmd FileType haskell setlocal omnifunc=necoghc#omnifunc 37 | endif 38 | -------------------------------------------------------------------------------- /plugins/programming/programming.bundles: -------------------------------------------------------------------------------- 1 | " EverVim Programming Bundles 2 | " Pick ALE by default, and fall back to syntastic 3 | if !exists('g:evervim_use_syntastic') 4 | Plug 'w0rp/ale' 5 | else 6 | Plug 'vim-syntastic/syntastic' 7 | endif 8 | Plug 'tpope/vim-fugitive' 9 | Plug 'jiangmiao/auto-pairs' 10 | " Plug 'sheerun/vim-polyglot' " disabled by default, conflicts 11 | " with many plugins 12 | Plug 'mattn/webapi-vim' 13 | Plug 'mattn/gist-vim' 14 | Plug 'scrooloose/nerdcommenter' 15 | if !exists('g:evervim_use_neoformat') 16 | Plug 'Chiel92/vim-autoformat' 17 | else 18 | Plug 'sbdchd/neoformat' 19 | end 20 | Plug 'chrisyip/AuthorInfo' 21 | Plug 'tpope/vim-commentary' 22 | Plug 'godlygeek/tabular' 23 | Plug 'luochen1990/rainbow' 24 | Plug 'terryma/vim-multiple-cursors' 25 | Plug 'Xuyuanp/nerdtree-git-plugin', { 'on': ['NERDTreeToggle', 'NERDTreeTabsToggle'] } 26 | Plug 'cohama/agit.vim' 27 | Plug 'mhinz/vim-signify' 28 | if executable('ctags') 29 | Plug 'majutsushi/tagbar' 30 | endif 31 | Plug 'MarcWeber/vim-addon-mw-utils' 32 | Plug 'tomtom/tlib_vim' 33 | if executable('ag') 34 | Plug 'mileszs/ack.vim' 35 | let g:ackprg = 'ag --nogroup --nocolor --column --smart-case' 36 | elseif executable('ack-grep') 37 | let g:ackprg="ack-grep -H --nocolor --nogroup --column" 38 | Plug 'mileszs/ack.vim' 39 | elseif executable('ack') 40 | Plug 'mileszs/ack.vim' 41 | endif 42 | Plug 'tpope/vim-dispatch' 43 | Plug 'Shougo/vimproc.vim', {'do' : 'make'} " needed by vim-vebugger 44 | Plug 'idanarye/vim-vebugger' 45 | Plug 'metakirby5/codi.vim' 46 | Plug 'alpertuna/vim-header' 47 | Plug 'sgur/vim-editorconfig' 48 | Plug 'ekalinin/Dockerfile.vim' 49 | -------------------------------------------------------------------------------- /plugins/programming/rainbow.vim: -------------------------------------------------------------------------------- 1 | if isdirectory(expand(EverVimBundleDir("rainbow"))) 2 | let g:rainbow_active = 0 "1 if you want to enable it on vim start 3 | nnoremap rb :RainbowToggle 4 | endif 5 | -------------------------------------------------------------------------------- /plugins/programming/sessionman.vim: -------------------------------------------------------------------------------- 1 | set sessionoptions=blank,buffers,curdir,folds,tabpages,winsize 2 | if isdirectory(expand(EverVimBundleDir("sessionman.vim"))) 3 | nmap sl :SessionList 4 | nmap ss :SessionSave 5 | nmap sc :SessionClose 6 | endif 7 | -------------------------------------------------------------------------------- /plugins/programming/syntastic.vim: -------------------------------------------------------------------------------- 1 | if isdirectory(expand(EverVimBundleDir('syntastic'))) 2 | let g:syntastic_always_populate_loc_list = 1 3 | let g:syntastic_auto_loc_list = 1 4 | let g:syntastic_check_on_open = 1 5 | let g:syntastic_check_on_wq = 0 6 | endif 7 | -------------------------------------------------------------------------------- /plugins/programming/tabular.vim: -------------------------------------------------------------------------------- 1 | if isdirectory(expand(EverVimBundleDir("tabular"))) 2 | nmap a& :Tabularize /& 3 | vmap a& :T, { 'on': ['NERDTreeToggle', 'NERDTreeTabsToggle'] }abularize /& 4 | nmap a= :Tabularize /^[^=]*\zs= 5 | vmap a= :Tabularize /^[^=]*\zs= 6 | nmap a=> :Tabularize /=> 7 | vmap a=> :Tabularize /=> 8 | nmap a: :Tabularize /: 9 | vmap a: :Tabularize /: 10 | nmap a:: :Tabularize /:\zs 11 | vmap a:: :Tabularize /:\zs 12 | nmap a, :Tabularize /, 13 | vmap a, :Tabularize /, 14 | nmap a,, :Tabularize /,\zs 15 | vmap a,, :Tabularize /,\zs 16 | nmap a :Tabularize / 17 | vmap a :Tabularize / 18 | endif 19 | -------------------------------------------------------------------------------- /plugins/programming/tagbar.vim: -------------------------------------------------------------------------------- 1 | if isdirectory(expand(EverVimBundleDir("tagbar"))) 2 | nnoremap tt :TagbarToggle 3 | let g:tagbar_width = 30 4 | let g:tagbar_sort = 0 5 | 6 | " Markdown Tags 7 | let g:tagbar_type_markdown = { 8 | \ 'ctagstype': 'markdown', 9 | \ 'ctagsbin' : '~/.vim/tools/ctags/markdown2ctags.py', 10 | \ 'ctagsargs' : '-f - --sort=yes', 11 | \ 'kinds' : [ 12 | \ 's:sections', 13 | \ 'i:images' 14 | \ ], 15 | \ 'sro' : '|', 16 | \ 'kind2scope' : { 17 | \ 's' : 'section', 18 | \ }, 19 | \ 'sort': 0, 20 | \ } 21 | 22 | " Rust Tags 23 | let g:tagbar_type_rust = { 24 | \ 'ctagstype' : 'rust', 25 | \ 'kinds' : [ 26 | \'T:types,type definitions', 27 | \'f:functions,function definitions', 28 | \'g:enum,enumeration names', 29 | \'s:structure names', 30 | \'m:modules,module names', 31 | \'c:consts,static constants', 32 | \'t:traits,traits', 33 | \'i:impls,trait implementations', 34 | \] 35 | \} 36 | 37 | " Typescript Tags 38 | let g:tagbar_type_typescript = { 39 | \ 'ctagstype': 'typescript', 40 | \ 'kinds': [ 41 | \ 'c:classes', 42 | \ 'n:modules', 43 | \ 'f:functions', 44 | \ 'v:variables', 45 | \ 'v:varlambdas', 46 | \ 'm:members', 47 | \ 'i:interfaces', 48 | \ 't:types', 49 | \ 'e:enums', 50 | \ 'I:imports', 51 | \ ] 52 | \ } 53 | 54 | " Basic R Tags 55 | let g:tagbar_type_r = { 56 | \ 'ctagstype' : 'r', 57 | \ 'kinds' : [ 58 | \ 'f:Functions', 59 | \ 'g:GlobalVariables', 60 | \ 'v:FunctionVariables', 61 | \ ] 62 | \ } 63 | 64 | " TXT Novel tags for English and Chinese 65 | let g:tagbar_type_text = { 66 | \ 'ctagstype': 'text', 67 | \ 'kinds': [ 68 | \ 'E:EnglishChapter', 69 | \ 'C:ChineseChapter', 70 | \ ], 71 | \ 'sort': 0, 72 | \ } 73 | endif 74 | 75 | -------------------------------------------------------------------------------- /plugins/programming/uncrustify.vim: -------------------------------------------------------------------------------- 1 | if isdirectory(expand(EverVimBundleDir("vim-uncrustify"))) 2 | autocmd FileType c noremap fm :call Uncrustify('c') 3 | autocmd FileType c vnoremap fm :call RangeUncrustify('c') 4 | autocmd FileType cpp noremap fm :call Uncrustify('cpp') 5 | autocmd FileType cpp vnoremap fm :call RangeUncrustify('cpp') 6 | endif 7 | -------------------------------------------------------------------------------- /plugins/programming/vim-autoformat.vim: -------------------------------------------------------------------------------- 1 | if isdirectory(expand(EverVimBundleDir("vim-autoformat"))) 2 | noremap fm :Autoformat 3 | if !exists('g:evervim_no_autoformat') 4 | au BufWrite *.c,*.cpp,*.h,*.hpp,*.cxx :Autoformat 5 | au BufWrite *.rust,*.rs :Autoformat 6 | au BufWrite *.cs :Autoformat 7 | au BufWrite *.java :Autoformat 8 | au BufWrite *.py :Autoformat 9 | au BufWrite *.css :Autoformat 10 | au BufWrite *.ts :Autoformat 11 | endif 12 | endif 13 | -------------------------------------------------------------------------------- /plugins/programming/vim-dispatch.vim: -------------------------------------------------------------------------------- 1 | if isdirectory(expand(EverVimBundleDir('vim-dispatch'))) 2 | nnoremap dd :Dispatch 3 | nnoremap dm :Make 4 | endif 5 | -------------------------------------------------------------------------------- /plugins/programming/vim-fugitive.vim: -------------------------------------------------------------------------------- 1 | if isdirectory(expand(EverVimBundleDir("vim-fugitive"))) 2 | nnoremap gs :Gstatus 3 | nnoremap gd :Gdiff 4 | nnoremap gc :Gcommit 5 | nnoremap gb :Gblame 6 | nnoremap gl :Glog 7 | nnoremap gp :Git push 8 | nnoremap gr :Gread 9 | nnoremap gw :Gwrite 10 | nnoremap ge :Gedit 11 | " Mnemonic _i_nteractive 12 | nnoremap gi :Git add -p % 13 | nnoremap gg :SignifyToggle 14 | nnoremap gu :Gpull --rebase 15 | set statusline+=%{fugitive#statusline()} " Git Hotness 16 | endif 17 | -------------------------------------------------------------------------------- /plugins/programming/vim-header.vim: -------------------------------------------------------------------------------- 1 | if isdirectory(expand(EverVimBundleDir('vim-header'))) 2 | nnoremap eh :AddHeader 3 | let g:header_auto_add_header = 0 4 | let g:header_alignment = 1 5 | endif 6 | -------------------------------------------------------------------------------- /plugins/programming/vim-indent-guides.vim: -------------------------------------------------------------------------------- 1 | if isdirectory(expand(EverVimBundleDir("vim-indent-guides"))) 2 | let g:indent_guides_start_level = 1 3 | let g:indent_guides_guide_size = 1 4 | let g:indent_guides_enable_on_vim_startup = 1 5 | endif 6 | -------------------------------------------------------------------------------- /plugins/programming/vim-multiple-cursors.vim: -------------------------------------------------------------------------------- 1 | if isdirectory(expand(EverVimBundleDir('vim-multiple-cursors'))) 2 | let g:multi_cursor_use_default_mapping=0 3 | let g:multi_cursor_next_key='' 4 | let g:multi_cursor_prev_key='' 5 | let g:multi_cursor_skip_key='' 6 | let g:multi_cursor_quit_key='' 7 | endif 8 | -------------------------------------------------------------------------------- /plugins/programming/vim-polyglot.vim: -------------------------------------------------------------------------------- 1 | if isdirectory(expand(EverVimBundleDir("vim-polyglot"))) 2 | let g:polyglot_disabled = ['markdown', 'go', 'c/c++', 'css', 'html5', 'javascript', 'rust', 'toml'] 3 | endif 4 | 5 | -------------------------------------------------------------------------------- /plugins/programming/vim-signify.vim: -------------------------------------------------------------------------------- 1 | if isdirectory(expand(EverVimBundleDir("vim-signify"))) 2 | let g:signify_vcs_list = [ 'git', 'hg', 'svn', 'fossil' ] 3 | endif 4 | 5 | -------------------------------------------------------------------------------- /plugins/puppet/puppet.bundles: -------------------------------------------------------------------------------- 1 | " EverVim Puppet Bundles 2 | Plug 'rodjek/vim-puppet' 3 | -------------------------------------------------------------------------------- /plugins/python/python-mode.vim: -------------------------------------------------------------------------------- 1 | if !has('python') && !has('python3') 2 | let g:pymode = 0 3 | endif 4 | 5 | if isdirectory(expand(EverVimBundleDir("python-mode"))) 6 | let g:pymode_python = 'python3' 7 | let g:pymode_trim_whitespaces = 0 8 | let g:pymode_options = 0 9 | let g:pymode_rope = 0 10 | let g:pymode_breakpoint_bind = 'lb' 11 | let g:pymode_run_bind = 'lr' 12 | endif 13 | -------------------------------------------------------------------------------- /plugins/python/python.bundles: -------------------------------------------------------------------------------- 1 | " EverVim Python Bundles 2 | " Pick either python-mode or pyflakes & pydoc 3 | Plug 'python-mode/python-mode', {'branch': 'develop'} 4 | Plug 'yssource/python.vim' 5 | "Plug 'python_match.vim' " no longer use vim-scripts 6 | Plug 'vim-scripts/python_match.vim' 7 | "Plug 'pythoncomplete' " use youcompleteme + jedi instead 8 | if count(g:evervim_bundle_groups, 'deoplete') 9 | Plug 'zchee/deoplete-jedi' 10 | endif 11 | -------------------------------------------------------------------------------- /plugins/r/r.bundles: -------------------------------------------------------------------------------- 1 | Plug 'jalvesaq/Nvim-R' 2 | -------------------------------------------------------------------------------- /plugins/r/r.md: -------------------------------------------------------------------------------- 1 | ## R language support for EverVim 2 | 3 | #### Requirements 4 | You'll need to have R tools installed. 5 | For example `sudo pacman -S r`. 6 | 7 | #### Ctags, tagbar 8 | Please refer to [Getting Vim + Ctags Working with R](http://tinyheero.github.io/2017/05/13/r-vim-ctags.html) 9 | -------------------------------------------------------------------------------- /plugins/ruby/ruby.bundles: -------------------------------------------------------------------------------- 1 | " EverVim Ruby Bundles 2 | Plug 'vim-ruby/vim-ruby' 3 | Plug 'tpope/vim-rails', {'for': 'ruby'} 4 | let g:rubycomplete_buffer_loading = 1 5 | "let g:rubycomplete_classes_in_global = 1 6 | "let g:rubycomplete_rails = 1 7 | -------------------------------------------------------------------------------- /plugins/rust/rust.bundles: -------------------------------------------------------------------------------- 1 | " EverVim Rust Bundles 2 | Plug 'rust-lang/rust.vim', {'for': ['rust']} 3 | Plug 'racer-rust/vim-racer', {'for': ['rust']} 4 | if count(g:evervim_bundle_groups, 'deoplete') 5 | Plug 'sebastianmarkow/deoplete-rust', { 'for': ['rust'] } 6 | endif 7 | -------------------------------------------------------------------------------- /plugins/scala/scala.bundles: -------------------------------------------------------------------------------- 1 | " EverVim Scala Bundles 2 | Plug 'derekwyatt/vim-scala' 3 | Plug 'derekwyatt/vim-sbt' 4 | -------------------------------------------------------------------------------- /plugins/snipmate/snipmate.bundles: -------------------------------------------------------------------------------- 1 | " EverVim SnipMate Bundles 2 | Plug 'garbas/vim-snipmate' 3 | Plug 'honza/vim-snippets' 4 | " Source support_function.vim to support vim-snippets. 5 | if filereadable(expand($evervim_root . "/bundle/vim-snippets/snippets/support_functions.vim")) 6 | source $evervim_root/bundle/vim-snippets/snippets/support_functions.vim 7 | endif 8 | 9 | -------------------------------------------------------------------------------- /plugins/swift/swift.bundles: -------------------------------------------------------------------------------- 1 | Plug 'keith/swift.vim' 2 | -------------------------------------------------------------------------------- /plugins/swift/swift.vim: -------------------------------------------------------------------------------- 1 | if isdirectory(expand(EverVimBundleDir('swift.vim'))) 2 | " Enable both swiftpm and swiftlint checker 3 | let g:syntastic_swift_checkers = ['swiftpm', 'swiftlint'] 4 | endif 5 | -------------------------------------------------------------------------------- /plugins/typescript/tsuquyomi.vim: -------------------------------------------------------------------------------- 1 | if isdirectory(expand(EverVimBundleDir('tsuquyomi'))) 2 | let g:tsuquyomi_disable_quickfix = 1 3 | let g:syntastic_typescript_checkers = ['tsuquyomi'] " You shouldn't use 'tsc' checker. 4 | let g:tsuquyomi_javascript_support = 1 5 | endif 6 | -------------------------------------------------------------------------------- /plugins/typescript/typescript.bundles: -------------------------------------------------------------------------------- 1 | " EverVim Typescript Bundles 2 | Plug 'Quramy/tsuquyomi' 3 | Plug 'HerringtonDarkholme/yats.vim' 4 | Plug 'Shougo/vimproc.vim', {'do' : 'make'} 5 | -------------------------------------------------------------------------------- /plugins/writing/goyo.vim: -------------------------------------------------------------------------------- 1 | if isdirectory(expand(EverVimBundleDir('goyo.vim'))) 2 | nmap wg :Goyo 3 | endif 4 | 5 | -------------------------------------------------------------------------------- /plugins/writing/limelight.vim: -------------------------------------------------------------------------------- 1 | if isdirectory(expand(EverVimBundleDir('limelight.vim'))) 2 | let g:limelight_default_coefficient = 0.7 3 | let g:limelight_paragraph_span = 0 4 | let g:limelight_priority = -1 5 | 6 | " Color defs, for default dracula 7 | let g:limelight_conceal_ctermfg = 'gray' 8 | let g:limelight_conceal_ctermfg = 240 9 | let g:limelight_conceal_guifg = 'DarkGray' 10 | let g:limelight_conceal_guifg = '#777777' 11 | 12 | " Keymap 13 | nmap wl (Limelight) 14 | 15 | " Goyo Integration 16 | autocmd! User GoyoEnter Limelight 17 | autocmd! User GoyoLeave Limelight! 18 | endif 19 | -------------------------------------------------------------------------------- /plugins/writing/previm.vim: -------------------------------------------------------------------------------- 1 | if isdirectory(expand(EverVimBundleDir("previm"))) 2 | autocmd FileType markdown nnoremap lp :PrevimOpen 3 | endif 4 | -------------------------------------------------------------------------------- /plugins/writing/textobj-quote.vim: -------------------------------------------------------------------------------- 1 | if count(g:evervim_bundle_groups, 'writing') 2 | augroup textobj_quote 3 | autocmd! 4 | autocmd FileType markdown call textobj#quote#init() 5 | autocmd FileType textile call textobj#quote#init() 6 | autocmd FileType text call textobj#quote#init({'educate': 0}) 7 | augroup END 8 | endif 9 | -------------------------------------------------------------------------------- /plugins/writing/textobj-sentence.vim: -------------------------------------------------------------------------------- 1 | if count(g:evervim_bundle_groups, 'writing') 2 | augroup textobj_sentence 3 | autocmd! 4 | autocmd FileType markdown call textobj#sentence#init() 5 | autocmd FileType textile call textobj#sentence#init() 6 | autocmd FileType text call textobj#sentence#init() 7 | augroup END 8 | endif 9 | -------------------------------------------------------------------------------- /plugins/writing/vim-markdown.vim: -------------------------------------------------------------------------------- 1 | if isdirectory(expand(EverVimBundleDir("vim-markdown"))) 2 | let g:vim_markdown_frontmatter = 1 3 | let g:vim_markdown_toml_frontmatter = 1 4 | let g:vim_markdown_math = 1 5 | let g:vim_markdown_toc_autofit = 1 6 | let g:vim_markdown_fenced_languages = ['csharp=cs', 'c++=cpp', 'viml=vim', 'bash=sh', 'ini=dosini', 'toml=toml'] 7 | let g:vim_markdown_autowrite = 1 8 | let g:vim_markdown_no_extensions_in_markdown = 1 9 | let g:vim_markdown_conceal = 0 10 | let g:vim_markdown_folding_style_pythonic = 1 11 | 12 | nnoremap to :Tocv 13 | endif 14 | -------------------------------------------------------------------------------- /plugins/writing/vim-orgmode.vim: -------------------------------------------------------------------------------- 1 | if isdirectory(expand(EverVimBundleDir('vim-orgmode'))) 2 | let g:org_todo_keywords = [['TODO(t)', 'DOING(i)', 'CHECK(k)', 'STALLED(s)', '|', 'DONE(d)', 'CANCELED(c)'], 3 | \ ['REPORT(r)', 'BUG(b)', 'KNOWNCAUSE(k)', '|', 'FIXED(f)'], 4 | \ ['CANCELED(c)']] 5 | let g:org_agenda_files = ['~/.org/*.org'] 6 | endif 7 | -------------------------------------------------------------------------------- /plugins/writing/vimwiki.vim: -------------------------------------------------------------------------------- 1 | if isdirectory(expand(EverVimBundleDir("vimwiki"))) 2 | let g:vimwiki_folding = 'syntax' 3 | nmap vw VimwikiIndex 4 | nmap vti VimwikiTabIndex 5 | nmap vs VimwikiUISelect 6 | nmap vi VimwikiDiaryIndex 7 | nmap vd VimwikiMakeDiaryNote 8 | nmap vtd VimwikiTabMakeDiaryNote 9 | nmap vyd VimwikiMakeYesterdayDiaryNote 10 | nmap vg VimwikiDiaryGenerateLinks 11 | map ve :Vimwiki2HTML 12 | map vb :Vimwiki2HTMLBrowse 13 | endif 14 | -------------------------------------------------------------------------------- /plugins/writing/writing.bundles: -------------------------------------------------------------------------------- 1 | " EverVim Writing Bundles 2 | Plug 'plasticboy/vim-markdown' ", {'for': 'markdown'} 3 | Plug 'Rykka/riv.vim', {'for': 'rst'} 4 | Plug 'vimwiki/vimwiki', {'branch': 'dev'} 5 | Plug 'vimoutliner/vimoutliner' 6 | Plug 'jceb/vim-orgmode' 7 | Plug 'cespare/vim-toml' 8 | Plug 'reedes/vim-litecorrect' 9 | Plug 'reedes/vim-textobj-sentence' 10 | Plug 'reedes/vim-textobj-quote' 11 | Plug 'reedes/vim-wordy' 12 | Plug 'tyru/open-browser.vim' 13 | Plug 'kannokanno/previm' 14 | Plug 'junegunn/goyo.vim' 15 | Plug 'junegunn/limelight.vim' 16 | Plug 'sotte/presenting.vim' 17 | -------------------------------------------------------------------------------- /plugins/youcompleteme/ultisnips.vim: -------------------------------------------------------------------------------- 1 | if isdirectory(expand(EverVimBundleDir('ultisnips'))) 2 | let g:UltiSnipsEditSplit="vertical" 3 | 4 | " remap Ultisnips for compatibility for YCM 5 | let g:UltiSnipsExpandTrigger = "" 6 | let g:UltiSnipsJumpForwardTrigger = "" 7 | let g:UltiSnipsJumpBackwardTrigger = "" 8 | endif 9 | -------------------------------------------------------------------------------- /plugins/youcompleteme/ycm_global_conf.py: -------------------------------------------------------------------------------- 1 | # EverVim YouCompleteMe Global Configuration 2 | # This YCM config was originally from Jonas Devlieghere 3 | # https://jonasdevlieghere.com/a-better-youcompleteme-config/ 4 | import os 5 | import os.path 6 | import fnmatch 7 | import logging 8 | import ycm_core 9 | import re 10 | 11 | BASE_FLAGS = [ 12 | '-Wall', 13 | '-Wextra', 14 | '-Werror', 15 | '-Wno-long-long', 16 | '-Wno-variadic-macros', 17 | '-fexceptions', 18 | '-ferror-limit=10000', 19 | '-DNDEBUG', 20 | '-std=c++11', 21 | '-xc++', 22 | '-I/usr/lib/', 23 | '-I/usr/include/' 24 | ] 25 | 26 | SOURCE_EXTENSIONS = [ 27 | '.cpp', 28 | '.cxx', 29 | '.cc', 30 | '.c', 31 | '.m', 32 | '.mm' 33 | ] 34 | 35 | SOURCE_DIRECTORIES = [ 36 | 'src', 37 | 'source', 38 | 'lib' 39 | ] 40 | 41 | HEADER_EXTENSIONS = [ 42 | '.h', 43 | '.hxx', 44 | '.hpp', 45 | '.hh' 46 | ] 47 | 48 | HEADER_DIRECTORIES = [ 49 | 'include' 50 | ] 51 | 52 | def IsHeaderFile(filename): 53 | extension = os.path.splitext(filename)[1] 54 | return extension in HEADER_EXTENSIONS 55 | 56 | def GetCompilationInfoForFile(database, filename): 57 | if IsHeaderFile(filename): 58 | basename = os.path.splitext(filename)[0] 59 | for extension in SOURCE_EXTENSIONS: 60 | # Get info from the source files by replacing the extension. 61 | replacement_file = basename + extension 62 | if os.path.exists(replacement_file): 63 | compilation_info = database.GetCompilationInfoForFile(replacement_file) 64 | if compilation_info.compiler_flags_: 65 | return compilation_info 66 | # If that wasn't successful, try replacing possible header directory with possible source directories. 67 | for header_dir in HEADER_DIRECTORIES: 68 | for source_dir in SOURCE_DIRECTORIES: 69 | src_file = replacement_file.replace(header_dir, source_dir) 70 | if os.path.exists(src_file): 71 | compilation_info = database.GetCompilationInfoForFile(src_file) 72 | if compilation_info.compiler_flags_: 73 | return compilation_info 74 | return None 75 | return database.GetCompilationInfoForFile(filename) 76 | 77 | def FindNearest(path, target, build_folder): 78 | candidate = os.path.join(path, target) 79 | if(os.path.isfile(candidate) or os.path.isdir(candidate)): 80 | logging.info("Found nearest " + target + " at " + candidate) 81 | return candidate; 82 | 83 | parent = os.path.dirname(os.path.abspath(path)); 84 | if(parent == path): 85 | raise RuntimeError("Could not find " + target); 86 | 87 | if(build_folder): 88 | candidate = os.path.join(parent, build_folder, target) 89 | if(os.path.isfile(candidate) or os.path.isdir(candidate)): 90 | logging.info("Found nearest " + target + " in build folder at " + candidate) 91 | return candidate; 92 | 93 | return FindNearest(parent, target, build_folder) 94 | 95 | def MakeRelativePathsInFlagsAbsolute(flags, working_directory): 96 | if not working_directory: 97 | return list(flags) 98 | new_flags = [] 99 | make_next_absolute = False 100 | path_flags = [ '-isystem', '-I', '-iquote', '--sysroot=' ] 101 | for flag in flags: 102 | new_flag = flag 103 | 104 | if make_next_absolute: 105 | make_next_absolute = False 106 | if not flag.startswith('/'): 107 | new_flag = os.path.join(working_directory, flag) 108 | 109 | for path_flag in path_flags: 110 | if flag == path_flag: 111 | make_next_absolute = True 112 | break 113 | 114 | if flag.startswith(path_flag): 115 | path = flag[ len(path_flag): ] 116 | new_flag = path_flag + os.path.join(working_directory, path) 117 | break 118 | 119 | if new_flag: 120 | new_flags.append(new_flag) 121 | return new_flags 122 | 123 | 124 | def FlagsForClangComplete(root): 125 | try: 126 | clang_complete_path = FindNearest(root, '.clang_complete') 127 | clang_complete_flags = open(clang_complete_path, 'r').read().splitlines() 128 | return clang_complete_flags 129 | except: 130 | return None 131 | 132 | def FlagsForInclude(root): 133 | try: 134 | include_path = FindNearest(root, 'include') 135 | flags = [] 136 | for dirroot, dirnames, filenames in os.walk(include_path): 137 | for dir_path in dirnames: 138 | real_path = os.path.join(dirroot, dir_path) 139 | flags = flags + ["-I" + real_path] 140 | return flags 141 | except: 142 | return None 143 | 144 | def FlagsForCompilationDatabase(root, filename): 145 | try: 146 | # Last argument of next function is the name of the build folder for 147 | # out of source projects 148 | compilation_db_path = FindNearest(root, 'compile_commands.json', 'build') 149 | compilation_db_dir = os.path.dirname(compilation_db_path) 150 | logging.info("Set compilation database directory to " + compilation_db_dir) 151 | compilation_db = ycm_core.CompilationDatabase(compilation_db_dir) 152 | if not compilation_db: 153 | logging.info("Compilation database file found but unable to load") 154 | return None 155 | compilation_info = GetCompilationInfoForFile(compilation_db, filename) 156 | if not compilation_info: 157 | logging.info("No compilation info for " + filename + " in compilation database") 158 | return None 159 | return MakeRelativePathsInFlagsAbsolute( 160 | compilation_info.compiler_flags_, 161 | compilation_info.compiler_working_dir_) 162 | except: 163 | return None 164 | 165 | def FlagsForFile(filename): 166 | root = os.path.realpath(filename); 167 | compilation_db_flags = FlagsForCompilationDatabase(root, filename) 168 | if compilation_db_flags: 169 | final_flags = compilation_db_flags 170 | else: 171 | final_flags = BASE_FLAGS 172 | clang_flags = FlagsForClangComplete(root) 173 | if clang_flags: 174 | final_flags = final_flags + clang_flags 175 | include_flags = FlagsForInclude(root) 176 | if include_flags: 177 | final_flags = final_flags + include_flags 178 | return { 179 | 'flags': final_flags, 180 | 'do_cache': True 181 | } 182 | -------------------------------------------------------------------------------- /plugins/youcompleteme/youcompleteme.bundles: -------------------------------------------------------------------------------- 1 | " EverVim YouCompleteMe Bundles 2 | Plug 'Valloric/YouCompleteMe', { 'do': 'python3 ./install.py' } 3 | Plug 'SirVer/ultisnips' 4 | Plug 'honza/vim-snippets' 5 | -------------------------------------------------------------------------------- /plugins/youcompleteme/youcompleteme.vim: -------------------------------------------------------------------------------- 1 | if count(g:evervim_bundle_groups, 'youcompleteme') 2 | let g:acp_enableAtStartup = 0 3 | 4 | " enable completion from tags 5 | let g:ycm_collect_identifiers_from_tags_files = 1 6 | 7 | " load ycm global config 8 | let g:ycm_global_ycm_extra_conf = $evervim_root . "/plugins/youcompleteme/ycm_global_conf.py" 9 | 10 | " YouCompleteMe keymap 11 | let g:ycm_key_detailed_diagnostics = 'yd' 12 | 13 | " YcmCompleter GoTo keymap 14 | nnoremap ygd :YcmCompleter GoToDefinition 15 | nnoremap ydc :YcmCompleter GoToDeclaration 16 | nnoremap ygt :YcmCompleter GoTo 17 | 18 | " Enable omni completion. 19 | autocmd FileType css setlocal omnifunc=csscomplete#CompleteCSS 20 | autocmd FileType html,markdown setlocal omnifunc=htmlcomplete#CompleteTags 21 | autocmd FileType javascript setlocal omnifunc=javascriptcomplete#CompleteJS 22 | autocmd FileType python setlocal omnifunc=pythoncomplete#Complete 23 | autocmd FileType xml setlocal omnifunc=xmlcomplete#CompleteTags 24 | autocmd FileType ruby setlocal omnifunc=rubycomplete#Complete 25 | autocmd FileType haskell setlocal omnifunc=necoghc#omnifunc 26 | 27 | " Haskell post write lint and check with ghcmod 28 | " $ `cabal install ghcmod` if missing and ensure 29 | " ~/.cabal/bin is in your $PATH. 30 | if !executable("ghcmod") 31 | autocmd BufWritePost *.hs GhcModCheckAndLintAsync 32 | endif 33 | 34 | " For snippet_complete marker. 35 | if !exists("g:evervim_no_conceal") 36 | if has('conceal') 37 | set conceallevel=2 concealcursor=i 38 | endif 39 | endif 40 | 41 | " Disable the neosnippet preview candidate window 42 | " When enabled, there can be too much visual noise 43 | " especially when splits are used. 44 | set completeopt-=preview 45 | 46 | " Enable markdown autocomplete and snippet 47 | " by removing it from default blacklist 48 | let g:ycm_filetype_blacklist = { 49 | \ 'tagbar' : 1, 50 | \ 'qf' : 1, 51 | \ 'notes' : 1, 52 | \ 'unite' : 1, 53 | \ 'text' : 1, 54 | \ 'vimwiki' : 1, 55 | \ 'pandoc' : 1, 56 | \ 'infolog' : 1, 57 | \ 'mail' : 1 58 | \} 59 | endif 60 | -------------------------------------------------------------------------------- /tools/ctags/ctags: -------------------------------------------------------------------------------- 1 | --recurse=yes 2 | --langmap=vim:+(vimrc) 3 | 4 | --exclude=.git 5 | --exclude=.svn 6 | --exclude=.hg 7 | --exclude=min 8 | --exclude=vendor 9 | --exclude=build* 10 | --exclude=\*.min.\* 11 | --exclude=\*.map 12 | --exclude=\*.swp 13 | --exclude=\*.bak 14 | --exclude=\*.pyc 15 | --exclude=\*.class 16 | --exclude=\*.sln 17 | --exclude=\*.Master 18 | --exclude=\*.csproj 19 | --exclude=\*.csproj.user 20 | --exclude=\*.cache 21 | --exclude=\*.dll 22 | --exclude=\*.pdb 23 | --exclude=db/* 24 | --exclude=log/* 25 | --exclude=tags 26 | --exclude=cscope.\* 27 | --exclude=\*.tar.\* 28 | --exclude=node_modules/* 29 | --exclude=bower_components/* 30 | --exclude=.coverage\* 31 | --exclude=coverage\* 32 | --exclude=dist/* 33 | --exclude=compiled/* 34 | --exclude=docs/* 35 | --exclude=platforms/* 36 | --exclude=test/* 37 | --exclude=__tests__/* 38 | 39 | --languages=-javascript 40 | 41 | --langdef=js 42 | --langmap=js:.js 43 | --langmap=js:+.jsx 44 | --langmap=js:+.es6 45 | --regex-js=/[ \t.]([A-Z][A-Z0-9._$]+)[ \t]*[=:][ \t]*([0-9"'`\[\{]|null)/\1/n,constant/ 46 | --regex-js=/\.([A-Za-z0-9._$]+)[ \t]*=[ \t]*\{/\1/o,object/ 47 | --regex-js=/['"]*([A-Za-z0-9_$]+)['"]*[ \t]*:[ \t]*\{/\1/o,object/ 48 | --regex-js=/([A-Za-z0-9._$]+)\[["']([A-Za-z0-9_$]+)["']\][ \t]*=[ \t]*\{/\1\.\2/o,object/ 49 | --regex-js=/([A-Za-z0-9._$]+)[ \t]*=[ \t]*\(function\(\)/\1/c,class/ 50 | --regex-js=/['"]*([A-Za-z0-9_$]+)['"]*:[ \t]*\(function\(\)/\1/c,class/ 51 | --regex-js=/class[ \t]+([A-Za-z0-9._$]+)[ \t]*/\1/c,class/ 52 | --regex-js=/([A-Za-z$][A-Za-z0-9_$()]+)[ \t]*=[ \t]*[Rr]eact.createClass[ \t]*\(/\1/c,class/ 53 | --regex-js=/([A-Z][A-Za-z0-9_$]+)[ \t]*=[ \t]*[A-Za-z0-9_$]*[ \t]*[{(]/\1/c,class/ 54 | --regex-js=/([A-Z][A-Za-z0-9_$]+)[ \t]*:[ \t]*[A-Za-z0-9_$]*[ \t]*[{(]/\1/c,class/ 55 | --regex-js=/([A-Za-z$][A-Za-z0-9_$]+)[ \t]*=[ \t]*function[ \t]*\(/\1/f,function/ 56 | --regex-js=/(function)*[ \t]*([A-Za-z$_][A-Za-z0-9_$]+)[ \t]*\([^)]*\)[ \t]*\{/\2/f,function/ 57 | --regex-js=/['"]*([A-Za-z$][A-Za-z0-9_$]+)['"]*:[ \t]*function[ \t]*\(/\1/m,method/ 58 | --regex-js=/([A-Za-z0-9_$]+)\[["']([A-Za-z0-9_$]+)["']\][ \t]*=[ \t]*function[ \t]*\(/\2/m,method/ 59 | --regex-js=/^[ \t]*export[ \t]+(var|let|const)[ \t]+([a-zA-Z0-9_]+)/\2/v,variables/ 60 | --regex-js=/^[ \t]*(export)?[ \t]*function[ \t]+([a-zA-Z0-9_]+)/\2/f,functions/ 61 | 62 | --langdef=typescript 63 | --langmap=typescript:.ts 64 | --langmap=typescript:+.tsx 65 | --regex-typescript=/^[ \t]*(export([ \t]+abstract)?)?[ \t]*class[ \t]+([a-zA-Z0-9_]+)/\3/c,classes/ 66 | --regex-typescript=/^[ \t]*(declare)?[ \t]*namespace[ \t]+([a-zA-Z0-9_]+)/\2/c,modules/ 67 | --regex-typescript=/^[ \t]*(export)?[ \t]*module[ \t]+([a-zA-Z0-9_]+)/\2/n,modules/ 68 | --regex-typescript=/^[ \t]*(export)?[ \t]*function[ \t]+([a-zA-Z0-9_]+)/\2/f,functions/ 69 | --regex-typescript=/^[ \t]*export[ \t]+(var|let|const)[ \t]+([a-zA-Z0-9_]+)/\2/v,variables/ 70 | --regex-typescript=/^[ \t]*(var|let|const)[ \t]+([a-zA-Z0-9_]+)[ \t]*=[ \t]*function[ \t]*\(\)/\2/v,varlambdas/ 71 | --regex-typescript=/^[ \t]*(export)?[ \t]*(public|protected|private)[ \t]+(static)?[ \t]*([a-zA-Z0-9_]+)/\4/m,members/ 72 | --regex-typescript=/^[ \t]*(export)?[ \t]+(static)?[ \t]*([a-zA-Z0-9_]+)(\()/\3/m,members/ 73 | --regex-typescript=/^[ \t]*(export)?[ \t]*interface[ \t]+([a-zA-Z0-9_]+)/\2/i,interfaces/ 74 | --regex-typescript=/^[ \t]*(export)?[ \t]*type[ \t]+([a-zA-Z0-9_]+)/\2/t,types/ 75 | --regex-typescript=/^[ \t]*(export)?[ \t]*enum[ \t]+([a-zA-Z0-9_]+)/\2/e,enums/ 76 | --regex-typescript=/^[ \t]*import[ \t]+([a-zA-Z0-9_]+)/\1/I,imports/ 77 | 78 | --langdef=less 79 | --langmap=less:.less 80 | --regex-less=/^[ \t&]*#([A-Za-z0-9_-]+)/\1/i,id,ids/ 81 | --regex-less=/^[ \t&]*\.([A-Za-z0-9_-]+)/\1/c,class,classes/ 82 | --regex-less=/^[ \t]*(([A-Za-z0-9_-]+[ \t\n,]+)+)\{/\1/t,tag,tags/ 83 | --regex-less=/^[ \t]*@media\s+([A-Za-z0-9_-]+)/\1/m,media,medias/ 84 | --regex-less=/^[ \t]*(@[A-Za-z0-9_-]+):/\1/v,variable,variables/ 85 | --regex-less=/\/\/[ \t]*(TODO)[ \t]*\:*(.*)/\1/i,TODO/ 86 | --regex-less=/\/\/[ \t]*(FIXME)[ \t]*\:*(.*)/\1/i,FIXME/ 87 | 88 | --langdef=scss 89 | --langmap=scss:.scss 90 | --regex-scss=/^[ \t]*@mixin ([A-Za-z0-9_-]+)/\1/m,mixin,mixins/ 91 | --regex-scss=/^[ \t]*\$([A-Za-z0-9_-]+)/\1/v,variable,variables/ 92 | --regex-scss=/^([A-Za-z0-9_-]*)*\.([A-Za-z0-9_-]+) *[,{]/\2/c,class,classes/ 93 | --regex-scss=/^[ \t&]+\.([A-Za-z0-9_-]+) *[,{]/\1/c,class,classes/ 94 | --regex-scss=/^(.*)*\#([A-Za-z0-9_-]+) *[,{]/\2/i,id,ids/ 95 | --regex-scss=/^[ \t&]*#([A-Za-z0-9_-]+)/\1/i,id,ids/ 96 | --regex-scss=/(^([A-Za-z0-9_-])*([A-Za-z0-9_-]+)) *[,|\{]/\1/t,tag,tags/ 97 | --regex-scss=/(^([^\/\/])*)[ \t]+([A-Za-z0-9_-]+)) *[,|\{]/\3/t,tag,tags/ 98 | --regex-scss=/(^(.*, *)([A-Za-z0-9_-]+)) *[,|\{]/\3/t,tag,tags/ 99 | --regex-scss=/(^[ \t]+([A-Za-z0-9_-]+)) *[,|\{]/\1/t,tag,tags/ 100 | --regex-scss=/^[ \t]*@media\s+([A-Za-z0-9_-]+)/\1/d,media,media/ 101 | --regex-scss=/\/\/[ \t]*(TODO)[ \t]*\:*(.*)/\1/i,TODO/ 102 | --regex-scss=/\/\/[ \t]*(FIXME)[ \t]*\:*(.*)/\1/i,FIXME/ 103 | 104 | --langdef=stylus 105 | --langmap=stylus:.styl 106 | --regex-stylus=/^[ \t]*([A-Za-z0-9_:-]+)$/\1/t,tag,tags/ 107 | 108 | --langdef=pug 109 | --langmap=pug:+.jade,pug:+.pug 110 | --regex-pug=/^[ \t]*[^"'()]*#*([.A-Za-z0-9_-]+)/\1/t,tag,tags/ 111 | --regex-pug=/^[ \t]*mixin [ \t]*([A-Za-z0-9_$]*)[ \t]*\(/\1/m,mixin/ 112 | --regex-pug=/\/\/-[ \t]*(TODO[ \t]+.+)/\1/i,TODO/ 113 | --regex-pug=/\/\/-[ \t]*(FIXME[ \t]+.+)/\1/i,FIXME/ 114 | 115 | --regex-html=/id="([A-Za-z0-9_-]+)"/\1/i,id,ids/ 116 | --regex-html=/class="([A-Za-z0-9_-]+)"/\1/c,class,classes/ 117 | 118 | --langdef=help 119 | --langmap=help:.txt 120 | --regex-help=/^([0-9]+\. [A-Z].*)\*$/\1/s,section/ 121 | --regex-help=/^DISABLED: ([A-Z][A-Za-z0-9 ]*).*\*.+\*$/\1/h,heading/ 122 | --regex-help=/^([A-Z][A-Za-z0-9 ]*)[ \t]+\*.+\*/\1/h,heading/ 123 | --regex-help=/[\*]([^* \t]+)[\*]$/\1/m,marker/ 124 | 125 | --langdef=Scala 126 | --langmap=Scala:.scala 127 | --regex-Scala=/^[ \t]*class[ \t]*([a-zA-Z0-9_]+)/\1/c,class/ 128 | --regex-Scala=/^[ \t]*object[ \t]*([a-zA-Z0-9_]+)/\1/o,object/ 129 | --regex-Scala=/^[ \t]*trait[ \t]*([a-zA-Z0-9_]+)/\1/t,trait/ 130 | --regex-Scala=/^[ \t]*case[ \t]*class[ \t]*([a-zA-Z0-9_]+)/\1/r,cclass/ 131 | --regex-Scala=/^[ \t]*abstract[ \t]*class[ \t]*([a-zA-Z0-9_]+)/\1/a,aclass/ 132 | --regex-Scala=/^[ \t]*((private|override)[ \t]+)*def[ \t]*([a-zA-Z0-9_=]+)[ \t]*.*[:=]/\1/m,method/ 133 | --regex-Scala=/[ \t]*val[ \t]*([a-zA-Z0-9_]+)[ \t]*[:=]/\1/V,value/ 134 | --regex-Scala=/[ \t]*var[ \t]*([a-zA-Z0-9_]+)[ \t]*[:=]/\1/v,variable/ 135 | --regex-Scala=/^[ \t]*type[ \t]*([a-zA-Z0-9_]+)[ \t]*[\[<>=]/\1/T,type/ 136 | --regex-Scala=/^[ \t]*import[ \t]*([a-zA-Z0-9_{}., \t=>]+$)/\1/i,include/ 137 | --regex-Scala=/^[ \t]*package[ \t]*([a-zA-Z0-9_.]+$)/\1/p,package/ 138 | 139 | --regex-c=/^(COMMENT: The reason we use [ \t] instead of \s is that \s was not working on OS X)/\1/X,XXX/ 140 | 141 | --regex-c=/^(COMMENT: Vim, C, Java, Javascript, Asm have defaults, so need no langdef, but we can extend them)/\1/X,XXX/ 142 | --regex-c=/^(COMMENT: It is possible to disable built-in tag detection if we want, piecewise, e.g.: ctags --extra=-q --c-kinds=-d)/\1/X,XXX/ 143 | 144 | --regex-vim=/^(COMMENT: ex-ctags already provides a 'map' tag)/\2/X,XXX/ 145 | --regex-vim=/[ \t]*(([nvxsoilc]*)(noremap|map))[ \t]+(<(buffer|silent|special|script|expr|unique)>[ \t]+)*([^ ]*).*/\6 (\1)/m,mapping/ 146 | --regex-vim=/^(COMMENT: python functions)/\1/X,XXX/ 147 | --regex-vim=/^[ \t]*def[ \t]+([a-zA-Z0-9_$]+)/\1/f,function/ 148 | 149 | --regex-vim=/^(COMMENT: htag matches any *bold* text, so I don't recommend displaying these, but they may still be useful for Ctrl-})/\1/X,XXX/ 150 | --regex-vim=/\*([A-Za-z0-9_\-]+)\*/\1/h,htag/ 151 | --regex-vim=/^(COMMENT: not needed use augroup)[ \t]*au[tocmd]*[ \t]+[^[ \t]]+[ \t]+([A-Za-z0-9]+)/\1/d,autocmd/ 152 | 153 | --langmap=c:+.jpp,c:+.uc 154 | --langmap=java:+.jpp,java:+.uc 155 | 156 | --langdef=opa 157 | --langmap=opa:+.opa 158 | --regex-opa=/^[ \t]*\[ \t]*(\<[a-zA-Z_$.][0-9a-zA-Z_$.]*\>)/\1/t,type/ 159 | --regex-opa=/^[ \t]*\[ \t]*(\<[a-zA-Z_$.][0-9a-zA-Z_$.]*\>)/\1/d,database/ 160 | --regex-opa=/^[ \t]*\[ \t]*(\<[a-zA-Z_$.][0-9a-zA-Z_$.]*\>)/\1/m,module/ 161 | --regex-opa=/^(\<[a-zA-Z_$.][0-9a-zA-Z_$.]*\>)[ \t]*=/\1/g,global/ 162 | --regex-opa=/^([ \t]*client|[ \t]*server|[ \t]*)[ \t]*\[ \t]*(\<[a-zA-Z_$.][0-9a-zA-Z_$.]*\>)/\2/f,function/ 163 | 164 | --langdef=man 165 | --langmap=man:+.~,man:+.man 166 | --regex-man=/^(COMMENT: I can't seem to get the ~ extension to match.)/\1/s,section/ 167 | --regex-man=/^([A-Z].*)/\1/s,section/ 168 | 169 | --langdef=uc 170 | --langmap=uc:+.jpp,uc:+.uc 171 | --regex-uc=/^(COMMENT: This is not working, although it does if we put it in the JS rules and set ft=javascript! O_o)/\1/X,XXX/ 172 | --regex-uc=/\[ \t]+([a-zA-Z_$][0-9a-zA-Z_$]*).*$/\1/s,state/ 173 | 174 | --langdef=coffee 175 | --langmap=coffee:.coffee 176 | --regex-coffee=/^(COMMENT: some of the .*s in below functions are over-optimistic, picking up anonymous callbacks with the wrong =)/\1/X,XXX/ 177 | --regex-coffee=/^class @?([a-zA-Z_$][0-9a-zA-Z_$]*)( extends [a-zA-Z_$][0-9a-zA-Z_$]*)?$/\1/c,class/ 178 | --regex-coffee=/^(COMMENT: The second case (this|@) is not an export when inside a method, it's just a property assignment. [ \t]*(@|this\.)([a-zA-Z_$][0-9a-zA-Z_$]*)[ \t]*=.*)$/\2/e,export/ 179 | --regex-coffee=/^[ \t]*(module\.exports\.)([a-zA-Z_$][0-9a-zA-Z_$]*)[ \t]*=.*$/\2/e,export/ 180 | --regex-coffee=/^[ \t]*(@[.]*|this\.)([a-zA-Z_$][0-9a-zA-Z_$]*)[ \t]*=.*$/\2/a,assigned/ 181 | --regex-coffee=/^(COMMENT: Choose one of the following rules, but not both, or you will generate duplicate tags! 1. all properties, 2. only function properties. TODO: We might be able to fudge the property regexp to ignore functions (with or without arguments) so we can keep both rules at once.)/\1/X,XXX/ 182 | --regex-coffee=/^DISABLED: [ \t]*([a-zA-Z_$][0-9a-zA-Z_$]*):[^:]/\1/p,property/ 183 | --regex-coffee=/^[ \t]*([a-zA-Z_$][0-9a-zA-Z_$]*):[ \t]*(\([^(]*\)[ \t]*|[ \t]*)[-=]>.*$/\1/f,function/ 184 | --regex-coffee=/^[ \t]*([a-zA-Z_$][0-9a-zA-Z_$.:]*)[ \t]*=.*[-=]>.*$/\1/f,function/ 185 | --regex-coffee=/^[ \t]*([a-zA-Z_$][0-9a-zA-Z_$]*)[ \t]*=[^->\n]*$/\1/v,variable/ 186 | 187 | --langmap=Asm:+.spp 188 | --regex-Asm=/^[^;]*\.macro[ \t]+([a-zA-Z_$][0-9a-zA-Z_$]*)/\1/m,macro/ 189 | --regex-Asm=/^[^;]*\.context[ \t]+([a-zA-Z_$][0-9a-zA-Z_$]*)/\1/c,context/ 190 | --regex-Asm=/^([A-Za-z0-9_]+):/\1/l,label/ 191 | 192 | --langdef=dosini 193 | --langmap=dosini:.ini 194 | --regex-dosini=/^\[([^]]*)\]/\1/s,section/ 195 | 196 | --langdef=haxe 197 | --langmap=haxe:.hx 198 | --regex-haxe=/^package[ \t]+([A-Za-z0-9_.]+)/\1/p,package/ 199 | --regex-haxe=/^[ \t]*[(@:macro|private|public|static|override|inline|dynamic)( \t)]*function[ \t]+([A-Za-z0-9_]+)/\1/f,function/ 200 | --regex-haxe=/^[ \t]*([private|public|static|protected|inline][ \t]*)+var[ \t]+([A-Za-z0-9_]+)/\2/v,variable/ 201 | --regex-haxe=/^[ \t]*package[ \t]*([A-Za-z0-9_]+)/\1/p,package/ 202 | --regex-haxe=/^[ \t]*(extern[ \t]*|@:native\([^)]*\)[ \t]*)*class[ \t]+([A-Za-z0-9_]+)[ \t]*[^\{]*/\2/c,class/ 203 | --regex-haxe=/^[ \t]*(extern[ \t]+)?interface[ \t]+([A-Za-z0-9_]+)/\2/i,interface/ 204 | --regex-haxe=/^[ \t]*typedef[ \t]+([A-Za-z0-9_]+)/\1/t,typedef/ 205 | --regex-haxe=/^[ \t]*enum[ \t]+([A-Za-z0-9_]+)/\1/t,typedef/ 206 | --regex-haxe=/^[ \t]*([A-Za-z0-9_]+)(;|\([^)]*:[^)]*\))/\1/t,enum_field/ 207 | 208 | --langdef=haxe-sws 209 | --langmap=haxe-sws:.hx.sws 210 | --regex-haxe-sws=/^package[ \t]+([A-Za-z0-9_.]+)/\1/p,package/ 211 | --regex-haxe-sws=/^[ \t]*[(@:macro|private|public|static|override|inline|dynamic)( \t)]*function[ \t]+([A-Za-z0-9_]+)/\1/f,function/ 212 | --regex-haxe-sws=/^[ \t]*([private|public|static|protected|inline][ \t]*)+var[ \t]+([A-Za-z0-9_]+)/\2/v,variable/ 213 | --regex-haxe-sws=/^[ \t]*package[ \t]*([A-Za-z0-9_]+)/\1/p,package/ 214 | --regex-haxe-sws=/^[ \t]*(extern[ \t]*|@:native\([^)]*\)[ \t]*)*class[ \t]+([A-Za-z0-9_]+)[ \t]*[^\{]*/\2/c,class/ 215 | --regex-haxe-sws=/^[ \t]*(extern[ \t]+)?interface[ \t]+([A-Za-z0-9_]+)/\2/i,interface/ 216 | --regex-haxe-sws=/^[ \t]*typedef[ \t]+([A-Za-z0-9_]+)/\1/t,typedef/ 217 | --regex-haxe-sws=/^[ \t]*enum[ \t]+([A-Za-z0-9_]+)/\1/t,typedef/ 218 | --regex-haxe-sws=/^[ \t]*([A-Za-z0-9_]+)(;|\([^)]*:[^)]*\))/\1/t,enum_field/ 219 | 220 | --langdef=joeygrammar 221 | --langmap=joeygrammar:.grm 222 | --regex-joeygrammar=/^[ \t]*([A-Za-z0-9_$@]*)[ \t]*=/\1/r,rule/ 223 | 224 | --langdef=haskell 225 | --langmap=haskell:.hs 226 | --regex-haskell=/^(COMMENT: matching = may miss functions declared with pattern matching, however those will tend to throw up multiple results which will be annoying. We could seek :: but these are optional - the favourite probably depends on the style of the file you are editing.)/\1/X,XXX/ 227 | --regex-haskell=/^([a-zA-Z_][a-zA-Z0-9_]*)[ \t]*::.*/\1/s,signature/ 228 | --regex-haskell=/^(WARNING: Patterns can produce multiple entries, and this regexp also accidentally catches data and type lines too!)/\1/X,XXX/ 229 | --regex-haskell=/^data ([a-zA-Z_][a-zA-Z0-9_]*)/\1/d,data/ 230 | --regex-haskell=/^type ([a-zA-Z_][a-zA-Z0-9_]*)/\1/t,type/ 231 | --regex-haskell=/^([a-zA-Z_][a-zA-Z0-9_]*)[ \t]*=.*/\1/f,function/ 232 | --regex-haskell=/^([a-zA-Z_][a-zA-Z0-9_]*)[ \t]+[^=:].*=/\1/p,pattern/ 233 | --regex-haskell=/^(COMMENT: Argh, we could just go for signature and other (anything with =)!)/\1/X,XXX/ 234 | --regex-haskell=/^DISABLED: ([a-zA-Z_][a-zA-Z0-9_]*)[ \t]+[^=:].*=/\1/d,definition/ 235 | --regex-haskell=/^(COMMENT: Probably what we really want is one entry (the top one) instead of multiple pattern entries.)/\1/X,XXX/ 236 | 237 | --langdef=mkd 238 | --langmap=mkd:.md 239 | --regex-mkd=/^(#[^#].*)/\1/1,level1/ 240 | --regex-mkd=/^(##[^#].*)/\1/2,level2/ 241 | --regex-mkd=/^(###[^#].{0,19})/\1/3,level3/ 242 | --regex-mkd=/^(=[^=].*)/\1/1,level1/ 243 | --regex-mkd=/^(==[^=].*)/\1/2,level2/ 244 | --regex-mkd=/^(===[^=].{0,19})/\1/3,level3/ 245 | 246 | --langdef=clojure 247 | --langmap=clojure:.clj 248 | --regex-clojure=/\([ \t]*create-ns[ \t]+([-[:alnum:]*+!_:\/.?]+)/\1/n,namespace/ 249 | --regex-clojure=/\([ \t]*def[ \t]+([-[:alnum:]*+!_:\/.?]+)/\1/d,definition/ 250 | --regex-clojure=/\([ \t]*defn-?[ \t]+(\^[-[:alnum:]*+!_:\/.?]+[ \t]+)?([-[:alnum:]*+!_:\/.?]+)/\2/f,function/ 251 | --regex-clojure=/\([ \t]*defmacro[ \t]+([-[:alnum:]*+!_:\/.?]+)/\1/m,macro/ 252 | --regex-clojure=/\([ \t]*defroutes[ \t]+([-[:alnum:]*+!_:\/.?]+)/\1/m,macro/ 253 | --regex-clojure=/\([ \t]*definline[ \t]+([-[:alnum:]*+!_:\/.?]+)/\1/i,inline/ 254 | --regex-clojure=/\([ \t]*defmulti[ \t]+([-[:alnum:]*+!_:\/.?]+)/\1/a,multimethod definition/ 255 | --regex-clojure=/\([ \t]*defmethod[ \t]+([-[:alnum:]*+!_:\/.?]+)/\1/b,multimethod instance/ 256 | --regex-clojure=/\([ \t]*defonce[ \t]+([-[:alnum:]*+!_:\/.?]+)/\1/c,definition (once)/ 257 | --regex-clojure=/\([ \t]*defstruct[ \t]+([-[:alnum:]*+!_:\/.?]+)/\1/s,struct/ 258 | --regex-clojure=/\([ \t]*intern[ \t]+([-[:alnum:]*+!_:\/.?]+)/\1/v,intern/ 259 | --regex-clojure=/\([ \t]*ns[ \t]+([-[:alnum:]*+!_:\/.?]+)/\1/n,namespace/ 260 | 261 | --regex-ruby=/.*alias(_method)?[[:space:]]+:([[:alnum:]_=!?]+),?[[:space:]]+:([[:alnum:]_=!]+)/\2/f,function/ 262 | --regex-ruby=/(^|[:;])[ \t]*([A-Z][[:alnum:]_]+) *=/\2/c,class,constant/ 263 | --regex-ruby=/(^|;)[ \t]*(has_many|belongs_to|has_one|has_and_belongs_to_many)\(? *:([[:alnum:]_]+)/\3/f,function,association/ 264 | --regex-ruby=/(^|;)[ \t]*(named_)?scope\(? *:([[:alnum:]_]+)/\3/f,function,named_scope/ 265 | --regex-ruby=/(^|;)[ \t]*expose\(? *:([[:alnum:]_]+)/\2/f,function,exposure/ 266 | --regex-ruby=/(^|;)[ \t]*event\(? *:([[:alnum:]_]+)/\2/f,function,aasm_event/ 267 | --regex-ruby=/(^|;)[ \t]*event\(? *:([[:alnum:]_]+)/\2!/f,function,aasm_event/ 268 | --regex-ruby=/(^|;)[ \t]*event\(? *:([[:alnum:]_]+)/\2?/f,function,aasm_event/ 269 | 270 | --langmap=Ruby:+(Rakefile) 271 | 272 | --langmap=C++:+.mm 273 | 274 | --langdef=golang 275 | --langmap=golang:.go 276 | --regex-golang=/func([ \t]+\([^)]+\))?[ \t]+([a-zA-Z0-9_]+)/\2/d,func/ 277 | --regex-golang=/var[ \t]+([a-zA-Z_][a-zA-Z0-9_]+)/\1/d,var/ 278 | --regex-golang=/type[ \t]+([a-zA-Z_][a-zA-Z0-9_]+)/\1/d,type/ 279 | 280 | --langdef=Rust 281 | --langmap=Rust:.rs 282 | --regex-Rust=/^[ \t]*(#\[[^\]]\][ \t]*)*(pub[ \t]+)?(extern[ \t]+)?("[^"]+"[ \t]+)?(unsafe[ \t]+)?fn[ \t]+([a-zA-Z0-9_]+)/\6/f,functions,function definitions/ 283 | --regex-Rust=/^[ \t]*(pub[ \t]+)?type[ \t]+([a-zA-Z0-9_]+)/\2/T,types,type definitions/ 284 | --regex-Rust=/^[ \t]*(pub[ \t]+)?enum[ \t]+([a-zA-Z0-9_]+)/\2/g,enum,enumeration names/ 285 | --regex-Rust=/^[ \t]*(pub[ \t]+)?struct[ \t]+([a-zA-Z0-9_]+)/\2/s,structure names/ 286 | --regex-Rust=/^[ \t]*(pub[ \t]+)?mod[ \t]+([a-zA-Z0-9_]+)/\2/m,modules,module names/ 287 | --regex-Rust=/^[ \t]*(pub[ \t]+)?static[ \t]+([a-zA-Z0-9_]+)/\2/c,consts,static constants/ 288 | --regex-Rust=/^[ \t]*(pub[ \t]+)?trait[ \t]+([a-zA-Z0-9_]+)/\2/t,traits,traits/ 289 | --regex-Rust=/^[ \t]*(pub[ \t]+)?impl([ \t\n]*<[^>]*>)?[ \t]+(([a-zA-Z0-9_:]+)[ \t]*(<[^>]*>)?[ \t]+(for)[ \t]+)?([a-zA-Z0-9_]+)/\4 \6 \7/i,impls,trait implementations/ 290 | --regex-Rust=/^[ \t]*macro_rules![ \t]+([a-zA-Z0-9_]+)/\1/d,macros,macro definitions/ 291 | 292 | --langdef=elm 293 | --langmap=elm:.elm 294 | --regex-elm=/^module[ \t]*([A-Z][a-zA-Z0-9'_.]*)/\1/m,module/ 295 | --regex-elm=/^type[ \t]*([A-Z][a-zA-Z0-9'_]*)./\1/t,type/ 296 | --regex-elm=/^([a-z_][a-zA-Z0-9'_]*).*=/\1/v,function/ 297 | 298 | --langdef=text 299 | --langmap=text:.txt 300 | --regex-text=/(第{0,1}(零|一|二|三|四|五|六|七|八|九|十|百|千|万|[0-9]){0,10}(章|回|节|讲|卷|篇|集).{0,50}\s)/\1/C,ChineseChapter/ 301 | --regex-text=/(([Cc]hapter|[Ss]ection)\s{0,3}[0-9]{1,3}.{0,50}\s)/\1/E,EnglishChapter/ 302 | -------------------------------------------------------------------------------- /tools/ctags/markdown2ctags.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python2 2 | 3 | # Copyright (C) 2013 John Szakmeister 4 | # All rights reserved. 5 | # 6 | # This software is licensed as described in the file LICENSE.txt, which 7 | # you should have received as part of this distribution. 8 | 9 | import sys 10 | import re 11 | 12 | 13 | __version__ = '0.1.3' 14 | 15 | 16 | class ScriptError(Exception): 17 | pass 18 | 19 | 20 | def ctagNameEscape(str): 21 | return re.sub('[\t\r\n]+', ' ', str) 22 | 23 | 24 | def ctagSearchEscape(str): 25 | str = str.replace('\t', r'\t') 26 | str = str.replace('\r', r'\r') 27 | str = str.replace('\n', r'\n') 28 | str = str.replace('\\', r'\\') 29 | return str 30 | 31 | 32 | class Tag(object): 33 | def __init__(self, tagName, tagFile, tagAddress): 34 | self.tagName = tagName 35 | self.tagFile = tagFile 36 | self.tagAddress = tagAddress 37 | self.fields = [] 38 | 39 | def addField(self, type, value=None): 40 | if type == 'kind': 41 | type = None 42 | self.fields.append((type, value or "")) 43 | 44 | def _formatFields(self): 45 | formattedFields = [] 46 | for name, value in self.fields: 47 | if name: 48 | s = '%s:%s' % (name, value or "") 49 | else: 50 | s = str(value) 51 | formattedFields.append(s) 52 | return '\t'.join(formattedFields) 53 | 54 | def __str__(self): 55 | return '%s\t%s\t%s;"\t%s' % ( 56 | self.tagName, self.tagFile, self.tagAddress, 57 | self._formatFields()) 58 | 59 | def __repr__(self): 60 | return "" % ( 61 | self.tagName, self.tagFile, self.tagAddress, 62 | self._formatFields().replace('\t', ' ')) 63 | 64 | def __cmp__(self, other): 65 | return cmp(str(self), str(other)) 66 | 67 | @staticmethod 68 | def section(section): 69 | tagName = ctagNameEscape(section.name) 70 | tagAddress = '/^%s$/' % ctagSearchEscape(section.line) 71 | t = Tag(tagName, section.filename, tagAddress) 72 | t.addField('kind', 's') 73 | t.addField('line', section.lineNumber) 74 | 75 | parents = [] 76 | p = section.parent 77 | while p is not None: 78 | parents.append(ctagNameEscape(p.name)) 79 | p = p.parent 80 | parents.reverse() 81 | 82 | if parents: 83 | t.addField('section', '|'.join(parents)) 84 | 85 | return t 86 | 87 | 88 | class Section(object): 89 | def __init__(self, level, name, line, lineNumber, filename, parent=None): 90 | self.level = level 91 | self.name = name 92 | self.line = line 93 | self.lineNumber = lineNumber 94 | self.filename = filename 95 | self.parent = parent 96 | 97 | def __repr__(self): 98 | return '
    ' % (self.name, self.level, self.lineNumber) 99 | 100 | 101 | def popSections(sections, level): 102 | while sections: 103 | s = sections.pop() 104 | if s and s.level < level: 105 | sections.append(s) 106 | return 107 | 108 | 109 | atxHeadingRe = re.compile(r'^(#+)\s+(.*?)(?:\s+#+)?\s*$') 110 | settextHeadingRe = re.compile(r'^[-=]+$') 111 | settextSubjectRe = re.compile(r'^[^\s]+.*$') 112 | 113 | 114 | def findSections(filename, lines): 115 | sections = [] 116 | inCodeBlock = False 117 | 118 | previousSections = [] 119 | 120 | for i, line in enumerate(lines): 121 | # Skip GitHub Markdown style code blocks. 122 | if line.startswith("```"): 123 | inCodeBlock = not inCodeBlock 124 | continue 125 | 126 | if inCodeBlock: 127 | continue 128 | 129 | m = atxHeadingRe.match(line) 130 | if m: 131 | level = len(m.group(1)) 132 | name = m.group(2) 133 | 134 | popSections(previousSections, level) 135 | if previousSections: 136 | parent = previousSections[-1] 137 | else: 138 | parent = None 139 | lineNumber = i + 1 140 | 141 | s = Section(level, name, line, lineNumber, filename, parent) 142 | previousSections.append(s) 143 | sections.append(s) 144 | else: 145 | m = settextHeadingRe.match(line) 146 | if i and m: 147 | if not settextSubjectRe.match(lines[i - 1]): 148 | continue 149 | 150 | name = lines[i-1].strip() 151 | 152 | if line[0] == '=': 153 | level = 1 154 | else: 155 | level = 2 156 | 157 | popSections(previousSections, level) 158 | if previousSections: 159 | parent = previousSections[-1] 160 | else: 161 | parent = None 162 | lineNumber = i 163 | 164 | s = Section(level, name, lines[i-1], lineNumber, 165 | filename, parent) 166 | previousSections.append(s) 167 | sections.append(s) 168 | 169 | return sections 170 | 171 | 172 | def sectionsToTags(sections): 173 | tags = [] 174 | 175 | for section in sections: 176 | tags.append(Tag.section(section)) 177 | 178 | return tags 179 | 180 | 181 | def genTagsFile(output, tags, sort): 182 | if sort == "yes": 183 | tags = sorted(tags) 184 | sortedLine = '!_TAG_FILE_SORTED\t1\n' 185 | elif sort == "foldcase": 186 | tags = sorted(tags, key=lambda x: str(x).lower()) 187 | sortedLine = '!_TAG_FILE_SORTED\t2\n' 188 | else: 189 | sortedLine = '!_TAG_FILE_SORTED\t0\n' 190 | 191 | output.write('!_TAG_FILE_FORMAT\t2\n') 192 | output.write(sortedLine) 193 | 194 | for t in tags: 195 | output.write(str(t)) 196 | output.write('\n') 197 | 198 | 199 | def main(): 200 | from optparse import OptionParser 201 | 202 | parser = OptionParser(usage = "usage: %prog [options] file(s)", 203 | version = __version__) 204 | parser.add_option( 205 | "-f", "--file", metavar = "FILE", dest = "tagfile", 206 | default = "tags", 207 | help = 'Write tags into FILE (default: "tags"). Use "-" to write ' 208 | 'tags to stdout.') 209 | parser.add_option( 210 | "", "--sort", metavar="[yes|foldcase|no]", dest = "sort", 211 | choices = ["yes", "no", "foldcase"], 212 | default = "yes", 213 | help = 'Produce sorted output. Acceptable values are "yes", ' 214 | '"no", and "foldcase". Default is "yes".') 215 | 216 | options, args = parser.parse_args() 217 | 218 | if options.tagfile == '-': 219 | output = sys.stdout 220 | else: 221 | output = open(options.tagfile, 'wb') 222 | 223 | for filename in args: 224 | f = open(filename, 'rb') 225 | lines = f.read().splitlines() 226 | f.close() 227 | sections = findSections(filename, lines) 228 | 229 | genTagsFile(output, sectionsToTags(sections), sort=options.sort) 230 | 231 | output.flush() 232 | output.close() 233 | 234 | if __name__ == '__main__': 235 | try: 236 | main() 237 | except IOError as e: 238 | import errno 239 | if e.errno == errno.EPIPE: 240 | # Exit saying we got SIGPIPE. 241 | sys.exit(141) 242 | raise 243 | except ScriptError as e: 244 | print >>sys.stderr, "ERROR: %s" % str(e) 245 | sys.exit(1) 246 | -------------------------------------------------------------------------------- /vimrc: -------------------------------------------------------------------------------- 1 | " Modeline and Notes { 2 | " EverVim is a modern & powerful vim distribution 3 | " Repo URL: https://github.com/LER0ever/EverVim 4 | " Made by [LER0ever](https://github.com/LER0ever) 5 | " Licensed under 6 | " * Apache License, Version 2.0, ([LICENSE-APACHE](LICENSE.md) or http://www.apache.org/licenses/LICENSE-2.0) 7 | " } 8 | 9 | " EverVim Configuration Root Directory 10 | if empty($evervim_root) 11 | let $evervim_root = "~/.EverVim" 12 | endif 13 | 14 | " Core Config 15 | source $evervim_root/core/core.vim 16 | --------------------------------------------------------------------------------