this repo has no description
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Reinstall update

+876 -199
+8
.projections.json
··· 1 + { 2 + "nvim/init.vim": { 3 + "type": "nvim" 4 + }, 5 + "nvim/autoload/*.vim": { 6 + "type": "autoload" 7 + } 8 + }
+43 -33
Brewfile
··· 1 1 tap "burntsushi/ripgrep", "https://github.com/BurntSushi/ripgrep.git" 2 2 tap "caskroom/cask" 3 - tap "caskroom/fonts" 4 3 tap "cristianoliveira/tap" 5 4 tap "esphen/wsta", "https://github.com/esphen/wsta.git" 6 5 tap "homebrew/bundle" ··· 8 7 tap "homebrew/dupes" 9 8 tap "homebrew/science" 10 9 tap "homebrew/services" 10 + tap "joshuaclayton/formulae" 11 + tap "minio/stable" 11 12 tap "neovim/neovim" 12 13 tap "subosito/packages" 13 14 tap "universal-ctags/universal-ctags" 15 + tap "zaquestion/tap" 14 16 cask "xquartz" 15 - brew "gdbm" 17 + brew "abduco" 16 18 brew "openssl" 17 19 brew "sqlite" 18 - brew "python3" 19 20 brew "asciinema" 20 21 brew "aspell" 21 22 brew "autoconf" 22 23 brew "automake" 23 24 brew "awscli" 25 + brew "bench" 24 26 brew "cctools" 25 - brew "python" 26 27 brew "certbot" 27 28 brew "gmp" 28 - brew "mpfr" 29 + brew "influxdb" 30 + brew "chronograf" 29 31 brew "clang-format" 30 32 brew "cmake" 31 - brew "coq" 32 33 brew "coreutils" 34 + brew "cowsay" 33 35 brew "curl" 34 36 brew "diff-so-fancy" 35 37 brew "direnv" 36 38 brew "libgpg-error" 37 39 brew "libgcrypt" 38 40 brew "dnsmasq", restart_service: true 39 - brew "doxygen" 40 - brew "pcre" 41 41 brew "editorconfig" 42 - brew "elasticsearch" 43 42 brew "exiftool" 43 + brew "fd" 44 44 brew "lame" 45 - brew "git" 46 45 brew "x264" 47 46 brew "xvid" 48 47 brew "ffmpeg" 48 + brew "figlet" 49 49 brew "pcre2" 50 50 brew "fish" 51 51 brew "freetype" 52 52 brew "fontconfig" 53 + brew "fortune" 53 54 brew "fping" 55 + brew "fswatch" 56 + brew "fzf" 57 + brew "fzy" 58 + brew "gettext" 59 + brew "gawk" 54 60 brew "gd" 55 61 brew "gdrive" 56 - brew "gettext" 57 62 brew "ghostscript" 58 63 brew "gifsicle" 64 + brew "git" 59 65 brew "git-hooks" 60 66 brew "git-imerge" 61 67 brew "git-integration" 62 68 brew "git-lfs" 63 69 brew "libffi" 64 - brew "libtasn1" 65 70 brew "libunistring" 66 - brew "nettle" 67 - brew "gnupg" 71 + brew "gnupg", link: false 68 72 brew "git-secret" 69 73 brew "git-test" 70 74 brew "glib" 71 - brew "lua" 72 75 brew "gnuplot" 76 + brew "gource" 77 + brew "grafana" 73 78 brew "libtool" 74 79 brew "graphviz" 75 80 brew "grep", args: ["with-default-names"] 76 81 brew "hadolint" 82 + brew "highlight" 77 83 brew "htop" 78 84 brew "httpie" 79 85 brew "hub" 80 - brew "hugo" 81 86 brew "imagemagick" 82 87 brew "isl" 83 88 brew "jemalloc" 89 + brew "jid" 84 90 brew "jpegoptim" 85 - brew "oniguruma" 86 91 brew "jq" 87 - brew "kotlin" 92 + brew "keychain" 93 + brew "kubernetes-cli" 88 94 brew "libevent" 89 95 brew "libssh2" 90 96 brew "libgit2" ··· 93 99 brew "libuv" 94 100 brew "libvterm" 95 101 brew "lnav" 96 - brew "makedepend" 97 102 brew "mawk" 103 + brew "minio-mc" 104 + brew "mitmproxy" 98 105 brew "mmv" 99 - brew "mobile-shell" 100 106 brew "moreutils" 107 + brew "mosh" 101 108 brew "msgpack" 102 109 brew "ncdu" 103 110 brew "ncurses" 104 - brew "unibilium" 105 - brew "neovim" 111 + brew "neovim", args: ["HEAD"] 106 112 brew "node" 107 - brew "nomad" 108 113 brew "optipng" 109 - brew "packer" 110 114 brew "pandoc" 115 + brew "par" 111 116 brew "pgcli" 112 117 brew "phantomjs" 113 118 brew "pkg-config" 119 + brew "postgresql", restart_service: true 114 120 brew "postgis" 115 121 brew "potrace" 116 122 brew "pv" 123 + brew "pyinvoke" 117 124 brew "rclone" 118 125 brew "redis" 119 126 brew "rhash" ··· 124 131 brew "telegraf" 125 132 brew "terminal-notifier" 126 133 brew "thefuck" 134 + brew "tig" 127 135 brew "tmux" 136 + brew "toilet" 128 137 brew "tree" 129 - brew "vault" 138 + brew "vim" 130 139 brew "watchman" 131 - brew "weechat", args: ["with-aspell", "with-curl", "with-lua", "with-perl", "with-python", "with-ruby"] 140 + brew "weechat", args: ["with-aspell", "with-curl", "with-lua", "with-perl", "with-python@2", "with-ruby"] 132 141 brew "wget" 133 142 brew "wrk" 134 143 brew "wxmac" 144 + brew "xmlstarlet" 145 + brew "xsv" 135 146 brew "yarn" 136 147 brew "youtube-dl" 137 148 brew "zopfli" 138 149 brew "burntsushi/ripgrep/ripgrep-bin" 139 - brew "universal-ctags/universal-ctags/universal-ctags", args: ["HEAD"] 150 + brew "minio/stable/minio" 151 + brew "universal-ctags/universal-ctags/universal-ctags", args: ["HEAD", "with-libyaml"] 152 + brew "zaquestion/tap/lab" 140 153 cask "appcleaner" 141 154 cask "basictex" 142 155 cask "battle-net" 143 156 cask "caffeine" 144 157 cask "dash" 145 158 cask "docker" 146 - cask "gog-galaxy" 147 - cask "google-chrome" 148 159 cask "gpgtools" 149 160 cask "iterm2" 161 + cask "julia" 150 162 cask "karabiner-elements" 151 163 cask "keycastr" 164 + cask "ngrok" 152 165 cask "openemu" 153 - cask "postman" 154 - cask "puppet-agent" 155 166 cask "qnapi" 156 167 cask "sketch" 157 - cask "skype" 158 168 cask "spotify" 159 169 cask "steam" 160 170 cask "the-unarchiver" 161 171 cask "transmission" 172 + cask "unetbootin" 162 173 cask "vagrant" 163 174 cask "virtualbox" 164 175 cask "vlc" 165 - cask "wkhtmltopdf"
+1 -1
Makefile
··· 5 5 6 6 export PWD = $(shell pwd) 7 7 8 - TARGETS ?= fish bin nvim git ruby utils iterm2 8 + TARGETS ?= fish bin nvim git ruby utils iterm2 ctags 9 9 10 10 all: $(TARGETS) 11 11
+5
bin/elixir-ls
··· 1 + #!/bin/sh 2 + 3 + ELIXIR_LS_PATH="${ELIXIR_LS_PATH:-"$HOME/.local/share/applications/lsp"}" 4 + 5 + exec "$ELIXIR_LS_PATH/language_server.sh"
+1 -1
bin/git-cleanup
··· 2 2 3 3 set -e 4 4 5 - git branch --merged master | grep -v '^\*' | grep -v master | xargs -n1 git branch -D 5 + git branch --merged master | grep -v '^\*' | grep -v master | xargs -n1 git branch -d
+18
bin/pg_graph
··· 1 + #!/bin/sh 2 + 3 + psql -1qXt "$@" <<EOF 4 + \timing off 5 + 6 + \echo 'Digraph F{' 7 + \echo 'ranksep=1.0; rankdir=LR;' 8 + 9 + SELECT 10 + '"' || tc.table_name || '"->"' || ccu.table_name || '" [label="' || tc.constraint_name || '"];' 11 + FROM 12 + information_schema.table_constraints AS tc 13 + LEFT JOIN information_schema.constraint_column_usage AS ccu 14 + ON ccu.constraint_name = tc.constraint_name 15 + WHERE constraint_type = 'FOREIGN KEY'; 16 + 17 + \echo '}' 18 + EOF
+327
bin/vim-profiler.py
··· 1 + #!/usr/bin/env python 2 + # -*- coding: utf-8 -*- 3 + # 4 + # vim-profiler - Utility script to profile (n)vim (e.g. startup) 5 + # Copyright © 2015 Benjamin Chrétien 6 + # 7 + # This program is free software: you can redistribute it and/or modify 8 + # it under the terms of the GNU General Public License as published by 9 + # the Free Software Foundation, either version 3 of the License, or 10 + # (at your option) any later version. 11 + # 12 + # This program is distributed in the hope that it will be useful, 13 + # but WITHOUT ANY WARRANTY; without even the implied warranty of 14 + # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 + # GNU General Public License for more details. 16 + # 17 + # You should have received a copy of the GNU General Public License 18 + # along with this program. If not, see <http://www.gnu.org/licenses/>. 19 + 20 + from __future__ import print_function 21 + 22 + import os 23 + import sys 24 + import subprocess 25 + import re 26 + import csv 27 + import operator 28 + import argparse 29 + import collections 30 + 31 + 32 + def to_list(cmd): 33 + if not isinstance(cmd, (list, tuple)): 34 + cmd = cmd.split(' ') 35 + return cmd 36 + 37 + 38 + def get_exe(cmd): 39 + # FIXME: this assumes that the first word is the executable 40 + return to_list(cmd)[0] 41 + 42 + 43 + def is_subdir(paths, subdir): 44 + # See: http://stackoverflow.com/a/18115684/1043187 45 + for path in paths: 46 + path = os.path.realpath(path) 47 + subdir = os.path.realpath(subdir) 48 + reldir = os.path.relpath(subdir, path) 49 + if not (reldir == os.pardir or reldir.startswith(os.pardir + os.sep)): 50 + return True 51 + return False 52 + 53 + 54 + def stdev(arr): 55 + """ 56 + Compute the standard deviation. 57 + """ 58 + if sys.version_info >= (3, 0): 59 + import statistics 60 + return statistics.pstdev(arr) 61 + else: 62 + # Dependency on NumPy 63 + try: 64 + import numpy 65 + return numpy.std(arr, axis=0) 66 + except ImportError: 67 + return 0. 68 + 69 + 70 + class StartupData(object): 71 + """ 72 + Data for (n)vim startup (timings etc.). 73 + """ 74 + def __init__(self, cmd, log_filename, check_system=False): 75 + super(StartupData, self).__init__() 76 + self.cmd = cmd 77 + self.log_filename = log_filename 78 + self.times = dict() 79 + self.system_dirs = ["/usr", "/usr/local"] 80 + self.generate(check_system) 81 + 82 + def generate(self, check_system=False): 83 + """ 84 + Generate startup data. 85 + """ 86 + self.__run_vim() 87 + try: 88 + self.__load_times(check_system) 89 + except RuntimeError: 90 + print("\nNo plugin found. Exiting.") 91 + sys.exit() 92 + 93 + if not self.times: 94 + sys.exit() 95 + 96 + def __guess_plugin_dir(self, log_txt): 97 + """ 98 + Try to guess the vim directory containing plugins. 99 + """ 100 + candidates = list() 101 + 102 + # Get common plugin dir if any 103 + vim_subdirs = "autoload|ftdetect|plugin|syntax" 104 + matches = re.findall("^\d+.\d+\s+\d+.\d+\s+\d+.\d+: " 105 + "sourcing (.+?)/(?:[^/]+/)(?:%s)/[^/]+" 106 + % vim_subdirs, log_txt, re.MULTILINE) 107 + for plugin_dir in matches: 108 + # Ignore system plugins 109 + if not is_subdir(self.system_dirs, plugin_dir): 110 + candidates.append(plugin_dir) 111 + 112 + if candidates: 113 + # FIXME: the directory containing vimrc could be returned as well 114 + return collections.Counter(candidates).most_common(1)[0][0] 115 + else: 116 + raise RuntimeError("no user plugin found") 117 + 118 + def __load_times(self, check_system=False): 119 + """ 120 + Load startup times for log file. 121 + """ 122 + # Load log file and process it 123 + print("Loading and processing logs...", end="") 124 + with open(self.log_filename, 'r') as log: 125 + log_txt = log.read() 126 + plugin_dir = "" 127 + 128 + # Try to guess the folder based on the logs themselves 129 + try: 130 + plugin_dir = self.__guess_plugin_dir(log_txt) 131 + matches = re.findall("^\d+.\d+\s+\d+.\d+\s+(\d+.\d+): " 132 + "sourcing %s/([^/]+)/" % plugin_dir, 133 + log_txt, re.MULTILINE) 134 + for res in matches: 135 + time = res[0] 136 + plugin = res[1] 137 + if plugin in self.times: 138 + self.times[plugin] += float(time) 139 + else: 140 + self.times[plugin] = float(time) 141 + # Catch exception if no plugin was found 142 + except RuntimeError as e: 143 + if not check_system: 144 + raise 145 + else: 146 + plugin_dir = "" 147 + 148 + if check_system: 149 + for d in self.system_dirs: 150 + matches = re.findall("^\d+.\d+\s+\d+.\d+\s+(\d+.\d+): " 151 + "sourcing %s/.+/([^/]+.vim)\n" % d, 152 + log_txt, re.MULTILINE) 153 + for res in matches: 154 + time = res[0] 155 + plugin = "*%s" % res[1] 156 + if plugin in self.times: 157 + self.times[plugin] += float(time) 158 + else: 159 + self.times[plugin] = float(time) 160 + 161 + print(" done.") 162 + if plugin_dir: 163 + print("Plugin directory: %s" % plugin_dir) 164 + else: 165 + print("No user plugin found.") 166 + if not self.times: 167 + print("No system plugin found.") 168 + 169 + def __run_vim(self): 170 + """ 171 + Run vim/nvim to generate startup logs. 172 + """ 173 + print("Running %s to generate startup logs..." % get_exe(self.cmd), 174 + end="") 175 + self.__clean_log() 176 + full_cmd = to_list(self.cmd) + ["--startuptime", self.log_filename, 177 + "-f", "-c", "q"] 178 + subprocess.call(full_cmd, shell=False) 179 + print(" done.") 180 + 181 + def __clean_log(self): 182 + """ 183 + Clean log file. 184 + """ 185 + if os.path.isfile(self.log_filename): 186 + os.remove(self.log_filename) 187 + 188 + def __del__(self): 189 + """ 190 + Destructor taking care of clean up. 191 + """ 192 + self.__clean_log() 193 + 194 + 195 + class StartupAnalyzer(object): 196 + """ 197 + Analyze startup times for (n)vim. 198 + """ 199 + def __init__(self, param): 200 + super(StartupAnalyzer, self).__init__() 201 + self.runs = param.runs 202 + self.cmd = param.cmd 203 + self.raw_data = [StartupData(self.cmd, "vim_%i.log" % (i+1), 204 + check_system=param.check_system) 205 + for i in range(self.runs)] 206 + self.data = self.process_data() 207 + 208 + def process_data(self): 209 + """ 210 + Merge startup times for each plugin. 211 + """ 212 + return {k: [d.times[k] for d in self.raw_data] 213 + for k in self.raw_data[0].times.keys()} 214 + 215 + def average_data(self): 216 + """ 217 + Return average times for each plugin. 218 + """ 219 + return {k: sum(v)/len(v) for k, v in self.data.items()} 220 + 221 + def stdev_data(self): 222 + """ 223 + Return standard deviation for each plugin. 224 + """ 225 + return {k: stdev(v) for k, v in self.data.items()} 226 + 227 + def plot(self): 228 + """ 229 + Plot startup data. 230 + """ 231 + import pylab 232 + 233 + print("Plotting result...", end="") 234 + avg_data = self.average_data() 235 + avg_data = self.__sort_data(avg_data, False) 236 + if len(self.raw_data) > 1: 237 + err = self.stdev_data() 238 + sorted_err = [err[k] for k in list(zip(*avg_data))[0]] 239 + else: 240 + sorted_err = None 241 + pylab.barh(range(len(avg_data)), list(zip(*avg_data))[1], 242 + xerr=sorted_err, align='center', alpha=0.4) 243 + pylab.yticks(range(len(avg_data)), list(zip(*avg_data))[0]) 244 + pylab.xlabel("Average startup time (ms)") 245 + pylab.ylabel("Plugins") 246 + pylab.show() 247 + print(" done.") 248 + 249 + def export(self, output_filename="result.csv"): 250 + """ 251 + Write sorted result to file. 252 + """ 253 + assert len(self.data) > 0 254 + print("Writing result to %s..." % output_filename, end="") 255 + with open(output_filename, 'w') as fp: 256 + writer = csv.writer(fp, delimiter='\t') 257 + # Compute average times 258 + avg_data = self.average_data() 259 + # Sort by average time 260 + for name, avg_time in self.__sort_data(avg_data): 261 + writer.writerow(["%.3f" % avg_time, name]) 262 + print(" done.") 263 + 264 + def print_summary(self, n): 265 + """ 266 + Print summary of startup times for plugins. 267 + """ 268 + title = "Top %i plugins slowing %s's startup" % (n, get_exe(self.cmd)) 269 + length = len(title) 270 + print(''.center(length, '=')) 271 + print(title) 272 + print(''.center(length, '=')) 273 + 274 + # Compute average times 275 + avg_data = self.average_data() 276 + # Sort by average time 277 + rank = 0 278 + for name, time in self.__sort_data(avg_data)[:n]: 279 + rank += 1 280 + print("%i\t%7.3f %s" % (rank, time, name)) 281 + 282 + print(''.center(length, '=')) 283 + 284 + @staticmethod 285 + def __sort_data(d, reverse=True): 286 + """ 287 + Sort data by decreasing time. 288 + """ 289 + return sorted(d.items(), key=operator.itemgetter(1), reverse=reverse) 290 + 291 + 292 + def main(): 293 + parser = argparse.ArgumentParser( 294 + description='Analyze startup times of vim/neovim plugins.') 295 + parser.add_argument("-o", dest="csv", type=str, 296 + help="Export result to a csv file") 297 + parser.add_argument("-p", dest="plot", action='store_true', 298 + help="Plot result as a bar chart") 299 + parser.add_argument("-s", dest="check_system", action='store_true', 300 + help="Consider system plugins as well (marked with *)") 301 + parser.add_argument("-n", dest="n", type=int, default=10, 302 + help="Number of plugins to list in the summary") 303 + parser.add_argument("-r", dest="runs", type=int, default=1, 304 + help="Number of runs (for average/standard deviation)") 305 + parser.add_argument(dest="cmd", nargs=argparse.REMAINDER, type=str, 306 + help="vim/neovim executable or command") 307 + 308 + # Parse CLI arguments 309 + args = parser.parse_args() 310 + output_filename = args.csv 311 + n = args.n 312 + 313 + # Command (default = vim) 314 + if args.cmd == []: 315 + args.cmd = "vim" 316 + 317 + # Run analysis 318 + analyzer = StartupAnalyzer(args) 319 + if n > 0: 320 + analyzer.print_summary(n) 321 + if output_filename is not None: 322 + analyzer.export(output_filename) 323 + if args.plot: 324 + analyzer.plot() 325 + 326 + if __name__ == "__main__": 327 + main()
+9
ctags/Makefile
··· 1 + PWD = $(shell pwd) 2 + 3 + install: 4 + $(LN) ${PWD} ${HOME}/.ctags.d 5 + 6 + clean: 7 + $(RM) ${HOME}/.ctags.d 8 + 9 + .PHONY: install clean
+5
ctags/excludes.ctags
··· 1 + --exclude=.git 2 + --exclude=log 3 + --exclude=tmp 4 + 5 + --fields=+l
+1
ctags/javascript.ctags
··· 1 + --exclude=node_modules
+1
ctags/rust.ctags
··· 1 + --exclude=target
+11 -19
fish/config.fish
··· 5 5 and source (eval "$argv" | psub) 6 6 end 7 7 8 - available lab; and alias git=lab 9 - enable direnv hook fish 8 + alias git=hub 9 + source (direnv hook fish | psub) 10 10 11 11 set fish_user_paths ~/Workspace/hauleth/dotfiles/bin \ 12 12 ~/.bin \ 13 13 ~/.cargo/bin \ 14 - ~/go/bin \ 15 14 ~/.mix \ 16 15 /usr/local/opt/gettext/bin 17 16 18 - if status --is-interactive 19 - if not functions -q fundle 20 - eval (curl -sfL https://git.io/fundle-install) 21 - end 22 - 23 - fundle plugin 'tuvistavie/fish-completion-helpers' 24 - fundle plugin 'hauleth/agnoster' 25 - fundle plugin 'tuvistavie/fish-fastdir' 26 - fundle plugin 'edc/bass' 27 - fundle plugin 'oh-my-fish/plugin-argu' 28 - fundle plugin 'oh-my-fish/plugin-expand' 29 - fundle plugin 'tuvistavie/fish-asdf' 30 - fundle plugin 'tuvistavie/fish-ssh-agent' 17 + if not functions -q fundle 18 + eval (curl -sfL https://git.io/fundle-install) 19 + end 31 20 32 - fundle init 21 + fundle plugin 'hauleth/agnoster' 22 + fundle plugin 'tuvistavie/fish-fastdir' 23 + fundle plugin 'tuvistavie/fish-asdf' 33 24 34 - enable jump shell fish 25 + fundle init 35 26 36 - ssh-add -K ^/dev/null & 27 + if status --is-interactive 28 + keychain --eval --quiet -Q id_ed25519 | source 37 29 end
+3 -1
git/config
··· 1 1 [core] 2 - pager = "diff-so-fancy | less --tabs=4 -RFX" 2 + pager = "/usr/local/share/git-core/contrib/diff-highlight/diff-highlight | less --tabs=4 -RFX" 3 3 4 4 [alias] 5 5 ai = add -i ··· 20 20 ag = grep 21 21 rg = grep 22 22 ver = tag --sort=version:refname 23 + skip = update-index --skip-worktree 24 + unskip = update-index --no-skip-worktree 23 25 24 26 [mergetool] 25 27 keepBackup = false
+1
git/ignore
··· 68 68 *.socket 69 69 .tool-versions-e 70 70 # }}} 71 + .elixir_ls
+26 -10
iterm2/com.googlecode.iterm2.plist
··· 640 640 <true/> 641 641 <key>LoadPrefsFromCustomFolder</key> 642 642 <true/> 643 + <key>NSFontPanelAttributes</key> 644 + <string>1, 0</string> 643 645 <key>NSNavLastRootDirectory</key> 644 646 <string>~/Workspace/hauleth/dotfiles/iterm2</string> 645 647 <key>NSNavPanelExpandedSizeForOpenMode</key> ··· 659 661 gAKACoAN0xAJChEVGVdOUy5rZXlzoxITFIADgASABaMWFxiABoAHgAiACVpJZGVudGlm 660 662 aWVyVVdpZHRoVkhpZGRlblEwI0BowAAAAAAACNIhIiMkWiRjbGFzc25hbWVYJGNsYXNz 661 663 ZXNcTlNEaWN0aW9uYXJ5oiMlWE5TT2JqZWN00xAJCicrGaMSExSAA4AEgAWjLC0YgAuA 662 - DIAIgAlRMSNAdKGdsi0OVtIhIjM0Xk5TTXV0YWJsZUFycmF5ozM1JVdOU0FycmF5XxAP 664 + DIAIgAlRMSNAc7Gdsi0OVtIhIjM0Xk5TTXV0YWJsZUFycmF5ozM1JVdOU0FycmF5XxAP 663 665 TlNLZXllZEFyY2hpdmVy0Tg5VUFycmF5gAEACAARABoAIwAtADIANwBGAEwAUQBcAGMA 664 666 ZgBoAGoAbABzAHsAfwCBAIMAhQCJAIsAjQCPAJEAnACiAKkAqwC0ALUAugDFAM4A2wDe 665 667 AOcA7gDyAPQA9gD4APwA/gEAAQIBBAEGAQ8BFAEjAScBLwFBAUQBSgAAAAAAAAIBAAAA ··· 676 678 <key>NSTableView Supports v2 KeyBingingTable</key> 677 679 <true/> 678 680 <key>NSWindow Frame NSFontPanel</key> 679 - <string>604 335 659 94 0 0 1440 900 </string> 681 + <string>516 260 659 77 0 0 1440 900 </string> 682 + <key>NSWindow Frame SUAutomaticUpdateAlert</key> 683 + <string>652 680 616 174 0 0 1920 1080 </string> 680 684 <key>NSWindow Frame SUUpdateAlert</key> 681 685 <string>-1270 516 620 392 -1920 0 1920 1080 </string> 682 686 <key>NSWindow Frame SessionsPreferences</key> 683 687 <string>269 126 606 469 0 0 1440 900 </string> 684 688 <key>NSWindow Frame SharedPreferences</key> 685 - <string>1 398 770 429 0 0 1440 900 </string> 689 + <string>459 584 1018 447 0 0 1920 1080 </string> 686 690 <key>NSWindow Frame UKCrashReporter</key> 687 691 <string>99 316 592 584 0 0 1440 900 </string> 688 692 <key>NSWindow Frame com.apple.typography_panel_Hasklig-Regular</key> 689 693 <string>-1620 731 260 310 -1920 0 1920 1080 </string> 690 694 <key>NSWindow Frame iTerm Window 0</key> 691 - <string>529 424 650 476 0 0 1440 900 </string> 695 + <string>702 352 570 451 0 0 1920 1080 </string> 692 696 <key>NSWindow Frame iTerm Window 1</key> 693 - <string>625 420 665 476 0 0 1440 900 </string> 697 + <string>389 295 650 476 0 0 1440 900 </string> 694 698 <key>NSWindow Frame iTerm Window 2</key> 695 - <string>815 421 745 494 0 0 1920 1080 </string> 699 + <string>815 439 650 476 0 0 1920 1080 </string> 696 700 <key>New Bookmarks</key> 697 701 <array> 698 702 <dict> ··· 1361 1365 <key>Non-ASCII Anti Aliased</key> 1362 1366 <true/> 1363 1367 <key>Normal Font</key> 1364 - <string>Hasklig-Regular 14</string> 1368 + <string>Iosevka 13</string> 1369 + <key>Only The Default BG Color Uses Transparency</key> 1370 + <false/> 1365 1371 <key>Option Key Sends</key> 1366 1372 <integer>2</integer> 1367 1373 <key>Prompt Before Closing 2</key> ··· 1407 1413 <key>Silence Bell</key> 1408 1414 <true/> 1409 1415 <key>Smart Cursor Color</key> 1410 - <false/> 1416 + <true/> 1411 1417 <key>Sync Title</key> 1412 1418 <false/> 1413 1419 <key>Tab Color</key> ··· 1431 1437 <real>0.0</real> 1432 1438 <key>Unicode Normalization</key> 1433 1439 <integer>0</integer> 1440 + <key>Unicode Version</key> 1441 + <integer>8</integer> 1434 1442 <key>Unlimited Scrollback</key> 1435 1443 <false/> 1436 1444 <key>Use Bold Font</key> 1437 1445 <true/> 1438 1446 <key>Use Bright Bold</key> 1439 1447 <true/> 1448 + <key>Use Cursor Guide</key> 1449 + <false/> 1440 1450 <key>Use Italic Font</key> 1441 1451 <true/> 1442 1452 <key>Use Non-ASCII Font</key> ··· 2221 2231 <false/> 2222 2232 <key>OpenTmuxWindowsIn</key> 2223 2233 <integer>1</integer> 2234 + <key>PMPrintingExpandedStateForPrint2</key> 2235 + <false/> 2224 2236 <key>PointerActions</key> 2225 2237 <dict> 2226 2238 <key>Button,1,1,,</key> ··· 2256 2268 </dict> 2257 2269 <key>PrefsCustomFolder</key> 2258 2270 <string>/Users/hauleth/Workspace/hauleth/dotfiles/iterm2</string> 2271 + <key>Print In Black And White</key> 2272 + <true/> 2259 2273 <key>SUAutomaticallyUpdate</key> 2260 2274 <true/> 2261 2275 <key>SUEnableAutomaticChecks</key> ··· 2267 2281 <key>SUHasLaunchedBefore</key> 2268 2282 <true/> 2269 2283 <key>SULastCheckTime</key> 2270 - <date>2017-12-01T17:22:01Z</date> 2284 + <date>2018-03-14T12:20:20Z</date> 2271 2285 <key>SUSendProfileInfo</key> 2272 2286 <false/> 2273 2287 <key>ShowBookmarkName</key> ··· 2286 2300 <integer>1</integer> 2287 2301 <key>UseBorder</key> 2288 2302 <false/> 2303 + <key>UseMetal</key> 2304 + <true/> 2289 2305 <key>WordCharacters</key> 2290 2306 <string>/-+\~_.</string> 2291 2307 <key>findIgnoreCase_iTerm</key> ··· 2293 2309 <key>findRegex_iTerm</key> 2294 2310 <false/> 2295 2311 <key>iTerm Version</key> 2296 - <string>3.1.5.beta.2</string> 2312 + <string>3.1.6beta4</string> 2297 2313 <key>kCPKSelectionViewPreferredModeKey</key> 2298 2314 <integer>0</integer> 2299 2315 <key>kCPKSelectionViewShowHSBTextFieldsKey</key>
+11
mix.vim
··· 1 + if exists('current_compiler') 2 + finish 3 + endif 4 + let current_compiler = 'mix-compile' 5 + 6 + if exists(":CompilerSet") != 2 7 + command -nargs=* CompilerSet setlocal <args> 8 + endif 9 + 10 + CompilerSet errorformat& 11 + CompilerSet makeprg=mix
+5 -3
nvim/after/ftplugin/elixir.vim
··· 1 - setlocal makeprg=mix 2 1 setlocal tabstop=2 3 2 setlocal iskeyword+=!,? 4 3 5 - let &l:define = 'def\(macro\)\?p\?' 4 + setlocal makeprg=mix 6 5 7 6 command! -buffer ModuleName echo ft#elixir#module_name() 8 7 command! -buffer Function echo ft#elixir#full_ident() 9 - command! -buffer XrefCallers call asyncdo#run(1, 'mix', 'xref', 'callers', ft#elixir#full_ident()) 8 + command! -buffer XrefCallers call asyncdo#run(1, { 'job': 'mix', 'errorformat': '%f:%l: %m' }, 'xref', 'callers', ft#elixir#full_ident()) 9 + command! -buffer -nargs=* -complete=customlist,ft#elixir#mix_compl -bang Mix call asyncdo#run(<bang>0, 'mix', <q-args>) 10 10 11 11 inoreabbrev <buffer> mdoc @moduledoc """ 12 12 inoreabbrev <buffer> pry require IEx; IEx.pry ··· 17 17 inoremap <buffer> ,, <Space>=> 18 18 19 19 inoreabbrev <buffer> pkey add :id, :binary_id, primary_key: true 20 + 21 + setlocal path=,, 20 22 21 23 augroup elixir_projectionist 22 24 au!
+6
nvim/after/ftplugin/gitcommit.vim
··· 1 1 setlocal spell 2 + 3 + let g:issue_tracker = 'pivotaltracker' 4 + 5 + if pivotaltracker#available() || get(g:, 'issue_tracker') is# 'pivotaltracker' 6 + setlocal omnifunc=pivotaltracker#stories 7 + endif
+1 -1
nvim/after/ftplugin/javascript.vim
··· 1 - setlocal tabstop=2 1 + setlocal shiftwidth=2 2 2 setlocal makeprg=yarn 3 3 4 4 setlocal includeexpr=ft#javascript#includeexpr(v:fname)
+3 -4
nvim/after/ftplugin/qf.vim
··· 1 1 scriptencoding utf-8 2 2 3 + setlocal nolist 4 + 3 5 nnoremap <buffer><silent> q :cclose<CR> 6 + nnoremap <buffer><silent> o <CR> 4 7 nnoremap <buffer><silent> O <CR>:cclose<CR> 5 - 6 - if &previewwindow 7 - setlocal wrap 8 - endif 9 8 10 9 let &l:statusline = '' 11 10 let &l:statusline .= ' '
-4
nvim/after/ftplugin/rust.vim
··· 3 3 setlocal iskeyword+=! 4 4 setlocal formatprg=rustfmt\ --write-mode=display 5 5 let g:rustfmt_autosave = 1 6 - let g:racer_experimental_completer = 1 7 6 8 7 inoreabbrev <buffer> excr extern crate 9 - 10 - nnoremap <buffer> K <Plug>(rust-doc) 11 - nnoremap <buffer> <C-]> <Plug>(rust-def) 12 8 13 9 augroup rust_projectionist 14 10 au!
+1 -1
nvim/after/ftplugin/terraform.vim nvim/after/ftplugin/tf.vim
··· 1 1 setlocal makeprg=terraform 2 2 setlocal formatprg=terraform\ fmt\ - 3 - setlocal tabstop=2 3 + setlocal shiftwidth=2 4 4 5 5 augroup autoformat 6 6 au!
-2
nvim/after/ftplugin/vim.vim
··· 1 - packadd vim-complimentary 2 - 3 1 setlocal omnifunc=complimentary#CompleteCpty
+8
nvim/after/ftplugin/vue.vim
··· 1 1 runtime! ftplugin/javascript.vim 2 + 3 + " Override HTML completion 4 + setlocal omnifunc=lsp#complete 5 + 6 + augroup fix_vue_syntax 7 + au! 8 + autocmd BufEnter <buffer> syntax sync fromstart 9 + augroup END
+1 -1
nvim/after/ftplugin/yaml.vim
··· 1 - setlocal tabstop=2 1 + setlocal shiftwidth=2
+22 -23
nvim/autoload/completion.vim
··· 1 1 let s:lsp_servers = [ 2 2 \ { 3 3 \ 'name': 'elixir-ls', 4 - \ 'cmd': {server_info-> 5 - \ [&shell, 6 - \ &shellcmdflag, 7 - \ 'env ERL_LIBS='.<SID>append_env($ERL_LIBS, '~/Workspace/JakeBecker/elixir-ls/lsp').' mix elixir_ls.language_server']}, 4 + \ 'cmd': {server_info->['elixir-ls']}, 8 5 \ 'whitelist': ['elixir'], 9 6 \ }, 10 7 \ { 11 8 \ 'name': 'rls', 12 - \ 'cmd': {server_info->['rustup', 'run', 'nightly', 'rls']}, 9 + \ 'cmd': {server_info->['rustup', 'run', 'beta', 'rls']}, 13 10 \ 'whitelist': ['rust'], 14 11 \ }, 15 12 \ { ··· 23 20 return (a:env is# '' ? '' : a:env.':') . expand(a:path) 24 21 endfunc 25 22 26 - func! s:has_server() abort 27 - return len(lsp#get_whitelisted_servers()) > 0 28 - endfunc 23 + func! s:setup_mappings() abort 24 + for l:server in lsp#get_whitelisted_servers() 25 + let l:cap = lsp#get_server_capabilities(l:server) 29 26 30 - func! s:setup_mappings() abort 31 - if !s:has_server() | return | endif 27 + if !empty(get(l:cap, 'completionProvider')) && empty(&omnifunc) 28 + setlocal omnifunc=lsp#complete 29 + endif 32 30 33 - if empty(&omnifunc) 34 - setlocal omnifunc=lsp#complete 35 - endif 31 + if get(l:cap, 'definitionProvider') && maparg('<C-]>') is# '' 32 + nnoremap <buffer> <C-]> :<C-u>LspDefinition<CR> 33 + endif 36 34 37 - if !maparg('<C-]>') isnot# '' 38 - nnoremap <buffer> <C-]> :<C-u>LspDefinition<CR> 39 - endif 35 + if get(l:cap, 'documentFormattingProvider') 36 + nnoremap <buffer> gQ :<C-u>LspDocumentFormat<CR> 37 + endif 40 38 41 - if !maparg('K') isnot# '' 42 - nnoremap <buffer> K :<C-u>LspHover<CR> 43 - endif 39 + if get(l:cap, 'hoverProvider') 40 + setlocal keywordprg=:LspHover 41 + endif 42 + endfor 44 43 endfunc 45 44 46 45 func! completion#lsp() abort ··· 48 47 call lsp#register_server(l:server) 49 48 endfor 50 49 51 - let g:lsp_log_verbose = 1 52 50 let g:lsp_log_file=$HOME.'/.local/share/nvim/lsp.log' 53 51 54 52 call s:setup_mappings() 55 53 56 - augroup lsp_completion 57 - au! 58 - au FileType * call s:setup_mappings() 54 + augroup lsp_mappings 55 + autocmd! 56 + autocmd User lsp_server_init call s:setup_mappings() 57 + autocmd FileType * call s:setup_mappings() 59 58 augroup END 60 59 endfunc
+29
nvim/autoload/did_you_mean.vim
··· 1 + func! did_you_mean#call() 2 + try 3 + let l:glob = expand('%').'*' 4 + " As of Vim 7.4, glob() has an optional parameter to split, but not 5 + " everybody is using 7.4 yet 6 + let l:matching_files = glob(l:glob, v:false, v:true) 7 + 8 + if empty(l:matching_files) 9 + return 10 + endif 11 + catch 12 + return 13 + endtry 14 + 15 + let l:shown_items = ['Did you mean:'] 16 + 17 + for i in range(1, len(l:matching_files)) 18 + call add(l:shown_items, i.'. '.l:matching_files[i-1]) 19 + endfor 20 + 21 + let l:selected_number = inputlist(l:shown_items) 22 + if l:selected_number >= 1 && l:selected_number <= len(l:matching_files) 23 + let l:tmp = @# 24 + let l:empty_buffer_nr = bufnr('%') 25 + execute ':edit ' . fnameescape(l:matching_files[l:selected_number-1]) 26 + execute ':silent bdelete ' . l:empty_buffer_nr 27 + let @# = l:tmp 28 + endif 29 + endfunc
+4
nvim/autoload/ft/elixir.vim
··· 36 36 echoerr 'No ident in current line' 37 37 endif 38 38 endfunc 39 + 40 + func! ft#elixir#mix_compl(lead, ...) abort 41 + return systemlist("mix help | awk '/^mix ".a:lead."/ { print $2 }'") 42 + endfunc
+13 -7
nvim/autoload/plugins.vim
··· 1 - " vi: foldmethod=marker 1 + " vi: foldmethod=marker foldlevel=0 2 2 let s:current_file = expand('<sfile>') 3 3 4 4 if !exists('*plugins#reload') ··· 31 31 call minpac#add('pangloss/vim-javascript') " ftplugin 32 32 call minpac#add('tsandall/vim-rego') " ftplugin 33 33 call minpac#add('posva/vim-vue') " ftplugin 34 + call minpac#add('tpope/vim-scriptease') " ftplugin 34 35 " }}} 35 36 " Git {{{ 36 - call minpac#add('lambdalisue/gina.vim') " Just in case 37 + call minpac#add('tpope/vim-fugitive', { 'type': 'opt' }) 38 + call minpac#add('idanarye/vim-merginal', { 'type': 'opt' }) 37 39 " }}} 38 40 " Project navigation {{{ 39 41 call minpac#add('tpope/vim-projectionist') " Requires access to VimEnter ··· 44 46 " }}} 45 47 " Completion {{{ 46 48 call minpac#add('prabirshrestha/async.vim') " autoload-only 47 - call minpac#add('prabirshrestha/vim-lsp', {'type': 'opt'}) 49 + call minpac#add('prabirshrestha/vim-lsp') 48 50 call minpac#add('Shougo/echodoc.vim', {'type': 'opt'}) 49 - call minpac#add('fcpg/vim-complimentary', {'type': 'opt'}) 50 - call minpac#add('hauleth/usnip.vim') 51 + call minpac#add('fcpg/vim-complimentary') " autoload-only 52 + call minpac#add('hauleth/pivotaltracker.vim') " autoload-only 51 53 " }}} 52 54 " Code manipulation {{{ 53 55 call minpac#add('AndrewRadev/splitjoin.vim', {'type': 'opt'}) 54 56 call minpac#add('hauleth/sad.vim', {'type': 'opt'}) 55 57 call minpac#add('jiangmiao/auto-pairs', {'type': 'opt'}) 56 - call minpac#add('AndrewRadev/switch.vim', {'type': 'opt'}) 57 58 call minpac#add('tommcdo/vim-exchange', {'type': 'opt'}) 58 59 call minpac#add('tommcdo/vim-lion', {'type': 'opt'}) 59 60 call minpac#add('tpope/vim-commentary', {'type': 'opt'}) ··· 63 64 " Movements {{{ 64 65 call minpac#add('wellle/targets.vim', {'type': 'opt'}) 65 66 call minpac#add('yangmillstheory/vim-snipe', {'type': 'opt'}) 67 + call minpac#add('tommcdo/vim-ninja-feet') 66 68 " }}} 67 69 " Task running & quickfix {{{ 68 70 call minpac#add('hauleth/asyncdo.vim', {'type': 'opt'}) 69 71 call minpac#add('romainl/vim-qf', {'type': 'opt'}) 70 72 call minpac#add('romainl/vim-qlist', {'type': 'opt'}) 71 73 call minpac#add('Olical/vim-enmasse', {'type': 'opt'}) 74 + call minpac#add('igemnace/vim-makery') 72 75 " }}} 73 76 " Splits management {{{ 74 77 call minpac#add('t9md/vim-choosewin', {'type': 'opt'}) ··· 77 80 call minpac#add('tpope/vim-repeat') " autoload-only plugin 78 81 call minpac#add('tpope/vim-unimpaired', {'type': 'opt'}) 79 82 call minpac#add('tpope/vim-rsi', {'type': 'opt'}) 80 - call minpac#add('machakann/vim-highlightedyank', {'type': 'opt'}) 83 + call minpac#add('machakann/vim-highlightedyank') 81 84 call minpac#add('direnv/direnv.vim') " Requires access to VimEnter 85 + call minpac#add('sgur/vim-editorconfig') " Required during startup 86 + call minpac#add('tpope/vim-characterize') 87 + call minpac#add('junegunn/limelight.vim') 82 88 " }}} 83 89 endfunc
+18 -2
nvim/autoload/statusline.vim
··· 3 3 " displays a flag if there are unseen quickfix errors 4 4 function! statusline#quickfix() abort 5 5 let l:ret = '' 6 - let l:ret .= get(g:, 'quickfix_pending') ? '🏁' :' ' 7 - let l:ret .= exists('g:asyncdo') || exists('w:asyncdo') ? '🏃' : ' ' 6 + let l:ret .= get(g:, 'quickfix_pending') ? 'D' :' ' 7 + let l:ret .= exists('g:asyncdo') || exists('w:asyncdo') ? 'R' : ' ' 8 8 9 9 return l:ret 10 + endfunction 11 + 12 + function! statusline#relpath() abort 13 + return expand('%:~:.') 14 + endfunction 15 + 16 + function! statusline#filename() abort 17 + if isdirectory(expand('%')) 18 + return 'Dirvish' 19 + else 20 + return fnamemodify(statusline#relpath(), ':t') 21 + endif 22 + endfunction 23 + 24 + function! statusline#path() abort 25 + return fnamemodify(statusline#relpath(), ':h') 10 26 endfunction 11 27 12 28 function! statusline#modified() abort
+11
nvim/compiler/credo.vim
··· 1 + if exists('current_compiler') 2 + finish 3 + endif 4 + let current_compiler = 'credo' 5 + 6 + if exists(":CompilerSet") != 2 7 + command -nargs=* CompilerSet setlocal <args> 8 + endif 9 + 10 + CompilerSet errorformat=%f:%l:\ %t:\ %m 11 + CompilerSet makeprg=mix\ credo\ suggest\ --format=flycheck
+11
nvim/compiler/mix-compile.vim
··· 1 + if exists('current_compiler') 2 + finish 3 + endif 4 + let current_compiler = 'mix-compile' 5 + 6 + if exists(":CompilerSet") != 2 7 + command -nargs=* CompilerSet setlocal <args> 8 + endif 9 + 10 + CompilerSet errorformat=%A%t%*[^:]:\ %m,%C%f:%l:\ %m,%C%f:%l,%Z 11 + CompilerSet makeprg=mix\ compile
+11
nvim/compiler/mix.vim
··· 1 + if exists('current_compiler') 2 + finish 3 + endif 4 + let current_compiler = 'mix' 5 + 6 + if exists(":CompilerSet") != 2 7 + command -nargs=* CompilerSet setlocal <args> 8 + endif 9 + 10 + CompilerSet errorformat=%A%t%*[^:]:\ %m,%C%f:%l:\ %m,%C%f:%l,%Z 11 + CompilerSet makeprg=mix
+43 -46
nvim/init.vim
··· 1 - " vi: foldmethod=marker 1 + " vi: foldmethod=marker foldlevel=0 2 2 scriptencoding utf-8 3 3 4 4 " Plugins {{{ 5 - " Unload unneeded plugins {{{ 6 - let g:loaded_netrwPlugin = 1 "$VIMRUNTIME/plugin/netrwPlugin.vim 7 - let g:loaded_2html_plugin = 1 "$VIMRUNTIME/plugin/tohtml.vim 8 - " }}} 9 5 command! -bar PackUpdate call plugins#reload() | call minpac#update() 10 6 command! -bar PackClean call plugins#reload() | call minpac#clean() 11 7 12 - set rtp+=/usr/local/opt/fzf 8 + set runtimepath^=/usr/local/opt/fzf/ 13 9 set packpath^=~/.local/share/nvim 14 10 " }}} 15 11 " Identation {{{ 16 - set tabstop=4 shiftwidth=0 expandtab 12 + set shiftwidth=4 expandtab 17 13 18 14 set textwidth=80 19 15 set nowrap linebreak formatoptions+=l 20 16 " }}} 21 17 " User interface {{{ 22 - " set lazyredraw 18 + set lazyredraw 19 + 20 + set title 23 21 24 22 " Ignore case. If your code uses different casing to differentiate files, then 25 23 " you need mental help 26 24 set wildignorecase fileignorecase 25 + set wildmode=full 27 26 " Colors {{{ 28 - syntax sync minlines=256 29 - 30 27 set termguicolors 28 + " set guicursor=n-v-c-sm:block,i-ci-ve:ver25,r-cr-o:hor20 31 29 colorscheme blame 32 30 " }}} 33 31 " Ignore all automatic files and folders {{{ ··· 45 43 set nohidden autowriteall 46 44 " }}} 47 45 " Keep cursor in the middle {{{ 48 - set scrolloff=100 46 + set scrolloff=9999 49 47 " }}} 50 48 " Enable mouse suport {{{ 51 49 set mouse=a ··· 59 57 " Split in CORRECT places {{{ 60 58 set splitright splitbelow 61 59 " }}} 62 - " Statusline {{{ 63 - let &statusline = '' 64 - let &statusline .= ' ' 65 - let &statusline .= '» %f%{statusline#modified()} «%<' 66 - let &statusline .= '%=' 67 - let &statusline .= '%{statusline#quickfix()} %4c:%l' 68 - let &statusline .= ' ' 69 - " }}} 70 60 " }}} 71 61 " Search {{{ 72 62 " Smart case searches 73 - set ignorecase smartcase inccommand=nosplit 63 + set ignorecase smartcase 64 + 65 + if has('inccommand') 66 + set inccommand=nosplit 67 + end 74 68 " }}} 75 69 " Permanent undo {{{ 76 70 set undofile ··· 78 72 " Custom configurations {{{ 79 73 " Fuzzy file search {{{ 80 74 nnoremap <Space><Space> :<C-u>FZF<CR> 81 - nnoremap <Space>f :<C-u>find **/ 75 + 76 + set path=,, 82 77 " }}} 83 78 " Git shortcuts {{{ 84 79 nnoremap U <nop> 85 - nnoremap Up :<C-u>Gina push<CR> 86 - nnoremap Us :<C-u>Gina status -s<CR> 87 - nnoremap Ud :<C-u>Gina diff<CR> 88 - nnoremap Ub :<C-u>Gina branch<CR> 89 - nnoremap UB :<C-u>Gina blame<CR> 90 - nnoremap Uc :<C-u>Gina commit<CR> 91 - nnoremap Uu :<C-u>Gina pull<CR> 92 - nnoremap Ug :<C-u>Gina log --graph<CR> 80 + nnoremap Up :<C-u>Gpush<CR> 81 + nnoremap Us :<C-u>Gstatus<CR> 82 + nnoremap Ud :<C-u>Gdiff<CR> 83 + nnoremap Ub :<C-u>MerginalToggle<CR> 84 + nnoremap UB :<C-u>Gblame<CR> 85 + nnoremap Uc :<C-u>Gcommit<CR> 86 + nnoremap Uu :<C-u>Gpull<CR> 87 + nnoremap Ug :<C-u>Glog<CR> 93 88 nmap UU Uu 94 89 95 - cabbrev G Gina 96 - cabbrev G! Gina! 90 + cabbrev G Git 91 + cabbrev G! Git! 97 92 " }}} 98 93 " Asynchronous commands {{{ 99 94 command! -bang -nargs=* Make call asyncdo#run(<bang>0, &makeprg, <f-args>) 100 - command! -bang -nargs=* Grep silent! grep<bang> <args> 95 + command! -bang -nargs=* Grep call asyncdo#run(<bang>0, { 'job': &grepprg, 'errorformat': &grepformat }, <f-args>) 101 96 command! -bang -nargs=* LMake call asyncdo#lrun(<bang>0, &makeprg, <f-args>) 102 - command! -bang -nargs=* LGrep silent! lgrep<bang> <args> 97 + command! -bang -nargs=* LGrep call asyncdo#lrun(<bang>0, { 'job': &grepprg, 'errorformat': &grepformat }, <f-args>) 103 98 " }}} 104 99 " Expand abbreviations on enter {{{ 105 100 inoremap <CR> <C-]><CR> ··· 125 120 nnoremap Y y$ 126 121 " }}} 127 122 " Folding {{{ 123 + set foldmethod=syntax 124 + set foldlevel=999 125 + 128 126 nnoremap <expr> <CR> foldlevel('.') ? 'za' : "\<CR>" 129 127 " }}} 130 128 " Scratchpad {{{ ··· 139 137 noremap Q gq 140 138 nnoremap gQ gggqG`` 141 139 142 - command! Clean let _s = @/ | %s/\s\+$//e | let @/ = _s | set nohlsearch 140 + command! Clean keeppatterns %s/\s\+$//e | set nohlsearch 143 141 " }}} 144 142 " Search {{{ 145 143 if executable('rg') ··· 158 156 nnoremap [w gT 159 157 " }}} 160 158 " Terminal {{{ 161 - nmap <C-q> <Esc> 159 + nnoremap <C-q> <Nop> 162 160 nnoremap <C-q>c :<C-u>term<CR> 163 161 nnoremap <C-q>s :<C-u>split +term<CR> 164 162 nnoremap <C-q>v :<C-u>vsplit +term<CR> ··· 189 187 let g:startify_change_to_dir = 0 190 188 let g:startify_change_to_vcs_root = 1 191 189 " }}} 192 - " Match up {{{ 193 - let g:matchup_matchparen_status_offscreen = 0 194 - " }}} 195 190 " HighlihtedYank {{{ 196 191 let g:highlightedyank_highlight_duration = 200 197 192 " }}} 198 193 " Snipe f/F/t/T {{{ 199 - " let g:snipe_jump_tokens = 'asdfghklqwertyuiopzxcvbnm' 200 194 let g:snipe_jump_tokens = 'fhghdjskal' 201 195 202 196 nmap F <Plug>(snipe-F) ··· 206 200 " }}} 207 201 " }}} 208 202 " Completions {{{ 209 - set complete=.,w,b,t,u 203 + set complete=.,w,b,t,k,kspell 210 204 set completeopt=menuone,noselect,noinsert 211 205 212 - let g:lsp_async_completion = 1 213 - let g:echodoc_enable_at_startup = 1 206 + let g:lsp_async_completion = v:true 207 + let g:echodoc_enable_at_startup = v:true 214 208 215 209 let g:usnip_dirs = ['~/.config/nvim/snips'] 216 210 ··· 220 214 augroup END 221 215 " }}} 222 216 223 - let g:vue_disable_pre_processors=1 224 - nnoremap zS :<C-u>echo 'hi<' . synIDattr(synID(line('.'),col('.'),1),'name') . '> trans<' 225 - \ . synIDattr(synID(line('.'),col('.'),0),'name') . '> lo<' 226 - \ . synIDattr(synIDtrans(synID(line('.'),col('.'),1)),'name') . '>'<CR> 217 + let g:pivotaltracker_name = 'hauleth' 218 + let g:peekaboo_delay = 1000 219 + 220 + augroup autoreload_config 221 + autocmd! 222 + autocmd BufWritePost $MYVIMRC source $MYVIMRC 223 + augroup END
+9
nvim/plugin/did-you-mean.vim
··· 1 + if exists('g:loaded_did_you_mean') 2 + finish 3 + endif 4 + let g:loaded_did_you_mean = 1 5 + 6 + augroup did_you_mean 7 + autocmd! 8 + autocmd BufNewFile * nested if !filereadable('%') | call did_you_mean#call() | endif 9 + augroup END
+13
nvim/plugin/fuzzy-search.vim
··· 1 + func! s:pick_fuzzy() abort 2 + let l:cmdtype = getcmdtype() 3 + 4 + if l:cmdtype =~? '[/?]' 5 + return '.\{-}' 6 + elseif l:cmdtype == ':' && getcmdline() =~# '^find\s' 7 + return '*' 8 + endif 9 + 10 + return "\<C-]> " 11 + endfunc 12 + 13 + cnoremap <expr> <space> <SID>pick_fuzzy()
+40
nvim/plugin/pack-delayed.vim
··· 1 + if exists('g:loaded_pack_delayed') 2 + finish 3 + endif 4 + let g:loaded_pack_delayed = 1 5 + 6 + func! s:delayed_load(...) " No abort as we want to continue if any plugin fails 7 + echom 'Loading plugins' 8 + 9 + " Git 10 + packadd vim-fugitive 11 + \ | call fugitive#detect(getcwd()) 12 + \ | packadd vim-merginal 13 + 14 + packadd asyncdo.vim 15 + packadd auto-pairs 16 + packadd echodoc.vim 17 + packadd sad.vim 18 + packadd splitjoin.vim 19 + packadd targets.vim 20 + packadd vim-choosewin 21 + packadd vim-commentary 22 + packadd vim-enmasse 23 + packadd vim-eunuch 24 + packadd vim-exchange 25 + packadd vim-lion 26 + packadd vim-qf 27 + packadd vim-qlist 28 + packadd vim-rsi 29 + packadd vim-snipe 30 + packadd vim-surround 31 + packadd vim-unimpaired 32 + echom 'Loaded plugins' 33 + 34 + au! delayed_pack_load VimEnter * 35 + endfunc 36 + 37 + augroup delayed_pack_load 38 + autocmd! 39 + autocmd VimEnter * call timer_start(0, function('s:delayed_load')) 40 + augroup end
-32
nvim/plugin/pack_delayed.vim
··· 1 - func! s:delayed_load(...) abort 2 - packadd asyncdo.vim 3 - packadd auto-pairs 4 - packadd echodoc.vim 5 - packadd sad.vim 6 - packadd splitjoin.vim 7 - packadd switch.vim 8 - packadd targets.vim 9 - packadd vim-choosewin 10 - packadd vim-commentary 11 - packadd vim-enmasse 12 - packadd vim-eunuch 13 - packadd vim-exchange 14 - packadd vim-highlightedyank 15 - packadd vim-lion 16 - packadd vim-lsp 17 - packadd vim-qf 18 - packadd vim-qlist 19 - packadd vim-rsi 20 - packadd vim-snipe 21 - packadd vim-surround 22 - packadd vim-unimpaired 23 - 24 - call lsp#enable() 25 - 26 - au! delayed_pack_load BufEnter * 27 - endfunc 28 - 29 - augroup delayed_pack_load 30 - autocmd! 31 - autocmd BufEnter * call timer_start(100, function('s:delayed_load')) 32 - augroup end
+5
nvim/plugin/pastebin.vim
··· 1 + if exists('g:loaded_pastebin') 2 + finish 3 + endif 4 + let g:loaded_pastebin = 1 5 + 1 6 command! -range=% IX <line1>,<line2>w !curl -F 'f:1=<-' ix.io | pbcopy
+70
nvim/plugin/qfsigns.vim
··· 1 + if exists('g:loaded_qfsign') 2 + finish 3 + endif 4 + let g:loaded_qfsign = 1 5 + 6 + sign define QFErr texthl=ErrorMsg text=  7 + sign define QFWarn texthl=Cursor text=  8 + sign define QFInfo texthl=Search text=  9 + 10 + command! -nargs=0 -bar SignsClear call timer_start(0, function('s:clear_signs')) 11 + command! -nargs=0 -bar SignsPlace call timer_start(0, function('s:place_signs')) 12 + 13 + augroup qfsign 14 + autocmd! 15 + autocmd QuickFixCmdPre [^l]* SignsClear 16 + autocmd QuickFixCmdPost [^l]* SignsPlace 17 + 18 + autocmd BufWinLeave * if getbufvar(0 + expand('<abuf>'), '&ft') ==? 'qf' | SignsClear | endif 19 + autocmd BufWinEnter * if getbufvar(0 + expand('<abuf>'), '&ft') ==? 'qf' | SignsPlace | endif 20 + augroup END 21 + 22 + let s:sign_count = get(s:, 'sign_count', 0) 23 + 24 + function! s:place_signs(...) abort 25 + if s:sign_count > 0 26 + return 27 + endif 28 + 29 + let l:qflist = getqflist() 30 + 31 + if len(l:qflist) > get(g:, 'qfsigns_max', 100) 32 + echohl ErrorMsg 33 + echom 'To many results, aborting' 34 + echohl NONE 35 + 36 + return 37 + endif 38 + 39 + for l:error in l:qflist 40 + if l:error.bufnr < 0 41 + continue 42 + endif 43 + let s:sign_count = s:sign_count + 1 44 + if l:error.type ==# 'E' 45 + let l:err_sign = 'sign place ' . s:sign_count 46 + \ . ' line=' . l:error.lnum 47 + \ . ' name=QFErr' 48 + \ . ' buffer=' . l:error.bufnr 49 + elseif l:error.type ==# 'W' 50 + let l:err_sign = 'sign place ' . s:sign_count 51 + \ . ' line=' . l:error.lnum 52 + \ . ' name=QFWarn' 53 + \ . ' buffer=' . l:error.bufnr 54 + else 55 + let l:err_sign = 'sign place ' . s:sign_count 56 + \ . ' line=' . l:error.lnum 57 + \ . ' name=QFInfo' 58 + \ . ' buffer=' . l:error.bufnr 59 + endif 60 + silent! execute l:err_sign 61 + endfor 62 + endfunction 63 + 64 + function! s:clear_signs(...) abort 65 + while s:sign_count > 0 66 + execute 'sign unplace ' . s:sign_count 67 + let s:sign_count = s:sign_count - 1 68 + endwhile 69 + redraw! 70 + endfunction
+8
nvim/plugin/statusline.vim
··· 1 + scriptencoding utf-8 2 + 3 + let &statusline = ' ' 4 + let &statusline .= '» %{statusline#filename()}%{statusline#modified()} «%<' 5 + let &statusline .= ' ' 6 + let &statusline .= '%#StatusLineNC#%{statusline#path()}%*' 7 + let &statusline .= '%=' 8 + let &statusline .= '%{statusline#quickfix()} %4c:%l'
+12
nvim/plugin/utils.vim
··· 1 + if exists('g:loaded_utils') 2 + finish 3 + endif 4 + let g:loaded_utils = 1 5 + 6 + func! s:psql_complete(lead, ...) abort 7 + let l:dbs = systemlist("psql -Atqwl | awk -F '|' 'NF > 1 { print $1 }'") 8 + 9 + return filter(l:dbs, {_, val -> val =~? '^'.a:lead}) 10 + endfunc 11 + 12 + command! -nargs=+ -complete=customlist,s:psql_complete Psql split term://pgcli <args>
+13
nvim/snips/apache-v2-license.snip
··· 1 + Copyright {{+~strftime("%Y")+}} {{+Łukasz Jan Niemier <lukasz@niemier.pl>+}} 2 + 3 + Licensed under the Apache License, Version 2.0 (the "License"); 4 + you may not use this file except in compliance with the License. 5 + You may obtain a copy of the License at 6 + 7 + http://www.apache.org/licenses/LICENSE-2.0 8 + 9 + Unless required by applicable law or agreed to in writing, software 10 + distributed under the License is distributed on an "AS IS" BASIS, 11 + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 + See the License for the specific language governing permissions and 13 + limitations under the License.
+23
nvim/snips/bsd-revised-license.snip
··· 1 + Copyright (c) {{+~strftime("%Y")+}} {{+Łukasz Jan Niemier+}}, All rights reserved. 2 + 3 + Redistribution and use in source and binary forms, with or without modification, 4 + are permitted provided that the following conditions are met: 5 + 6 + Redistributions of source code must retain the above copyright notice, this 7 + list of conditions and the following disclaimer. Redistributions in binary form 8 + must reproduce the above copyright notice, this list of conditions and the 9 + following disclaimer in the documentation and/or other materials provided with 10 + the distribution. Neither the name of the copyright holder nor the names of 11 + its contributors may be used to endorse or promote products derived from this 12 + software without specific prior written permission. 13 + 14 + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 15 + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 16 + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 17 + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR 18 + ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 19 + (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 20 + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 21 + ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 22 + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 23 + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+21
nvim/snips/freebsd-license.snip
··· 1 + Copyright (c) , All rights reserved. 2 + 3 + Redistribution and use in source and binary forms, with or without modification, 4 + are permitted provided that the following conditions are met: 5 + 6 + Redistributions of source code must retain the above copyright notice, this 7 + list of conditions and the following disclaimer. Redistributions in binary form 8 + must reproduce the above copyright notice, this list of conditions and the 9 + following disclaimer in the documentation and/or other materials provided with 10 + the distribution. 11 + 12 + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 13 + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 14 + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 15 + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR 16 + ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 17 + (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 18 + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 19 + ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 20 + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 21 + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+1 -1
nvim/snips/mit-license.snip
··· 1 - Copyright (c) {{+~strftime("%Y")+}} {{+Hauleth+}} 1 + Copyright (c) {{+~strftime("%Y")+}} {{+Łukasz Jan Niemier <lukasz@niemier.pl>+}} 2 2 3 3 Permission is hereby granted, free of charge, to any person obtaining a copy 4 4 of this software and associated documentation files (the "Software"), to deal
+3 -7
utils/ctags ctags/elixir.ctags
··· 1 - --exclude=.git 2 - --exclude=log 3 - --exclude=tmp 4 - --exclude=target 5 - --exclude=_build 6 - 7 1 --langdef=Elixir 8 2 --langmap=Elixir:.ex.exs 9 3 --regex-Elixir=/^[ \t]*def(p?)[ \t]+([a-z_][a-zA-Z0-9_?!]*)/\2/f,functions,functions (def ...)/ ··· 18 12 --regex-Elixir=/^[ \t]*Record\.defrecord[ \t]+:([a-zA-Z0-9_]+)/\1/r,records,records (defrecord...)/ 19 13 --regex-Elixir=/^[ \t]*test[ \t]+\"([a-z_][a-zA-Z0-9_?! ]*)\"*/\1/t,tests,tests (test ...)/ 20 14 21 - --fields=+l 15 + --exclude=_build 16 + --exclude=deps 17 + --exclude=.elixir_ls