5 Коммиты f0a7d12e97 ... 2f5e272c71

Автор SHA1 Сообщение Дата
  Kyle P Davis 2f5e272c71 feat: more history improvements, ignore commands with leading space from history 1 неделя назад
  Kyle P Davis b6bc8788f4 feat: add extra install step to setup nvim to use .vimrc 1 неделя назад
  Kyle P Davis 6cc8ff4ef3 docs: update readme to better describe current behavior 1 неделя назад
  Kyle P Davis e34c40a427 fix: better patching for head via bat, add tail via bat too 1 неделя назад
  Kyle P Davis 49da83d335 fix: avoid auto-update bug for last fetch check if never fetched before 1 неделя назад
3 измененных файлов с 60 добавлено и 40 удалено
  1. 33 18
      .profile
  2. 16 22
      README.md
  3. 11 0
      install.sh

+ 33 - 18
.profile

@@ -72,10 +72,18 @@ if [ ! "$ZSH_VERSION" ]; then
 	PROMPT_COMMAND="history -a;$PROMPT_COMMAND"
 else
 	SAVEHIST=$HISTSIZE
-	setopt SHARE_HISTORY
-	setopt EXTENDED_HISTORY
-	setopt HIST_EXPIRE_DUPS_FIRST
-	setopt HIST_IGNORE_SPACE # ignore if leading space
+	setopt EXTENDED_HISTORY          # Write the history file in the ':start:elapsed;command' format.
+	setopt INC_APPEND_HISTORY        # Write to the history file immediately, not when the shell exits.
+	setopt APPEND_HISTORY            # append to history file
+	setopt SHARE_HISTORY             # Share history between all sessions.
+	setopt HIST_EXPIRE_DUPS_FIRST    # Expire a duplicate event first when trimming history.
+	setopt HIST_IGNORE_SPACE         # Do not record an event starting with a space.
+	setopt HIST_IGNORE_DUPS          # Do not record an event that was just recorded again.
+	setopt HIST_IGNORE_ALL_DUPS      # Delete an old recorded event if a new event is a duplicate.
+	setopt HIST_FIND_NO_DUPS         # Do not display a previously found event.
+	setopt HIST_SAVE_NO_DUPS         # Do not write a duplicate event to the history file.
+	setopt HIST_VERIFY               # Do not execute immediately upon history expansion.
+	setopt HIST_NO_STORE             # Don't store history commands
 fi
 
 # Auto fetch and ask to pull if outdated once every 30 days
@@ -83,7 +91,7 @@ DOTFILES_DIR="$HOME/.dotfiles"
 DOTFILES_GIT_DIR="$DOTFILES_DIR/.git"
 DOTFILES_GIT_FETCH_HEAD_PATH="$DOTFILES_GIT_DIR/FETCH_HEAD"
 DOTFILES_CHECK_DAYS=30
-if [ -d "$DOTFILES_GIT_DIR" ] && [ $(( $(date +%s) - $(date -r "$DOTFILES_GIT_FETCH_HEAD_PATH" +%s) )) -gt $(( $DOTFILES_CHECK_DAYS * 24 * 60 * 60 )) ]; then
+if [ -d "$DOTFILES_GIT_DIR" ] && [[ ! -f "$DOTFILES_GIT_FETCH_HEAD_PATH"  ||  $(( $(date +%s) - $(date -r "$DOTFILES_GIT_FETCH_HEAD_PATH" +%s) )) -gt $(( $DOTFILES_CHECK_DAYS * 24 * 60 * 60 )) ]]; then
 	# auto fetch repo
 	git -C "$DOTFILES_DIR" fetch || :
 	# complain if branch is outdated and ask to update
@@ -155,22 +163,29 @@ if [ "${BAT_BIN:=$(get_bin bat)}" ]; then
 		alias -g -- --help='--help 2>&1 | bat -p -l=help'
 	fi
 
+	# monkeypatch tail to use bat to colorize things
+	if [ "${TAIL_BIN:=$(get_bin tail)}" ]; then
+		tail(){
+			LAST_ARG=${@[-1]}
+			if [ "$LAST_ARG" ]; then
+				LAST_FILE=$(ls -1 "$LAST_ARG" | "$TAIL_BIN" -n1)
+				"$TAIL_BIN" "$@" | "$BAT_BIN" -Pp --file-name="$LAST_FILE"
+			else
+				"$TAIL_BIN" "$@"
+			fi
+		}
+	fi
+
 	# monkeypatch head to use bat to colorize things
 	if [ "${HEAD_BIN:=$(get_bin head)}" ]; then
 		head(){
-			local N=10
-			case "$1" in
-				-c*|--bytes*)
-					"$HEAD_BIN" "$@"
-					;;
-				*)
-					if [[ "$1" =~ ^-(n|-lines)$ ]] && N=$(as_num "$2"); then
-						shift 2
-					elif [[ "$1" =~ ^-(n=?|-lines=) ]] && N=$(as_num "${1##*[^0-9]}"); then
-						shift 1
-					fi
-					"$BAT_BIN" --line-range=":$N" "$@"
-			esac
+			LAST_ARG=${@[-1]}
+			if [ "$LAST_ARG" ]; then
+				LAST_FILE=$(ls -1 "$LAST_ARG" | "$TAIL_BIN" -n1)
+				"$HEAD_BIN" "$@" | "$BAT_BIN" -Pp --file-name="$LAST_FILE"
+			else
+				"$HEAD_BIN" "$@"
+			fi
 		}
 	fi
 

+ 16 - 22
README.md

@@ -6,37 +6,31 @@ I tend to keep my customizations lightweight.
 
 This also serves as a tool for getting new Mac OS X and Linux systems setup in a hurry.
 
-
-
 ## Installation
 
 ```bash
 curl -fsSL "https://github.com/KylePDavis/dotfiles/raw/master/install.sh" | bash -  &&  . ~/.profile
 ```
-_(you do read these scripts, right?)_
-
 
+_(you do read these scripts, right?)_
 
 ## Highlights
 
-* `.profile`
-  - uses [gimme][gimme] to simplify installation (to wrap `apt-get`, [brew][brew], etc)
-  - uses [liquidprompt][liquidprompt] for awesome shell prompts
-  - colors for less,
-* `.vimrc`
-  - uses [Vim-Plug][vim-plug] to automatically install and load plugins
-  - tweaks colors and tabs
-  - syntax checking
-  - JavaScript support
+- `.profile`
+  - package management via [gimme][gimme] (wraps `apt-get`, [brew][brew], etc.)
+  - nice prompts via [pure][pure] in `zsh` or [liquidprompt][liquidprompt] in `bash`
+  - colors for many common operations
+- `.vimrc`
+  - compatible with [nvim][nvim]
+  - automatic plugin management via [zgenom][zgenom]
+  - improved colors and tabs behaviors
+  - IDE-level features for several languages
   - inline colors for CSS
-  - gutter for VCS/SCM changes (e.g., git)
-* [Atom][atom] editor scripts
-  - an install script for the plugins that I use
-
+  - gutter for VCS/SCM changes (e.g., `git`)
 
-
-[liquidprompt]: https://github.com/nojhan/liquidprompt
-[brew]: http://brew.sh
-[atom]: https://atom.io
-[vim-plug]: https://github.com/junegunn/vim-plug
 [gimme]: https://github.com/KylePDavis/gimme
+[brew]: http://brew.sh
+[liquidprompt]: https://github.com/nojhan/liquidprompt
+[pure]: https://github.com/sindresorhus/pure
+[nvim]: https://neovim.io
+[zgenom]: https://github.com/jandamm/zgenom

+ 11 - 0
install.sh

@@ -39,6 +39,17 @@ link "$CMD_DIR/.profile" "$HOME/.zshrc"
 link "$CMD_DIR/.profile" "$HOME/.bashrc"
 link "$CMD_DIR/.profile" "$HOME/.bash_profile" # certain scenarios use this one
 
+# setup nvim to use .vimrc
+NVIM_CFG_DIR="$HOME/config/nvim"
+if ! [ -f "$NVIM_CFG_DIR/init.vim" ]; then
+	mkdir -p "$NVIM_CFG_DIR"
+	echo "
+set runtimepath^=~/.vim runtimepath+=~/.vim/after
+let &packpath=&runtimepath
+source ~/.vimrc
+" > "$NVIM_CFG_DIR/init.vim"
+fi
+
 OS=$(uname -s)
 if [ "$OS" = "Darwin" ]; then
 	# Enable "All Controls" for tab in: System Settings > Keyboard > Keyboard navigation