5
									
								
								.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,5 @@ | |||||||
|  | homedir/.vim/.netrwhist | ||||||
|  | homedir/.vim/syntax | ||||||
|  | homedir/.bashrc.d/99-local | ||||||
|  | homedir/.config/zsh.d/local | ||||||
|  | homedir/.ncmpcpp/error.log | ||||||
							
								
								
									
										23
									
								
								homedir/.Xresources
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										23
									
								
								homedir/.Xresources
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,23 @@ | |||||||
|  | ! Xft settings --------------------------------------------------------------- | ||||||
|  |  | ||||||
|  | Xft.dpi:        95 | ||||||
|  | !Xft.antialias:  true | ||||||
|  | !Xft.rgba:       rgb | ||||||
|  | !Xft.hinting:    true | ||||||
|  | !Xft.hintstyle:  hintslight | ||||||
|  |  | ||||||
|  | ! rofi | ||||||
|  |  | ||||||
|  | rofi.key-run: Mod4+r | ||||||
|  | rofi.lines: 3 | ||||||
|  | rofi.bw: 2 | ||||||
|  | rofi.separator-style: solid | ||||||
|  | rofi.hide-scrollbar: true | ||||||
|  | rofi.glob: true | ||||||
|  | rofi.width: 33 | ||||||
|  | rofi.bc: #467EC2 | ||||||
|  | rofi.fg: #f9f9f9 | ||||||
|  | rofi.bg: #29303A | ||||||
|  | rofi.hlbg: #467EC2 | ||||||
|  | rofi.font: Terminus 12 | ||||||
|  | rofi.opacity: 85 | ||||||
							
								
								
									
										44
									
								
								homedir/.bashrc
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										44
									
								
								homedir/.bashrc
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,44 @@ | |||||||
|  | # vim: ft=sh | ||||||
|  | # Do nothing if not interactive | ||||||
|  | [[ "$PS1" ]] || return | ||||||
|  |  | ||||||
|  | # Modules | ||||||
|  | mpath=( $HOME/.config/bash.d ) | ||||||
|  |  | ||||||
|  | function msg { printf '%s\n' "$*"; } | ||||||
|  | function err { printf '%s\n' "$*" >&2; } | ||||||
|  |  | ||||||
|  | function use { | ||||||
|  | 	while (( $# )); do | ||||||
|  | 		case $1 in | ||||||
|  | 			(-n) flag_nofail=1;; | ||||||
|  | 			(--) shift; break;; | ||||||
|  | 			(*) break;; | ||||||
|  | 		esac | ||||||
|  | 		shift | ||||||
|  | 	done | ||||||
|  |  | ||||||
|  | 	declare mname=$1 | ||||||
|  |  | ||||||
|  | 	for p in "${mpath[@]}"; do | ||||||
|  | 		if [[ -f "$mpath/$mname" ]]; then | ||||||
|  | 			if source "$mpath/$mname"; then | ||||||
|  | 				msg "Loaded: $mname" | ||||||
|  | 			else | ||||||
|  | 				err "Something went wrong while loading $mname" | ||||||
|  | 				(( flag_nofail )) || return 1 | ||||||
|  | 			fi | ||||||
|  | 		else | ||||||
|  | 			err "Module $mname not found" | ||||||
|  | 			(( flag_nofail )) || return 1 | ||||||
|  | 		fi | ||||||
|  | 	done | ||||||
|  |  | ||||||
|  | 	return 0 | ||||||
|  | } | ||||||
|  |  | ||||||
|  | use common | ||||||
|  | use colours | ||||||
|  | use config | ||||||
|  | use -n local | ||||||
|  | use prompt | ||||||
							
								
								
									
										30
									
								
								homedir/.config/bash.d/colours
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										30
									
								
								homedir/.config/bash.d/colours
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,30 @@ | |||||||
|  | # Colours | ||||||
|  |  | ||||||
|  | # Console colours | ||||||
|  | # Black       0;30     Dark Gray     1;30 | ||||||
|  | # Blue        0;34     Light Blue    1;34 | ||||||
|  | # Green       0;32     Light Green   1;32 | ||||||
|  | # Cyan        0;36     Light Cyan    1;36 | ||||||
|  | # Red         0;31     Light Red     1;31 | ||||||
|  | # Purple      0;35     Light Purple  1;35 | ||||||
|  | # Brown       0;33     Yellow        1;33 | ||||||
|  | # Light Gray  0;37     White         1;37 | ||||||
|  |  | ||||||
|  | c_black="\[\033[0;30m\]" | ||||||
|  | c_blue="\[\033[0;34m\]" | ||||||
|  | c_green="\[\033[0;32m\]" | ||||||
|  | c_cyan="\[\033[0;36m\]" | ||||||
|  | c_red="\[\033[0;31m\]" | ||||||
|  | c_purple="\[\033[0;35m\]" | ||||||
|  | c_brown="\[\033[0;33m\]" | ||||||
|  | c_lightgray="\[\033[0;37m\]" | ||||||
|  | c_darkgray="\[\033[1;30m\]" | ||||||
|  | c_lightblue="\[\033[1;34m\]" | ||||||
|  | c_lightgreen="\[\033[1;32m\]" | ||||||
|  | c_lightcyan="\[\033[1;36m\]" | ||||||
|  | c_lightred="\[\033[1;31m\]" | ||||||
|  | c_lightpurple="\[\033[1;35m\]" | ||||||
|  | c_yellow="\[\033[1;33m\]" | ||||||
|  | c_white="\[\033[1;37m\]" | ||||||
|  |  | ||||||
|  | c_reset="\[\e[00m\]" | ||||||
							
								
								
									
										41
									
								
								homedir/.config/bash.d/common
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										41
									
								
								homedir/.config/bash.d/common
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,41 @@ | |||||||
|  | #!/bin/bash | ||||||
|  |  | ||||||
|  | echo() { printf '%s\n' "$*"; } | ||||||
|  | msg() { printf '%s\n' "$*"; } | ||||||
|  | err() { printf '%s\n' "$*" >&2; } | ||||||
|  |  | ||||||
|  | set_title() { printf '\033]0;%s\007' "$1"; } | ||||||
|  |  | ||||||
|  | trap_error() { err "The command has returned a non-zero exit code ($?)."; } | ||||||
|  |  | ||||||
|  | x() { exec xinit -- -nolisten tcp vt9; } | ||||||
|  |  | ||||||
|  | is_coreutils() { | ||||||
|  | 	declare out | ||||||
|  | 	out=$( df --version 2>/dev/null ) | ||||||
|  |  | ||||||
|  | 	(( $? )) && { | ||||||
|  | 		err 'df --version exited with an error. This is not GNU coreutils' | ||||||
|  | 		return 3 | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	[[ "$out" =~ 'GNU coreutils' ]] || { | ||||||
|  | 		err 'Version output does not contain "GNU coreutils". This is not GNU coreutils.' | ||||||
|  | 		return 1 | ||||||
|  | 	} | ||||||
|  | } | ||||||
|  |  | ||||||
|  | fuck() { sudo $(history -p \!\!); } | ||||||
|  |  | ||||||
|  | err() { printf '%s\n' "$*"; } | ||||||
|  |  | ||||||
|  | is_function() { | ||||||
|  | 	[[ $(type -t "$1") == 'function' ]] | ||||||
|  | } | ||||||
|  |  | ||||||
|  | if is_coreutils; then | ||||||
|  | 	ls() { $(type -P ls) -l -hb --group-directories-first --color=auto "$@"; } | ||||||
|  | 	mv() { $(type -P mv) -v "$@"; } | ||||||
|  | 	cp() { $(type -P cp) -v "$@"; } | ||||||
|  | 	rm() { $(type -P rm) -v "$@"; } | ||||||
|  | fi | ||||||
							
								
								
									
										28
									
								
								homedir/.config/bash.d/config
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										28
									
								
								homedir/.config/bash.d/config
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,28 @@ | |||||||
|  | # BASH options | ||||||
|  | bash_opts=( | ||||||
|  | 	'checkwinsize' 'histappend' 'autocd' | ||||||
|  | 	'checkhash' | ||||||
|  | ) | ||||||
|  | shopt -s "${bash_opts[@]}" | ||||||
|  | shopt -u sourcepath | ||||||
|  |  | ||||||
|  | PROMPT_COMMAND='set_prompt' | ||||||
|  |  | ||||||
|  | HISTCONTROL="$HISTCONTROL${HISTCONTROL+,}ignoredups" | ||||||
|  | HISTCONTROL='ignoreboth' | ||||||
|  |  | ||||||
|  | # Environment | ||||||
|  | export LC_ALL='en_US.UTF-8' | ||||||
|  | export EDITOR='editor' | ||||||
|  | export WINEARCH='win32' | ||||||
|  |  | ||||||
|  | # GPG | ||||||
|  | GPG_TTY=$(tty) | ||||||
|  | export GPG_TTY | ||||||
|  |  | ||||||
|  | #export TERM='xterm-256color' | ||||||
|  | export COLORTERM='xterm-256color' | ||||||
|  |  | ||||||
|  | # Specific to this setup | ||||||
|  | alias dotfiles_pull='git -C ~/git/dotfiles pull' | ||||||
|  | alias dotfiles_push='git -C ~/git/dotfiles commit -a; git -C ~/git/dotfiles push' | ||||||
							
								
								
									
										3
									
								
								homedir/.config/bash.d/local
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								homedir/.config/bash.d/local
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,3 @@ | |||||||
|  | # SSH | ||||||
|  | SSH_AUTH_SOCK="/tmp/${USER}-ssh-auth.sock" | ||||||
|  | export SSH_AUTH_SOCK | ||||||
							
								
								
									
										75
									
								
								homedir/.config/bash.d/prompt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										75
									
								
								homedir/.config/bash.d/prompt
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,75 @@ | |||||||
|  | #!/bin/bash | ||||||
|  |  | ||||||
|  | set_prompt() { | ||||||
|  | 	last_exitcode="$?" | ||||||
|  |  | ||||||
|  | 	declare checkmark fancy_x timestamp git_prompt_msg git_status_short git_status_colour git_unstaged git_untracked | ||||||
|  |  | ||||||
|  | 	PS1="${c_reset}" | ||||||
|  |  | ||||||
|  | 	# Set a fancy symbol to indicate the last exitcode | ||||||
|  | 	if (( last_exitcode )); then | ||||||
|  | 		last_exitcode_indicator="${c_red}!${c_reset}" | ||||||
|  | 	else | ||||||
|  | 		last_exitcode_indicator="${c_green}.${c_reset}" | ||||||
|  | 	fi | ||||||
|  |  | ||||||
|  | 	# Set the username colour | ||||||
|  | 	if (( UID )); then | ||||||
|  | 		user_colour="${c_green}" | ||||||
|  | 		user_indicator='$' | ||||||
|  | 	else | ||||||
|  | 		user_colour="${c_red}" | ||||||
|  | 		user_indicator='#' | ||||||
|  | 	fi | ||||||
|  |  | ||||||
|  | 	user_indicator='>' | ||||||
|  |  | ||||||
|  | 	# Set the git prompt message | ||||||
|  | 	git rev-parse --git-dir &>/dev/null && { | ||||||
|  | 		git_current_branch="$(git rev-parse --abbrev-ref HEAD)" | ||||||
|  | 		 | ||||||
|  | 		while read; do | ||||||
|  | 			case "$REPLY" in | ||||||
|  | 				(' M'*|A*|D*) git_unstaged=1;; | ||||||
|  | 				(\?\?*) git_untracked=1;; | ||||||
|  | 			esac | ||||||
|  | 		done < <( git status --short ) | ||||||
|  |  | ||||||
|  | 		(( git_unstaged )) && { | ||||||
|  | 			git_status_short+='c' | ||||||
|  | 			git_status_colour="${c_red}" | ||||||
|  | 		} | ||||||
|  |  | ||||||
|  | 		(( git_untracked )) && { | ||||||
|  | 			git_status_short+='f' | ||||||
|  | 			git_status_colour="${c_red}" | ||||||
|  | 		} | ||||||
|  |  | ||||||
|  | 		git_status_short=${git_status_short:-ok} | ||||||
|  | 		git_status_colour=${git_status_colour:-"${c_green}"} | ||||||
|  |  | ||||||
|  | 		git_prompt_msg="(${c_cyan}$git_current_branch${c_reset}[${git_status_colour}${git_status_short}${c_reset}]) " | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	set_title "${USER}@${HOSTNAME}" | ||||||
|  |  | ||||||
|  | 	if [[ "$PWD" == "$HOME" ]]; then | ||||||
|  | 		prompt_pwd='~' | ||||||
|  | 	elif [[ "$PWD" =~ ^"$HOME" ]]; then | ||||||
|  | 		prompt_pwd="~/${PWD##*${HOME}/}" | ||||||
|  | 	else | ||||||
|  | 		prompt_pwd="$PWD" | ||||||
|  | 	fi | ||||||
|  |  | ||||||
|  | 	prompt=( | ||||||
|  | 		"${c_reset}" | ||||||
|  | 		"[${last_exitcode_indicator}]" | ||||||
|  | 		"${user_colour}${USER}${c_reset}@${c_lightblue}${HOSTNAME}" | ||||||
|  | 		"$prompt_pwd" | ||||||
|  | 		"${git_prompt_msg}${user_colour}${user_indicator}" | ||||||
|  | 		"$c_reset" | ||||||
|  | 	) | ||||||
|  |  | ||||||
|  | 	PS1="${prompt[@]}" | ||||||
|  | } | ||||||
							
								
								
									
										9
									
								
								homedir/.config/bspwm/bin/bspfloat
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										9
									
								
								homedir/.config/bspwm/bin/bspfloat
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,9 @@ | |||||||
|  | #!/usr/bin/bash | ||||||
|  |  | ||||||
|  | while read -r _ _ did wid _; do | ||||||
|  | 	for d in "$@"; do | ||||||
|  | 		if [[ $d == "$did" ]]; then | ||||||
|  | 			bspc node "$wid" -t floating | ||||||
|  | 		fi | ||||||
|  | 	done | ||||||
|  | done < <( bspc subscribe node_manage ) | ||||||
							
								
								
									
										45
									
								
								homedir/.config/bspwm/bin/bspset
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										45
									
								
								homedir/.config/bspwm/bin/bspset
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,45 @@ | |||||||
|  | #!/usr/bin/bash | ||||||
|  |  | ||||||
|  | usage() { | ||||||
|  | 	printf 'No help available' | ||||||
|  | } | ||||||
|  |  | ||||||
|  | main() { | ||||||
|  | 	while (( $# )); do | ||||||
|  | 		case "$1" in | ||||||
|  | 			(-h) usage;; | ||||||
|  | 			(-d) desktop=$2; shift;; | ||||||
|  |  | ||||||
|  | 			(--) shift; break;; | ||||||
|  | 			(*) break;; | ||||||
|  | 		esac | ||||||
|  | 		shift | ||||||
|  | 	done | ||||||
|  |  | ||||||
|  | 	setting=$1 | ||||||
|  | 	shift | ||||||
|  |  | ||||||
|  | 	desktop=${desktop:-"focused"} | ||||||
|  |  | ||||||
|  | 	case "$setting" in | ||||||
|  | 		(padding) | ||||||
|  | 			if [[ "$1" =~ ^(north|west|south|east)$ ]]; then | ||||||
|  | 				direction=$1 | ||||||
|  | 			fi | ||||||
|  |  | ||||||
|  | 			if [[ "$direction" ]]; then | ||||||
|  | 				bspc config -d "$desktop" "${direction}_padding" "$1" | ||||||
|  | 			else | ||||||
|  | 				for d in top bottom right left; do | ||||||
|  | 					bspc config -d "$desktop" "${d}_padding" "$1" | ||||||
|  | 				done | ||||||
|  | 			fi | ||||||
|  | 		;; | ||||||
|  |  | ||||||
|  | 		(gaps) | ||||||
|  | 			bspc config -d "$desktop" window_gap "$1" | ||||||
|  | 		;; | ||||||
|  | 	esac | ||||||
|  | } | ||||||
|  |  | ||||||
|  | main "$@" | ||||||
							
								
								
									
										43
									
								
								homedir/.config/bspwm/bin/bspstate
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										43
									
								
								homedir/.config/bspwm/bin/bspstate
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,43 @@ | |||||||
|  | #!/usr/bin/bash | ||||||
|  |  | ||||||
|  | ensure_dir() { | ||||||
|  | 	declare d | ||||||
|  |  | ||||||
|  | 	for d in "$@"; do | ||||||
|  | 		if ! [[ -d "$d" ]]; then | ||||||
|  | 			if ! mkdir -p "$d"; then | ||||||
|  | 				return $? | ||||||
|  | 			fi | ||||||
|  | 		fi | ||||||
|  | 	done | ||||||
|  |  | ||||||
|  | 	return 0 | ||||||
|  | } | ||||||
|  |  | ||||||
|  | # Set XDG_RUNTIME_DIR | ||||||
|  | if ! [[ "$XDG_RUNTIME_DIR" ]]; then | ||||||
|  | 	XDG_RUNTIME_DIR="/run/user/$UID" | ||||||
|  | fi | ||||||
|  |  | ||||||
|  | # Define some workdirs | ||||||
|  | bspwm_rundir="$XDG_RUNTIME_DIR/bspwm" | ||||||
|  | bspwm_statedir="$bspwm_rundir/state" | ||||||
|  |  | ||||||
|  | # Ensure the workdirs exist | ||||||
|  | ensure_dir "$bspwm_rundir" "$bspwm_statedir" || exit $? | ||||||
|  |  | ||||||
|  | case "$1" in | ||||||
|  | 	(save) | ||||||
|  | 		# Save state | ||||||
|  | 		bspc query -T > "$bspwm_statedir/tree" | ||||||
|  | 		bspc query -H > "$bspwm_statedir/hist" | ||||||
|  | 		bspc query -S > "$bspwm_statedir/stack" | ||||||
|  | 	;; | ||||||
|  |  | ||||||
|  | 	(restore) | ||||||
|  | 		# Restore state, if any | ||||||
|  | 		[[ -f "$bspwm_statedir/tree" ]] && bspc restore -T "$bspwm_statedir/tree" | ||||||
|  | 		[[ -f "$bspwm_statedir/hist" ]] && bspc restore -H "$bspwm_statedir/hist" | ||||||
|  | 		[[ -f "$bspwm_statedir/stack" ]] && bspc restore -S "$bspwm_statedir/stack" | ||||||
|  | 	;; | ||||||
|  | esac | ||||||
							
								
								
									
										67
									
								
								homedir/.config/bspwm/bspwmrc
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										67
									
								
								homedir/.config/bspwm/bspwmrc
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,67 @@ | |||||||
|  | #!/usr/bin/env bash | ||||||
|  |  | ||||||
|  | nullexec() { | ||||||
|  | 	"$@" &>/dev/null | ||||||
|  | } | ||||||
|  |  | ||||||
|  | PATH+=":$HOME/.config/alternatives" | ||||||
|  | PATH+=":$HOME/.config/bspwm/bin" | ||||||
|  |  | ||||||
|  | # Cursor for the root window | ||||||
|  | xsetroot -cursor_name left_ptr | ||||||
|  |  | ||||||
|  | # Global config | ||||||
|  | bspc config focused_sticky_border_color     "#030061" | ||||||
|  | bspc config focused_border_color            "#467EC2" | ||||||
|  | bspc config normal_border_color             "#1f1f1f" | ||||||
|  | bspc config urgent_border_color             "#f9f9f9" | ||||||
|  | bspc config window_gap                      "9" | ||||||
|  | bspc config border_width                    '2' | ||||||
|  | bspc config split_ratio                     '0.52' | ||||||
|  | bspc config borderless_monocle              'false' | ||||||
|  | bspc config gapless_monocle                 'false' | ||||||
|  | bspc config focus_by_distance               'true' | ||||||
|  | bspc config ignore_ewmh_focus               'true' | ||||||
|  | bspc config initial_polarity                'second_child' | ||||||
|  | bspc config auto_cancel                     'true' | ||||||
|  | bspc config click_to_focus                  'true' | ||||||
|  |  | ||||||
|  | # Workspaces and monitors | ||||||
|  | bspc monitor -d                             1 2 3 4 5 6 7 8 9 h | ||||||
|  |  | ||||||
|  | # Float some bastards | ||||||
|  | bspfloat 1 & | ||||||
|  |  | ||||||
|  | # Individual padding | ||||||
|  | for d in 1 3; do | ||||||
|  | 	bspset -d "$d" padding 48 | ||||||
|  | done | ||||||
|  |  | ||||||
|  | # Clear the rules before adding any | ||||||
|  | while read -r rule _; do bspc rule -r "$rule"; done < <(bspc rule -l) | ||||||
|  |  | ||||||
|  | # Now add the rules | ||||||
|  | bspc rule -a Steam state=floating desktop=^8 | ||||||
|  | bspc rule -a Firefox:Navigator state=tiled desktop=^2 | ||||||
|  | bspc rule -a \*:Hearthstone.exe desktop=^5 | ||||||
|  | bspc rule -a \* state=floating | ||||||
|  |  | ||||||
|  |  | ||||||
|  | # start some services | ||||||
|  | services=( sxhkd dunst ) | ||||||
|  | for s in "${services[@]}"; do | ||||||
|  | 	if ! service "$s" status; then | ||||||
|  | 		service "$s" start | ||||||
|  | 	fi | ||||||
|  | done | ||||||
|  |  | ||||||
|  | # Always restart the panel | ||||||
|  | service moltenbar restart | ||||||
|  |  | ||||||
|  | nullexec browser & | ||||||
|  | nullexec terminal & | ||||||
|  | nullexec telegram & | ||||||
|  | nullexec dropbox & | ||||||
|  |  | ||||||
|  | terminal -e 'ssh-add-all' & | ||||||
|  | terminal -e 'sudo wrkvpn' & | ||||||
							
								
								
									
										72
									
								
								homedir/.config/bspwm/sxhkdrc
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										72
									
								
								homedir/.config/bspwm/sxhkdrc
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,72 @@ | |||||||
|  | # | ||||||
|  | # bspwm hotkeys | ||||||
|  | # | ||||||
|  |  | ||||||
|  | super + {_,shift + } w | ||||||
|  | 	bspc node {-c,-k} | ||||||
|  |  | ||||||
|  | super + q | ||||||
|  | 	bspc node -t '~fullscreen' | ||||||
|  |  | ||||||
|  | super + {j,k} | ||||||
|  | 	bspc node -f {next,prev}.local | ||||||
|  |  | ||||||
|  | control + {h,j,k,l} | ||||||
|  | 	bspc node {@east -r -32,@south -r +32,@south -r -32,@east -r +32} | ||||||
|  |  | ||||||
|  | super + {_,shift + } space | ||||||
|  | 	bspc node -t '~'{tiled,floating} | ||||||
|  |  | ||||||
|  | super + Return | ||||||
|  | 	bspc node -s biggest | ||||||
|  |  | ||||||
|  | super + {1-9,h} | ||||||
|  | 	bspc desktop -f {1-9,h} | ||||||
|  |  | ||||||
|  | super + shift + {1-9,h} | ||||||
|  | 	bspc node -d {1-9,h} | ||||||
|  |  | ||||||
|  | super + m | ||||||
|  | 	bspc monitor -f next | ||||||
|  |  | ||||||
|  | super + shift + m | ||||||
|  | 	bspc node -m next | ||||||
|  |  | ||||||
|  | super + t | ||||||
|  | 	bspc desktop -l next | ||||||
|  |  | ||||||
|  | super + shift + t | ||||||
|  | 	bspc node -t '~pseudo_tiled' | ||||||
|  |  | ||||||
|  | super + x | ||||||
|  | 	terminal | ||||||
|  |  | ||||||
|  | super + {r,u,p} | ||||||
|  | 	dmenu-extras -l 9 {run,bmark,pass} | ||||||
|  |  | ||||||
|  | super + z | ||||||
|  | 	ssm lockd lock | ||||||
|  |  | ||||||
|  | Print | ||||||
|  | 	snap -f | ||||||
|  |  | ||||||
|  | super + {Left,Up,Right,Down} | ||||||
|  | 	bspc node --presel-dir '~'{west,north,east,south} | ||||||
|  |  | ||||||
|  | super + {_,shift + } c | ||||||
|  | 	win-hd-center {1280x720,854x480} | ||||||
|  |  | ||||||
|  | super + {a,s,n,p} | ||||||
|  | 	mpc {play,stop,next,prev} | ||||||
|  |  | ||||||
|  | super + bracketright | ||||||
|  | 	bspc node '@/' -R 90 | ||||||
|  |  | ||||||
|  | super + f | ||||||
|  | 	bspc rule -a \* -o state=floating | ||||||
|  |  | ||||||
|  | super + XF86AudioLowerVolume | ||||||
|  | 	amixer -c 0 set PCM 2dB- | ||||||
|  |  | ||||||
|  | super + XF86AudioRaiseVolume | ||||||
|  | 	amixer -c 0 set PCM 2dB+ | ||||||
							
								
								
									
										8
									
								
								homedir/.config/common/colours
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								homedir/.config/common/colours
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,8 @@ | |||||||
|  | # vim: ft=sh | ||||||
|  |  | ||||||
|  | colour_fg='#f9f9f9' | ||||||
|  | colour_fg_active=$colour_fg | ||||||
|  | colour_bg='#1f1f1f' | ||||||
|  | colour_bg_active='#467EC2' | ||||||
|  |  | ||||||
|  | colour_urgent='#f9f9f9' | ||||||
							
								
								
									
										1
									
								
								homedir/.config/common/fonts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								homedir/.config/common/fonts
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1 @@ | |||||||
|  | common_x_fontspec='-*-terminesspowerline-medium-*-normal-*-14-*-*-*-*-*-iso10646-*'  | ||||||
							
								
								
									
										246
									
								
								homedir/.config/dunst/dunstrc
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										246
									
								
								homedir/.config/dunst/dunstrc
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,246 @@ | |||||||
|  | [global] | ||||||
|  |     font = xos4 Terminus 12 | ||||||
|  |      | ||||||
|  |     # Allow a small subset of html markup: | ||||||
|  |     #   <b>bold</b> | ||||||
|  |     #   <i>italic</i> | ||||||
|  |     #   <s>strikethrough</s> | ||||||
|  |     #   <u>underline</u> | ||||||
|  |     #  | ||||||
|  |     # For a complete reference see | ||||||
|  |     # <http://developer.gnome.org/pango/stable/PangoMarkupFormat.html>. | ||||||
|  |     # If markup is not allowed, those tags will be stripped out of the | ||||||
|  |     # message. | ||||||
|  |     allow_markup = yes | ||||||
|  |      | ||||||
|  |     # The format of the message.  Possible variables are: | ||||||
|  |     #   %a  appname | ||||||
|  |     #   %s  summary | ||||||
|  |     #   %b  body | ||||||
|  |     #   %i  iconname (including its path) | ||||||
|  |     #   %I  iconname (without its path) | ||||||
|  |     #   %p  progress value if set ([  0%] to [100%]) or nothing | ||||||
|  |     # Markup is allowed | ||||||
|  |     format = "<b>%s</b>\n%b" | ||||||
|  |      | ||||||
|  |     # Sort messages by urgency. | ||||||
|  |     sort = yes | ||||||
|  |      | ||||||
|  |     # Show how many messages are currently hidden (because of geometry). | ||||||
|  |     indicate_hidden = yes | ||||||
|  |      | ||||||
|  |     # Alignment of message text. | ||||||
|  |     # Possible values are "left", "center" and "right". | ||||||
|  |     alignment = left | ||||||
|  |      | ||||||
|  |     # The frequency with wich text that is longer than the notification | ||||||
|  |     # window allows bounces back and forth. | ||||||
|  |     # This option conflicts with "word_wrap". | ||||||
|  |     # Set to 0 to disable. | ||||||
|  |     bounce_freq = 0 | ||||||
|  |      | ||||||
|  |     # Show age of message if message is older than show_age_threshold | ||||||
|  |     # seconds. | ||||||
|  |     # Set to -1 to disable. | ||||||
|  |     show_age_threshold = 60 | ||||||
|  |      | ||||||
|  |     # Split notifications into multiple lines if they don't fit into | ||||||
|  |     # geometry. | ||||||
|  |     word_wrap = yes | ||||||
|  |      | ||||||
|  |     # Ignore newlines '\n' in notifications. | ||||||
|  |     ignore_newline = no | ||||||
|  |      | ||||||
|  |      | ||||||
|  |     # The geometry of the window: | ||||||
|  |     #   [{width}]x{height}[+/-{x}+/-{y}] | ||||||
|  |     # The geometry of the message window. | ||||||
|  |     # The height is measured in number of notifications everything else | ||||||
|  |     # in pixels.  If the width is omitted but the height is given | ||||||
|  |     # ("-geometry x2"), the message window expands over the whole screen | ||||||
|  |     # (dmenu-like).  If width is 0, the window expands to the longest | ||||||
|  |     # message displayed.  A positive x is measured from the left, a | ||||||
|  |     # negative from the right side of the screen.  Y is measured from | ||||||
|  |     # the top and down respectevly. | ||||||
|  |     # The width can be negative.  In this case the actual width is the | ||||||
|  |     # screen width minus the width defined in within the geometry option. | ||||||
|  |     geometry = "500x32-710+32" | ||||||
|  |      | ||||||
|  |     # Shrink window if it's smaller than the width.  Will be ignored if | ||||||
|  |     # width is 0. | ||||||
|  |     shrink = no | ||||||
|  |      | ||||||
|  |     # The transparency of the window.  Range: [0; 100]. | ||||||
|  |     # This option will only work if a compositing windowmanager is | ||||||
|  |     # present (e.g. xcompmgr, compiz, etc.). | ||||||
|  |     transparency = 25 | ||||||
|  |      | ||||||
|  |     # Don't remove messages, if the user is idle (no mouse or keyboard input) | ||||||
|  |     # for longer than idle_threshold seconds. | ||||||
|  |     # Set to 0 to disable. | ||||||
|  |     idle_threshold = 120 | ||||||
|  |      | ||||||
|  |     # Which monitor should the notifications be displayed on. | ||||||
|  |     monitor = 0 | ||||||
|  |      | ||||||
|  |     # Display notification on focused monitor.  Possible modes are: | ||||||
|  |     #   mouse: follow mouse pointer | ||||||
|  |     #   keyboard: follow window with keyboard focus | ||||||
|  |     #   none: don't follow anything | ||||||
|  |     #  | ||||||
|  |     # "keyboard" needs a windowmanager that exports the | ||||||
|  |     # _NET_ACTIVE_WINDOW property. | ||||||
|  |     # This should be the case for almost all modern windowmanagers. | ||||||
|  |     #  | ||||||
|  |     # If this option is set to mouse or keyboard, the monitor option | ||||||
|  |     # will be ignored. | ||||||
|  |     follow = mouse | ||||||
|  |      | ||||||
|  |     # Should a notification popped up from history be sticky or timeout | ||||||
|  |     # as if it would normally do. | ||||||
|  |     sticky_history = yes | ||||||
|  |      | ||||||
|  |     # Maximum amount of notifications kept in history | ||||||
|  |     history_length = 20 | ||||||
|  |      | ||||||
|  |     # Display indicators for URLs (U) and actions (A). | ||||||
|  |     show_indicators = yes | ||||||
|  |      | ||||||
|  |     # The height of a single line.  If the height is smaller than the | ||||||
|  |     # font height, it will get raised to the font height. | ||||||
|  |     # This adds empty space above and under the text. | ||||||
|  |     line_height = 0 | ||||||
|  |      | ||||||
|  |     # Draw a line of "separatpr_height" pixel height between two | ||||||
|  |     # notifications. | ||||||
|  |     # Set to 0 to disable. | ||||||
|  |     separator_height = 2 | ||||||
|  |      | ||||||
|  |     # Padding between text and separator. | ||||||
|  |     padding = 8 | ||||||
|  |      | ||||||
|  |     # Horizontal padding. | ||||||
|  |     horizontal_padding = 8 | ||||||
|  |      | ||||||
|  |     # Define a color for the separator. | ||||||
|  |     # possible values are: | ||||||
|  |     #  * auto: dunst tries to find a color fitting to the background; | ||||||
|  |     #  * foreground: use the same color as the foreground; | ||||||
|  |     #  * frame: use the same color as the frame; | ||||||
|  |     #  * anything else will be interpreted as a X color. | ||||||
|  |     separator_color = frame | ||||||
|  |      | ||||||
|  |     # Print a notification on startup. | ||||||
|  |     # This is mainly for error detection, since dbus (re-)starts dunst | ||||||
|  |     # automatically after a crash. | ||||||
|  |     startup_notification = true | ||||||
|  |      | ||||||
|  |     # dmenu path. | ||||||
|  |     dmenu = /usr/bin/dmenu -p dunst: | ||||||
|  |     #dmenu = /usr/bin/rofi -dmenu | ||||||
|  |      | ||||||
|  |     # Browser for opening urls in context menu. | ||||||
|  |     browser = /usr/bin/firefox -new-tab | ||||||
|  |  | ||||||
|  | 		 # Align icons left/right/off | ||||||
|  | 		 icon_position = off | ||||||
|  |  | ||||||
|  |     # Paths to default icons. | ||||||
|  |     icon_folders = /usr/share/icons/gnome/16x16/status/:/usr/share/icons/gnome/16x16/devices/ | ||||||
|  |  | ||||||
|  | [frame] | ||||||
|  |     width = 2 | ||||||
|  |     color = "#467EC2" | ||||||
|  |  | ||||||
|  | [shortcuts] | ||||||
|  |  | ||||||
|  |     # Shortcuts are specified as [modifier+][modifier+]...key | ||||||
|  |     # Available modifiers are "ctrl", "mod1" (the alt-key), "mod2", | ||||||
|  |     # "mod3" and "mod4" (windows-key). | ||||||
|  |     # Xev might be helpful to find names for keys. | ||||||
|  |      | ||||||
|  |     # Close notification. | ||||||
|  |     close = ctrl+space | ||||||
|  |      | ||||||
|  |     # Close all notifications. | ||||||
|  |     close_all = ctrl+shift+space | ||||||
|  |      | ||||||
|  |     # Redisplay last message(s). | ||||||
|  |     # On the US keyboard layout "grave" is normally above TAB and left | ||||||
|  |     # of "1". | ||||||
|  |     history = mod4+d | ||||||
|  |      | ||||||
|  |     # Context menu. | ||||||
|  |     context = mod4+shift+d | ||||||
|  |  | ||||||
|  | [urgency_low] | ||||||
|  |     # IMPORTANT: colors have to be defined in quotation marks. | ||||||
|  |     # Otherwise the "#" and following would be interpreted as a comment. | ||||||
|  |     background = "#1f1f1f" | ||||||
|  |     foreground = "#f9f9f9" | ||||||
|  |     timeout = 10 | ||||||
|  |  | ||||||
|  | [urgency_normal] | ||||||
|  |     background = "#1f1f1f" | ||||||
|  |     foreground = "#f9f9f9" | ||||||
|  |     timeout = 10 | ||||||
|  |  | ||||||
|  | [urgency_critical] | ||||||
|  |     background = "#78090C" | ||||||
|  |     foreground = "#f9f9f9" | ||||||
|  |     timeout = 0 | ||||||
|  |  | ||||||
|  |  | ||||||
|  | # Every section that isn't one of the above is interpreted as a rules to | ||||||
|  | # override settings for certain messages. | ||||||
|  | # Messages can be matched by "appname", "summary", "body", "icon", "category", | ||||||
|  | # "msg_urgency" and you can override the "timeout", "urgency", "foreground", | ||||||
|  | # "background", "new_icon" and "format". | ||||||
|  | # Shell-like globbing will get expanded. | ||||||
|  | # | ||||||
|  | # SCRIPTING | ||||||
|  | # You can specify a script that gets run when the rule matches by | ||||||
|  | # setting the "script" option. | ||||||
|  | # The script will be called as follows: | ||||||
|  | #   script appname summary body icon urgency | ||||||
|  | # where urgency can be "LOW", "NORMAL" or "CRITICAL". | ||||||
|  | #  | ||||||
|  | # NOTE: if you don't want a notification to be displayed, set the format | ||||||
|  | # to "". | ||||||
|  | # NOTE: It might be helpful to run dunst -print in a terminal in order | ||||||
|  | # to find fitting options for rules. | ||||||
|  |  | ||||||
|  | #[espeak] | ||||||
|  | #    summary = "*" | ||||||
|  | #    script = dunst_espeak.sh | ||||||
|  |  | ||||||
|  | #[script-test] | ||||||
|  | #    summary = "*script*" | ||||||
|  | #    script = dunst_test.sh | ||||||
|  |  | ||||||
|  | #[ignore] | ||||||
|  | #    # This notification will not be displayed | ||||||
|  | #    summary = "foobar" | ||||||
|  | #    format = "" | ||||||
|  |  | ||||||
|  | #[signed_on] | ||||||
|  | #    appname = Pidgin | ||||||
|  | #    summary = "*signed on*" | ||||||
|  | #    urgency = low | ||||||
|  | # | ||||||
|  | #[signed_off] | ||||||
|  | #    appname = Pidgin | ||||||
|  | #    summary = *signed off* | ||||||
|  | #    urgency = low | ||||||
|  | # | ||||||
|  | #[says] | ||||||
|  | #    appname = Pidgin | ||||||
|  | #    summary = *says* | ||||||
|  | #    urgency = critical | ||||||
|  | # | ||||||
|  | #[twitter] | ||||||
|  | #    appname = Pidgin | ||||||
|  | #    summary = *twitter.com* | ||||||
|  | #    urgency = normal | ||||||
|  | # | ||||||
|  | # vim: ft=cfg | ||||||
							
								
								
									
										12
									
								
								homedir/.config/frozenbar/bin/simple_launcher_run
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										12
									
								
								homedir/.config/frozenbar/bin/simple_launcher_run
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,12 @@ | |||||||
|  | #!/usr/bin/zsh | ||||||
|  |  | ||||||
|  | frozenbar_cfgdir="$XDG_CONFIG_HOME/frozenbar" | ||||||
|  |  | ||||||
|  | declare e cmd position=1 | ||||||
|  | declare -a cmds | ||||||
|  |  | ||||||
|  | while IFS=':' read -r name _ cmd args; do | ||||||
|  | 	cmds+=( "$cmd" ${(s: :)args} ) | ||||||
|  | done < "$frozenbar_cfgdir/rc.d/simple_launcher.rc" | ||||||
|  |  | ||||||
|  | $cmds[$1] | ||||||
							
								
								
									
										1
									
								
								homedir/.config/frozenbar/mod
									
									
									
									
									
										Symbolic link
									
								
							
							
						
						
									
										1
									
								
								homedir/.config/frozenbar/mod
									
									
									
									
									
										Symbolic link
									
								
							| @@ -0,0 +1 @@ | |||||||
|  | /home/fbt/git/frozenbar/mod | ||||||
							
								
								
									
										139
									
								
								homedir/.config/frozenbar/rc
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										139
									
								
								homedir/.config/frozenbar/rc
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,139 @@ | |||||||
|  | # vim: ft=zsh | ||||||
|  |  | ||||||
|  | # Which modules to load | ||||||
|  | mods=( | ||||||
|  | 	bspwm_desktop_pager | ||||||
|  | 	bspwm_taskbar | ||||||
|  | 	network_status | ||||||
|  | 	date | ||||||
|  | 	load | ||||||
|  | ) | ||||||
|  |  | ||||||
|  | # Define the *look* of your panel here | ||||||
|  | function panel_draw { | ||||||
|  | 	panel_data=(  | ||||||
|  | 		"$out[bspwm_desktop_pager]" | ||||||
|  | 		"$out[bspwm_taskbar]" | ||||||
|  | 		"%{r}" | ||||||
|  | 		"%{F$panel_bg_focused}%{F-}%{B$panel_bg_focused}" | ||||||
|  | 		"" | ||||||
|  | 		"LA: $out[load]" | ||||||
|  | 		"" | ||||||
|  | 		"Network: $out[network_status]" | ||||||
|  | 		" " | ||||||
|  | 		"$out[date]" | ||||||
|  | 		"" | ||||||
|  | 		"%{B-}" | ||||||
|  | 	) | ||||||
|  |  | ||||||
|  | 	printf '%s\n' "$panel_data" | ||||||
|  | } | ||||||
|  |  | ||||||
|  | function panel_pre_start { | ||||||
|  | 	# Set bspwm top padding | ||||||
|  | 	bspc config top_padding "$(( panel_h + bspwm_window_gap ))" | ||||||
|  | } | ||||||
|  |  | ||||||
|  | function panel_post_start { | ||||||
|  | 	# Set the layer on which lemonbar resides | ||||||
|  | 	xdo above -t $( xdo id -n root ) $( xdo id -a $panel_window_name ) | ||||||
|  | } | ||||||
|  |  | ||||||
|  | function panel_cleanup_misc { | ||||||
|  | 	# Reset bspwm top padding | ||||||
|  | 	bspc config top_padding 0 | ||||||
|  | } | ||||||
|  |  | ||||||
|  | # General config | ||||||
|  | # ============== | ||||||
|  |  | ||||||
|  | # fifo location | ||||||
|  | #panel_fifo="$XDG_RUNTIME_DIR/frozenbar.fifo" | ||||||
|  |  | ||||||
|  | # Window name | ||||||
|  | panel_window_name='frozenbar' | ||||||
|  |  | ||||||
|  | ## Colours | ||||||
|  | # I source a common config so that all my scripts share the same colours | ||||||
|  | source ~/.config/common/colours | ||||||
|  | panel_fg_normal=$colour_fg | ||||||
|  | panel_fg_focused=$colour_fg_active | ||||||
|  | panel_bg_normal=$colour_bg | ||||||
|  | panel_bg_focused=$colour_bg_active | ||||||
|  |  | ||||||
|  | ## Fonts | ||||||
|  | panel_fontspec='-*-terminesspowerline-medium-*-normal-*-14-*-*-*-*-*-iso10646-*' | ||||||
|  |  | ||||||
|  | ## Get root window data to automatically set up the panel's dimensions and position | ||||||
|  | get_rootwin_data | ||||||
|  |  | ||||||
|  | ## We use bspwm, and we need to know its settings | ||||||
|  | source ~/.config/common/bspwm | ||||||
|  |  | ||||||
|  | ## Set the panel dimensions and position | ||||||
|  | panel_h='14' | ||||||
|  | panel_w=$(( root_win_w - ( bspwm_window_gap * 2 ) )) | ||||||
|  | panel_geometry="${panel_w}x${panel_h}+${bspwm_window_gap}+${bspwm_window_gap}" | ||||||
|  |  | ||||||
|  | ## How many clickable areas are available to use: | ||||||
|  | panel_clickable_areas='128' | ||||||
|  |  | ||||||
|  | # Module configs | ||||||
|  | # ============== | ||||||
|  |  | ||||||
|  | # bspwm_desktop_pager | ||||||
|  | # ------------------- | ||||||
|  | declare -A bspwm_desktop_pager | ||||||
|  | bspwm_desktop_pager[colour_focused]=$panel_bg_focused | ||||||
|  | bspwm_desktop_pager[show_empty_tags]=0 | ||||||
|  |  | ||||||
|  | declare -a bspwm_desktop_pager_blacklist | ||||||
|  | bspwm_desktop_pager_blacklist=( 'h' ) | ||||||
|  |  | ||||||
|  | # bspwm_taskbar | ||||||
|  | # ------------- | ||||||
|  | declare -A bspwm_taskbar | ||||||
|  | declare -a bspwm_taskbar_blacklist | ||||||
|  | bspwm_taskbar[focused_only]=0 | ||||||
|  | bspwm_taskbar[counter]=1 | ||||||
|  | bspwm_taskbar[fg_normal]='#bebebe' | ||||||
|  | bspwm_taskbar[fg_focused]=$panel_fg_normal | ||||||
|  | bspwm_taskbar[start]="%{F$panel_bg_normal}%{B$panel_bg_focused}%{F-} " | ||||||
|  | bspwm_taskbar[end]="%{F$panel_bg_focused} %{B-}%{F-}" | ||||||
|  | bspwm_taskbar[max_size]=132 | ||||||
|  | bspwm_taskbar_blacklist=( 'h' ) | ||||||
|  |  | ||||||
|  | # bspwm_date | ||||||
|  | # ---------- | ||||||
|  | declare -A date | ||||||
|  | date[format]='%A, %Y.%m.%d %H:%M:%S' | ||||||
|  |  | ||||||
|  | # simple_launcher | ||||||
|  | # --------------- | ||||||
|  | declare -A simple_launcher | ||||||
|  | simple_launcher[start]="%{F$panel_bg_normal}%{B$panel_bg_focused}%{F-}" | ||||||
|  | simple_launcher[end]="%{F$panel_bg_focused} %{B-}%{F-}" | ||||||
|  |  | ||||||
|  | # network_status | ||||||
|  | # -------------- | ||||||
|  | mod_network_status_check_rate=10 | ||||||
|  | mod_network_status_ok='%{F#00FF00}ok%{F-}' | ||||||
|  | mod_network_status_warn='%{F#FFFF00}WARN%{F-}' | ||||||
|  | mod_network_status_fail='%{F#FF0000}FAIL%{F-}' | ||||||
|  |  | ||||||
|  | network_status_hosts=( | ||||||
|  | 	de-ber-as20647.anchors.atlas.ripe.net | ||||||
|  | 	nl-ams-as1101.anchors.atlas.ripe.net | ||||||
|  | 	uk-boh-as196745.anchors.atlas.ripe.net | ||||||
|  | ) | ||||||
|  |  | ||||||
|  | out[network_status]='%{F#FFFF00}checking...%{F-}' | ||||||
|  |  | ||||||
|  | # mod_load | ||||||
|  | # -------- | ||||||
|  | mod_load_crit=4 | ||||||
|  | mod_load_warn=3 | ||||||
|  |  | ||||||
|  | mod_load_warn_colour='#FFFF00' | ||||||
|  | mod_load_crit_colour='#FF0000' | ||||||
|  | mod_load_ok_colour='#00FF00' | ||||||
							
								
								
									
										2
									
								
								homedir/.config/frozenbar/rc.d/simple_launcher.rc
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								homedir/.config/frozenbar/rc.d/simple_launcher.rc
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,2 @@ | |||||||
|  | browser::browser | ||||||
|  | terminal::terminal | ||||||
							
								
								
									
										1
									
								
								homedir/.config/moltenbar/mod
									
									
									
									
									
										Symbolic link
									
								
							
							
						
						
									
										1
									
								
								homedir/.config/moltenbar/mod
									
									
									
									
									
										Symbolic link
									
								
							| @@ -0,0 +1 @@ | |||||||
|  | /home/fbt/git/moltenbar/mod | ||||||
							
								
								
									
										58
									
								
								homedir/.config/moltenbar/rc.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										58
									
								
								homedir/.config/moltenbar/rc.yaml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,58 @@ | |||||||
|  | # vim: ft=yaml sw=2 et | ||||||
|  |  | ||||||
|  | #geometry: '1262x14+9+9' | ||||||
|  | height: 14 | ||||||
|  | gap: 9 | ||||||
|  | fontspec: '-*-terminesspowerline-medium-*-normal-*-14-*-*-*-*-*-iso10646-*' | ||||||
|  | window_name: 'moltenbar' | ||||||
|  | active_areas: '128' | ||||||
|  | modules: | ||||||
|  |   - bspwm_pager | ||||||
|  |   - date | ||||||
|  |   - bspwm_taskbar | ||||||
|  |   - load_average | ||||||
|  |   - network | ||||||
|  |   - newmail | ||||||
|  | format: "<%= @panel_data['bspwm_pager'] %><%= @panel_data['bspwm_taskbar'] %>%{r}%{F<%= @config['colours']['bg_focused'] %>} %{F-}%{B<%= @config['colours']['bg_focused'] %>}  New mail: <%= @panel_data['newmail'] %>  LA: <%= @panel_data['load_average'] %>  Network: <%= @panel_data['network'] %>   <%= @panel_data['date'] %>  %{B-}" | ||||||
|  | colours: | ||||||
|  |   fg: '#f9f9f9' | ||||||
|  |   fg_focused: '#f9f9f9' | ||||||
|  |   bg: '#001f1f1f' | ||||||
|  |   bg_focused: '#467EC2' | ||||||
|  |  | ||||||
|  | # Module settings | ||||||
|  | mod: | ||||||
|  |   bspwm_pager: | ||||||
|  |     colour_focused: '#f9f9f9' | ||||||
|  |     show_empty_desktops: false | ||||||
|  | #   monitors: | ||||||
|  | #     - "WMHDMI1" | ||||||
|  |     blacklist: | ||||||
|  |       -h | ||||||
|  |   bspwm_taskbar: | ||||||
|  |     begin: "%{F<%= @config['colours']['bg'] %>}%{B<%= @config['colours']['bg_focused'] %>}%{F-}  " | ||||||
|  |     end: "%{F<%= @config['colours']['bg_focused'] %>}  %{B-} " | ||||||
|  |   date: | ||||||
|  |     format: '%A, %Y.%m.%d %H:%M:%S' | ||||||
|  |   load_average: | ||||||
|  |     warn_value: 3 | ||||||
|  |     crit_value: 4 | ||||||
|  |     ok_colour: "#00FF00" | ||||||
|  |     warn_colour: "#FFFF00" | ||||||
|  |     crit_colour: "#FF0000" | ||||||
|  |   network: | ||||||
|  |     hosts: | ||||||
|  |       - de-ber-as20647.anchors.atlas.ripe.net | ||||||
|  |       - nl-ams-as1101.anchors.atlas.ripe.net | ||||||
|  |       - uk-boh-as196745.anchors.atlas.ripe.net | ||||||
|  |     ok_colour: "#00FF00" | ||||||
|  |     warn_colour: "#FFFF00" | ||||||
|  |     crit_colour: "#FF0000" | ||||||
|  |   newmail: | ||||||
|  |     ok_message: "*" | ||||||
|  |     ok_colour: "#00FF00" | ||||||
|  |     crit_message: "***" | ||||||
|  |     crit_colour: "#FF0000" | ||||||
|  |     maildirs: | ||||||
|  |       - /home/fbt/sync/maildir/.ops | ||||||
|  |       - /home/fbt/sync/maildir/.inbox | ||||||
							
								
								
									
										1
									
								
								homedir/.config/sxhkd/sxhkdrc
									
									
									
									
									
										Symbolic link
									
								
							
							
						
						
									
										1
									
								
								homedir/.config/sxhkd/sxhkdrc
									
									
									
									
									
										Symbolic link
									
								
							| @@ -0,0 +1 @@ | |||||||
|  | ../bspwm/sxhkdrc | ||||||
							
								
								
									
										29
									
								
								homedir/.config/sxhkd/sxhkdrc-zwm
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										29
									
								
								homedir/.config/sxhkd/sxhkdrc-zwm
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,29 @@ | |||||||
|  | super + x | ||||||
|  | 	terminal | ||||||
|  |  | ||||||
|  | super + j | ||||||
|  | 	zwm-focus | ||||||
|  |  | ||||||
|  | super + w | ||||||
|  | 	killw $(pfw) | ||||||
|  |  | ||||||
|  | super + Return | ||||||
|  | 	zwm-tile | ||||||
|  |  | ||||||
|  | super + r | ||||||
|  | 	dmenu_run -fn '-*-terminus-medium-r-*-*-16-*-*-*-*-*-*-*' -nb '#222222' -nf '#bbbbbb' -sb '#005577' | ||||||
|  |  | ||||||
|  | super + m | ||||||
|  | 	zwm-monocle | ||||||
|  |  | ||||||
|  | super + t | ||||||
|  | 	zwm-tile | ||||||
|  |  | ||||||
|  | super + l | ||||||
|  | 	lock | ||||||
|  |  | ||||||
|  | super + {1-9} | ||||||
|  | 	zwm-tags switch {1-9} | ||||||
|  |  | ||||||
|  | super + shift + {1-9} | ||||||
|  | 	zwm-tags mv {1-9} | ||||||
							
								
								
									
										41
									
								
								homedir/.config/termite/config
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										41
									
								
								homedir/.config/termite/config
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,41 @@ | |||||||
|  | [options] | ||||||
|  | font = xos4 terminus 10 | ||||||
|  | #allow_bold = false | ||||||
|  | cursor_blink = off | ||||||
|  | cursor_shape = ibeam | ||||||
|  | browser = browser | ||||||
|  | mouse_autohide = true | ||||||
|  | audible_bell = true | ||||||
|  |  | ||||||
|  | [hints] | ||||||
|  | font = terminus 10 | ||||||
|  | roundness = 0.0 | ||||||
|  |  | ||||||
|  | [colors] | ||||||
|  | foreground = #839496 | ||||||
|  | foreground_bold = #eee8d5 | ||||||
|  | foreground_dim = #888888 | ||||||
|  | background = #141414 | ||||||
|  | #background = rgba(18, 21, 26, 0.9) | ||||||
|  | cursor = #93a1a1 | ||||||
|  |  | ||||||
|  | # if unset, will reverse foreground and background | ||||||
|  | #highlight = #839496 | ||||||
|  |  | ||||||
|  | # colors from color0 to color254 can be set | ||||||
|  | color0 = #073642 | ||||||
|  | color1 = #dc322f | ||||||
|  | color2 = #859900 | ||||||
|  | color3 = #b58900 | ||||||
|  | color4 = #268bd2 | ||||||
|  | color5 = #d33682 | ||||||
|  | color6 = #2aa198 | ||||||
|  | color7 = #eee8d5 | ||||||
|  | color8 = #002b36 | ||||||
|  | color9 = #cb4b16 | ||||||
|  | color10 = #586e75 | ||||||
|  | color11 = #657b83 | ||||||
|  | color12 = #839496 | ||||||
|  | color13 = #6c71c4 | ||||||
|  | color14 = #93a1a1 | ||||||
|  | color15 = #fdf6e3 | ||||||
							
								
								
									
										22
									
								
								homedir/.config/termite/gotham
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										22
									
								
								homedir/.config/termite/gotham
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,22 @@ | |||||||
|  | # Gotham color scheme | ||||||
|  | [colors] | ||||||
|  | foreground = #98d1ce | ||||||
|  | foreground_bold = #98d1ce | ||||||
|  | cursor = #98d1ce | ||||||
|  | background = #0a0f14 | ||||||
|  | color0 = #0a0f14 | ||||||
|  | color8 = #10151b | ||||||
|  | color1 = #c33027 | ||||||
|  | color9 = #d26939 | ||||||
|  | color2 = #26a98b | ||||||
|  | color10 = #081f2d | ||||||
|  | color3 = #edb54b | ||||||
|  | color11 = #245361 | ||||||
|  | color4 = #195465 | ||||||
|  | color12 = #093748 | ||||||
|  | color5 = #4e5165 | ||||||
|  | color13 = #888ba5 | ||||||
|  | color6 = #33859d | ||||||
|  | color14 = #599caa | ||||||
|  | color7 = #98d1ce | ||||||
|  | color15 = #d3ebe9 | ||||||
							
								
								
									
										27
									
								
								homedir/.config/termite/solarized
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										27
									
								
								homedir/.config/termite/solarized
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,27 @@ | |||||||
|  | [colors] | ||||||
|  | foreground = #839496 | ||||||
|  | foreground_bold = #eee8d5 | ||||||
|  | foreground_dim = #888888 | ||||||
|  | background = #00141A | ||||||
|  | cursor = #93a1a1 | ||||||
|  |  | ||||||
|  | # if unset, will reverse foreground and background | ||||||
|  | #highlight = #839496 | ||||||
|  |  | ||||||
|  | # colors from color0 to color254 can be set | ||||||
|  | color0 = #073642 | ||||||
|  | color1 = #dc322f | ||||||
|  | color2 = #859900 | ||||||
|  | color3 = #b58900 | ||||||
|  | color4 = #268bd2 | ||||||
|  | color5 = #d33682 | ||||||
|  | color6 = #2aa198 | ||||||
|  | color7 = #eee8d5 | ||||||
|  | color8 = #002b36 | ||||||
|  | color9 = #cb4b16 | ||||||
|  | color10 = #586e75 | ||||||
|  | color11 = #657b83 | ||||||
|  | color12 = #839496 | ||||||
|  | color13 = #6c71c4 | ||||||
|  | color14 = #93a1a1 | ||||||
|  | color15 = #fdf6e3 | ||||||
							
								
								
									
										4
									
								
								homedir/.config/watchman/init.d/compton
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										4
									
								
								homedir/.config/watchman/init.d/compton
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,4 @@ | |||||||
|  | #!/usr/bin/env watchman | ||||||
|  |  | ||||||
|  | service_command='/bin/compton' | ||||||
|  | service_args=( --vsync opengl -f -D 3 -e 1.0 ) | ||||||
							
								
								
									
										4
									
								
								homedir/.config/watchman/init.d/dunst
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										4
									
								
								homedir/.config/watchman/init.d/dunst
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,4 @@ | |||||||
|  | #!/usr/bin/env watchman | ||||||
|  |  | ||||||
|  | #service_respawn='true' | ||||||
|  | service_command='/usr/bin/dunst' | ||||||
							
								
								
									
										4
									
								
								homedir/.config/watchman/init.d/jackd
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										4
									
								
								homedir/.config/watchman/init.d/jackd
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,4 @@ | |||||||
|  | #!/bin/env watchman | ||||||
|  |  | ||||||
|  | service_command='/usr/bin/jackd' | ||||||
|  | service_args=( -d alsa ) | ||||||
							
								
								
									
										5
									
								
								homedir/.config/watchman/init.d/lockd
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										5
									
								
								homedir/.config/watchman/init.d/lockd
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,5 @@ | |||||||
|  | #!/usr/bin/env watchman | ||||||
|  |  | ||||||
|  | service_respawn='true' | ||||||
|  | service_command="$HOME/bin/lockd" | ||||||
|  | service_args=( -- i3lock-extra -s -o ~/pics/lock.png -g -p ) | ||||||
							
								
								
									
										21
									
								
								homedir/.config/watchman/init.d/moltenbar
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										21
									
								
								homedir/.config/watchman/init.d/moltenbar
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,21 @@ | |||||||
|  | #!/usr/bin/env watchman | ||||||
|  |  | ||||||
|  | #service_respawn='true' | ||||||
|  | service_command='/home/fbt/bin/moltenbar' | ||||||
|  |  | ||||||
|  | service_depends_ready=( compton ) | ||||||
|  |  | ||||||
|  | post_start() { | ||||||
|  | 	# Die if the thing didn't start | ||||||
|  | 	timer 5 nullexec xdo id -a moltenbar || return 1 | ||||||
|  | 	 | ||||||
|  | 	# Set the layer on which lemonbar resides | ||||||
|  | 	xdo above -t $( xdo id -n root ) $( xdo id -a moltenbar ) | ||||||
|  |  | ||||||
|  | 	# Set the top badding for bspwm | ||||||
|  | 	bspc config top_padding $(( 14 + 9 )) &>/tmp/debug.log | ||||||
|  | } | ||||||
|  |  | ||||||
|  | pre_stop() { | ||||||
|  | 	bspc config top_padding 0 | ||||||
|  | } | ||||||
							
								
								
									
										4
									
								
								homedir/.config/watchman/init.d/mpc-notify
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										4
									
								
								homedir/.config/watchman/init.d/mpc-notify
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,4 @@ | |||||||
|  | #!/usr/bin/env watchman | ||||||
|  |  | ||||||
|  | #service_respawn='true' | ||||||
|  | service_command="$HOME/bin/mpc-notify" | ||||||
							
								
								
									
										8
									
								
								homedir/.config/watchman/init.d/mpd
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										8
									
								
								homedir/.config/watchman/init.d/mpd
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,8 @@ | |||||||
|  | #!/usr/bin/env ssm | ||||||
|  |  | ||||||
|  | service_tmpfiles=( "/run/user/$UID/mpd:dir" ) | ||||||
|  | service_respawn=1 | ||||||
|  | service_command='/usr/bin/mpd' | ||||||
|  | service_args=( --no-daemon -v ) | ||||||
|  |  | ||||||
|  | post_start() { ready; } | ||||||
							
								
								
									
										21
									
								
								homedir/.config/watchman/init.d/privoxy
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										21
									
								
								homedir/.config/watchman/init.d/privoxy
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,21 @@ | |||||||
|  | #!/usr/bin/env watchman | ||||||
|  |  | ||||||
|  | privoxy_configfile="$HOME/.config/privoxy/config" | ||||||
|  |  | ||||||
|  | service_respawn='true' | ||||||
|  | service_command='/usr/bin/privoxy' | ||||||
|  | service_args=( --no-daemon "$privoxy_configfile" ) | ||||||
|  |  | ||||||
|  | privoxy::configtest() { | ||||||
|  | 	"$service_command" --config-test "${service_args[@]}" | ||||||
|  | } | ||||||
|  |  | ||||||
|  | restart() { | ||||||
|  | 	privoxy::configtest || { | ||||||
|  | 		watchman.err "Config test failed, not restarting!" | ||||||
|  | 		return 1 | ||||||
|  | 	} | ||||||
|  | 	 | ||||||
|  | 	stop | ||||||
|  | 	start | ||||||
|  | } | ||||||
							
								
								
									
										14
									
								
								homedir/.config/watchman/init.d/pulseaudio
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										14
									
								
								homedir/.config/watchman/init.d/pulseaudio
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,14 @@ | |||||||
|  | #!/bin/env watchman | ||||||
|  |  | ||||||
|  | service_depends=( jackd ) | ||||||
|  |  | ||||||
|  | service_command='/usr/bin/pulseaudio' | ||||||
|  | service_args=(  | ||||||
|  | 	--realtime=false | ||||||
|  | 	--exit-idle-time=-1 | ||||||
|  | 	-L module-jack-sink | ||||||
|  | 	-L module-jack-source | ||||||
|  | 	-L module-native-protocol-tcp | ||||||
|  | ) | ||||||
|  |  | ||||||
|  | stop () { "$service_command" -k; } | ||||||
							
								
								
									
										5
									
								
								homedir/.config/watchman/init.d/scron
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										5
									
								
								homedir/.config/watchman/init.d/scron
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,5 @@ | |||||||
|  | #!/usr/bin/env watchman | ||||||
|  |  | ||||||
|  | service_respawn='true' | ||||||
|  | service_command='/usr/bin/crond' | ||||||
|  | service_args=( -n -f ~/.config/crontab ) | ||||||
							
								
								
									
										5
									
								
								homedir/.config/watchman/init.d/socks
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										5
									
								
								homedir/.config/watchman/init.d/socks
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,5 @@ | |||||||
|  | #!/usr/bin/watchman | ||||||
|  |  | ||||||
|  | service_respaen=true | ||||||
|  | service_command='/usr/bin/ssh' | ||||||
|  | service_args=( -i ~/.ssh/proxy/id_ecdsa -ND 8080 proxy@malganis.priv ) | ||||||
							
								
								
									
										4
									
								
								homedir/.config/watchman/init.d/ssh-agent
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										4
									
								
								homedir/.config/watchman/init.d/ssh-agent
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,4 @@ | |||||||
|  | #!/usr/bin/env watchman | ||||||
|  |  | ||||||
|  | service_command='/usr/bin/ssh-agent' | ||||||
|  | service_args=( -d -a "/tmp/${USER}-ssh-auth.sock" ) | ||||||
							
								
								
									
										5
									
								
								homedir/.config/watchman/init.d/sxhkd
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										5
									
								
								homedir/.config/watchman/init.d/sxhkd
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,5 @@ | |||||||
|  | #!/usr/bin/env watchman | ||||||
|  |  | ||||||
|  | #service_respawn='true' | ||||||
|  | service_command='/usr/bin/sxhkd' | ||||||
|  | service_reload_signal='USR1' | ||||||
							
								
								
									
										4
									
								
								homedir/.config/watchman/init.d/syncthing
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										4
									
								
								homedir/.config/watchman/init.d/syncthing
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,4 @@ | |||||||
|  | #!/bin/env watchman | ||||||
|  |  | ||||||
|  | #service_respawn='true' | ||||||
|  | service_command='/usr/bin/syncthing' | ||||||
							
								
								
									
										4
									
								
								homedir/.config/watchman/init.d/transmission-daemon
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										4
									
								
								homedir/.config/watchman/init.d/transmission-daemon
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,4 @@ | |||||||
|  | #!/bin/env watchman | ||||||
|  |  | ||||||
|  | service_command='/usr/bin/transmission-daemon' | ||||||
|  | service_args=( -f ) | ||||||
							
								
								
									
										5
									
								
								homedir/.config/watchman/init.d/ufwd
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										5
									
								
								homedir/.config/watchman/init.d/ufwd
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,5 @@ | |||||||
|  | #!/usr/bin/env watchman | ||||||
|  |  | ||||||
|  | #service_respawn='true' | ||||||
|  | service_command='/usr/bin/ufwd' | ||||||
|  | service_args=( -n -c -- -p ) | ||||||
							
								
								
									
										54
									
								
								homedir/.config/zsh.d/modules/config
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										54
									
								
								homedir/.config/zsh.d/modules/config
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,54 @@ | |||||||
|  | # Basic zsh configuration | ||||||
|  | # vim: ft=zsh | ||||||
|  |  | ||||||
|  | # Custom completion | ||||||
|  | fpath=( /etc/zsh/completion $fpath ) | ||||||
|  |  | ||||||
|  | # Completion | ||||||
|  | setopt noautomenu nomenucomplete | ||||||
|  |  | ||||||
|  | # Interactive comments | ||||||
|  | setopt interactive_comments | ||||||
|  |  | ||||||
|  | # Disable autocd | ||||||
|  | unsetopt autocd | ||||||
|  |  | ||||||
|  | # Command completion | ||||||
|  | autoload -U compinit | ||||||
|  | compinit | ||||||
|  |  | ||||||
|  | # Complete dotfiles | ||||||
|  | _comp_options+=( globdots ) | ||||||
|  |  | ||||||
|  | # History | ||||||
|  | setopt HIST_IGNORE_DUPS | ||||||
|  |  | ||||||
|  | HISTFILE=~/.zsh_history | ||||||
|  | SAVEHIST=9001 | ||||||
|  | HISTSIZE=9001 | ||||||
|  | HISTCONTROL=erasedups | ||||||
|  | HISTTIMEFORMAT="%Y-%m-%d %H:%M:%S" | ||||||
|  |  | ||||||
|  | # Fix retarded things | ||||||
|  | NULLCMD=true | ||||||
|  | READNULLCMD=true | ||||||
|  |  | ||||||
|  | # Locale | ||||||
|  | export LC_ALL='en_US.UTF-8' | ||||||
|  |  | ||||||
|  | # dotfiles config | ||||||
|  | dotfiles_dir="$HOME/git/dotfiles" | ||||||
|  |  | ||||||
|  | # PATH | ||||||
|  | set_misc_path "$HOME/ruby/bin" "$HOME/games/bin" "$HOME/.config/alternatives" "$HOME/.local/bin" "$HOME/bin" "$HOME/.gem/ruby/2.3.0/bin/" | ||||||
|  |  | ||||||
|  | # GPG | ||||||
|  | GPG_TTY=$(tty) | ||||||
|  | export GPG_TTY | ||||||
|  |  | ||||||
|  | # EDITOR | ||||||
|  | EDITOR=vim | ||||||
|  | export EDITOR | ||||||
|  |  | ||||||
|  | # jspass completion | ||||||
|  | compdef _pass jspass | ||||||
							
								
								
									
										24
									
								
								homedir/.config/zsh.d/modules/core
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										24
									
								
								homedir/.config/zsh.d/modules/core
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,24 @@ | |||||||
|  | # Functions common to other modules | ||||||
|  | # vim: ft=zsh | ||||||
|  |  | ||||||
|  | # Run the supplied command and null all the output | ||||||
|  | function nullexec { | ||||||
|  | 	"$@" &>/dev/null | ||||||
|  | } | ||||||
|  |  | ||||||
|  | # Compile all includes | ||||||
|  | function newconf { | ||||||
|  | 	for i in ~/.zshrc ~/.config/zsh.d/*; do | ||||||
|  | 		if ! [[ $i =~ .+\.zwc ]]; then | ||||||
|  | 			msg "Compiling $i..." | ||||||
|  | 			zcompile $i | ||||||
|  | 		fi | ||||||
|  | 	done | ||||||
|  | } | ||||||
|  |  | ||||||
|  | # set PATH from misc_path | ||||||
|  | function set_misc_path { | ||||||
|  | 	for p in $@; do | ||||||
|  | 		PATH="$p:$PATH" | ||||||
|  | 	done | ||||||
|  | } | ||||||
							
								
								
									
										14
									
								
								homedir/.config/zsh.d/modules/dotfiles
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										14
									
								
								homedir/.config/zsh.d/modules/dotfiles
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,14 @@ | |||||||
|  | # Functions for manipulating my dotfiles repo | ||||||
|  | # vim: ft=zsh | ||||||
|  |  | ||||||
|  | function dotfiles() { | ||||||
|  | 	declare act=$1 | ||||||
|  |  | ||||||
|  | 	case $act in | ||||||
|  | 		pull|diff) git -C $dotfiles_dir $1;; | ||||||
|  | 		push) | ||||||
|  | 			git -C $dotfiles_dir commit -a | ||||||
|  | 			git -C $dotfiles_dir push | ||||||
|  | 		;; | ||||||
|  | 	esac | ||||||
|  | } | ||||||
							
								
								
									
										8
									
								
								homedir/.config/zsh.d/modules/helpers
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								homedir/.config/zsh.d/modules/helpers
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,8 @@ | |||||||
|  | # Helper functions | ||||||
|  |  | ||||||
|  | xcopy() { xclip -selection clipboard } | ||||||
|  | xpaste() { xclip -selection clipboard -o } | ||||||
|  |  | ||||||
|  | xclip() { | ||||||
|  | 	/usr/bin/xclip -selection clipboard "$@" | ||||||
|  | } | ||||||
							
								
								
									
										28
									
								
								homedir/.config/zsh.d/modules/keys
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										28
									
								
								homedir/.config/zsh.d/modules/keys
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,28 @@ | |||||||
|  | # Keys | ||||||
|  | # vim: ft=zsh | ||||||
|  |  | ||||||
|  | bindkey -e | ||||||
|  |  | ||||||
|  | declare -A key | ||||||
|  | key[Home]=$terminfo[khome] | ||||||
|  | key[End]=$terminfo[kend] | ||||||
|  | key[Delete]=$terminfo[kdch1] | ||||||
|  |  | ||||||
|  | declare -A bindings | ||||||
|  | bindings=( | ||||||
|  | 	Home     'beginning-of-line' | ||||||
|  | 	End      'end-of-line' | ||||||
|  | 	Delete   'delete-char' | ||||||
|  | 	^R     'history-incremental-search-backward' | ||||||
|  | ) | ||||||
|  |  | ||||||
|  | for b in ${(k)bindings}; do | ||||||
|  | 	if [[ $key[$b] ]]; then | ||||||
|  | 		bindkey $key[$b] $bindings[$b] | ||||||
|  | 	fi | ||||||
|  | done | ||||||
|  |  | ||||||
|  | function zle-line-init () { echoti smkx; } | ||||||
|  | function zle-line-finish () { echoti rmkx; } | ||||||
|  | zle -N zle-line-init | ||||||
|  | zle -N zle-line-finish | ||||||
							
								
								
									
										8
									
								
								homedir/.config/zsh.d/modules/local
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								homedir/.config/zsh.d/modules/local
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,8 @@ | |||||||
|  | # Local zsh config, not to be synced. | ||||||
|  | # vim: ft=zsh | ||||||
|  |  | ||||||
|  | # SSH | ||||||
|  | SSH_AUTH_SOCK="/tmp/${USER}-ssh-auth.sock" | ||||||
|  | export SSH_AUTH_SOCK | ||||||
|  |  | ||||||
|  | function x { exec xinit -- -nolisten tcp vt9; } | ||||||
							
								
								
									
										128
									
								
								homedir/.config/zsh.d/modules/prompt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										128
									
								
								homedir/.config/zsh.d/modules/prompt
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,128 @@ | |||||||
|  | # Prompt | ||||||
|  | # vim: ft=zsh | ||||||
|  | autoload -U colors && colors | ||||||
|  |  | ||||||
|  | nullexec() { "$@" &>/dev/null; } | ||||||
|  |  | ||||||
|  | precmd.title() { | ||||||
|  | 	printf '%b' "\e]2;$1\a" | ||||||
|  | } | ||||||
|  |  | ||||||
|  | precmd.svn() { | ||||||
|  | 	if [[ -f .novcsprompt ]]; then | ||||||
|  | 		return 0 | ||||||
|  | 	fi | ||||||
|  |  | ||||||
|  | 	if nullexec svn info; then | ||||||
|  | 		while IFS= read -r line; do | ||||||
|  | 			case $line in | ||||||
|  | 				(M*|A*|D*) svn_unstaged=1;; | ||||||
|  | 				(\!*) svn_missing=1;; | ||||||
|  | 				(\?*) svn_untracked=1;; | ||||||
|  | 			esac | ||||||
|  | 		done < <( svn st ) | ||||||
|  |  | ||||||
|  | 		(( svn_unstaged )) && { | ||||||
|  | 			svn_st+='c' | ||||||
|  | 			svn_st_col='red' | ||||||
|  | 		} | ||||||
|  |  | ||||||
|  | 		(( svn_missing )) && { | ||||||
|  | 			svn_st+='m' | ||||||
|  | 			svn_st_col='red' | ||||||
|  | 		} | ||||||
|  |  | ||||||
|  | 		(( svn_untracked )) && { | ||||||
|  | 			svn_st+='f' | ||||||
|  | 			svn_st_col='red' | ||||||
|  | 		} | ||||||
|  |  | ||||||
|  | 		svn_st_col=${svn_st_col:-"green"} | ||||||
|  | 		svn_st=${svn_st:-"ok"} | ||||||
|  |  | ||||||
|  | 		printf '%s' "(%F{cyan}svn%f:%F{$svn_st_col}$svn_st%f) " | ||||||
|  | 	fi | ||||||
|  | } | ||||||
|  |  | ||||||
|  | precmd.git() { | ||||||
|  | 	declare git_unstaged git_untracked git_status_short git_status_colour git_prompt_msg | ||||||
|  |  | ||||||
|  | 	if [[ -f .novcsprompt ]]; then | ||||||
|  | 		return 0 | ||||||
|  | 	fi | ||||||
|  |  | ||||||
|  | 	if git rev-parse --git-dir &>/dev/null; then | ||||||
|  | 		git_current_branch=$(git rev-parse --abbrev-ref HEAD) | ||||||
|  | 		 | ||||||
|  | 		while IFS= read -r line; do | ||||||
|  | 			case $line in | ||||||
|  | 				' M'*|A*|D*) git_unstaged=1;; | ||||||
|  | 				\?\?*) git_untracked=1;; | ||||||
|  | 			esac | ||||||
|  | 		done < <( git status --short ) | ||||||
|  |  | ||||||
|  | 		(( git_unstaged )) && { | ||||||
|  | 			git_status_short+='c' | ||||||
|  | 			git_status_colour='red' | ||||||
|  | 		} | ||||||
|  |  | ||||||
|  | 		(( git_untracked )) && { | ||||||
|  | 			git_status_short+='f' | ||||||
|  | 			git_status_colour='red' | ||||||
|  | 		} | ||||||
|  |  | ||||||
|  | 		git_status_short=${git_status_short:-"ok"} | ||||||
|  | 		git_status_colour=${git_status_colour:-"green"} | ||||||
|  |  | ||||||
|  | 		git_prompt_msg="(%F{cyan}$git_current_branch%f[%F{$git_status_colour}${git_status_short}%f]) " | ||||||
|  |  | ||||||
|  | 		printf '%s' $git_prompt_msg | ||||||
|  | 	fi | ||||||
|  | } | ||||||
|  |  | ||||||
|  | rprompt() { | ||||||
|  | 	{ precmd.svn; precmd.git } > "$XDG_RUNTIME_DIR/zsh_rprompt_$$.tmp" | ||||||
|  | 	kill -s USR1 $$ | ||||||
|  | } | ||||||
|  |  | ||||||
|  | TRAPUSR1() { | ||||||
|  | 	prompt_async_data=$(<"$XDG_RUNTIME_DIR/zsh_rprompt_$$.tmp") | ||||||
|  | 	draw_prompt | ||||||
|  | 	zle && zle reset-prompt | ||||||
|  | } | ||||||
|  |  | ||||||
|  | draw_prompt() { | ||||||
|  | 	prompt_custom=( | ||||||
|  | 		"%F{$cmd_colour}$cmd_msg%f" | ||||||
|  | 		"%F{$user_colour}$USER%f@$HOST" | ||||||
|  | 		"${PWD//$HOME/~}" | ||||||
|  | 		"$prompt_async_data%F{$user_colour}>%f" | ||||||
|  | 	) | ||||||
|  |  | ||||||
|  | 	PROMPT=" $prompt_custom " | ||||||
|  | } | ||||||
|  |  | ||||||
|  | precmd() { | ||||||
|  | 	declare last_exit_code=$? | ||||||
|  | 	declare -g cmd_colour cmd_msg | ||||||
|  | 	 | ||||||
|  | 	if (( last_exit_code )); then | ||||||
|  | 		cmd_colour='red' | ||||||
|  | 		cmd_msg='!' | ||||||
|  | 	else | ||||||
|  | 		cmd_colour='green' | ||||||
|  | 		cmd_msg='.' | ||||||
|  | 	fi | ||||||
|  |  | ||||||
|  | 	if (( UID )); then | ||||||
|  | 		user_colour='green' | ||||||
|  | 	else | ||||||
|  | 		user_colour='red' | ||||||
|  | 	fi | ||||||
|  |  | ||||||
|  | 	precmd.title "$USER@$HOST ${PWD//$HOME/~}" | ||||||
|  |  | ||||||
|  | 	draw_prompt | ||||||
|  |  | ||||||
|  | 	rprompt &! | ||||||
|  | } | ||||||
							
								
								
									
										7
									
								
								homedir/.config/zsh.d/modules/shell
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								homedir/.config/zsh.d/modules/shell
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,7 @@ | |||||||
|  | # Functions meant to be used interactively. | ||||||
|  | # vim: ft=zsh | ||||||
|  |  | ||||||
|  | # Source the .zshrc again | ||||||
|  | function reload { | ||||||
|  | 	exec zsh -i | ||||||
|  | } | ||||||
							
								
								
									
										6
									
								
								homedir/.config/zsh.d/modules/xdg
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								homedir/.config/zsh.d/modules/xdg
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,6 @@ | |||||||
|  | # http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html | ||||||
|  | export XDG_DATA_HOME=$HOME/.local/share | ||||||
|  | export XDG_CACHE_HOME=$HOME/.cache | ||||||
|  | export XDG_RUNTIME_DIR=/run/user/$UID | ||||||
|  | export XDG_CONFIG_HOME=$HOME/.config | ||||||
|  |  | ||||||
							
								
								
									
										59
									
								
								homedir/.config/zsh.d/zshrc
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										59
									
								
								homedir/.config/zsh.d/zshrc
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,59 @@ | |||||||
|  | # vim: ft=zsh | ||||||
|  | # Modules | ||||||
|  |  | ||||||
|  | function msg { | ||||||
|  | 	if ! (( flag_quiet )); then | ||||||
|  | 		printf '%s\n' "$*" | ||||||
|  | 	fi | ||||||
|  | } | ||||||
|  |  | ||||||
|  | function err { msg "$*" >&2; } | ||||||
|  |  | ||||||
|  | function modpath { | ||||||
|  | 	case $1 in | ||||||
|  | 		(=) ZSHRC_MODPATH=( "$@" );; | ||||||
|  | 		(*) ZSHRC_MODPATH+=( "$@" );; | ||||||
|  | 	esac | ||||||
|  |  | ||||||
|  | 	export ZSHRC_MODPATH | ||||||
|  | } | ||||||
|  |  | ||||||
|  | function use { | ||||||
|  | 	declare flag_nofail flag_quiet mname m_nofirst | ||||||
|  |  | ||||||
|  | 	while (( $# )); do | ||||||
|  | 		case $1 in | ||||||
|  | 			(-n) flag_nofail=1;; | ||||||
|  | 			(-q) flag_quiet=1;; | ||||||
|  | 			(--) shift; break;; | ||||||
|  | 			(*) break;; | ||||||
|  | 		esac | ||||||
|  | 		shift | ||||||
|  | 	done | ||||||
|  |  | ||||||
|  | 	printf '[zshrc] Loading modules: ' | ||||||
|  | 	for mname in $@; do | ||||||
|  | 		if ! (( m_nofirst )); then | ||||||
|  | 			printf '%s' $mname | ||||||
|  | 		else | ||||||
|  | 			printf ', %s' $mname | ||||||
|  | 		fi | ||||||
|  |  | ||||||
|  | 		for p in $ZSHRC_MODPATH; do | ||||||
|  | 			if [[ -f $p/$mname ]]; then | ||||||
|  | 				if ! source $p/$mname; then | ||||||
|  | 					printf '(fail)' | ||||||
|  | 				fi | ||||||
|  | 			else | ||||||
|  | 				printf '(not found)' | ||||||
|  | 			fi | ||||||
|  | 		done | ||||||
|  |  | ||||||
|  | 		m_nofirst=1 | ||||||
|  | 	done | ||||||
|  |  | ||||||
|  | 	printf '\n' | ||||||
|  | } | ||||||
|  |  | ||||||
|  | # Default ZSHRC_MODPATH | ||||||
|  | modpath "$HOME/.config/zsh.d/modules" | ||||||
							
								
								
									
										70
									
								
								homedir/.config/zxinit/common
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										70
									
								
								homedir/.config/zxinit/common
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,70 @@ | |||||||
|  | #!/bin/bash | ||||||
|  |  | ||||||
|  | # Resources | ||||||
|  | resources=( '/etc/X11/xinit/.Xresources' "$HOME/.Xresources" ) | ||||||
|  | modmaps=( '/etc/X11/xinit/.Xmodmap' "$HOME/.Xmodmap" ) | ||||||
|  |  | ||||||
|  | # Set DPI | ||||||
|  | xrandr --dpi 95 | ||||||
|  |  | ||||||
|  | for r in "${resources[@]}"; do | ||||||
|  | 	if [[ -f "$r" ]]; then | ||||||
|  | 		xrdb -merge "$r" | ||||||
|  | 	fi | ||||||
|  | done | ||||||
|  |  | ||||||
|  | for m in modmaps; do | ||||||
|  | 	if [[ -f "$m" ]]; then | ||||||
|  | 		xmodmap "$m" | ||||||
|  | 	fi | ||||||
|  | done | ||||||
|  |  | ||||||
|  | # Common services | ||||||
|  | common_services+=( pulseaudio lockd ) | ||||||
|  | for i in "${common_services[@]}"; do | ||||||
|  | 	service "$i" start | ||||||
|  | done | ||||||
|  |  | ||||||
|  | # Fonts | ||||||
|  | xset +fp /usr/share/fonts/local | ||||||
|  |  | ||||||
|  | # Screensaver settings | ||||||
|  | xset -dpms | ||||||
|  | xset s 300 | ||||||
|  | xset s noblank | ||||||
|  | xset s noexpose | ||||||
|  |  | ||||||
|  | # Solid black root window | ||||||
|  | # chameleon is available at https://github.com/fbt/misc | ||||||
|  | chameleon -C '#151515' | ||||||
|  |  | ||||||
|  | # Set a wallpaper if it exists | ||||||
|  | if [[ -f "$HOME/wallpaper.png" ]]; then | ||||||
|  | 	chameleon "$HOME/wallpaper.png" | ||||||
|  | fi | ||||||
|  |  | ||||||
|  | # Input settings | ||||||
|  | setxkbmap "min(us),min(ru)" -option "lv3:rwin_switch,grp:caps_toggle,grp_led:caps,compose:ralt,terminate:ctrl_alt_bksp" | ||||||
|  | xmodmap -e 'remove lock = Caps_Lock' \ | ||||||
|  | 		-e 'keycode 135 = KP_Insert' \ | ||||||
|  | 		-e 'keycode 49 = Escape asciitilde' | ||||||
|  |  | ||||||
|  | # Start a dbus session | ||||||
|  | if ! [[ "$DBUS_SESSION_BUS_ADDRESS" ]]; then | ||||||
|  | 	export $(dbus-launch) | ||||||
|  | fi | ||||||
|  |  | ||||||
|  | # Some nvidia tweaks | ||||||
|  | export VDPAU_NVIDIA_NO_OVERLAY=1 | ||||||
|  | #export __GL_THREADED_OPTIMIZATIONS=1 | ||||||
|  | nvidia-settings -l | ||||||
|  | nvidia-settings -a InitialPixmapPlacement=2 | ||||||
|  |  | ||||||
|  | # Custom functions | ||||||
|  | services() { | ||||||
|  | 	for i in "${session_services[@]}"; do | ||||||
|  | 		service "$i" "$1" | ||||||
|  | 	done | ||||||
|  | } | ||||||
|  |  | ||||||
|  | return 0 | ||||||
							
								
								
									
										6
									
								
								homedir/.config/zxinit/sessions/bspwm
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								homedir/.config/zxinit/sessions/bspwm
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,6 @@ | |||||||
|  | # A simple dwm session | ||||||
|  | PATH+=":$HOME/.config/bspwm/bin" | ||||||
|  |  | ||||||
|  | start_session() { | ||||||
|  | 	exec bspwm | ||||||
|  | } | ||||||
							
								
								
									
										1
									
								
								homedir/.config/zxinit/sessions/default
									
									
									
									
									
										Symbolic link
									
								
							
							
						
						
									
										1
									
								
								homedir/.config/zxinit/sessions/default
									
									
									
									
									
										Symbolic link
									
								
							| @@ -0,0 +1 @@ | |||||||
|  | bspwm | ||||||
							
								
								
									
										13
									
								
								homedir/.config/zxinit/sessions/dwm
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								homedir/.config/zxinit/sessions/dwm
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,13 @@ | |||||||
|  | # A simple dwm session | ||||||
|  | session.cleanup() { service dwm-status stop; } | ||||||
|  |  | ||||||
|  | trap session.cleanup EXIT | ||||||
|  |  | ||||||
|  | start_session() { | ||||||
|  | 	wmname LG3D | ||||||
|  | 	service dwm-status start | ||||||
|  |  | ||||||
|  | 	while true; do | ||||||
|  | 		dwm | ||||||
|  | 	done | ||||||
|  | } | ||||||
							
								
								
									
										5
									
								
								homedir/.config/zxinit/sessions/session-wrapper
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								homedir/.config/zxinit/sessions/session-wrapper
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,5 @@ | |||||||
|  | # Start nothing, the DM will start it for us | ||||||
|  |  | ||||||
|  | start_session() { | ||||||
|  | 	: | ||||||
|  | } | ||||||
							
								
								
									
										16
									
								
								homedir/.config/zxinit/sessions/zwm
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								homedir/.config/zxinit/sessions/zwm
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,16 @@ | |||||||
|  | # A simple dwm session | ||||||
|  | session.cleanup() { | ||||||
|  | 	service zwm-daemon stop | ||||||
|  | 	service sxhkd stop | ||||||
|  | } | ||||||
|  |  | ||||||
|  | trap session.cleanup EXIT | ||||||
|  |  | ||||||
|  | start_session() { | ||||||
|  | 	rm -r "/tmp/$USER/zwm" | ||||||
|  |  | ||||||
|  | 	service zwm-daemon start | ||||||
|  | 	service sxhkd start | ||||||
|  |  | ||||||
|  | 	sleep infinity | ||||||
|  | } | ||||||
							
								
								
									
										9
									
								
								homedir/.gitconfig
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								homedir/.gitconfig
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,9 @@ | |||||||
|  | [user] | ||||||
|  | 	name = fbt | ||||||
|  | 	email = fbt@fleshless.org | ||||||
|  | [push] | ||||||
|  | 	default = simple | ||||||
|  | [alias] | ||||||
|  | 	ci = commit -a | ||||||
|  | 	co = checkout | ||||||
|  | 	st = status --short | ||||||
							
								
								
									
										3
									
								
								homedir/.inputrc
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								homedir/.inputrc
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,3 @@ | |||||||
|  | $include /etc/inputrc | ||||||
|  |  | ||||||
|  | set completion-ignore-case On | ||||||
							
								
								
									
										71
									
								
								homedir/.ncmpcpp/config
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										71
									
								
								homedir/.ncmpcpp/config
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,71 @@ | |||||||
|  | ### Colours | ||||||
|  | ## - 0 - default window color (discards all other colors) | ||||||
|  | ## - 1 - black | ||||||
|  | ## - 2 - red | ||||||
|  | ## - 3 - green | ||||||
|  | ## - 4 - yellow | ||||||
|  | ## - 5 - blue | ||||||
|  | ## - 6 - magenta | ||||||
|  | ## - 7 - cyan | ||||||
|  | ## - 8 - white | ||||||
|  | ## - 9 - end of current color | ||||||
|  | ### | ||||||
|  |  | ||||||
|  | visualizer_in_stereo = yes | ||||||
|  | #visualizer_sample_multiplier = 1 | ||||||
|  | #visualizer_sync_interval = 30 | ||||||
|  |  | ||||||
|  | ## Available values: spectrum, wave. | ||||||
|  | visualizer_type = spectrum | ||||||
|  | visualizer_look = ●▊ | ||||||
|  |  | ||||||
|  | #song_columns_list_format = (20)[]{a} (50)[]{tr} (6f)[]{NE} | ||||||
|  | #song_columns_list_format = (7f)[]{NEr} (20)[]{a} (80)[white]{tr} (6f)[]{l} | ||||||
|  |  | ||||||
|  | # Playlist look | ||||||
|  | playlist_display_mode = "classic" | ||||||
|  | song_list_format = " {%a}|{%A} - %t " | ||||||
|  |  | ||||||
|  | now_playing_prefix = "$8" | ||||||
|  | now_playing_suffix = "$9" | ||||||
|  |  | ||||||
|  | selected_item_prefix = "$4" | ||||||
|  | selected_item_suffix = "$9" | ||||||
|  |  | ||||||
|  | #playlist_separate_albums = no | ||||||
|  |  | ||||||
|  | #progressbar_look = "▃▃ " | ||||||
|  | progressbar_look = "▄▄ " | ||||||
|  | progressbar_boldness = yes | ||||||
|  |  | ||||||
|  | header_visibility = no | ||||||
|  | statusbar_visibility = no | ||||||
|  | titles_visibility = no | ||||||
|  |  | ||||||
|  | ## Screens available for use: help, playlist, browser, search_engine,                                                                                           | ||||||
|  | ## media_library, playlist_editor, tag_editor, outputs, visualizer, clock.                                                                                      | ||||||
|  | startup_screen = playlist | ||||||
|  |  | ||||||
|  | mouse_support = no | ||||||
|  | external_editor = vim | ||||||
|  | use_console_editor = yes | ||||||
|  |  | ||||||
|  | ##### colors definitions ##### | ||||||
|  | colors_enabled = yes | ||||||
|  | empty_tag_color = cyan | ||||||
|  | header_window_color = default | ||||||
|  | volume_color = default | ||||||
|  | state_line_color = default | ||||||
|  | state_flags_color = default | ||||||
|  | main_window_color = default | ||||||
|  | color1 = white | ||||||
|  | color2 = green | ||||||
|  | main_window_highlight_color = white | ||||||
|  | progressbar_color = black | ||||||
|  | progressbar_elapsed_color = default | ||||||
|  | statusbar_color = default | ||||||
|  | alternative_ui_separator_color = black | ||||||
|  | active_column_color = red | ||||||
|  | visualizer_color = blue | ||||||
|  | window_border_color = green | ||||||
|  | active_window_border = red | ||||||
							
								
								
									
										422
									
								
								homedir/.vim/autoload/acp.vim
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										422
									
								
								homedir/.vim/autoload/acp.vim
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,422 @@ | |||||||
|  | "============================================================================= | ||||||
|  | " Copyright (c) 2007-2009 Takeshi NISHIDA | ||||||
|  | " | ||||||
|  | "============================================================================= | ||||||
|  | " LOAD GUARD {{{1 | ||||||
|  |  | ||||||
|  | if !l9#guardScriptLoading(expand('<sfile>:p'), 0, 0, []) | ||||||
|  |   finish | ||||||
|  | endif | ||||||
|  |  | ||||||
|  | " }}}1 | ||||||
|  | "============================================================================= | ||||||
|  | " GLOBAL FUNCTIONS: {{{1 | ||||||
|  |  | ||||||
|  | " | ||||||
|  | function acp#enable() | ||||||
|  |   call acp#disable() | ||||||
|  |  | ||||||
|  |   augroup AcpGlobalAutoCommand | ||||||
|  |     autocmd! | ||||||
|  |     autocmd InsertEnter * unlet! s:posLast s:lastUncompletable | ||||||
|  |     autocmd InsertLeave * call s:finishPopup(1) | ||||||
|  |   augroup END | ||||||
|  |  | ||||||
|  |   if g:acp_mappingDriven | ||||||
|  |     call s:mapForMappingDriven() | ||||||
|  |   else | ||||||
|  |     autocmd AcpGlobalAutoCommand CursorMovedI * call s:feedPopup() | ||||||
|  |   endif | ||||||
|  |  | ||||||
|  |   nnoremap <silent> i i<C-r>=<SID>feedPopup()<CR> | ||||||
|  |   nnoremap <silent> a a<C-r>=<SID>feedPopup()<CR> | ||||||
|  |   nnoremap <silent> R R<C-r>=<SID>feedPopup()<CR> | ||||||
|  | endfunction | ||||||
|  |  | ||||||
|  | " | ||||||
|  | function acp#disable() | ||||||
|  |   call s:unmapForMappingDriven() | ||||||
|  |   augroup AcpGlobalAutoCommand | ||||||
|  |     autocmd! | ||||||
|  |   augroup END | ||||||
|  |   nnoremap i <Nop> | nunmap i | ||||||
|  |   nnoremap a <Nop> | nunmap a | ||||||
|  |   nnoremap R <Nop> | nunmap R | ||||||
|  | endfunction | ||||||
|  |  | ||||||
|  | " | ||||||
|  | function acp#lock() | ||||||
|  |   let s:lockCount += 1 | ||||||
|  | endfunction | ||||||
|  |  | ||||||
|  | " | ||||||
|  | function acp#unlock() | ||||||
|  |   let s:lockCount -= 1 | ||||||
|  |   if s:lockCount < 0 | ||||||
|  |     let s:lockCount = 0 | ||||||
|  |     throw "AutoComplPop: not locked" | ||||||
|  |   endif | ||||||
|  | endfunction | ||||||
|  |  | ||||||
|  | " | ||||||
|  | function acp#meetsForSnipmate(context) | ||||||
|  |   if g:acp_behaviorSnipmateLength < 0 | ||||||
|  |     return 0 | ||||||
|  |   endif | ||||||
|  |   let matches = matchlist(a:context, '\(^\|\s\|\<\)\(\u\{' . | ||||||
|  |         \                            g:acp_behaviorSnipmateLength . ',}\)$') | ||||||
|  |   return !empty(matches) && !empty(s:getMatchingSnipItems(matches[2])) | ||||||
|  | endfunction | ||||||
|  |  | ||||||
|  | " | ||||||
|  | function acp#meetsForKeyword(context) | ||||||
|  |   if g:acp_behaviorKeywordLength < 0 | ||||||
|  |     return 0 | ||||||
|  |   endif | ||||||
|  |   let matches = matchlist(a:context, '\(\k\{' . g:acp_behaviorKeywordLength . ',}\)$') | ||||||
|  |   if empty(matches) | ||||||
|  |     return 0 | ||||||
|  |   endif | ||||||
|  |   for ignore in g:acp_behaviorKeywordIgnores | ||||||
|  |     if stridx(ignore, matches[1]) == 0 | ||||||
|  |       return 0 | ||||||
|  |     endif | ||||||
|  |   endfor | ||||||
|  |   return 1 | ||||||
|  | endfunction | ||||||
|  |  | ||||||
|  | " | ||||||
|  | function acp#meetsForFile(context) | ||||||
|  |   if g:acp_behaviorFileLength < 0 | ||||||
|  |     return 0 | ||||||
|  |   endif | ||||||
|  |   if has('win32') || has('win64') | ||||||
|  |     let separator = '[/\\]' | ||||||
|  |   else | ||||||
|  |     let separator = '\/' | ||||||
|  |   endif | ||||||
|  |   if a:context !~ '\f' . separator . '\f\{' . g:acp_behaviorFileLength . ',}$' | ||||||
|  |     return 0 | ||||||
|  |   endif | ||||||
|  |   return a:context !~ '[*/\\][/\\]\f*$\|[^[:print:]]\f*$' | ||||||
|  | endfunction | ||||||
|  |  | ||||||
|  | " | ||||||
|  | function acp#meetsForRubyOmni(context) | ||||||
|  |   if !has('ruby') | ||||||
|  |     return 0 | ||||||
|  |   endif | ||||||
|  |   if g:acp_behaviorRubyOmniMethodLength >= 0 && | ||||||
|  |         \ a:context =~ '[^. \t]\(\.\|::\)\k\{' . | ||||||
|  |         \              g:acp_behaviorRubyOmniMethodLength . ',}$' | ||||||
|  |     return 1 | ||||||
|  |   endif | ||||||
|  |   if g:acp_behaviorRubyOmniSymbolLength >= 0 && | ||||||
|  |         \ a:context =~ '\(^\|[^:]\):\k\{' . | ||||||
|  |         \              g:acp_behaviorRubyOmniSymbolLength . ',}$' | ||||||
|  |     return 1 | ||||||
|  |   endif | ||||||
|  |   return 0 | ||||||
|  | endfunction | ||||||
|  |  | ||||||
|  | " | ||||||
|  | function acp#meetsForPythonOmni(context) | ||||||
|  |   return has('python') && g:acp_behaviorPythonOmniLength >= 0 && | ||||||
|  |         \ a:context =~ '\k\.\k\{' . g:acp_behaviorPythonOmniLength . ',}$' | ||||||
|  | endfunction | ||||||
|  |  | ||||||
|  | " | ||||||
|  | function acp#meetsForPerlOmni(context) | ||||||
|  |   return g:acp_behaviorPerlOmniLength >= 0 && | ||||||
|  |         \ a:context =~ '\w->\k\{' . g:acp_behaviorPerlOmniLength . ',}$' | ||||||
|  | endfunction | ||||||
|  |  | ||||||
|  | " | ||||||
|  | function acp#meetsForXmlOmni(context) | ||||||
|  |   return g:acp_behaviorXmlOmniLength >= 0 && | ||||||
|  |         \ a:context =~ '\(<\|<\/\|<[^>]\+ \|<[^>]\+=\"\)\k\{' . | ||||||
|  |         \              g:acp_behaviorXmlOmniLength . ',}$' | ||||||
|  | endfunction | ||||||
|  |  | ||||||
|  | " | ||||||
|  | function acp#meetsForHtmlOmni(context) | ||||||
|  |   return g:acp_behaviorHtmlOmniLength >= 0 && | ||||||
|  |         \ a:context =~ '\(<\|<\/\|<[^>]\+ \|<[^>]\+=\"\)\k\{' . | ||||||
|  |         \              g:acp_behaviorHtmlOmniLength . ',}$' | ||||||
|  | endfunction | ||||||
|  |  | ||||||
|  | " | ||||||
|  | function acp#meetsForCssOmni(context) | ||||||
|  |   if g:acp_behaviorCssOmniPropertyLength >= 0 && | ||||||
|  |         \ a:context =~ '\(^\s\|[;{]\)\s*\k\{' . | ||||||
|  |         \              g:acp_behaviorCssOmniPropertyLength . ',}$' | ||||||
|  |     return 1 | ||||||
|  |   endif | ||||||
|  |   if g:acp_behaviorCssOmniValueLength >= 0 && | ||||||
|  |         \ a:context =~ '[:@!]\s*\k\{' . | ||||||
|  |         \              g:acp_behaviorCssOmniValueLength . ',}$' | ||||||
|  |     return 1 | ||||||
|  |   endif | ||||||
|  |   return 0 | ||||||
|  | endfunction | ||||||
|  |  | ||||||
|  | " | ||||||
|  | function acp#completeSnipmate(findstart, base) | ||||||
|  |   if a:findstart | ||||||
|  |     let s:posSnipmateCompletion = len(matchstr(s:getCurrentText(), '.*\U')) | ||||||
|  |     return s:posSnipmateCompletion | ||||||
|  |   endif | ||||||
|  |   let lenBase = len(a:base) | ||||||
|  |   let items = filter(GetSnipsInCurrentScope(), | ||||||
|  |         \            'strpart(v:key, 0, lenBase) ==? a:base') | ||||||
|  |   return map(sort(items(items)), 's:makeSnipmateItem(v:val[0], v:val[1])') | ||||||
|  | endfunction | ||||||
|  |  | ||||||
|  | " | ||||||
|  | function acp#onPopupCloseSnipmate() | ||||||
|  |   let word = s:getCurrentText()[s:posSnipmateCompletion :] | ||||||
|  |   for trigger in keys(GetSnipsInCurrentScope()) | ||||||
|  |     if word ==# trigger | ||||||
|  |       call feedkeys("\<C-r>=TriggerSnippet()\<CR>", "n") | ||||||
|  |       return 0 | ||||||
|  |     endif | ||||||
|  |   endfor | ||||||
|  |   return 1 | ||||||
|  | endfunction | ||||||
|  |  | ||||||
|  | " | ||||||
|  | function acp#onPopupPost() | ||||||
|  |   " to clear <C-r>= expression on command-line | ||||||
|  |   echo '' | ||||||
|  |   if pumvisible() | ||||||
|  |     inoremap <silent> <expr> <C-h> acp#onBs() | ||||||
|  |     inoremap <silent> <expr> <BS>  acp#onBs() | ||||||
|  |     " a command to restore to original text and select the first match | ||||||
|  |     return (s:behavsCurrent[s:iBehavs].command =~# "\<C-p>" ? "\<C-n>\<Up>" | ||||||
|  |           \                                                 : "\<C-p>\<Down>") | ||||||
|  |   endif | ||||||
|  |   let s:iBehavs += 1 | ||||||
|  |   if len(s:behavsCurrent) > s:iBehavs  | ||||||
|  |     call s:setCompletefunc() | ||||||
|  |     return printf("\<C-e>%s\<C-r>=acp#onPopupPost()\<CR>", | ||||||
|  |           \       s:behavsCurrent[s:iBehavs].command) | ||||||
|  |   else | ||||||
|  |     let s:lastUncompletable = { | ||||||
|  |           \   'word': s:getCurrentWord(), | ||||||
|  |           \   'commands': map(copy(s:behavsCurrent), 'v:val.command')[1:], | ||||||
|  |           \ } | ||||||
|  |     call s:finishPopup(0) | ||||||
|  |     return "\<C-e>" | ||||||
|  |   endif | ||||||
|  | endfunction | ||||||
|  |  | ||||||
|  | " | ||||||
|  | function acp#onBs() | ||||||
|  |   " using "matchstr" and not "strpart" in order to handle multi-byte | ||||||
|  |   " characters | ||||||
|  |   if call(s:behavsCurrent[s:iBehavs].meets, | ||||||
|  |         \ [matchstr(s:getCurrentText(), '.*\ze.')]) | ||||||
|  |     return "\<BS>" | ||||||
|  |   endif | ||||||
|  |   return "\<C-e>\<BS>" | ||||||
|  | endfunction | ||||||
|  |  | ||||||
|  | " }}}1 | ||||||
|  | "============================================================================= | ||||||
|  | " LOCAL FUNCTIONS: {{{1 | ||||||
|  |  | ||||||
|  | " | ||||||
|  | function s:mapForMappingDriven() | ||||||
|  |   call s:unmapForMappingDriven() | ||||||
|  |   let s:keysMappingDriven = [ | ||||||
|  |         \ 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', | ||||||
|  |         \ 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', | ||||||
|  |         \ 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', | ||||||
|  |         \ 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', | ||||||
|  |         \ '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', | ||||||
|  |         \ '-', '_', '~', '^', '.', ',', ':', '!', '#', '=', '%', '$', '@', '<', '>', '/', '\', | ||||||
|  |         \ '<Space>', '<C-h>', '<BS>', ] | ||||||
|  |   for key in s:keysMappingDriven | ||||||
|  |     execute printf('inoremap <silent> %s %s<C-r>=<SID>feedPopup()<CR>', | ||||||
|  |           \        key, key) | ||||||
|  |   endfor | ||||||
|  | endfunction | ||||||
|  |  | ||||||
|  | " | ||||||
|  | function s:unmapForMappingDriven() | ||||||
|  |   if !exists('s:keysMappingDriven') | ||||||
|  |     return | ||||||
|  |   endif | ||||||
|  |   for key in s:keysMappingDriven | ||||||
|  |     execute 'iunmap ' . key | ||||||
|  |   endfor | ||||||
|  |   let s:keysMappingDriven = [] | ||||||
|  | endfunction | ||||||
|  |  | ||||||
|  | " | ||||||
|  | function s:getCurrentWord() | ||||||
|  |   return matchstr(s:getCurrentText(), '\k*$') | ||||||
|  | endfunction | ||||||
|  |  | ||||||
|  | " | ||||||
|  | function s:getCurrentText() | ||||||
|  |   return strpart(getline('.'), 0, col('.') - 1) | ||||||
|  | endfunction | ||||||
|  |  | ||||||
|  | " | ||||||
|  | function s:getPostText() | ||||||
|  |   return strpart(getline('.'), col('.') - 1) | ||||||
|  | endfunction | ||||||
|  |  | ||||||
|  | " | ||||||
|  | function s:isModifiedSinceLastCall() | ||||||
|  |   if exists('s:posLast') | ||||||
|  |     let posPrev = s:posLast | ||||||
|  |     let nLinesPrev = s:nLinesLast | ||||||
|  |     let textPrev = s:textLast | ||||||
|  |   endif | ||||||
|  |   let s:posLast = getpos('.') | ||||||
|  |   let s:nLinesLast = line('$') | ||||||
|  |   let s:textLast = getline('.') | ||||||
|  |   if !exists('posPrev') | ||||||
|  |     return 1 | ||||||
|  |   elseif posPrev[1] != s:posLast[1] || nLinesPrev != s:nLinesLast | ||||||
|  |     return (posPrev[1] - s:posLast[1] == nLinesPrev - s:nLinesLast) | ||||||
|  |   elseif textPrev ==# s:textLast | ||||||
|  |     return 0 | ||||||
|  |   elseif posPrev[2] > s:posLast[2] | ||||||
|  |     return 1 | ||||||
|  |   elseif has('gui_running') && has('multi_byte') | ||||||
|  |     " NOTE: auto-popup causes a strange behavior when IME/XIM is working | ||||||
|  |     return posPrev[2] + 1 == s:posLast[2] | ||||||
|  |   endif | ||||||
|  |   return posPrev[2] != s:posLast[2] | ||||||
|  | endfunction | ||||||
|  |  | ||||||
|  | " | ||||||
|  | function s:makeCurrentBehaviorSet() | ||||||
|  |   let modified = s:isModifiedSinceLastCall() | ||||||
|  |   if exists('s:behavsCurrent[s:iBehavs].repeat') && s:behavsCurrent[s:iBehavs].repeat | ||||||
|  |     let behavs = [ s:behavsCurrent[s:iBehavs] ] | ||||||
|  |   elseif exists('s:behavsCurrent[s:iBehavs]') | ||||||
|  |     return [] | ||||||
|  |   elseif modified | ||||||
|  |     let behavs = copy(exists('g:acp_behavior[&filetype]') | ||||||
|  |           \           ? g:acp_behavior[&filetype] | ||||||
|  |           \           : g:acp_behavior['*']) | ||||||
|  |   else | ||||||
|  |     return [] | ||||||
|  |   endif | ||||||
|  |   let text = s:getCurrentText() | ||||||
|  |   call filter(behavs, 'call(v:val.meets, [text])') | ||||||
|  |   let s:iBehavs = 0 | ||||||
|  |   if exists('s:lastUncompletable') && | ||||||
|  |         \ stridx(s:getCurrentWord(), s:lastUncompletable.word) == 0 && | ||||||
|  |         \ map(copy(behavs), 'v:val.command') ==# s:lastUncompletable.commands | ||||||
|  |     let behavs = [] | ||||||
|  |   else | ||||||
|  |     unlet! s:lastUncompletable | ||||||
|  |   endif | ||||||
|  |   return behavs | ||||||
|  | endfunction | ||||||
|  |  | ||||||
|  | " | ||||||
|  | function s:feedPopup() | ||||||
|  |   " NOTE: CursorMovedI is not triggered while the popup menu is visible. And | ||||||
|  |   "       it will be triggered when popup menu is disappeared. | ||||||
|  |   if s:lockCount > 0 || pumvisible() || &paste | ||||||
|  |     return '' | ||||||
|  |   endif | ||||||
|  |   if exists('s:behavsCurrent[s:iBehavs].onPopupClose') | ||||||
|  |     if !call(s:behavsCurrent[s:iBehavs].onPopupClose, []) | ||||||
|  |       call s:finishPopup(1) | ||||||
|  |       return '' | ||||||
|  |     endif | ||||||
|  |   endif | ||||||
|  |   let s:behavsCurrent = s:makeCurrentBehaviorSet() | ||||||
|  |   if empty(s:behavsCurrent) | ||||||
|  |     call s:finishPopup(1) | ||||||
|  |     return '' | ||||||
|  |   endif | ||||||
|  |   " In case of dividing words by symbols (e.g. "for(int", "ab==cd") while a | ||||||
|  |   " popup menu is visible, another popup is not available unless input <C-e> | ||||||
|  |   " or try popup once. So first completion is duplicated. | ||||||
|  |   call insert(s:behavsCurrent, s:behavsCurrent[s:iBehavs]) | ||||||
|  |   call l9#tempvariables#set(s:TEMP_VARIABLES_GROUP0, | ||||||
|  |         \ '&spell', 0) | ||||||
|  |   call l9#tempvariables#set(s:TEMP_VARIABLES_GROUP0, | ||||||
|  |         \ '&completeopt', 'menuone' . (g:acp_completeoptPreview ? ',preview' : '')) | ||||||
|  |   call l9#tempvariables#set(s:TEMP_VARIABLES_GROUP0, | ||||||
|  |         \ '&complete', g:acp_completeOption) | ||||||
|  |   call l9#tempvariables#set(s:TEMP_VARIABLES_GROUP0, | ||||||
|  |         \ '&ignorecase', g:acp_ignorecaseOption) | ||||||
|  |   " NOTE: With CursorMovedI driven, Set 'lazyredraw' to avoid flickering. | ||||||
|  |   "       With Mapping driven, set 'nolazyredraw' to make a popup menu visible. | ||||||
|  |   call l9#tempvariables#set(s:TEMP_VARIABLES_GROUP0, | ||||||
|  |         \ '&lazyredraw', !g:acp_mappingDriven) | ||||||
|  |   " NOTE: 'textwidth' must be restored after <C-e>. | ||||||
|  |   call l9#tempvariables#set(s:TEMP_VARIABLES_GROUP1, | ||||||
|  |         \ '&textwidth', 0) | ||||||
|  |   call s:setCompletefunc() | ||||||
|  |   call feedkeys(s:behavsCurrent[s:iBehavs].command . "\<C-r>=acp#onPopupPost()\<CR>", 'n') | ||||||
|  |   return '' " this function is called by <C-r>= | ||||||
|  | endfunction | ||||||
|  |  | ||||||
|  | " | ||||||
|  | function s:finishPopup(fGroup1) | ||||||
|  |   inoremap <C-h> <Nop> | iunmap <C-h> | ||||||
|  |   inoremap <BS>  <Nop> | iunmap <BS> | ||||||
|  |   let s:behavsCurrent = [] | ||||||
|  |   call l9#tempvariables#end(s:TEMP_VARIABLES_GROUP0) | ||||||
|  |   if a:fGroup1 | ||||||
|  |     call l9#tempvariables#end(s:TEMP_VARIABLES_GROUP1) | ||||||
|  |   endif | ||||||
|  | endfunction | ||||||
|  |  | ||||||
|  | " | ||||||
|  | function s:setCompletefunc() | ||||||
|  |   if exists('s:behavsCurrent[s:iBehavs].completefunc') | ||||||
|  |     call l9#tempvariables#set(s:TEMP_VARIABLES_GROUP0, | ||||||
|  |           \ '&completefunc', s:behavsCurrent[s:iBehavs].completefunc) | ||||||
|  |   endif | ||||||
|  | endfunction | ||||||
|  |  | ||||||
|  | " | ||||||
|  | function s:makeSnipmateItem(key, snip) | ||||||
|  |   if type(a:snip) == type([]) | ||||||
|  |     let descriptions = map(copy(a:snip), 'v:val[0]') | ||||||
|  |     let snipFormatted = '[MULTI] ' . join(descriptions, ', ') | ||||||
|  |   else | ||||||
|  |     let snipFormatted = substitute(a:snip, '\(\n\|\s\)\+', ' ', 'g') | ||||||
|  |   endif | ||||||
|  |   return  { | ||||||
|  |         \   'word': a:key, | ||||||
|  |         \   'menu': strpart(snipFormatted, 0, 80), | ||||||
|  |         \ } | ||||||
|  | endfunction | ||||||
|  |  | ||||||
|  | " | ||||||
|  | function s:getMatchingSnipItems(base) | ||||||
|  |   let key = a:base . "\n" | ||||||
|  |   if !exists('s:snipItems[key]') | ||||||
|  |     let s:snipItems[key] = items(GetSnipsInCurrentScope()) | ||||||
|  |     call filter(s:snipItems[key], 'strpart(v:val[0], 0, len(a:base)) ==? a:base') | ||||||
|  |     call map(s:snipItems[key], 's:makeSnipmateItem(v:val[0], v:val[1])') | ||||||
|  |   endif | ||||||
|  |   return s:snipItems[key] | ||||||
|  | endfunction | ||||||
|  |  | ||||||
|  | " }}}1 | ||||||
|  | "============================================================================= | ||||||
|  | " INITIALIZATION {{{1 | ||||||
|  |  | ||||||
|  | let s:TEMP_VARIABLES_GROUP0 = "AutoComplPop0" | ||||||
|  | let s:TEMP_VARIABLES_GROUP1 = "AutoComplPop1" | ||||||
|  | let s:lockCount = 0 | ||||||
|  | let s:behavsCurrent = [] | ||||||
|  | let s:iBehavs = 0 | ||||||
|  | let s:snipItems = {} | ||||||
|  |  | ||||||
|  | " }}}1 | ||||||
|  | "============================================================================= | ||||||
|  | " vim: set fdm=marker: | ||||||
							
								
								
									
										244
									
								
								homedir/.vim/colors/apprentice.vim
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										244
									
								
								homedir/.vim/colors/apprentice.vim
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,244 @@ | |||||||
|  | " 'apprentice.vim' -- Vim color scheme. | ||||||
|  | " Maintainer:   Romain Lafourcade (romainlafourcade@gmail.com) | ||||||
|  | " Essentially a streamlining and conversion to xterm colors of | ||||||
|  | " 'sorcerer' by Jeet Sukumaran (jeetsukumaran@gmailcom) | ||||||
|  |  | ||||||
|  | " MADE-UP NAME    HEX        RGB                   XTERM  ANSI | ||||||
|  | " ======================================================================== | ||||||
|  | " almost black    #1c1c1c    rgb(28, 28, 28)       234    0 | ||||||
|  | " darker grey     #262626    rgb(38, 38, 38)       235    background color | ||||||
|  | " dark grey       #303030    rgb(48, 48, 48)       236    8 | ||||||
|  | " grey            #444444    rgb(68, 68, 68)       238    8 | ||||||
|  | " medium grey     #585858    rgb(88, 88, 88)       240    8 | ||||||
|  | " light grey      #6c6c6c    rgb(108, 108, 108)    242    7 | ||||||
|  | " lighter grey    #bcbcbc    rgb(188, 188, 188)    250    foreground color | ||||||
|  | " white           #ffffff    rgb(255, 255, 255)    231    15 | ||||||
|  | " purple          #5f5f87    rgb(95, 95, 135)      60     5 | ||||||
|  | " light purple    #8787af    rgb(135, 135, 175)    103    13 | ||||||
|  | " green           #5f875f    rgb(95, 135, 95)      65     2 | ||||||
|  | " light green     #87af87    rgb(135, 175, 135)    108    10 | ||||||
|  | " aqua            #5f8787    rgb(95, 135, 135)     66     6 | ||||||
|  | " light aqua      #5fafaf    rgb(95, 175, 175)     73     14 | ||||||
|  | " blue            #5f87af    rgb(95, 135, 175)     67     4 | ||||||
|  | " light blue      #8fafd7    rgb(143, 175, 215)    110    12 | ||||||
|  | " red             #af5f5f    rgb(175, 95, 95)      131    1 | ||||||
|  | " orange          #ff8700    rgb(255, 135, 0)      208    9 | ||||||
|  | " ocre            #87875f    rgb(135, 135, 95)     101    3 | ||||||
|  | " yellow          #ffffaf    rgb(255, 255, 175)    229    11 | ||||||
|  |  | ||||||
|  | hi clear | ||||||
|  |  | ||||||
|  | if exists('syntax_on') | ||||||
|  |   syntax reset | ||||||
|  | endif | ||||||
|  |  | ||||||
|  | set background=dark | ||||||
|  |  | ||||||
|  | let colors_name = 'apprentice' | ||||||
|  |  | ||||||
|  | if &t_Co >= 256 || has('gui_running') | ||||||
|  |   hi Normal           ctermbg=235  ctermfg=250  guibg=#262626 guifg=#bcbcbc cterm=NONE           gui=NONE | ||||||
|  |  | ||||||
|  |   set background=dark | ||||||
|  |  | ||||||
|  |   hi Comment          ctermbg=NONE ctermfg=240  guibg=NONE    guifg=#585858 cterm=NONE           gui=NONE | ||||||
|  |   hi Constant         ctermbg=NONE ctermfg=208  guibg=NONE    guifg=#ff8700 cterm=NONE           gui=NONE | ||||||
|  |   hi Error            ctermbg=NONE ctermfg=131  guibg=NONE    guifg=#af5f5f cterm=reverse        gui=reverse | ||||||
|  |   hi Identifier       ctermbg=NONE ctermfg=67   guibg=NONE    guifg=#5f87af cterm=NONE           gui=NONE | ||||||
|  |   hi Ignore           ctermbg=NONE ctermfg=NONE guibg=NONE    guifg=NONE    cterm=NONE           gui=NONE | ||||||
|  |   hi PreProc          ctermbg=NONE ctermfg=66   guibg=NONE    guifg=#5f8787 cterm=NONE           gui=NONE | ||||||
|  |   hi Special          ctermbg=NONE ctermfg=65   guibg=NONE    guifg=#5f875f cterm=NONE           gui=NONE | ||||||
|  |   hi Statement        ctermbg=NONE ctermfg=110  guibg=NONE    guifg=#8fafd7 cterm=NONE           gui=NONE | ||||||
|  |   hi String           ctermbg=NONE ctermfg=108  guibg=NONE    guifg=#87af87 cterm=NONE           gui=NONE | ||||||
|  |   hi Todo             ctermbg=NONE ctermfg=NONE guibg=NONE    guifg=NONE    cterm=reverse        gui=reverse | ||||||
|  |   hi Type             ctermbg=NONE ctermfg=103  guibg=NONE    guifg=#8787af cterm=NONE           gui=NONE | ||||||
|  |   hi Underlined       ctermbg=NONE ctermfg=66   guibg=NONE    guifg=#5f8787 cterm=underline      gui=underline | ||||||
|  |  | ||||||
|  |   hi LineNr           ctermbg=234  ctermfg=242  guibg=#1c1c1c guifg=#6c6c6c cterm=NONE           gui=NONE | ||||||
|  |   hi NonText          ctermbg=NONE ctermfg=240  guibg=NONE    guifg=#585858 cterm=NONE           gui=NONE | ||||||
|  |  | ||||||
|  |   hi Pmenu            ctermbg=238  ctermfg=250  guibg=#444444 guifg=#bcbcbc cterm=NONE           gui=NONE | ||||||
|  |   hi PmenuSbar        ctermbg=240  ctermfg=NONE guibg=#585858 guifg=NONE    cterm=NONE           gui=NONE | ||||||
|  |   hi PmenuSel         ctermbg=66   ctermfg=235  guibg=#5f8787 guifg=#262626 cterm=NONE           gui=NONE | ||||||
|  |   hi PmenuThumb       ctermbg=66   ctermfg=66   guibg=#5f8787 guifg=#5f8787 cterm=NONE           gui=NONE | ||||||
|  |  | ||||||
|  |   hi ErrorMsg         ctermbg=131  ctermfg=235  guibg=#af5f5f guifg=#262626 cterm=NONE           gui=NONE | ||||||
|  |   hi ModeMsg          ctermbg=108  ctermfg=235  guibg=#87af87 guifg=#262626 cterm=NONE           gui=NONE | ||||||
|  |   hi MoreMsg          ctermbg=NONE ctermfg=66   guibg=NONE    guifg=#5f8787 cterm=NONE           gui=NONE | ||||||
|  |   hi Question         ctermbg=NONE ctermfg=108  guibg=NONE    guifg=#87af87 cterm=NONE           gui=NONE | ||||||
|  |   hi WarningMsg       ctermbg=NONE ctermfg=131  guibg=NONE    guifg=#af5f5f cterm=NONE           gui=NONE | ||||||
|  |  | ||||||
|  |   hi TabLine          ctermbg=238  ctermfg=101  guibg=#444444 guifg=#87875f cterm=NONE           gui=NONE | ||||||
|  |   hi TabLineFill      ctermbg=238  ctermfg=238  guibg=#444444 guifg=#444444 cterm=NONE           gui=NONE | ||||||
|  |   hi TabLineSel       ctermbg=101  ctermfg=235  guibg=#87875f guifg=#262626 cterm=NONE           gui=NONE | ||||||
|  |  | ||||||
|  |   hi Cursor           ctermbg=242  ctermfg=NONE guibg=#6c6c6c guifg=NONE    cterm=NONE           gui=NONE | ||||||
|  |   hi CursorColumn     ctermbg=236  ctermfg=NONE guibg=#303030 guifg=NONE    cterm=NONE           gui=NONE | ||||||
|  |   hi CursorLine       ctermbg=236  ctermfg=NONE guibg=#303030 guifg=NONE    cterm=NONE           gui=NONE | ||||||
|  |   hi CursorLineNr     ctermbg=236  ctermfg=73   guibg=#303030 guifg=#5fafaf cterm=NONE           gui=NONE | ||||||
|  |  | ||||||
|  |   hi helpLeadBlank    ctermbg=NONE ctermfg=NONE guibg=NONE    guifg=NONE    cterm=NONE           gui=NONE | ||||||
|  |   hi helpNormal       ctermbg=NONE ctermfg=NONE guibg=NONE    guifg=NONE    cterm=NONE           gui=NONE | ||||||
|  |  | ||||||
|  |   hi StatusLine       ctermbg=101  ctermfg=235  guibg=#87875f guifg=#262626 cterm=NONE           gui=NONE | ||||||
|  |   hi StatusLineNC     ctermbg=238  ctermfg=101  guibg=#444444 guifg=#87875f cterm=NONE           gui=italic | ||||||
|  |  | ||||||
|  |   hi Visual           ctermbg=110  ctermfg=235  guibg=#8fafd7 guifg=#262626 cterm=NONE           gui=NONE | ||||||
|  |   hi VisualNOS        ctermbg=NONE ctermfg=NONE guibg=NONE    guifg=NONE    cterm=underline      gui=underline | ||||||
|  |  | ||||||
|  |   hi FoldColumn       ctermbg=234  ctermfg=242  guibg=#1c1c1c guifg=#6c6c6c cterm=NONE           gui=NONE | ||||||
|  |   hi Folded           ctermbg=234  ctermfg=242  guibg=#1c1c1c guifg=#6c6c6c cterm=NONE           gui=NONE | ||||||
|  |  | ||||||
|  |   hi VertSplit        ctermbg=238  ctermfg=238  guibg=#444444 guifg=#444444 cterm=NONE           gui=NONE | ||||||
|  |   hi WildMenu         ctermbg=110  ctermfg=235  guibg=#8fafd7 guifg=#262626 cterm=NONE           gui=NONE | ||||||
|  |  | ||||||
|  |   hi Function         ctermbg=NONE ctermfg=229  guibg=NONE    guifg=#ffffaf cterm=NONE           gui=NONE | ||||||
|  |   hi SpecialKey       ctermbg=NONE ctermfg=240  guibg=NONE    guifg=#585858 cterm=NONE           gui=NONE | ||||||
|  |   hi Title            ctermbg=NONE ctermfg=231  guibg=NONE    guifg=#ffffff cterm=NONE           gui=NONE | ||||||
|  |  | ||||||
|  |   hi DiffAdd          ctermbg=108  ctermfg=235  guibg=#87af87 guifg=#262626 cterm=NONE           gui=NONE | ||||||
|  |   hi DiffChange       ctermbg=60   ctermfg=235  guibg=#5f5f87 guifg=#262626 cterm=NONE           gui=NONE | ||||||
|  |   hi DiffDelete       ctermbg=131  ctermfg=235  guibg=#af5f5f guifg=#262626 cterm=NONE           gui=NONE | ||||||
|  |   hi DiffText         ctermbg=103  ctermfg=235  guibg=#8787af guifg=#262626 cterm=NONE           gui=NONE | ||||||
|  |  | ||||||
|  |   hi IncSearch        ctermbg=131  ctermfg=235  guibg=#af5f5f guifg=#262626 cterm=NONE           gui=NONE | ||||||
|  |   hi Search           ctermbg=229  ctermfg=235  guibg=#ffffaf guifg=#262626 cterm=NONE           gui=NONE | ||||||
|  |  | ||||||
|  |   hi Directory        ctermbg=NONE ctermfg=73   guibg=NONE    guifg=#5fafaf cterm=NONE           gui=NONE | ||||||
|  |   hi MatchParen       ctermbg=234  ctermfg=229  guibg=#1c1c1c guifg=#ffffaf cterm=NONE           gui=NONE | ||||||
|  |  | ||||||
|  |   hi SpellBad         ctermbg=NONE ctermfg=131  guibg=NONE    guifg=NONE    cterm=undercurl      gui=undercurl guisp=#af5f5f | ||||||
|  |   hi SpellCap         ctermbg=NONE ctermfg=73   guibg=NONE    guifg=NONE    cterm=undercurl      gui=undercurl guisp=#5fafaf | ||||||
|  |   hi SpellLocal       ctermbg=NONE ctermfg=65   guibg=NONE    guifg=NONE    cterm=undercurl      gui=undercurl guisp=#5f875f | ||||||
|  |   hi SpellRare        ctermbg=NONE ctermfg=208  guibg=NONE    guifg=NONE    cterm=undercurl      gui=undercurl guisp=#ff8700 | ||||||
|  |  | ||||||
|  |   hi ColorColumn      ctermbg=131  ctermfg=NONE guibg=#af5f5f guifg=NONE    cterm=NONE           gui=NONE | ||||||
|  |   hi signColumn       ctermbg=234  ctermfg=242  guibg=#1c1c1c guifg=#6c6c6c cterm=NONE           gui=NONE | ||||||
|  | elseif &t_Co == 8 || $TERM !~# '^linux' || &t_Co == 16 | ||||||
|  |   set t_Co=16 | ||||||
|  |  | ||||||
|  |   hi Normal           ctermbg=NONE        ctermfg=15          cterm=NONE | ||||||
|  |  | ||||||
|  |   set background=dark | ||||||
|  |  | ||||||
|  |   hi Comment          ctermbg=NONE        ctermfg=8           cterm=NONE | ||||||
|  |   hi Constant         ctermbg=NONE        ctermfg=9           cterm=NONE | ||||||
|  |   hi Function         ctermbg=NONE        ctermfg=11          cterm=NONE | ||||||
|  |   hi Identifier       ctermbg=NONE        ctermfg=4           cterm=NONE | ||||||
|  |   hi PreProc          ctermbg=NONE        ctermfg=6           cterm=NONE | ||||||
|  |   hi Special          ctermbg=NONE        ctermfg=2           cterm=NONE | ||||||
|  |   hi Statement        ctermbg=NONE        ctermfg=12          cterm=NONE | ||||||
|  |   hi String           ctermbg=NONE        ctermfg=10          cterm=NONE | ||||||
|  |   hi Todo             ctermbg=NONE        ctermfg=NONE        cterm=reverse | ||||||
|  |   hi Type             ctermbg=NONE        ctermfg=13          cterm=NONE | ||||||
|  |  | ||||||
|  |   hi Error            ctermbg=NONE        ctermfg=1           cterm=reverse | ||||||
|  |   hi Ignore           ctermbg=NONE        ctermfg=NONE        cterm=NONE | ||||||
|  |   hi Underlined       ctermbg=NONE        ctermfg=6           cterm=underline | ||||||
|  |  | ||||||
|  |   hi LineNr           ctermbg=0           ctermfg=7           cterm=NONE | ||||||
|  |   hi NonText          ctermbg=NONE        ctermfg=8           cterm=NONE | ||||||
|  |  | ||||||
|  |   hi Pmenu            ctermbg=8           ctermfg=15          cterm=NONE | ||||||
|  |   hi PmenuSbar        ctermbg=7           ctermfg=NONE        cterm=NONE | ||||||
|  |   hi PmenuSel         ctermbg=6           ctermfg=0           cterm=NONE | ||||||
|  |   hi PmenuThumb       ctermbg=6           ctermfg=NONE        cterm=NONE | ||||||
|  |  | ||||||
|  |   hi ErrorMsg         ctermbg=1           ctermfg=0           cterm=NONE | ||||||
|  |   hi ModeMsg          ctermbg=2           ctermfg=0           cterm=NONE | ||||||
|  |   hi MoreMsg          ctermbg=NONE        ctermfg=6           cterm=NONE | ||||||
|  |   hi Question         ctermbg=NONE        ctermfg=10          cterm=NONE | ||||||
|  |   hi WarningMsg       ctermbg=NONE        ctermfg=1           cterm=NONE | ||||||
|  |  | ||||||
|  |   hi TabLine          ctermbg=8           ctermfg=3           cterm=NONE | ||||||
|  |   hi TabLineFill      ctermbg=8           ctermfg=0           cterm=NONE | ||||||
|  |   hi TabLineSel       ctermbg=3           ctermfg=0           cterm=NONE | ||||||
|  |  | ||||||
|  |   hi Cursor           ctermbg=NONE        ctermfg=NONE        cterm=NONE | ||||||
|  |   hi CursorColumn     ctermbg=8           ctermfg=NONE        cterm=NONE | ||||||
|  |   hi CursorLine       ctermbg=NONE        ctermfg=NONE        cterm=underline | ||||||
|  |   hi CursorLineNr     ctermbg=0           ctermfg=14          cterm=NONE | ||||||
|  |  | ||||||
|  |   hi helpLeadBlank    ctermbg=NONE        ctermfg=NONE        cterm=NONE | ||||||
|  |   hi helpNormal       ctermbg=NONE        ctermfg=NONE        cterm=NONE | ||||||
|  |  | ||||||
|  |   hi StatusLine       ctermbg=3           ctermfg=0           cterm=NONE | ||||||
|  |   hi StatusLineNC     ctermbg=8           ctermfg=0           cterm=NONE | ||||||
|  |  | ||||||
|  |   hi Visual           ctermbg=12          ctermfg=0           cterm=NONE | ||||||
|  |   hi VisualNOS        ctermbg=NONE        ctermfg=NONE        cterm=underline | ||||||
|  |  | ||||||
|  |   hi FoldColumn       ctermbg=0           ctermfg=8           cterm=NONE | ||||||
|  |   hi Folded           ctermbg=0           ctermfg=8           cterm=NONE | ||||||
|  |  | ||||||
|  |   hi VertSplit        ctermbg=8           ctermfg=8           cterm=NONE | ||||||
|  |   hi WildMenu         ctermbg=12          ctermfg=0           cterm=NONE | ||||||
|  |  | ||||||
|  |   hi SpecialKey       ctermbg=NONE        ctermfg=8           cterm=NONE | ||||||
|  |   hi Title            ctermbg=NONE        ctermfg=15          cterm=NONE | ||||||
|  |  | ||||||
|  |   hi DiffAdd          ctermbg=2           ctermfg=0           cterm=NONE | ||||||
|  |   hi DiffChange       ctermbg=6           ctermfg=0           cterm=NONE | ||||||
|  |   hi DiffDelete       ctermbg=1           ctermfg=0           cterm=NONE | ||||||
|  |   hi DiffText         ctermbg=11          ctermfg=0           cterm=NONE | ||||||
|  |  | ||||||
|  |   hi IncSearch        ctermbg=1           ctermfg=0           cterm=NONE | ||||||
|  |   hi Search           ctermbg=11          ctermfg=0           cterm=NONE | ||||||
|  |  | ||||||
|  |   hi Directory        ctermbg=NONE        ctermfg=14          cterm=NONE | ||||||
|  |   hi MatchParen       ctermbg=0           ctermfg=11          cterm=NONE | ||||||
|  |  | ||||||
|  |   hi SpellBad         ctermbg=NONE        ctermfg=1           cterm=undercurl | ||||||
|  |   hi SpellCap         ctermbg=NONE        ctermfg=3           cterm=undercurl | ||||||
|  |   hi SpellLocal       ctermbg=NONE        ctermfg=2           cterm=undercurl | ||||||
|  |   hi SpellRare        ctermbg=NONE        ctermfg=5           cterm=undercurl | ||||||
|  |  | ||||||
|  |   hi ColorColumn      ctermbg=1           ctermfg=NONE        cterm=NONE | ||||||
|  |   hi SignColumn       ctermbg=0           ctermfg=8           cterm=NONE | ||||||
|  | endif | ||||||
|  |  | ||||||
|  | hi link Boolean            Constant | ||||||
|  | hi link Character          Constant | ||||||
|  | hi link Conceal            Normal | ||||||
|  | hi link Conditional        Statement | ||||||
|  | hi link Debug              Special | ||||||
|  | hi link Define             PreProc | ||||||
|  | hi link Delimiter          Special | ||||||
|  | hi link Exception          Statement | ||||||
|  | hi link Float              Number | ||||||
|  | hi link HelpCommand        Statement | ||||||
|  | hi link HelpExample        Statement | ||||||
|  | hi link Include            PreProc | ||||||
|  | hi link Keyword            Statement | ||||||
|  | hi link Label              Statement | ||||||
|  | hi link Macro              PreProc | ||||||
|  | hi link Number             Constant | ||||||
|  | hi link Operator           Statement | ||||||
|  | hi link PreCondit          PreProc | ||||||
|  | hi link Repeat             Statement | ||||||
|  | hi link SpecialChar        Special | ||||||
|  | hi link SpecialComment     Special | ||||||
|  | hi link StorageClass       Type | ||||||
|  | hi link Structure          Type | ||||||
|  | hi link Tag                Special | ||||||
|  | hi link Typedef            Type | ||||||
|  |  | ||||||
|  | hi link htmlEndTag         htmlTagName | ||||||
|  | hi link htmlLink           Function | ||||||
|  | hi link htmlSpecialTagName htmlTagName | ||||||
|  | hi link htmlTag            htmlTagName | ||||||
|  | hi link xmlTag             Statement | ||||||
|  | hi link xmlTagName         Statement | ||||||
|  | hi link xmlEndTag          Statement | ||||||
|  |  | ||||||
|  | hi link markdownItalic     Preproc | ||||||
|  |  | ||||||
|  | hi link diffBDiffer        WarningMsg | ||||||
|  | hi link diffCommon         WarningMsg | ||||||
|  | hi link diffDiffer         WarningMsg | ||||||
|  | hi link diffIdentical      WarningMsg | ||||||
|  | hi link diffIsA            WarningMsg | ||||||
|  | hi link diffNoEOL          WarningMsg | ||||||
|  | hi link diffOnly           WarningMsg | ||||||
|  | hi link diffRemoved        WarningMsg | ||||||
|  | hi link diffAdded          String | ||||||
							
								
								
									
										519
									
								
								homedir/.vim/doc/acp.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										519
									
								
								homedir/.vim/doc/acp.txt
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,519 @@ | |||||||
|  | *acp.txt*       Automatically opens popup menu for completions. | ||||||
|  |  | ||||||
|  |         Copyright (c) 2007-2009 Takeshi NISHIDA | ||||||
|  |  | ||||||
|  | AutoComplPop                                              *autocomplpop* *acp* | ||||||
|  |  | ||||||
|  | INTRODUCTION                    |acp-introduction| | ||||||
|  | INSTALLATION                    |acp-installation| | ||||||
|  | USAGE                           |acp-usage| | ||||||
|  | COMMANDS                        |acp-commands| | ||||||
|  | OPTIONS                         |acp-options| | ||||||
|  | SPECIAL THANKS                  |acp-thanks| | ||||||
|  | CHANGELOG                       |acp-changelog| | ||||||
|  | ABOUT                           |acp-about| | ||||||
|  |  | ||||||
|  |  | ||||||
|  | ============================================================================== | ||||||
|  | INTRODUCTION                                                *acp-introduction* | ||||||
|  |  | ||||||
|  | With this plugin, your vim comes to automatically opens popup menu for | ||||||
|  | completions when you enter characters or move the cursor in Insert mode. It | ||||||
|  | won't prevent you continuing entering characters. | ||||||
|  |  | ||||||
|  |  | ||||||
|  | ============================================================================== | ||||||
|  | INSTALLATION                                                *acp-installation* | ||||||
|  |  | ||||||
|  | Put all files into your runtime directory. If you have the zip file, extract | ||||||
|  | it to your runtime directory. | ||||||
|  |  | ||||||
|  | You should place the files as follows: | ||||||
|  | > | ||||||
|  |         <your runtime directory>/plugin/acp.vim | ||||||
|  |         <your runtime directory>/doc/acp.txt | ||||||
|  |         ... | ||||||
|  | < | ||||||
|  | If you are disgusted to make your runtime directory confused with a lot of | ||||||
|  | plugins, put each of the plugins into a directory individually and just add | ||||||
|  | the directory path to 'runtimepath'. It's easy to uninstall plugins. | ||||||
|  |  | ||||||
|  | Then update your help tags files to enable help for this plugin. See | ||||||
|  | |add-local-help| for details. | ||||||
|  |  | ||||||
|  | Requirements: ~ | ||||||
|  |  | ||||||
|  | - L9 library (vimscript #3252) | ||||||
|  |  | ||||||
|  |  | ||||||
|  | ============================================================================== | ||||||
|  | USAGE                                                              *acp-usage* | ||||||
|  |  | ||||||
|  | Once this plugin is installed, auto-popup is enabled at startup by default. | ||||||
|  |  | ||||||
|  | Which completion method is used depends on the text before the cursor. The | ||||||
|  | default behavior is as follows: | ||||||
|  |  | ||||||
|  |         kind      filetype    text before the cursor ~ | ||||||
|  |         Keyword   *           two keyword characters | ||||||
|  |         Filename  *           a filename character + a path separator  | ||||||
|  |                               + 0 or more filename character | ||||||
|  |         Omni      ruby        ".", "::" or non-word character + ":" | ||||||
|  |                               (|+ruby| required.) | ||||||
|  |         Omni      python      "." (|+python| required.) | ||||||
|  |         Omni      xml         "<", "</" or ("<" + non-">" characters + " ") | ||||||
|  |         Omni      html/xhtml  "<", "</" or ("<" + non-">" characters + " ") | ||||||
|  |         Omni      css         (":", ";", "{", "^", "@", or "!") | ||||||
|  |                               + 0 or 1 space | ||||||
|  |  | ||||||
|  | Also, you can make user-defined completion and snipMate's trigger completion | ||||||
|  | (|acp-snipMate|) auto-popup if the options are set. | ||||||
|  |  | ||||||
|  | These behavior are customizable. | ||||||
|  |  | ||||||
|  |                                                                 *acp-snipMate* | ||||||
|  | snipMate's Trigger Completion ~ | ||||||
|  |  | ||||||
|  | snipMate's trigger completion enables you to complete a snippet trigger | ||||||
|  | provided by snipMate plugin | ||||||
|  | (http://www.vim.org/scripts/script.php?script_id=2540) and expand it. | ||||||
|  |  | ||||||
|  |  | ||||||
|  | To enable auto-popup for this completion, add following function to | ||||||
|  | plugin/snipMate.vim: | ||||||
|  | > | ||||||
|  |   fun! GetSnipsInCurrentScope() | ||||||
|  |     let snips = {} | ||||||
|  |     for scope in [bufnr('%')] + split(&ft, '\.') + ['_'] | ||||||
|  |       call extend(snips, get(s:snippets, scope, {}), 'keep') | ||||||
|  |       call extend(snips, get(s:multi_snips, scope, {}), 'keep') | ||||||
|  |     endfor | ||||||
|  |     return snips | ||||||
|  |   endf | ||||||
|  | < | ||||||
|  | And set |g:acp_behaviorSnipmateLength| option to 1. | ||||||
|  |  | ||||||
|  | There is the restriction on this auto-popup, that the word before cursor must | ||||||
|  | consist only of uppercase characters. | ||||||
|  |  | ||||||
|  |                                                                *acp-perl-omni* | ||||||
|  | Perl Omni-Completion ~ | ||||||
|  |  | ||||||
|  | AutoComplPop supports perl-completion.vim | ||||||
|  | (http://www.vim.org/scripts/script.php?script_id=2852). | ||||||
|  |  | ||||||
|  | To enable auto-popup for this completion, set |g:acp_behaviorPerlOmniLength| | ||||||
|  | option to 0 or more. | ||||||
|  |  | ||||||
|  |  | ||||||
|  | ============================================================================== | ||||||
|  | COMMANDS                                                        *acp-commands* | ||||||
|  |  | ||||||
|  |                                                                   *:AcpEnable* | ||||||
|  | :AcpEnable | ||||||
|  |         enables auto-popup. | ||||||
|  |  | ||||||
|  |                                                                  *:AcpDisable* | ||||||
|  | :AcpDisable | ||||||
|  |         disables auto-popup. | ||||||
|  |  | ||||||
|  |                                                                     *:AcpLock* | ||||||
|  | :AcpLock | ||||||
|  |         suspends auto-popup temporarily. | ||||||
|  |  | ||||||
|  |         For the purpose of avoiding interruption to another script, it is | ||||||
|  |         recommended to insert this command and |:AcpUnlock| than |:AcpDisable| | ||||||
|  |         and |:AcpEnable| . | ||||||
|  |  | ||||||
|  |                                                                   *:AcpUnlock* | ||||||
|  | :AcpUnlock | ||||||
|  |         resumes auto-popup suspended by |:AcpLock| . | ||||||
|  |  | ||||||
|  |  | ||||||
|  | ============================================================================== | ||||||
|  | OPTIONS                                                          *acp-options* | ||||||
|  |  | ||||||
|  |                                                     *g:acp_enableAtStartup*  > | ||||||
|  |   let g:acp_enableAtStartup = 1 | ||||||
|  | < | ||||||
|  |         If non-zero, auto-popup is enabled at startup. | ||||||
|  |  | ||||||
|  |                                                       *g:acp_mappingDriven*  > | ||||||
|  |   let g:acp_mappingDriven = 0 | ||||||
|  | < | ||||||
|  |         If non-zero, auto-popup is triggered by key mappings instead of | ||||||
|  |         |CursorMovedI| event. This is useful to avoid auto-popup by moving | ||||||
|  |         cursor in Insert mode. | ||||||
|  |  | ||||||
|  |                                                    *g:acp_ignorecaseOption*  > | ||||||
|  |   let g:acp_ignorecaseOption = 1 | ||||||
|  | < | ||||||
|  |         Value set to 'ignorecase' temporarily when auto-popup. | ||||||
|  |  | ||||||
|  |                                                      *g:acp_completeOption*  > | ||||||
|  |   let g:acp_completeOption = '.,w,b,k' | ||||||
|  | < | ||||||
|  |         Value set to 'complete' temporarily when auto-popup. | ||||||
|  |  | ||||||
|  |                                                  *g:acp_completeoptPreview*  > | ||||||
|  |   let g:acp_completeoptPreview = 0 | ||||||
|  | < | ||||||
|  |         If non-zero, "preview" is added to 'completeopt' when auto-popup. | ||||||
|  |  | ||||||
|  |                                         *g:acp_behaviorUserDefinedFunction*  > | ||||||
|  |   let g:acp_behaviorUserDefinedFunction = '' | ||||||
|  | < | ||||||
|  |         |g:acp_behavior-completefunc| for user-defined completion. If empty, | ||||||
|  |         this completion will be never attempted. | ||||||
|  |  | ||||||
|  |                                            *g:acp_behaviorUserDefinedMeets*  > | ||||||
|  |   let g:acp_behaviorUserDefinedMeets = '' | ||||||
|  | < | ||||||
|  |         |g:acp_behavior-meets| for user-defined completion. If empty, this | ||||||
|  |         completion will be never attempted. | ||||||
|  |  | ||||||
|  |                                              *g:acp_behaviorSnipmateLength*  > | ||||||
|  |   let g:acp_behaviorSnipmateLength = -1 | ||||||
|  | < | ||||||
|  |         Pattern before the cursor, which are needed to attempt | ||||||
|  |         snipMate-trigger completion. | ||||||
|  |  | ||||||
|  |                                              *g:acp_behaviorKeywordCommand*  > | ||||||
|  |   let g:acp_behaviorKeywordCommand = "\<C-n>" | ||||||
|  | < | ||||||
|  |         Command for keyword completion. This option is usually set "\<C-n>" or | ||||||
|  |         "\<C-p>". | ||||||
|  |  | ||||||
|  |                                               *g:acp_behaviorKeywordLength*  > | ||||||
|  |   let g:acp_behaviorKeywordLength = 2 | ||||||
|  | < | ||||||
|  |         Length of keyword characters before the cursor, which are needed to | ||||||
|  |         attempt keyword completion. If negative value, this completion will be | ||||||
|  |         never attempted. | ||||||
|  |  | ||||||
|  |                                              *g:acp_behaviorKeywordIgnores*  > | ||||||
|  |   let g:acp_behaviorKeywordIgnores = [] | ||||||
|  | < | ||||||
|  |         List of string. If a word before the cursor matches to the front part | ||||||
|  |         of one of them, keyword completion won't be attempted. | ||||||
|  |  | ||||||
|  |         E.g., when there are too many keywords beginning with "get" for the | ||||||
|  |         completion and auto-popup by entering "g", "ge", or "get" causes | ||||||
|  |         response degradation, set ["get"] to this option and avoid it. | ||||||
|  |  | ||||||
|  |                                                  *g:acp_behaviorFileLength*  > | ||||||
|  |   let g:acp_behaviorFileLength = 0 | ||||||
|  | < | ||||||
|  |         Length of filename characters before the cursor, which are needed to | ||||||
|  |         attempt filename completion. If negative value, this completion will | ||||||
|  |         be never attempted. | ||||||
|  |  | ||||||
|  |                                        *g:acp_behaviorRubyOmniMethodLength*  > | ||||||
|  |   let g:acp_behaviorRubyOmniMethodLength = 0 | ||||||
|  | < | ||||||
|  |         Length of keyword characters before the cursor, which are needed to | ||||||
|  |         attempt ruby omni-completion for methods. If negative value, this | ||||||
|  |         completion will be never attempted. | ||||||
|  |  | ||||||
|  |                                        *g:acp_behaviorRubyOmniSymbolLength*  > | ||||||
|  |   let g:acp_behaviorRubyOmniSymbolLength = 1 | ||||||
|  | < | ||||||
|  |         Length of keyword characters before the cursor, which are needed to | ||||||
|  |         attempt ruby omni-completion for symbols. If negative value, this | ||||||
|  |         completion will be never attempted. | ||||||
|  |  | ||||||
|  |                                            *g:acp_behaviorPythonOmniLength*  > | ||||||
|  |   let g:acp_behaviorPythonOmniLength = 0 | ||||||
|  | < | ||||||
|  |         Length of keyword characters before the cursor, which are needed to | ||||||
|  |         attempt python omni-completion. If negative value, this completion | ||||||
|  |         will be never attempted. | ||||||
|  |  | ||||||
|  |                                              *g:acp_behaviorPerlOmniLength*  > | ||||||
|  |   let g:acp_behaviorPerlOmniLength = -1 | ||||||
|  | < | ||||||
|  |         Length of keyword characters before the cursor, which are needed to | ||||||
|  |         attempt perl omni-completion. If negative value, this completion will | ||||||
|  |         be never attempted. | ||||||
|  |  | ||||||
|  |         See also: |acp-perl-omni| | ||||||
|  |  | ||||||
|  |                                               *g:acp_behaviorXmlOmniLength*  > | ||||||
|  |   let g:acp_behaviorXmlOmniLength = 0 | ||||||
|  | < | ||||||
|  |         Length of keyword characters before the cursor, which are needed to | ||||||
|  |         attempt XML omni-completion. If negative value, this completion will | ||||||
|  |         be never attempted. | ||||||
|  |  | ||||||
|  |                                              *g:acp_behaviorHtmlOmniLength*  > | ||||||
|  |   let g:acp_behaviorHtmlOmniLength = 0 | ||||||
|  | < | ||||||
|  |         Length of keyword characters before the cursor, which are needed to | ||||||
|  |         attempt HTML omni-completion. If negative value, this completion will | ||||||
|  |         be never attempted. | ||||||
|  |  | ||||||
|  |                                       *g:acp_behaviorCssOmniPropertyLength*  > | ||||||
|  |   let g:acp_behaviorCssOmniPropertyLength = 1 | ||||||
|  | < | ||||||
|  |         Length of keyword characters before the cursor, which are needed to | ||||||
|  |         attempt CSS omni-completion for properties. If negative value, this | ||||||
|  |         completion will be never attempted. | ||||||
|  |  | ||||||
|  |                                          *g:acp_behaviorCssOmniValueLength*  > | ||||||
|  |   let g:acp_behaviorCssOmniValueLength = 0 | ||||||
|  | < | ||||||
|  |         Length of keyword characters before the cursor, which are needed to | ||||||
|  |         attempt CSS omni-completion for values. If negative value, this | ||||||
|  |         completion will be never attempted. | ||||||
|  |  | ||||||
|  |                                                            *g:acp_behavior*  > | ||||||
|  |   let g:acp_behavior = {} | ||||||
|  | < | ||||||
|  |         This option is for advanced users. This setting overrides other | ||||||
|  |         behavior options. This is a |Dictionary|. Each key corresponds to a | ||||||
|  |         filetype. '*' is default. Each value is a list. These are attempted in | ||||||
|  |         sequence until completion item is found. Each element is a | ||||||
|  |         |Dictionary| which has following items: | ||||||
|  |  | ||||||
|  |         "command":                                    *g:acp_behavior-command* | ||||||
|  |           Command to be fed to open popup menu for completions. | ||||||
|  |  | ||||||
|  |         "completefunc":                          *g:acp_behavior-completefunc* | ||||||
|  |           'completefunc' will be set to this user-provided function during the | ||||||
|  |           completion. Only makes sense when "command" is "<C-x><C-u>". | ||||||
|  |  | ||||||
|  |         "meets":                                        *g:acp_behavior-meets* | ||||||
|  |           Name of the function which dicides whether or not to attempt this | ||||||
|  |           completion. It will be attempted if this function returns non-zero. | ||||||
|  |           This function takes a text before the cursor. | ||||||
|  |  | ||||||
|  |         "onPopupClose":                          *g:acp_behavior-onPopupClose* | ||||||
|  |           Name of the function which is called when popup menu for this | ||||||
|  |           completion is closed. Following completions will be suppressed if | ||||||
|  |           this function returns zero. | ||||||
|  |  | ||||||
|  |         "repeat":                                      *g:acp_behavior-repeat* | ||||||
|  |           If non-zero, the last completion is automatically repeated. | ||||||
|  |  | ||||||
|  |  | ||||||
|  | ============================================================================== | ||||||
|  | SPECIAL THANKS                                                    *acp-thanks* | ||||||
|  |  | ||||||
|  | - Daniel Schierbeck | ||||||
|  | - Ingo Karkat | ||||||
|  |  | ||||||
|  |  | ||||||
|  | ============================================================================== | ||||||
|  | CHANGELOG                                                      *acp-changelog* | ||||||
|  |  | ||||||
|  | 3.0: [TODO] | ||||||
|  |   - From this version, L9 library (vimscript #3252) is required. | ||||||
|  |  | ||||||
|  | 2.14.1 | ||||||
|  |   - Changed the way of auto-popup for avoiding an issue about filename | ||||||
|  |     completion. | ||||||
|  |   - Fixed a bug that popup menu was opened twice when auto-popup was done. | ||||||
|  |  | ||||||
|  | 2.14 | ||||||
|  |   - Added the support for perl-completion.vim. | ||||||
|  |  | ||||||
|  | 2.13 | ||||||
|  |   - Changed to sort snipMate's triggers. | ||||||
|  |   - Fixed a bug that a wasted character was inserted after snipMate's trigger | ||||||
|  |     completion. | ||||||
|  |  | ||||||
|  | 2.12.1 | ||||||
|  |   - Changed to avoid a strange behavior with Microsoft IME. | ||||||
|  |  | ||||||
|  | 2.12 | ||||||
|  |   - Added g:acp_behaviorKeywordIgnores option. | ||||||
|  |   - Added g:acp_behaviorUserDefinedMeets option and removed | ||||||
|  |     g:acp_behaviorUserDefinedPattern. | ||||||
|  |   - Changed to do auto-popup only when a buffer is modified. | ||||||
|  |   - Changed the structure of g:acp_behavior option. | ||||||
|  |   - Changed to reflect a change of behavior options (named g:acp_behavior*) | ||||||
|  |     any time it is done. | ||||||
|  |   - Fixed a bug that completions after omni completions or snipMate's trigger | ||||||
|  |     completion were never attempted when no candidate for the former | ||||||
|  |     completions was found. | ||||||
|  |  | ||||||
|  | 2.11.1 | ||||||
|  |   - Fixed a bug that a snipMate's trigger could not be expanded when it was | ||||||
|  |     completed. | ||||||
|  |  | ||||||
|  | 2.11 | ||||||
|  |   - Implemented experimental feature which is snipMate's trigger completion. | ||||||
|  |  | ||||||
|  | 2.10 | ||||||
|  |   - Improved the response by changing not to attempt any completion when | ||||||
|  |     keyword characters are entered after a word which has been found that it | ||||||
|  |     has no completion candidate at the last attempt of completions. | ||||||
|  |   - Improved the response by changing to close popup menu when <BS> was | ||||||
|  |     pressed and the text before the cursor would not match with the pattern of | ||||||
|  |     current behavior. | ||||||
|  |  | ||||||
|  | 2.9 | ||||||
|  |   - Changed default behavior to support XML omni completion. | ||||||
|  |   - Changed default value of g:acp_behaviorKeywordCommand option. | ||||||
|  |     The option with "\<C-p>" cause a problem which inserts a match without | ||||||
|  |     <CR> when 'dictionary' has been set and keyword completion is done. | ||||||
|  |   - Changed to show error message when incompatible with a installed vim. | ||||||
|  |  | ||||||
|  | 2.8.1 | ||||||
|  |   - Fixed a bug which inserted a selected match to the next line when | ||||||
|  |     auto-wrapping (enabled with 'formatoptions') was performed. | ||||||
|  |  | ||||||
|  | 2.8 | ||||||
|  |   - Added g:acp_behaviorUserDefinedFunction option and | ||||||
|  |     g:acp_behaviorUserDefinedPattern option for users who want to make custom | ||||||
|  |     completion auto-popup. | ||||||
|  |   - Fixed a bug that setting 'spell' on a new buffer made typing go crazy. | ||||||
|  |  | ||||||
|  | 2.7 | ||||||
|  |   - Changed naming conventions for filenames, functions, commands, and options  | ||||||
|  |     and thus renamed them. | ||||||
|  |   - Added g:acp_behaviorKeywordCommand option. If you prefer the previous | ||||||
|  |     behavior for keyword completion, set this option "\<C-n>". | ||||||
|  |   - Changed default value of g:acp_ignorecaseOption option. | ||||||
|  |  | ||||||
|  |   The following were done by Ingo Karkat: | ||||||
|  |  | ||||||
|  |   - ENH: Added support for setting a user-provided 'completefunc' during the | ||||||
|  |     completion, configurable via g:acp_behavior.  | ||||||
|  |   - BUG: When the configured completion is <C-p> or <C-x><C-p>, the command to | ||||||
|  |     restore the original text (in on_popup_post()) must be reverted, too.  | ||||||
|  |   - BUG: When using a custom completion function (<C-x><C-u>) that also uses | ||||||
|  |     an s:...() function name, the s:GetSidPrefix() function dynamically | ||||||
|  |     determines the wrong SID. Now calling s:DetermineSidPrefix() once during | ||||||
|  |     sourcing and caching the value in s:SID.  | ||||||
|  |   - BUG: Should not use custom defined <C-X><C-...> completion mappings. Now | ||||||
|  |     consistently using unmapped completion commands everywhere. (Beforehand, | ||||||
|  |     s:PopupFeeder.feed() used mappings via feedkeys(..., 'm'), but | ||||||
|  |     s:PopupFeeder.on_popup_post() did not due to its invocation via | ||||||
|  |     :map-expr.)  | ||||||
|  |  | ||||||
|  | 2.6: | ||||||
|  |   - Improved the behavior of omni completion for HTML/XHTML. | ||||||
|  |  | ||||||
|  | 2.5: | ||||||
|  |   - Added some options to customize behavior easily: | ||||||
|  |       g:AutoComplPop_BehaviorKeywordLength | ||||||
|  |       g:AutoComplPop_BehaviorFileLength | ||||||
|  |       g:AutoComplPop_BehaviorRubyOmniMethodLength | ||||||
|  |       g:AutoComplPop_BehaviorRubyOmniSymbolLength | ||||||
|  |       g:AutoComplPop_BehaviorPythonOmniLength | ||||||
|  |       g:AutoComplPop_BehaviorHtmlOmniLength | ||||||
|  |       g:AutoComplPop_BehaviorCssOmniPropertyLength | ||||||
|  |       g:AutoComplPop_BehaviorCssOmniValueLength | ||||||
|  |  | ||||||
|  | 2.4: | ||||||
|  |   - Added g:AutoComplPop_MappingDriven option. | ||||||
|  |  | ||||||
|  | 2.3.1: | ||||||
|  |   - Changed to set 'lazyredraw' while a popup menu is visible to avoid | ||||||
|  |     flickering. | ||||||
|  |   - Changed a behavior for CSS. | ||||||
|  |   - Added support for GetLatestVimScripts. | ||||||
|  |  | ||||||
|  | 2.3: | ||||||
|  |   - Added a behavior for Python to support omni completion. | ||||||
|  |   - Added a behavior for CSS to support omni completion. | ||||||
|  |  | ||||||
|  | 2.2: | ||||||
|  |   - Changed not to work when 'paste' option is set. | ||||||
|  |   - Fixed AutoComplPopEnable command and AutoComplPopDisable command to | ||||||
|  |     map/unmap "i" and "R". | ||||||
|  |  | ||||||
|  | 2.1: | ||||||
|  |   - Fixed the problem caused by "." command in Normal mode. | ||||||
|  |   - Changed to map "i" and "R" to feed completion command after starting | ||||||
|  |     Insert mode. | ||||||
|  |   - Avoided the problem caused by Windows IME. | ||||||
|  |  | ||||||
|  | 2.0: | ||||||
|  |   - Changed to use CursorMovedI event to feed a completion command instead of | ||||||
|  |     key mapping. Now the auto-popup is triggered by moving the cursor. | ||||||
|  |   - Changed to feed completion command after starting Insert mode. | ||||||
|  |   - Removed g:AutoComplPop_MapList option. | ||||||
|  |  | ||||||
|  | 1.7: | ||||||
|  |   - Added behaviors for HTML/XHTML. Now supports the omni completion for | ||||||
|  |     HTML/XHTML. | ||||||
|  |   - Changed not to show expressions for CTRL-R =. | ||||||
|  |   - Changed not to set 'nolazyredraw' while a popup menu is visible. | ||||||
|  |  | ||||||
|  | 1.6.1: | ||||||
|  |   - Changed not to trigger the filename completion by a text which has | ||||||
|  |     multi-byte characters. | ||||||
|  |  | ||||||
|  | 1.6: | ||||||
|  |   - Redesigned g:AutoComplPop_Behavior option. | ||||||
|  |   - Changed default value of g:AutoComplPop_CompleteOption option. | ||||||
|  |   - Changed default value of g:AutoComplPop_MapList option. | ||||||
|  |  | ||||||
|  | 1.5: | ||||||
|  |   - Implemented continuous-completion for the filename completion. And added | ||||||
|  |     new option to g:AutoComplPop_Behavior. | ||||||
|  |  | ||||||
|  | 1.4: | ||||||
|  |   - Fixed the bug that the auto-popup was not suspended in fuzzyfinder. | ||||||
|  |   - Fixed the bug that an error has occurred with Ruby-omni-completion unless | ||||||
|  |     Ruby interface. | ||||||
|  |  | ||||||
|  | 1.3: | ||||||
|  |   - Supported Ruby-omni-completion by default. | ||||||
|  |   - Supported filename completion by default. | ||||||
|  |   - Added g:AutoComplPop_Behavior option. | ||||||
|  |   - Added g:AutoComplPop_CompleteoptPreview option. | ||||||
|  |   - Removed g:AutoComplPop_MinLength option. | ||||||
|  |   - Removed g:AutoComplPop_MaxLength option. | ||||||
|  |   - Removed g:AutoComplPop_PopupCmd option. | ||||||
|  |  | ||||||
|  | 1.2: | ||||||
|  |   - Fixed bugs related to 'completeopt'. | ||||||
|  |  | ||||||
|  | 1.1: | ||||||
|  |   - Added g:AutoComplPop_IgnoreCaseOption option. | ||||||
|  |   - Added g:AutoComplPop_NotEnableAtStartup option. | ||||||
|  |   - Removed g:AutoComplPop_LoadAndEnable option. | ||||||
|  | 1.0: | ||||||
|  |   - g:AutoComplPop_LoadAndEnable option for a startup activation is added. | ||||||
|  |   - AutoComplPopLock command and AutoComplPopUnlock command are added to | ||||||
|  |     suspend and resume. | ||||||
|  |   - 'completeopt' and 'complete' options are changed temporarily while | ||||||
|  |     completing by this script. | ||||||
|  |  | ||||||
|  | 0.4: | ||||||
|  |   - The first match are selected when the popup menu is Opened. You can insert | ||||||
|  |     the first match with CTRL-Y. | ||||||
|  |  | ||||||
|  | 0.3: | ||||||
|  |   - Fixed the problem that the original text is not restored if 'longest' is | ||||||
|  |     not set in 'completeopt'. Now the plugin works whether or not 'longest' is | ||||||
|  |     set in 'completeopt', and also 'menuone'. | ||||||
|  |  | ||||||
|  | 0.2: | ||||||
|  |   - When completion matches are not found, insert CTRL-E to stop completion. | ||||||
|  |   - Clear the echo area. | ||||||
|  |   - Fixed the problem in case of dividing words by symbols, popup menu is | ||||||
|  |     not opened. | ||||||
|  |  | ||||||
|  | 0.1: | ||||||
|  |   - First release. | ||||||
|  |  | ||||||
|  |  | ||||||
|  | ============================================================================== | ||||||
|  | ABOUT                                   *acp-about* *acp-contact* *acp-author* | ||||||
|  |  | ||||||
|  | Author:  Takeshi NISHIDA <ns9tks@DELETE-ME.gmail.com> | ||||||
|  | Licence: MIT Licence | ||||||
|  | URL:     http://www.vim.org/scripts/script.php?script_id=1879 | ||||||
|  |          http://bitbucket.org/ns9tks/vim-autocomplpop/ | ||||||
|  |  | ||||||
|  | Bugs/Issues/Suggestions/Improvements ~ | ||||||
|  |  | ||||||
|  | Please submit to http://bitbucket.org/ns9tks/vim-autocomplpop/issues/ . | ||||||
|  |  | ||||||
|  | ============================================================================== | ||||||
|  |  vim:tw=78:ts=8:ft=help:norl: | ||||||
|  |  | ||||||
							
								
								
									
										1
									
								
								homedir/.vim/init.vim
									
									
									
									
									
										Symbolic link
									
								
							
							
						
						
									
										1
									
								
								homedir/.vim/init.vim
									
									
									
									
									
										Symbolic link
									
								
							| @@ -0,0 +1 @@ | |||||||
|  | /home/fbt/.vimrc | ||||||
							
								
								
									
										542
									
								
								homedir/.vim/plugin/AutoClose.vim
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										542
									
								
								homedir/.vim/plugin/AutoClose.vim
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,542 @@ | |||||||
|  | scriptencoding utf-8 | ||||||
|  | """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" | ||||||
|  | " AutoClose.vim - Automatically close pair of characters: ( with ), [ with ], { with }, etc. | ||||||
|  | " Version: 2.0 | ||||||
|  | " Author: Thiago Alves <talk@thiagoalves.com.br> | ||||||
|  | " Maintainer: Thiago Alves <talk@thiagoalves.com.br> | ||||||
|  | " URL: http://thiagoalves.com.br | ||||||
|  | " Licence: This script is released under the Vim License. | ||||||
|  | " Last modified: 02/02/2011 | ||||||
|  | """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" | ||||||
|  |  | ||||||
|  | " check if script is already loaded | ||||||
|  | if !exists("g:debug_AutoClose") && exists("g:loaded_AutoClose") | ||||||
|  |     finish "stop loading the script" | ||||||
|  | endif | ||||||
|  | let g:loaded_AutoClose = 1 | ||||||
|  |  | ||||||
|  | let s:global_cpo = &cpo " store compatible-mode in local variable | ||||||
|  | set cpo&vim             " go into nocompatible-mode | ||||||
|  |  | ||||||
|  | if !exists('g:AutoClosePreserveDotReg') | ||||||
|  |     let g:AutoClosePreserveDotReg = 1 | ||||||
|  | endif | ||||||
|  |  | ||||||
|  | if g:AutoClosePreserveDotReg | ||||||
|  |     " Because dot register preservation code remaps escape we have to remap | ||||||
|  |     " some terminal specific escape sequences first | ||||||
|  |     if &term =~ 'xterm' || &term =~ 'rxvt' || &term =~ 'screen' || &term =~ 'linux' || &term =~ 'gnome' | ||||||
|  |         imap <silent> <Esc>OA <Up> | ||||||
|  |         imap <silent> <Esc>OB <Down> | ||||||
|  |         imap <silent> <Esc>OC <Right> | ||||||
|  |         imap <silent> <Esc>OD <Left> | ||||||
|  |         imap <silent> <Esc>OH <Home> | ||||||
|  |         imap <silent> <Esc>OF <End> | ||||||
|  |         imap <silent> <Esc>[5~ <PageUp> | ||||||
|  |         imap <silent> <Esc>[6~ <PageDown> | ||||||
|  |     endif | ||||||
|  | endif | ||||||
|  |  | ||||||
|  | """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" | ||||||
|  | " Functions | ||||||
|  | """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" | ||||||
|  | function! s:GetCharAhead(len) | ||||||
|  |     if col('$') == col('.') | ||||||
|  |         return "\0" | ||||||
|  |     endif | ||||||
|  |     return strpart(getline('.'), col('.')-2 + a:len, 1) | ||||||
|  | endfunction | ||||||
|  |  | ||||||
|  | function! s:GetCharBehind(len) | ||||||
|  |     if col('.') == 1 | ||||||
|  |         return "\0" | ||||||
|  |     endif | ||||||
|  |     return strpart(getline('.'), col('.') - (1 + a:len), 1) | ||||||
|  | endfunction | ||||||
|  |  | ||||||
|  | function! s:GetNextChar() | ||||||
|  |     return s:GetCharAhead(1) | ||||||
|  | endfunction | ||||||
|  |  | ||||||
|  | function! s:GetPrevChar() | ||||||
|  |     return s:GetCharBehind(1) | ||||||
|  | endfunction | ||||||
|  |  | ||||||
|  | " used to implement automatic deletion of closing character when opening | ||||||
|  | " counterpart is deleted and by space expansion | ||||||
|  | function! s:IsEmptyPair() | ||||||
|  |     let l:prev = s:GetPrevChar() | ||||||
|  |     let l:next = s:GetNextChar() | ||||||
|  |     return (l:next != "\0") && (get(b:AutoClosePairs, l:prev, "\0") == l:next) | ||||||
|  | endfunction | ||||||
|  |  | ||||||
|  | function! s:GetCurrentSyntaxRegion() | ||||||
|  |     return synIDattr(synIDtrans(synID(line('.'), col('.'), 1)), 'name') | ||||||
|  | endfunction | ||||||
|  |  | ||||||
|  | function! s:GetCurrentSyntaxRegionIf(char) | ||||||
|  |     let l:origin_line = getline('.') | ||||||
|  |     let l:changed_line = strpart(l:origin_line, 0, col('.')-1) . a:char . strpart(l:origin_line, col('.')-1) | ||||||
|  |     call setline('.', l:changed_line) | ||||||
|  |     let l:region = synIDattr(synIDtrans(synID(line('.'), col('.'), 1)), 'name') | ||||||
|  |     call setline('.', l:origin_line) | ||||||
|  |     return l:region | ||||||
|  | endfunction | ||||||
|  |  | ||||||
|  | function! s:IsForbidden(char) | ||||||
|  |     let l:result = index(b:AutoCloseProtectedRegions, s:GetCurrentSyntaxRegion()) >= 0 | ||||||
|  |     if l:result | ||||||
|  |         return l:result | ||||||
|  |     endif | ||||||
|  |     let l:region = s:GetCurrentSyntaxRegionIf(a:char) | ||||||
|  |     let l:result = index(b:AutoCloseProtectedRegions, l:region) >= 0 | ||||||
|  |     return l:result || l:region == 'Comment' | ||||||
|  | endfunction | ||||||
|  |  | ||||||
|  | function! s:AllowQuote(char, isBS) | ||||||
|  |     let l:result = 1 | ||||||
|  |     if b:AutoCloseSmartQuote | ||||||
|  |         let l:initPos = 1 + (a:isBS ? 1 : 0) | ||||||
|  |         let l:charBehind = s:GetCharBehind(l:initPos) | ||||||
|  |         let l:prev = l:charBehind | ||||||
|  |         let l:backSlashCount = 0 | ||||||
|  |         while l:charBehind == '\' | ||||||
|  |             let l:backSlashCount = l:backSlashCount + 1 | ||||||
|  |             let l:charBehind = s:GetCharBehind(l:initPos + l:backSlashCount) | ||||||
|  |         endwhile | ||||||
|  |  | ||||||
|  |         if l:backSlashCount % 2 | ||||||
|  |             let l:result = 0 | ||||||
|  |         else | ||||||
|  |             if a:char == "'" && l:prev =~ '[a-zA-Z0-9]' | ||||||
|  |                 let l:result = 0 | ||||||
|  |             endif | ||||||
|  |         endif | ||||||
|  |     endif | ||||||
|  |     return l:result | ||||||
|  | endfunction | ||||||
|  |  | ||||||
|  | function! s:CountQuotes(char) | ||||||
|  |     let l:currPos = col('.')-1 | ||||||
|  |     let l:line = strpart(getline('.'), 0, l:currPos) | ||||||
|  |     let l:result = 0 | ||||||
|  |  | ||||||
|  |     if l:currPos >= 0 | ||||||
|  |         for [q,closer] in items(b:AutoClosePairs) | ||||||
|  |             " only consider twin pairs | ||||||
|  |             if q != closer | continue | endif | ||||||
|  |  | ||||||
|  |             if b:AutoCloseSmartQuote != 0 | ||||||
|  |                 let l:regex = q . '[ˆ\\' . q . ']*(\\.[ˆ\\' . q . ']*)*' . q | ||||||
|  |             else | ||||||
|  |                 let l:regex = q . '[ˆ' . q . ']*' . q | ||||||
|  |             endif | ||||||
|  |  | ||||||
|  |             let l:closedQuoteIdx = match(l:line, l:regex) | ||||||
|  |             while l:closedQuoteIdx >= 0 | ||||||
|  |                 let l:matchedStr = matchstr(l:line, l:regex, l:closedQuoteIdx) | ||||||
|  |                 let l:line = strpart(l:line, 0, l:closedQuoteIdx) . strpart(l:line, l:closedQuoteIdx + strlen(l:matchedStr)) | ||||||
|  |                 let l:closedQuoteIdx = match(l:line, l:regex) | ||||||
|  |             endwhile | ||||||
|  |         endfor | ||||||
|  |  | ||||||
|  |         for c in split(l:line, '\zs') | ||||||
|  |             if c == a:char | ||||||
|  |                 let l:result = l:result + 1 | ||||||
|  |             endif | ||||||
|  |         endfor | ||||||
|  |     endif | ||||||
|  |     return l:result | ||||||
|  | endfunction | ||||||
|  |  | ||||||
|  | " The auto-close buffer is used in a fix of the redo functionality. | ||||||
|  | " As we insert characters after cursor, we remember them and at the moment | ||||||
|  | " that vim would normally collect the last entered string into dot register | ||||||
|  | " (:help ".) - i.e. when esc or a motion key is typed in insert mode - we | ||||||
|  | " erase the inserted symbols and pretend that we have just now typed them. | ||||||
|  | " This way vim picks them up into dot register as well and user can repeat the | ||||||
|  | " typed bit with . command. | ||||||
|  | function! s:PushBuffer(char) | ||||||
|  |     if !exists("b:AutoCloseBuffer") | ||||||
|  |         let b:AutoCloseBuffer = [] | ||||||
|  |     endif | ||||||
|  |     call insert(b:AutoCloseBuffer, a:char) | ||||||
|  | endfunction | ||||||
|  |  | ||||||
|  | function! s:PopBuffer() | ||||||
|  |     if exists("b:AutoCloseBuffer") && len(b:AutoCloseBuffer) > 0 | ||||||
|  |         call remove(b:AutoCloseBuffer, 0) | ||||||
|  |     endif | ||||||
|  | endfunction | ||||||
|  |  | ||||||
|  | function! s:EmptyBuffer() | ||||||
|  |     if exists("b:AutoCloseBuffer") | ||||||
|  |         let b:AutoCloseBuffer = [] | ||||||
|  |     endif | ||||||
|  | endfunction | ||||||
|  |  | ||||||
|  | function! s:FlushBuffer() | ||||||
|  |     let l:result = '' | ||||||
|  |     if exists("b:AutoCloseBuffer") | ||||||
|  |         let l:len = len(b:AutoCloseBuffer) | ||||||
|  |         if l:len > 0 | ||||||
|  |             let l:result = join(b:AutoCloseBuffer, '') . repeat("\<Left>", l:len) | ||||||
|  |             let b:AutoCloseBuffer = [] | ||||||
|  |             call s:EraseNCharsAtCursor(l:len) | ||||||
|  |         endif | ||||||
|  |     endif | ||||||
|  |     return l:result | ||||||
|  | endfunction | ||||||
|  |  | ||||||
|  | function! s:InsertStringAtCursor(str) | ||||||
|  |     let l:line = getline('.') | ||||||
|  |     let l:column = col('.')-2 | ||||||
|  |  | ||||||
|  |     if l:column < 0 | ||||||
|  |         call setline('.', a:str . l:line) | ||||||
|  |     else | ||||||
|  |         call setline('.', l:line[:l:column] . a:str . l:line[l:column+1:]) | ||||||
|  |     endif | ||||||
|  | endfunction | ||||||
|  |  | ||||||
|  | function! s:EraseNCharsAtCursor(len) | ||||||
|  |     let l:line = getline('.') | ||||||
|  |     let l:column = col('.')-2 | ||||||
|  |  | ||||||
|  |     if l:column < 0 | ||||||
|  |         call setline('.', l:line[a:len + 1:]) | ||||||
|  |     else | ||||||
|  |         call setline('.', l:line[:l:column] . l:line[l:column + a:len + 1:]) | ||||||
|  |     endif | ||||||
|  | endfunction | ||||||
|  |  | ||||||
|  | " returns the opener, after having inserted its closer if necessary | ||||||
|  | function! s:InsertPair(opener) | ||||||
|  |     if ! b:AutoCloseOn || ! has_key(b:AutoClosePairs, a:opener) || s:IsForbidden(a:opener) | ||||||
|  |       return a:opener | ||||||
|  |     endif | ||||||
|  |  | ||||||
|  |     let l:save_ve = &ve | ||||||
|  |     set ve=all | ||||||
|  |  | ||||||
|  |     let l:next = s:GetNextChar() | ||||||
|  |     " only add closing pair before space or any of the closepair chars | ||||||
|  |     let close_before = '\s\|\V\[,.;' . escape(join(keys(b:AutoClosePairs) + values(b:AutoClosePairs), ''), ']').']' | ||||||
|  |     if (l:next == "\0" || l:next =~ close_before) && s:AllowQuote(a:opener, 0) | ||||||
|  |         call s:InsertStringAtCursor(b:AutoClosePairs[a:opener]) | ||||||
|  |         call s:PushBuffer(b:AutoClosePairs[a:opener]) | ||||||
|  |     endif | ||||||
|  |  | ||||||
|  |     exec "set ve=" . l:save_ve | ||||||
|  |     return a:opener | ||||||
|  | endfunction | ||||||
|  |  | ||||||
|  | " returns the closer, after having eaten identical one if necessary | ||||||
|  | function! s:ClosePair(closer) | ||||||
|  |     let l:save_ve = &ve | ||||||
|  |     set ve=all | ||||||
|  |  | ||||||
|  |     if b:AutoCloseOn && s:GetNextChar() == a:closer | ||||||
|  |         call s:EraseNCharsAtCursor(1) | ||||||
|  |         call s:PopBuffer() | ||||||
|  |     endif | ||||||
|  |  | ||||||
|  |     exec "set ve=" . l:save_ve | ||||||
|  |     return a:closer | ||||||
|  | endfunction | ||||||
|  |  | ||||||
|  | " in case closer is identical with its opener - heuristically decide which one | ||||||
|  | " is being typed and act accordingly | ||||||
|  | function! s:OpenOrCloseTwinPair(char) | ||||||
|  |     if s:CountQuotes(a:char) % 2 == 0 | ||||||
|  |         " act as opening char | ||||||
|  |         return s:InsertPair(a:char) | ||||||
|  |     else | ||||||
|  |         " act as closing char | ||||||
|  |         return s:ClosePair(a:char) | ||||||
|  |     endif | ||||||
|  | endfunction | ||||||
|  |  | ||||||
|  | " maintain auto-close buffer when delete key is pressed | ||||||
|  | function! s:Delete() | ||||||
|  |     let l:save_ve = &ve | ||||||
|  |     set ve=all | ||||||
|  |  | ||||||
|  |     if exists("b:AutoCloseBuffer") && len(b:AutoCloseBuffer) > 0 && b:AutoCloseBuffer[0] == s:GetNextChar() | ||||||
|  |         call s:PopBuffer() | ||||||
|  |     endif | ||||||
|  |  | ||||||
|  |     exec "set ve=" . l:save_ve | ||||||
|  |     return "\<Del>" | ||||||
|  | endfunction | ||||||
|  |  | ||||||
|  | " when backspace is pressed: | ||||||
|  | " - erase an empty pair if backspacing from inside one | ||||||
|  | " - maintain auto-close buffer | ||||||
|  | function! s:Backspace() | ||||||
|  |     let l:save_ve = &ve | ||||||
|  |     let l:prev = s:GetPrevChar() | ||||||
|  |     let l:next = s:GetNextChar() | ||||||
|  |     set ve=all | ||||||
|  |  | ||||||
|  |     if b:AutoCloseOn && s:IsEmptyPair() && (l:prev != l:next || s:AllowQuote(l:prev, 1)) | ||||||
|  |         call s:EraseNCharsAtCursor(1) | ||||||
|  |         call s:PopBuffer() | ||||||
|  |     endif | ||||||
|  |  | ||||||
|  |     exec "set ve=" . l:save_ve | ||||||
|  |     return "\<BS>" | ||||||
|  | endfunction | ||||||
|  |  | ||||||
|  | function! s:Space() | ||||||
|  |     if b:AutoCloseOn && s:IsEmptyPair() | ||||||
|  |         call s:PushBuffer("\<Space>") | ||||||
|  |         return "\<Space>\<Space>\<Left>" | ||||||
|  |     else | ||||||
|  |         return "\<Space>" | ||||||
|  |     endif | ||||||
|  | endfunction | ||||||
|  |  | ||||||
|  | function! s:Enter() | ||||||
|  |     if has_key(b:AutoClosePumvisible, 'ENTER') && pumvisible() | ||||||
|  |         let b:snippet_chosen = 1 | ||||||
|  |         return b:AutoClosePumvisible['ENTER'] | ||||||
|  |     elseif b:AutoCloseOn && s:IsEmptyPair() && stridx( b:AutoCloseExpandEnterOn, s:GetPrevChar() ) >= 0 | ||||||
|  |         return "\<CR>\<Esc>O" | ||||||
|  |     endif | ||||||
|  |     return "\<CR>" | ||||||
|  | endfunction | ||||||
|  |  | ||||||
|  | function! s:ToggleAutoClose() | ||||||
|  |     let b:AutoCloseOn = !b:AutoCloseOn | ||||||
|  |     if b:AutoCloseOn | ||||||
|  |         echo "AutoClose ON" | ||||||
|  |     else | ||||||
|  |         echo "AutoClose OFF" | ||||||
|  |     endif | ||||||
|  | endfunction | ||||||
|  |  | ||||||
|  | " Parse a whitespace separated line of pairs | ||||||
|  | " single characters are assumed to be twin pairs (closer identical to | ||||||
|  | " opener) | ||||||
|  | function! AutoClose#ParsePairs(string) | ||||||
|  |     if type(a:string) == type({}) | ||||||
|  |         return a:string | ||||||
|  |     elseif type(a:string) != type("") | ||||||
|  |         echoerr "AutoClose#ParsePairs(): Argument not a dictionary or a string" | ||||||
|  |         return {} | ||||||
|  |     endif | ||||||
|  |  | ||||||
|  |     let l:dict = {} | ||||||
|  |     for pair in split(a:string) | ||||||
|  |         " strlen is length in bytes, we want in (wide) characters | ||||||
|  |         let l:pairLen = strlen(substitute(pair,'.','x','g')) | ||||||
|  |         if l:pairLen == 1 | ||||||
|  |             " assume a twin pair | ||||||
|  |             let l:dict[pair] = pair | ||||||
|  |         elseif l:pairLen == 2 | ||||||
|  |             let l:dict[pair[0]] = pair[1] | ||||||
|  |         else | ||||||
|  |             echoerr "AutoClose: Bad pair string - a pair longer then two character" | ||||||
|  |             echoerr " `- String: " . a:sring | ||||||
|  |             echoerr " `- Pair: " . pair . " Pair len: " . l:pairLen | ||||||
|  |         endif | ||||||
|  |     endfor | ||||||
|  |     return l:dict | ||||||
|  | endfunction | ||||||
|  |  | ||||||
|  | " this function is made visible for the sake of users | ||||||
|  | function! AutoClose#DefaultPairs() | ||||||
|  |     return AutoClose#ParsePairs(g:AutoClosePairs) | ||||||
|  | endfunction | ||||||
|  |  | ||||||
|  | function! s:ModifyPairsList(list, pairsToAdd, openersToRemove) | ||||||
|  |     return filter( | ||||||
|  |                 \ extend(a:list, AutoClose#ParsePairs(a:pairsToAdd), "force"), | ||||||
|  |                 \ "stridx(a:openersToRemove,v:key)<0") | ||||||
|  | endfunction | ||||||
|  |  | ||||||
|  | function! AutoClose#DefaultPairsModified(pairsToAdd,openersToRemove) | ||||||
|  |     return s:ModifyPairsList(AutoClose#DefaultPairs(), a:pairsToAdd, a:openersToRemove) | ||||||
|  | endfunction | ||||||
|  |  | ||||||
|  | " Define variables (in the buffer namespace). | ||||||
|  | function! s:DefineVariables() | ||||||
|  |     " All the following variables can be set per buffer or global. | ||||||
|  |     " The buffer namespace is used internally | ||||||
|  |     let defaults = { | ||||||
|  |                 \ 'AutoClosePairs': AutoClose#DefaultPairs(), | ||||||
|  |                 \ 'AutoCloseProtectedRegions': ["Comment", "String", "Character"], | ||||||
|  |                 \ 'AutoCloseSmartQuote': 1, | ||||||
|  |                 \ 'AutoCloseOn': 1, | ||||||
|  |                 \ 'AutoCloseSelectionWrapPrefix': '<LEADER>a', | ||||||
|  |                 \ 'AutoClosePumvisible': {"ENTER": "\<C-Y>", "ESC": "\<C-E>"}, | ||||||
|  |                 \ 'AutoCloseExpandEnterOn': "", | ||||||
|  |                 \ 'AutoCloseExpandSpace': 1, | ||||||
|  |                 \ } | ||||||
|  |  | ||||||
|  |     " Let the user define if he/she wants the plugin to do special actions when the | ||||||
|  |     " popup menu is visible and a movement key is pressed. | ||||||
|  |     " Movement keys used in the menu get mapped to themselves | ||||||
|  |     " (Up/Down/PageUp/PageDown). | ||||||
|  |     for key in s:movementKeys | ||||||
|  |         if key == 'ENTER' || key == 'ESC' | ||||||
|  |             continue | ||||||
|  |         endif | ||||||
|  |         let defaults['AutoClosePumvisible'][key] = '' | ||||||
|  |     endfor | ||||||
|  |     for key in s:pumMovementKeys | ||||||
|  |         if key == 'ENTER' || key == 'ESC' | ||||||
|  |             continue | ||||||
|  |         endif | ||||||
|  |         let defaults['AutoClosePumvisible'][key] = '<'.key.'>' | ||||||
|  |     endfor | ||||||
|  |  | ||||||
|  |     if exists ('b:AutoClosePairs') && type('b:AutoClosePairs') == type("") | ||||||
|  |         let tmp = AutoClose#ParsePairs(b:AutoClosePairs) | ||||||
|  |         unlet b:AutoClosePairs | ||||||
|  |         let b:AutoClosePairs = tmp | ||||||
|  |     endif | ||||||
|  |  | ||||||
|  |     " Now handle/assign values | ||||||
|  |     for key in keys(defaults) | ||||||
|  |         if key == 'AutoClosePumvisible' | ||||||
|  |             let tempVisible = defaults['AutoClosePumvisible'] | ||||||
|  |             if exists('g:AutoClosePumvisible') && type(eval('g:AutoClosePumvisible')) == type(defaults['AutoClosePumvisible']) | ||||||
|  |                 for childKey in keys(g:AutoClosePumvisible) | ||||||
|  |                     let tempVisible[toupper(childKey)] = g:AutoClosePumvisible[childKey] | ||||||
|  |                 endfor | ||||||
|  |             endif | ||||||
|  |             if exists('b:AutoClosePumvisible') && type(eval('b:AutoClosePumvisible')) == type(defaults['AutoClosePumvisible']) | ||||||
|  |                 for childKey in keys(b:AutoClosePumvisible) | ||||||
|  |                     let tempVisible[toupper(childKey)] = b:AutoClosePumvisible[childKey] | ||||||
|  |                 endfor | ||||||
|  |             endif | ||||||
|  |             let b:AutoClosePumvisible = tempVisible | ||||||
|  |         else | ||||||
|  |             if exists('b:'.key) && type(eval('b:'.key)) == type(defaults[key]) | ||||||
|  |                 continue | ||||||
|  |             elseif exists('g:'.key) && type(eval('g:'.key)) == type(defaults[key]) | ||||||
|  |                 exec 'let b:' . key . ' = g:' . key | ||||||
|  |             else | ||||||
|  |                 exec 'let b:' . key . ' = ' . string(defaults[key]) | ||||||
|  |             endif | ||||||
|  |         endif | ||||||
|  |     endfor | ||||||
|  | endfunction | ||||||
|  |  | ||||||
|  | function! s:CreatePairsMaps() | ||||||
|  |     " create appropriate maps to defined open/close characters | ||||||
|  |     for key in keys(b:AutoClosePairs) | ||||||
|  |         let opener = s:keyName(key) | ||||||
|  |         let closer = s:keyName(b:AutoClosePairs[key]) | ||||||
|  |         let quoted_opener = s:quoteAndEscape(opener) | ||||||
|  |         let quoted_closer = s:quoteAndEscape(closer) | ||||||
|  |  | ||||||
|  |         exec "xnoremap <buffer> <silent> ". b:AutoCloseSelectionWrapPrefix | ||||||
|  |                     \ . opener . " <Esc>`>a" . closer .  "<Esc>`<i" . opener . "<Esc>" | ||||||
|  |         exec "xnoremap <buffer> <silent> ". b:AutoCloseSelectionWrapPrefix | ||||||
|  |                     \ . closer . " <Esc>`>a" . closer .  "<Esc>`<i" . opener . "<Esc>" | ||||||
|  |         if key == b:AutoClosePairs[key] | ||||||
|  |             exec "inoremap <buffer> <silent> " . opener | ||||||
|  |                         \ . " <C-R>=<SID>OpenOrCloseTwinPair(" . quoted_opener . ")<CR>" | ||||||
|  |         else | ||||||
|  |             exec "inoremap <buffer> <silent> " . opener | ||||||
|  |                         \ . " <C-R>=<SID>InsertPair(" . quoted_opener . ")<CR>" | ||||||
|  |             exec "inoremap <buffer> <silent> " . closer | ||||||
|  |                         \ . " <C-R>=<SID>ClosePair(" . quoted_closer . ")<CR>" | ||||||
|  |         endif | ||||||
|  |     endfor | ||||||
|  | endfunction | ||||||
|  |  | ||||||
|  | function! s:CreateExtraMaps() | ||||||
|  |     " Extra mapping | ||||||
|  |     inoremap <buffer> <silent> <BS>         <C-R>=<SID>Backspace()<CR> | ||||||
|  |     inoremap <buffer> <silent> <Del>        <C-R>=<SID>Delete()<CR> | ||||||
|  |     if b:AutoCloseExpandSpace | ||||||
|  |         inoremap <buffer> <silent> <Space>      <C-R>=<SID>Space()<CR> | ||||||
|  |     endif | ||||||
|  |     if len(b:AutoCloseExpandEnterOn) > 0 | ||||||
|  |         inoremap <buffer> <silent> <CR>      <C-R>=<SID>Enter()<CR> | ||||||
|  |     endif | ||||||
|  |  | ||||||
|  |     if g:AutoClosePreserveDotReg | ||||||
|  |         " Fix the re-do feature by flushing the char buffer on key movements (including Escape): | ||||||
|  |         for key in s:movementKeys | ||||||
|  |             let l:pvisiblemap = b:AutoClosePumvisible[key] | ||||||
|  |             let key = "<".key.">" | ||||||
|  |             let l:currentmap = maparg(key,"i") | ||||||
|  |             if (l:currentmap=="")|let l:currentmap=key|endif | ||||||
|  |             if len(l:pvisiblemap) | ||||||
|  |                 exec "inoremap <buffer> <silent> <expr> " . key . " pumvisible() ? '" . l:pvisiblemap . "' : '<C-R>=<SID>FlushBuffer()<CR>" . l:currentmap . "'" | ||||||
|  |             else | ||||||
|  |                 exec "inoremap <buffer> <silent> " . key . "  <C-R>=<SID>FlushBuffer()<CR>" . l:currentmap | ||||||
|  |             endif | ||||||
|  |         endfor | ||||||
|  |  | ||||||
|  |         " Flush the char buffer on mouse click: | ||||||
|  |         inoremap <buffer> <silent> <LeftMouse>  <C-R>=<SID>FlushBuffer()<CR><LeftMouse> | ||||||
|  |         inoremap <buffer> <silent> <RightMouse> <C-R>=<SID>FlushBuffer()<CR><RightMouse> | ||||||
|  |     endif | ||||||
|  | endfunction | ||||||
|  |  | ||||||
|  | function! s:CreateMaps() | ||||||
|  |     silent doautocmd FileType | ||||||
|  |     call s:DefineVariables() | ||||||
|  |     call s:CreatePairsMaps() | ||||||
|  |     call s:CreateExtraMaps() | ||||||
|  |  | ||||||
|  |     let b:loaded_AutoClose = 1 | ||||||
|  | endfunction | ||||||
|  |  | ||||||
|  | function! s:IsLoadedOnBuffer() | ||||||
|  |     return (exists("b:loaded_AutoClose") && b:loaded_AutoClose) | ||||||
|  | endfunction | ||||||
|  |  | ||||||
|  | " map some characters to their key names | ||||||
|  | function! s:keyName(char) | ||||||
|  |     let s:keyNames = {'|': '<Bar>', ' ': '<Space>'} | ||||||
|  |     return get(s:keyNames,a:char,a:char) | ||||||
|  | endfunction | ||||||
|  |  | ||||||
|  | " escape some characters for use in strings | ||||||
|  | function! s:quoteAndEscape(char) | ||||||
|  |     let s:escapedChars = {'"': '\"'} | ||||||
|  |     return '"' . get(s:escapedChars,a:char,a:char) . '"' | ||||||
|  | endfunction | ||||||
|  |  | ||||||
|  |  | ||||||
|  | """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" | ||||||
|  | " Configuration | ||||||
|  | """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" | ||||||
|  | let s:AutoClosePairs_FactoryDefaults = AutoClose#ParsePairs("() {} [] ` \" '") | ||||||
|  | if !exists("g:AutoClosePairs_add") | let g:AutoClosePairs_add = "" | endif | ||||||
|  | if !exists("g:AutoClosePairs_del") | let g:AutoClosePairs_del = "" | endif | ||||||
|  | if !exists("g:AutoClosePairs") | ||||||
|  |     let g:AutoClosePairs = s:ModifyPairsList( | ||||||
|  |                 \ s:AutoClosePairs_FactoryDefaults, | ||||||
|  |                 \ g:AutoClosePairs_add, | ||||||
|  |                 \ g:AutoClosePairs_del ) | ||||||
|  | endif | ||||||
|  |  | ||||||
|  | let s:movementKeys = split('ESC UP DOWN LEFT RIGHT HOME END PAGEUP PAGEDOWN') | ||||||
|  | " list of keys that get mapped to themselves for pumvisible() | ||||||
|  | let s:pumMovementKeys = split('UP DOWN PAGEUP PAGEDOWN') | ||||||
|  |  | ||||||
|  |  | ||||||
|  | if has("gui_macvim") | ||||||
|  |     call extend(s:movementKeys, split("D-LEFT D-RIGHT D-UP D-DOWN M-LEFT M-RIGHT M-UP M-DOWN")) | ||||||
|  | endif | ||||||
|  |  | ||||||
|  | augroup <Plug>(autoclose) | ||||||
|  | autocmd! | ||||||
|  | autocmd BufNewFile,BufRead,BufEnter * if !<SID>IsLoadedOnBuffer() | call <SID>CreateMaps() | endif | ||||||
|  | autocmd InsertEnter * call <SID>EmptyBuffer() | ||||||
|  | autocmd BufEnter * if mode() == 'i' | call <SID>EmptyBuffer() | endif | ||||||
|  | augroup END | ||||||
|  |  | ||||||
|  | " Define convenient commands | ||||||
|  | command! AutoCloseOn :let b:AutoCloseOn = 1 | ||||||
|  | command! AutoCloseOff :let b:AutoCloseOn = 0 | ||||||
|  | command! AutoCloseToggle :call s:ToggleAutoClose() | ||||||
|  | " vim:sw=4:sts=4: | ||||||
							
								
								
									
										5
									
								
								homedir/.vimperatorrc
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								homedir/.vimperatorrc
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,5 @@ | |||||||
|  | "3.8.2 (created: 2014/02/13 23:52:43) | ||||||
|  |  | ||||||
|  | source! /home/fbt/.vimperatorrc.local | ||||||
|  |  | ||||||
|  | " vim: set ft=vimperator: | ||||||
							
								
								
									
										11
									
								
								homedir/.vimperatorrc.local
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								homedir/.vimperatorrc.local
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,11 @@ | |||||||
|  | :set gui=nonavigation | ||||||
|  | :set autocomplete=false | ||||||
|  | :map O :tabopen  | ||||||
|  | :map P :set apptab<CR> | ||||||
|  | :map D :tabclose!<CR> | ||||||
|  |  | ||||||
|  | highlight CmdLine background: #29303A; color: #f9f9f9; transition: all 0.25s; | ||||||
|  | highlight CompItem[selected] background: #3A4452; color: #f9f9f9; | ||||||
|  | highlight Filter font-style: italic; color: red; | ||||||
|  | highlight Normal background: #29303A; color: #f9f9f9; transition: all 0.25s; | ||||||
|  | highlight InfoMsg background: #29303A; color: magenta; | ||||||
							
								
								
									
										46
									
								
								homedir/.vimrc
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										46
									
								
								homedir/.vimrc
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,46 @@ | |||||||
|  | " Personal vim config | ||||||
|  | scriptencoding utf-8 | ||||||
|  | set encoding=utf-8 | ||||||
|  |  | ||||||
|  | set backspace=2 | ||||||
|  |  | ||||||
|  | set modeline | ||||||
|  |  | ||||||
|  | set nocompatible | ||||||
|  | set cindent | ||||||
|  | set tabstop=3 | ||||||
|  | set shiftwidth=3 | ||||||
|  | set noexpandtab | ||||||
|  |  | ||||||
|  | set scrolloff=6 | ||||||
|  | set cursorline | ||||||
|  |  | ||||||
|  | set listchars=tab:».,trail:. | ||||||
|  |  | ||||||
|  | set mouse= | ||||||
|  |  | ||||||
|  | set number | ||||||
|  | set relativenumber | ||||||
|  |  | ||||||
|  | syntax enable | ||||||
|  | set background=dark | ||||||
|  |  | ||||||
|  | "colorscheme apprentice | ||||||
|  |  | ||||||
|  | if has("autocmd") | ||||||
|  | 	au BufReadPost * if line("'\"") > 0 && line("'\"") <= line("$") | ||||||
|  | 		\| exe "normal! g'\"" | endif | ||||||
|  | endif " | ||||||
|  |  | ||||||
|  | " Custom mappings | ||||||
|  | nmap rr "_dd | ||||||
|  | nmap <leader>l :setlocal list!<cr> | ||||||
|  |  | ||||||
|  | " visual mode mappings | ||||||
|  | vmap r "_d | ||||||
|  | vmap R "_dP | ||||||
|  |  | ||||||
|  | "set foldmethod=indent | ||||||
|  |  | ||||||
|  | " set fmr={,} | ||||||
|  | "set foldnestmax=1 | ||||||
							
								
								
									
										15
									
								
								homedir/.zshrc
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								homedir/.zshrc
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,15 @@ | |||||||
|  | # vim: ft=zsh | ||||||
|  |  | ||||||
|  | source "$HOME/.config/zsh.d/zshrc" | ||||||
|  |  | ||||||
|  | # Load modules | ||||||
|  | use \ | ||||||
|  | 	core \ | ||||||
|  | 	xdg \ | ||||||
|  | 	config \ | ||||||
|  | 	keys \ | ||||||
|  | 	dotfiles \ | ||||||
|  | 	prompt \ | ||||||
|  | 	helpers \ | ||||||
|  | 	local \ | ||||||
|  | 	shell | ||||||
							
								
								
									
										45
									
								
								mozilla/chrome/userChrome.css
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										45
									
								
								mozilla/chrome/userChrome.css
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,45 @@ | |||||||
|  | .tabbrowser-tab { | ||||||
|  | 	font: 14px xos4 terminus, Monospace !important; | ||||||
|  | 	color: #bebebe !important; | ||||||
|  | 	border: none !important; | ||||||
|  | 	background: #29303A !important; | ||||||
|  | 	min-height: 0 !important; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | .tabbrowser-tab[selected] { | ||||||
|  | 	color: #f9f9f9 !important; | ||||||
|  | 	background: #3A4452 !important; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | .tab-icon-image:not([pinned]) { display: none !important; } | ||||||
|  |  | ||||||
|  | #TabsToolbar { | ||||||
|  | 	background: #29303A !important; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | /* these styles are required to cover narrow scrollbars. */ | ||||||
|  | .tabbrowser-tabs[treestyletab-mode="vertical"] | ||||||
|  |  .scrollbox-innerbox { | ||||||
|  | 	background: #29303A !important; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | .tabbrowser-tabs[treestyletab-tabbar-position="left"][treestyletab-invert-scrollbar="true"] | ||||||
|  |  .scrollbox-innerbox { | ||||||
|  | 	background: #29303A !important; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | statusbar, | ||||||
|  | menubar, | ||||||
|  | toolbox, | ||||||
|  | toolbar { | ||||||
|  | 	border-style: none !important; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | toolbar { | ||||||
|  | 	border-width: 0px !important; | ||||||
|  | 	border-bottom: 1px solid #29303A !important; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | /* toolbar { | ||||||
|  | 	border-bottom: 1px solid red !important; | ||||||
|  | } */ | ||||||
		Reference in New Issue
	
	Block a user