diff options
| author | Mitsuo Tokumori <[email protected]> | 2023-03-20 02:12:27 -0500 |
|---|---|---|
| committer | Mitsuo Tokumori <[email protected]> | 2023-03-20 02:12:27 -0500 |
| commit | 11aedecab8a8ef7d54f0fa2f1adc67ac78ba42eb (patch) | |
| tree | 5df140f00fb12508310699af04bebde17a7d4117 | |
| parent | 3d4887349318f43dadf1de00ad15e35ba7812a84 (diff) | |
| download | dotfiles-11aedecab8a8ef7d54f0fa2f1adc67ac78ba42eb.tar.gz dotfiles-11aedecab8a8ef7d54f0fa2f1adc67ac78ba42eb.tar.bz2 dotfiles-11aedecab8a8ef7d54f0fa2f1adc67ac78ba42eb.zip | |
Simplify bashrc, modify install.sh, add nvim/
bashrc is now simpler. Hopefully with the same functionality. Remove
some of the default stuff that came with Debian years ago. Start with
default Archlinux bashrc as base (very minimal).
install.sh now recommends only using slinks. nvim and zathura now get
linked directory-wise. This is way better because added configuration
files will get here seamlessly. Doing diffs between 2 independent
copies is painful.
Now I'm transitioning to NeoVim. I've copied all relevant config from
vimrc (Vim) to init.vim (NeoVim). Very promising. File got smaller and
more organized in my opinion.
PD: Cheers, this pulse15 laptop is amazing.
| -rw-r--r-- | .gitmodules | 3 | ||||
| -rw-r--r-- | bash/bash_profile | 5 | ||||
| -rw-r--r-- | bash/bashrc | 131 | ||||
| -rw-r--r-- | git/config | 3 | ||||
| -rwxr-xr-x | install.sh | 99 | ||||
| -rw-r--r-- | nvim/colors/mac_classic.vim | 226 | ||||
| -rw-r--r-- | nvim/init.vim | 178 | ||||
| l--------- | nvim/nvim | 1 | ||||
| -rw-r--r-- | nvim/pack/mitsuo/Readme.txt | 1 | ||||
| -rw-r--r-- | nvim/pack/mitsuo/start/fun/Readme.txt | 1 | ||||
| -rw-r--r-- | nvim/pack/mitsuo/start/fun/plugin/fun.vim | 109 | ||||
| m--------- | nvim/pack/mitsuo/start/vim-commentary | 0 | ||||
| -rw-r--r-- | zathura/zathurarc (renamed from other/zathurarc) | 0 |
13 files changed, 645 insertions, 112 deletions
diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..e247b6c --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "nvim/pack/mitsuo/start/vim-commentary"] + path = nvim/pack/mitsuo/start/vim-commentary + url = https://github.com/tpope/vim-commentary diff --git a/bash/bash_profile b/bash/bash_profile new file mode 100644 index 0000000..5545f00 --- /dev/null +++ b/bash/bash_profile @@ -0,0 +1,5 @@ +# +# ~/.bash_profile +# + +[[ -f ~/.bashrc ]] && . ~/.bashrc diff --git a/bash/bashrc b/bash/bashrc index 2c43535..03e1d31 100644 --- a/bash/bashrc +++ b/bash/bashrc @@ -1,18 +1,15 @@ -# ~/.bashrc: executed by bash(1) for non-login shells. (That's why ~/.profile -# is needed. To source it from login shells? What does login shell mean -# anyway). - +# +# ~/.bashrc: executed by bash(1) for interactive shells +# # Tinkerer's guide to a prettier and colorful CLI: # https://wiki.archlinux.org/title/Color_output_in_console -# Basic -# ====================================================================== - # If not running interactively, don't do anything -case $- in - *i*) ;; - *) return;; -esac +[[ $- != *i* ]] && return + + +# Bash configuration +# ================== # don't put duplicate lines or lines starting with space in the history. # See bash(1) for more options @@ -26,7 +23,7 @@ HISTSIZE=1000 HISTFILESIZE=2000 # check the window size after each command and, if necessary, -# update the values of LINES and COLUMNS. +# update the values of LINES and COLUMNS. (Isn't this the default behaviour?) shopt -s checkwinsize # If set, the pattern "**" used in a pathname expansion context will @@ -37,58 +34,44 @@ shopt -s checkwinsize #[ -x /usr/bin/lesspipe ] && eval "$(SHELL=/bin/sh lesspipe)" # colored GCC warnings and errors -export GCC_COLORS='error=01;31:warning=01;35:note=01;36:caret=01;32:locus=01:quote=01' +#export GCC_COLORS='error=01;31:warning=01;35:note=01;36:caret=01;32:locus=01:quote=01' # Alias definitions. if [ -f ~/.bash_aliases ]; then . ~/.bash_aliases fi -# enable programmable completion features (you don't need to enable -# this, if it's already enabled in /etc/bash.bashrc and /etc/profile -# sources /etc/bash.bashrc). Requires `bash-completion package -if ! shopt -oq posix; then - if [ -f /usr/share/bash-completion/bash_completion ]; then - . /usr/share/bash-completion/bash_completion - elif [ -f /etc/bash_completion ]; then - . /etc/bash_completion - fi -fi +# Don't forget to install bash-completion -# set PATH so it includes user's private bin if it exists -if [ -d "$HOME/.local/bin" ] ; then - PATH="$HOME/.local/bin:$PATH" -fi +# Prompt +# ------ -# Custom prompt: +# - Basic [user@host $pwd]$ +#PS1='[\u@\h \W]\$ ' # - Blue timestamp and italic green pwd #PS1='\[\033[34m\]|\D{%H:%M:%S}| \[\033[3;32m\][\w]\[\033[00m\]\n\$ ' -# If error `-bash: __git_ps1: command not found`, uncomment the following line + +# - user@host pwd (git prompt) # Ref.: https://stackoverflow.com/a/15398153/7498073 -source ~/.git-prompt.sh -# user@host pwd (git prompt) +source ~/mahcode/dotfiles/git/git-prompt.sh PS1='\[\033[32m\]\u@\h \[\033[35m\]$MSYSTEM \[\033[33m\]\w\[\033[36m\]`__git_ps1`\[\033[0m\]\n$ ' -# Extra -# ====================================================================== - -# My binaries -if [ -d "$HOME/mahcode/bin" ]; then - PATH="$HOME/mahcode/bin:$PATH" -fi +# Environment +# =========== -# Default editor. Affects a lot of programs. -export EDITOR=vim +export EDITOR=nvim +export PATH="$HOME/.local/bin:$PATH" +export PATH="$HOME/mahcode/bin:$PATH" -# redundant but useful # XDG = Cross-Desktop Group # For more info see https://wiki.archlinux.org/index.php/XDG_Base_Directory export XDG_CONFIG_HOME="$HOME/.config" export XDG_CACHE_HOME="$HOME/.cache" export XDG_DATA_HOME="$HOME/.local/share" -#export XDG_DATA_DIRS="/usr/local/share:/usr/share" -#export XDG_CONFIG_DIRS="/etc/xdg" +export XDG_STATE_HOME="$HOME/.local/state" + +export LC_COLLATE=C # less LESS="-i " # ignore case @@ -96,46 +79,26 @@ LESS+="-S " # don't chop long lines LESS+="--RAW-CONTROL-CHARS" export LESS +# Extra programs +# -------------- + # tldr -export TLDR_CONFIG_DIR="$XDG_CONFIG_HOME" +[ -f /usr/bin/tldr ] && export TLDR_CONFIG_DIR="$XDG_CONFIG_HOME" # gpg -export GPG_TTY=$(tty) +#export GPG_TTY=$(tty) # tmux -export TERM="xterm-256color" - -# EGA/VGA font (used with ArchLinux in pre-Xorg session) -#if [ -z $DESKTOP_SESSION ]; then -# setfont LatGrkCyr-8x16 -#fi +#export TERM="xterm-256color" # nvm -source /usr/share/nvm/init-nvm.sh - - - -# Optional -# ====================================================================== +#source /usr/share/nvm/init-nvm.sh -# Bash completition for pandoc +# Pandoc: Bash completition for pandoc if [ -f /usr/bin/pandoc ]; then eval "$(pandoc --bash-completion)" fi -# Greeting or salute -if [ -f /usr/games/cowsay ] || [ -f /usr/bin/cowsay ]; then - # TODO: randomly select one of the following greeting commands - #cowsay -f flaming-sheep "oh no" # original - #cowsay $(fortune -e 30% debian-hints 20% linux 20% science \ - #cowsay $(fortune 30% debian-hints 20% linux 20% science \ - # 20% off/linux 10% off/black-humor) - cowsay $(fortune) - #fortune ascii-art -else - echo "Welcome back $LOGNAME" -fi - # Homebrew (linuxbrew) if [ -f /usr/bin/brew ]; then # for elf executables @@ -147,15 +110,31 @@ if [ -f /usr/bin/brew ]; then fi # Node.js -export NODE_PATH=~/code/nodejs/node-v16.15.1-linux-x64/lib/node_modules +#export NODE_PATH=~/code/nodejs/node-v16.15.1-linux-x64/lib/node_modules # Rust #. "$HOME/.cargo/env" # Ruby on Rails #https://stackoverflow.com/a/19072136/7498073 -gempath="$HOME/.local/share/gem/ruby/3.0.0/bin" -export GEM_HOME="$(ruby -e 'puts Gem.user_dir')" -if [[ -d $gempath ]]; then - export PATH="$PATH:$GEM_HOME/bin" +#gempath="$HOME/.local/share/gem/ruby/3.0.0/bin" +#export GEM_HOME="$(ruby -e 'puts Gem.user_dir')" +#if [[ -d $gempath ]]; then +# export PATH="$PATH:$GEM_HOME/bin" +#fi + + +# Fun +# === + +# Greeting or salute +if [ -f /usr/games/cowsay ] || [ -f /usr/bin/cowsay ]; then + #cowsay -f flaming-sheep "oh no" # original + #cowsay $(fortune -e 30% debian-hints 20% linux 20% science \ + #cowsay $(fortune 30% debian-hints 20% linux 20% science \ + # 20% off/linux 10% off/black-humor) + cowsay $(fortune) + #fortune ascii-art +else + echo "Welcome back $LOGNAME" fi @@ -2,7 +2,8 @@ email = [email protected] name = Mitsuo Tokumori [diff] - # used with $ git difftool + # used with $ git difftool tool = nvim -d + submodule = log [merge] tool = nvim -d @@ -14,6 +14,7 @@ # people usually manage them. # https://wiki.archlinux.org/title/Dotfiles + # Config # ====== @@ -30,58 +31,86 @@ if [[ -z $XDG_CONFIG_HOME ]]; then mkdir -p $XDG_CONFIG_HOME fi -if [[ $mode = "copy" ]]; then +if [[ $mode = "--help" ]]; then + echo "You might want to first run: $0 echo" + echo "Revise the output" + echo "And only then run: $0 slink" + exit +elif [[ $mode = "copy" ]]; then cp_or_ln="cp" + echo Why? Custom modifications will be difficult to track. + echo Maybe not a good idea. Good bye. + exit elif [[ $mode = "slink" ]]; then - cp_or_ln="ln -s" # if you are fearless add the `-f` option + cp_or_ln="ln -siv" # if you are fearless add the `-f` option +elif [[ $mode = "echo" ]]; then + cp_or_ln="echo ln -siv" else - echo "Usage: $0 copy|slink" + echo "Usage: $0 copy|slink|echo" exit fi -VIMFILES="$HOME/.vim" # In windows it's `%userprofile%/vimfiles/` +prompt() { + read -p "Install $1 configuration files? [Y/n/e(exit)] " yesno + yesno=$(echo $yesno | tr '[:upper:]' '[:lower:]') + case $yesno in + y | yes | "" ) + return 0;; + e | exit ) + exit;; + * ) + return 1;; + esac +} # Install # ======= -# bash (`eval` concatenates and executes) - -eval $cp_or_ln " ${PWD}/bash/profile $HOME/.profile" -eval $cp_or_ln " ${PWD}/bash/bashrc $HOME/.bashrc" -eval $cp_or_ln " ${PWD}/bash/bash_aliases $HOME/.bash_aliases" -eval $cp_or_ln " ${PWD}/bash/inputrc $HOME/.inputrc" - -# vim - -# `~/.vimrc` takes priority over `~/.vim/vimrc`. Remove the former if it exists - -mkdir -p $VIMFILES/{undo,swap,backup,plugins} -chmod 0700 $VIMFILES/swap # swap files should only be readable by owner - -eval $cp_or_ln " ${PWD}/vim/vimrc $VIMFILES/vimrc" -eval $cp_or_ln " ${PWD}/vim/fun.vim $VIMFILES/fun.vim" +# FIXME: If $PWD has spaces in it, this might fail. -# git - -[ -d $XDG_CONFIG_HOME/git ] || mkdir -p $XDG_CONFIG_HOME/git -eval $cp_or_ln " ${PWD}/git/ignore $XDG_CONFIG_HOME/git/ignore" -eval $cp_or_ln " ${PWD}/git/config $XDG_CONFIG_HOME/git/config" -eval $cp_or_ln " ${PWD}/git/git-prompt.sh $HOME/.git-prompt.sh" +# Filewise +if prompt "bash"; then + eval $cp_or_ln " ${PWD}/bash/bash_profile $HOME/.bash_profile" + eval $cp_or_ln " ${PWD}/bash/bashrc $HOME/.bashrc" + eval $cp_or_ln " ${PWD}/bash/bash_aliases $HOME/.bash_aliases" + eval $cp_or_ln " ${PWD}/bash/inputrc $HOME/.inputrc" +fi -# zathura +if prompt "vim"; then + # `~/.vimrc` takes priority over `~/.vim/vimrc`. Remove the former if it + # exists. + # + # In windows it's `%userprofile%/vimfiles/` + + VIMFILES="$HOME/.vim" + mkdir -p $VIMFILES/{undo,swap,backup,plugins} + chmod 0700 $VIMFILES/swap + + eval $cp_or_ln " ${PWD}/vim/vimrc $VIMFILES/vimrc" + eval $cp_or_ln " ${PWD}/vim/fun.vim $VIMFILES/fun.vim" +fi -mkdir -p $XDG_CONFIG_HOME/zathura -eval $cp_or_ln " ${PWD}/other/zathurarc $XDG_CONFIG_HOME/zathura/zathurarc" +# Directorywise +if prompt "nvim"; then + eval $cp_or_ln " ${PWD}/nvim $XDG_CONFIG_HOME/nvim" +fi -# tmux +if prompt "git"; then + [ -d $XDG_CONFIG_HOME/git ] || mkdir -p $XDG_CONFIG_HOME/git + eval $cp_or_ln " ${PWD}/git/ignore $XDG_CONFIG_HOME/git/ignore" + eval $cp_or_ln " ${PWD}/git/config $XDG_CONFIG_HOME/git/config" + eval $cp_or_ln " ${PWD}/git/git-prompt.sh $HOME/.git-prompt.sh" +fi -eval $cp_or_ln " ${PWD}/tmux/tmux.conf $HOME/.tmux.conf" -eval $cp_or_ln " ${PWD}/tmux/tmux.conf.local $HOME/.tmux.conf.local" -# mpd, ncmpc -# (TODO) +if prompt "zathura"; then + eval $cp_or_ln " ${PWD}/zathura $XDG_CONFIG_HOME/zathura" +fi -# done +if prompt "tmux"; then + eval $cp_or_ln " ${PWD}/tmux/tmux.conf $HOME/.tmux.conf" + eval $cp_or_ln " ${PWD}/tmux/tmux.conf.local $HOME/.tmux.conf.local" +fi echo "all done :)" diff --git a/nvim/colors/mac_classic.vim b/nvim/colors/mac_classic.vim new file mode 100644 index 0000000..9382bde --- /dev/null +++ b/nvim/colors/mac_classic.vim @@ -0,0 +1,226 @@ +" Vim color scheme +" +" Name: mac_classic.vim +" Maintainer: Drew Neil <[email protected]> +" License: public domain +" Version: 0.1 + +" Boilerplate: {{{1 +set background=light +highlight clear + +if exists("syntax_on") + syntax reset +endif + +let g:colors_name = "mac_classic" + + +" Colors: {{{1 +" TODO figure out how to not highlight TODO +" +" #000000 +" #3C4C72 - BLUE/GREY - cursor, rails helpers +" #0000A2 - D.BLUE - numbers & function names +" #1E39F6 - BLUE +" #0066FF - L.BLUE - Comments, TODOs and folds +" #6E79F1 - L.PURPLE - Booleans, Ruby Constants & CSS definitions +" #318495 - BLUE/GREEN - Ruby instance/global/pseudo variables +" #007B22 - D.GREEN - Strings, Labels and code blocks in Markdown +" #00BC41 - L.GREEN - CSS common attributes & ruby interpolation +" #990000 - BURGUNDY - Errors and Warnings +" #D51015 - RED for constants, symbols, numbers +" #E18AC7 - PINK RegularExpressions in Ruby +" #FFCE77 - ORANGE - Incremental Search +" #FFE6BB - L.ORANGE - Search +" #C6DEFF - VL.BLUE Visual, Current StatusLine & AutoComplete selection +" #808080 - Line numbers +" #CFCFCF - VerticalSplit separator +" #DFDFDF - Invisible Characters +" #EFEFEF - LineNumber & Non-Current StatusLine +" #F0F6FF - CursorLine & CursorColumn +" #FFFFFF - WHITE +" }}} + +" GUI: {{{1 +hi Cursor guifg=#FFFFFF ctermfg=15 guibg=#3C4C72 ctermbg=240 +hi Visual guibg=#C6DEFF ctermbg=189 +hi CursorLine guibg=#F0F6FF ctermbg=15 +hi CursorColumn guibg=#F0F6FF ctermbg=15 +hi LineNr guifg=#808080 ctermfg=244 guibg=#EFEFEF ctermbg=7 +hi VertSplit guifg=#FFFFFF ctermfg=15 guibg=#CFCFCF ctermbg=252 gui=NONE +hi MatchParen guifg=#1E39F6 ctermfg=27 guibg=NONE gui=bold +hi Pmenu guibg=#EFEFEF ctermbg=7 +hi PmenuSel guibg=#C6DEFF ctermbg=189 +hi Directory guifg=#D51015 ctermfg=160 gui=bold +hi Folded guifg=#0066FF ctermfg=27 guibg=#FFFFFF ctermbg=15 +" StatusLine: {{{2 +hi StatusLine guifg=#000000 ctermfg=0 guibg=#C6DEFF ctermbg=189 gui=italic +hi StatusLineNC guifg=#000000 ctermfg=0 guibg=#EFEFEF ctermbg=7 gui=NONE + +" Search: {{{2 +" [IncSearch is stronger than Search] +hi IncSearch guifg=NONE guibg=#FFCE77 ctermbg=222 gui=NONE +hi Search guibg=#FFE6BB ctermbg=223 + +" Syntax: {{{1 +hi Normal guifg=#000000 ctermfg=0 guibg=#FFFFFF ctermbg=15 +hi Boolean guifg=#6E79F1 ctermfg=69 gui=bold +hi Character guifg=#D51015 ctermfg=160 gui=bold +hi Comment guifg=#0066FF ctermfg=27 gui=italic +hi Conditional guifg=#1E39F6 ctermfg=27 gui=bold +hi Constant guifg=#D51015 ctermfg=160 gui=bold +hi Define guifg=#1E39F6 ctermfg=27 gui=bold +hi ErrorMsg guifg=#FFFFFF ctermfg=15 guibg=#990000 ctermbg=88 +hi WarningMsg guifg=#FFFFFF ctermfg=15 guibg=#990000 ctermbg=88 +hi Float guifg=#0000A2 ctermfg=19 +hi Function guifg=#0000A2 ctermfg=19 gui=bold +hi Identifier guifg=#1E39F6 ctermfg=27 gui=bold +hi Keyword guifg=#1E39F6 ctermfg=27 gui=bold +hi Label guifg=#007B22 ctermfg=28 +hi Number guifg=#0000A2 ctermfg=19 +hi Operator guifg=#1E39F6 ctermfg=27 gui=bold +hi PreProc guifg=#1E39F6 ctermfg=27 gui=bold +hi Special guifg=#000000 ctermfg=0 +hi Statement guifg=#1E39F6 ctermfg=27 gui=bold +hi StorageClass guifg=#1E39F6 ctermfg=27 gui=bold +hi String guifg=#007B22 ctermfg=28 +hi Title guifg=#000000 ctermfg=0 gui=bold +hi Todo guifg=#0066FF ctermfg=27 gui=inverse,bold,italic +hi Underlined gui=underline + +" Invisible character colors +hi NonText guifg=#DFDFDF ctermfg=253 guibg=#FFFFFF ctermbg=15 +hi SpecialKey guifg=#DFDFDF ctermfg=253 guibg=#FFFFFF ctermbg=15 + +" Diff styles {{{1 +hi diffAdded guifg=#007B22 guibg=#FFFFFF ctermfg=28 ctermbg=15 +hi diffRemoved guifg=#D51015 guibg=#FFFFFF ctermfg=160 ctermbg=15 +hi diffFile guifg=#6E79F1 guibg=#FFFFFF ctermfg=69 ctermbg=15 +hi diffNewFile guifg=#6E79F1 guibg=#FFFFFF ctermfg=69 ctermbg=15 +hi diffLine guifg=#000000 guibg=#FFFFFF ctermfg=0 ctermbg=15 + +hi diffAdd guifg=#007B22 guibg=#FFFFFF ctermfg=28 ctermbg=15 +hi diffChange guifg=#007B22 guibg=#FFFFFF ctermfg=28 ctermbg=15 +hi diffText guifg=#007B22 guibg=#FFFFFF ctermfg=28 ctermbg=15 +hi link diffDelete diffRemoved +" Git styles {{{1 +hi gitcommitFirstLine guifg=#000000 guibg=#FFFFFF ctermfg=0 ctermbg=15 +hi gitcommitSelectedType guifg=#007B22 guibg=#FFFFFF ctermfg=28 ctermbg=15 +hi link gitcommitSelectedFile gitcommitSelectedType +hi gitcommitDiscardedType guifg=#D51015 guibg=#FFFFFF ctermfg=160 ctermbg=15 +hi link gitcommitDiscardedFile gitcommitDiscardedType +hi gitcommitUntrackedFile guifg=#6E79F1 guibg=#FFFFFF ctermfg=69 ctermbg=15 +" Ruby styles {{{1 +hi rubyClass guifg=#1E39F6 ctermfg=27 gui=bold +hi rubyFunction guifg=#0000A2 ctermfg=19 gui=bold +hi rubyInterpolationDelimiter guifg=#00BC41 ctermfg=35 +hi rubyInterpolation guifg=#00BC41 ctermfg=35 +hi rubySymbol guifg=#D51015 ctermfg=160 gui=bold +hi rubyConstant guifg=#6E79F1 ctermfg=69 gui=bold +hi rubyStringDelimiter guifg=#007B22 ctermfg=28 +hi rubyInstanceVariable guifg=#318495 ctermfg=66 +hi rubyInclude guifg=#1E39F6 ctermfg=27 gui=bold +hi rubyGlobalVariable guifg=#318495 ctermfg=66 +hi rubyRegexp guifg=#E18AC7 ctermfg=176 +hi rubyRegexpAnchor guifg=#E18AC7 ctermfg=176 +hi rubyRegexpQuantifier guifg=#E18AC7 ctermfg=176 +hi rubyRegexpParens guifg=#E18AC7 ctermfg=176 +hi rubyRegexpEscape guifg=#00BC41 ctermfg=35 +hi rubyRegexpCharClass guifg=#00BC41 ctermfg=35 +hi rubyRegexpDelimiter guifg=#E18AC7 ctermfg=176 +hi rubyEscape guifg=#00BC41 ctermfg=35 +hi rubyControl guifg=#1E39F6 ctermfg=27 gui=bold +hi rubyOperator guifg=#1E39F6 ctermfg=27 gui=bold +hi rubyException guifg=#1E39F6 ctermfg=27 gui=bold +hi rubyPseudoVariable guifg=#318495 ctermfg=66 +hi rubyRailsUserClass guifg=#6E79F1 ctermfg=69 gui=bold +hi rubyRailsARAssociationMethod guifg=#3C4C72 ctermfg=240 gui=bold +hi rubyRailsARMethod guifg=#3C4C72 ctermfg=240 gui=bold +hi rubyRailsRenderMethod guifg=#3C4C72 ctermfg=240 gui=bold +hi rubyRailsMethod guifg=#3C4C72 ctermfg=240 gui=bold +hi link erubyComment Comment +hi erubyRailsMethod guifg=#3C4C72 ctermfg=240 gui=bold + +" XML: {{{1 +hi link xmlEndTag xmlTag +" HTML: {{{1 +hi htmlTag guifg=#1E39F6 ctermfg=27 +hi link htmlEndTag htmlTag +hi link htmlTagName htmlTag +hi link htmlArg htmlTag +hi htmlSpecialChar guifg=#D51015 ctermfg=160 gui=bold +hi htmlH1 gui=bold +hi link htmlH2 htmlH1 +hi link htmlH3 htmlH1 +hi link htmlH4 htmlH1 +hi link htmlH5 htmlH1 +hi link htmlH6 htmlH1 + +" JavaScript: {{{1 +hi javaScriptFunction guifg=#1E39F6 ctermfg=27 gui=bold +hi javaScriptFuncName guifg=#318495 ctermfg=66 gui=italic +hi javaScriptLabel guifg=#0000A2 ctermfg=19 gui=bold +hi javaScriptRailsFunction guifg=#3C4C72 ctermfg=240 gui=bold +hi javaScriptType guifg=#318495 ctermfg=66 gui=none +hi javaScriptArgument guifg=#318495 ctermfg=66 gui=italic +hi javaScriptRegexpString guifg=#E18AC7 ctermfg=176 gui=NONE +hi javaScriptSpecial guifg=#00BC41 ctermfg=35 gui=NONE +" NOTE: Syntax Highlighting for javascript doesn't match the +" TextMate version very accurately, because the javascript +" syntax file does not create matches for some items. In +" particular: +" * javaScriptArgument - e.g. function(argument) +" * javaScriptFuncName for object literal style functions - e.g.: +" myFunction: function() { ... } + +" YAML: {{{1 +hi yamlAnchor guifg=#318495 ctermfg=66 +hi yamlAlias guifg=#318495 ctermfg=66 +hi yamlDocumentHeader guibg=#F2F2F2 ctermbg=7 + +" CSS: {{{1 +hi cssTagName gui=bold +hi cssIdentifier gui=italic +hi link cssClassName cssIdentifier +hi cssDefinition guifg=#6E79F1 ctermfg=69 +hi link cssRenderProp cssDefinition +hi link cssTextProp cssDefinition +hi link cssFontProp cssDefinition +hi link cssColorProp cssDefinition +hi link cssBoxProp cssDefinition +hi link cssGeneratedContentProp cssDefinition +hi link cssUIProp cssDefinition +hi cssCommonAttr guifg=#00BC41 ctermfg=35 +hi link cssAttr cssCommonAttr +hi link cssRenderAttr cssCommonAttr +hi link cssTextAttr cssCommonAttr +hi link cssFontAttr cssCommonAttr +hi link cssGeneratedContentAttr cssCommonAttr +hi cssURL guifg=#007B22 ctermfg=28 +hi cssFunctionName guifg=#3C4C72 ctermfg=240 gui=bold +hi cssColor guifg=#D51015 ctermfg=160 gui=bold +hi cssValueLength guifg=#0000A2 ctermfg=19 +hi cssImportant guifg=#1E39F6 ctermfg=27 gui=bold + +" Vimscript: {{{1 +hi vimGroup guifg=#007B22 ctermfg=28 gui=bold +hi link vimHiGroup vimGroup +hi vimCommentTitle guifg=#3C4C72 ctermfg=240 gui=bold +hi helpSpecial guifg=#6E79F1 ctermfg=69 + +" Markdown: {{{1 +hi markdownBold gui=bold +hi markdownItalic gui=italic +hi markdownCode guifg=#007B22 ctermfg=28 +hi link markdownCodeBlock markdownCode + +" Outliner: {{{1 +hi BT1 guifg=#808080 ctermfg=244 gui=italic +hi OL1 guifg=#000000 ctermfg=0 gui=bold +hi OL2 guifg=#0000A2 ctermfg=19 gui=bold +hi OL3 guifg=#007B22 ctermfg=28 gui=bold +hi OL4 guifg=#6E79F1 ctermfg=69 gui=NONE +" Modelines: {{{1 +" vim: nowrap fdm=marker +" }}} diff --git a/nvim/init.vim b/nvim/init.vim new file mode 100644 index 0000000..1f63599 --- /dev/null +++ b/nvim/init.vim @@ -0,0 +1,178 @@ +" NeoVim init.vim +" +" Differences with good ol' Vim: +" +" NeoVim has so many of the modern and helpful Vim options on by default. I'll +" remove most of the old Vim configurations that now come by default in NeoVim. +" +" Also NeoVim uses XDG directories by default, keeping a clean directory tree. +" +" NeoVim also allows for this file to be written in Lua. I'll stick to using +" Vim script becuase it has more documentation and is more concise configuring +" Vim options. +" +" Instead of viminfo, NeoVim uses shada files (SHared DAta) (different format). +" See shada-file-name. +" +" For some reason, as of version v0.8.3 of NeoVim, Vim internal codes for shift- +" and control- function keys change in NeoVim. <S-F1> changes to <F13>, and +" <C-F1> changes to <F25>. See https://github.com/neovim/neovim/issues/7384 +" +" Plugins: There are a lot of ways to install "plug-in"s in Vim. My prefered +" way is using Vim packages, available since Vim version 8. See packages. +" +" Tips: +" * To show navigate help files: +" K " while on an option to see it's documentation +" CTRL-] " navigation while on a Vim help file +" * To re-indent: +" tab->spaces :set tabstop=n :set expandtab :retab +" spaces->tab :set noexpandtab :set tabstop={softtabstop} :retab! +" * To justify: +" To 'justify' comments or block of text (paragraph) use `gq{motion}` or +" `gp{motion}`, where {motion} can be `[/`, `]/`, `ip`, `i{`, `a{`. +" * To see the last page of previous command: +" `g<` +" * Buffer stuff: +" :ls " shows all buffers +" :b N " Go to buffer N (integer) + + +" Settings +" ---------------------------------------------------------------------- + +colorscheme industry + +" Command line: +set cmdheight=1 +set wildmenu +set wildignore+=*.o,.git,*.class +set path+=./**30 " For gf and :find, add all subdirectories relative to + " current file (30 max) to the "search space" + +" Search +set ignorecase +set smartcase + +" Screen +set nonumber +set scrolloff=5 " show a few lines of context +set colorcolumn=+1 " show ruler at position tabstop+1 +set laststatus=2 +" Add buffer number to the default status line with ruler +set statusline=%<%f\ %h%m%r%=b%02n\ \ %-14.(%l,%c%V%)\ %P + +" TODO: move to ftplugin +" TODO: create tags automatically (:!ctags -R . after :w if ft=c) +" Tag Jumping +" Instructions: create tag index (e.g. $ ctags -R .) +" place cursor on tag +" ^] to jump to definition +" g^] if more than 1 definition +" ^T to return (or ^O) + +"set cindent +"set cinoptions=:0,g0 " See C-indenting + + +" Indentation: 4 spaces +" See also: autoindent, smartindent, cindent, indentexpr +set tabstop=4 " Each '\t' takes 8 virtual (screen) columns +set shiftwidth=0 " (Auto)indentation. Also affects: >>, i_C-T, i_C-D +set expandtab " Expand inserted <Tab>s with <Space> +set smartindent " Smart indenting when starting a new line + +" Formatting: See fo-table +set formatoptions+=t " auto-wrap text (when inserting) +set formatoptions+=c " auto-wrap comments (when inserting) +set formatoptions+=q " Allow formatting of comments with "gq" +set formatoptions+=j " Removes comment leader when joining lines +set formatoptions+=l " Don't break long lines that are already typed +set formatoptions+=r " Insert current leader after <Enter> in Insert mode +set formatoptions+=p " Don't break honorifics like Prof. Smith +set formatoptions+=n " Recognize numbered lists +set formatoptions+=o " Automatically insert the current comment + " leader after `o`. + +" Wrap: Auto-break lines longer than 80 colums +set textwidth=80 +set wrap +set linebreak " Don't break words + +" Mouse +set mouse=a " Enable mouse for all modes + +" Buffers +set hidden " Allow for hidden modified buffers + + +" Mappings +" ---------------------------------------------------------------------- + +let $VIMFILES = split(&rtp, ",")[0] + +map <F5> :source $VIMFILES/init.vim<CR> +map <F17> :e $VIMFILES/init.vim<CR> + +map <F7> :tabp<CR> +map <F8> :tabn<CR> +map <F19> :bNext<LF> +map <F20> :bnext<LF> + +" TODO: move to ftplugin +" C/C++ Programming: +map <F6> :w<CR>:!clear && make<CR> +"map <F10> :!./%:r<CR> +"map <F10> :!./a.out<CR> +map <F11> :cnext<CR> +map <S-F11> :cprev<CR> +" "Run cTags" +map <Leader>rt :!ctags -R .<CR> +map <C-\> :tnext<CR> +" Motion to go to beggining of function while cursor is inside +nmap [f [m[{k0 + +" pandoc (& website): +nnoremap mm :w<CR>:Md2Html<CR><CR><CR> +nmap mM mm:!updatewebsite_zaz<CR><CR> + +" asciidoc: +nnoremap ma :w<CR>:!asciidoctor %<CR><CR> +nmap mA ma:!updatewebsite_zaz<CR><CR> + +" Funcionallity of the following depends on terminal emulator. Needs 8-bit +" input enabled +" for <Meta> = Alt key combos +" From: https://vim.fandom.com/wiki/Get_Alt_key_to_work_in_terminal +nmap <M-H> <C-W>h +nmap <M-J> <C-W>j +nmap <M-K> <C-W>k +nmap <M-L> <C-W>l + +" Go Title Case (and clear highlighted matches) +" Ref.: https://vim.fandom.com +vmap gt :s/\<\(\w\)\(\w*\)\>/\u\1\L\2/g<CR><C-L> + +" Autoformat JSON jumbled data +" Ref.: https://stackoverflow.com/questions/26214156/how-to-auto-format-json-on-save-in-vim +nnoremap gJ :%!python3 -m json.tool<CR> + +" Replaces previous WORD arithmetic expression with result (from Vim +" fandom-wiki) +inoremap <C-A> <Esc>diWi<C-R>=<C-R>"<CR> + + +" Views and Sessions (Window layout and Line folding) +" ---------------------------------------------------------------------- +" It is possible to create folds automatically but idk how to do it. +" :mkview so save them :loadview to load them (zo open one, zc close one, +" zR to open all, zM to close all, zx to restore)) + +" Views saves folds. Sessions saves all windows configuration and layout +" Load Sessions with $ vim -S Session.vim + +" To automatically save and restore views for *.c *.cpp files: +au BufWinLeave *.c mkview +au BufWinEnter *.c silent loadview +au BufWinLeave *.cpp mkview +au BufWinEnter *.cpp silent loadview diff --git a/nvim/nvim b/nvim/nvim new file mode 120000 index 0000000..f265a59 --- /dev/null +++ b/nvim/nvim @@ -0,0 +1 @@ +/home/mitsuo/mahcode/dotfiles/nvim
\ No newline at end of file diff --git a/nvim/pack/mitsuo/Readme.txt b/nvim/pack/mitsuo/Readme.txt new file mode 100644 index 0000000..a9e88cd --- /dev/null +++ b/nvim/pack/mitsuo/Readme.txt @@ -0,0 +1 @@ +Vim plugins I use go here. diff --git a/nvim/pack/mitsuo/start/fun/Readme.txt b/nvim/pack/mitsuo/start/fun/Readme.txt new file mode 100644 index 0000000..2f41d59 --- /dev/null +++ b/nvim/pack/mitsuo/start/fun/Readme.txt @@ -0,0 +1 @@ +My special functions :) diff --git a/nvim/pack/mitsuo/start/fun/plugin/fun.vim b/nvim/pack/mitsuo/start/fun/plugin/fun.vim new file mode 100644 index 0000000..42574d3 --- /dev/null +++ b/nvim/pack/mitsuo/start/fun/plugin/fun.vim @@ -0,0 +1,109 @@ +" To call functions use `:call foo()` + +" Echoes longest line number and lenght. +function! LongestLineLength ( ) + let maxlength = 0 + let linenumber= 1 + while linenumber <= line("$") + exe ":".linenumber + let linelength = virtcol("$") + if maxlength < linelength + let maxlength = linelength + let maxlinenumber = linenumber + endif + let linenumber = linenumber+1 + endwhile + +"exe ':0' +"exe 'normal O' +"exe 'normal 0C'.maxlength + exe "normal" . maxlinenumber . "G" + exe ":echo \"" . maxlinenumber . ": " . maxlength . "\"" +endfunction + +command LongestLineLength call LongestLineLength() + + +" Save markdown document and export to pdf using pandoc. +" +" It would be nicer if a default document would be used but I coulnd't made it +" to work even after reading that manual section like 2 times. Also, there are +" variables that are lists of other variables that I don't know how to make them +" work (e.g. geometry=[top=1in, bottom=1in, heightrounded]) +function! Md2Pdf ( ) + exe ":w" + "-N for numbered headers + exe ":! pandoc -o \"" . expand("%:r") . ".pdf\" -t latex --variable classoption=twosides --variable papersize=a4 --variable margin-left=1in --variable margin-right=1in --variable margin-top=1in --variable margin-bottom=1in --variable links-as-notes --variable colorlinks --variable pagestyle=plain --variable documentclass=article -f markdown-implicit_figures \"" . expand("%") . "\"" + echo "pdf saved as \"" . expand("%:p:r") . ".pdf\"" +endfunction + +function! Md2Pdfms ( ) + exe ":w" + exe ":! pandoc -o " . expand("%:r") . ".pdf" . " -t ms -f markdown-implicit_figures \"" . expand("%") . "\"" + echo "pdf saved as " . expand("%:p:r") . ".pdf" +endfunction + +command Md2Pdf call Md2Pdf() +command Md2Pdfms call Md2Pdfms() + + +" Save markdown document and export to html using pandoc +function! Md2Html ( ) + exe ":w" + "exe ":! pandoc -s --toc -H ~/mahcode/markdown/pandoc/pandoc_style.html --highlight-style tango -o \"" . expand("%:r") . ".html\"" . " \"" . expand("%") . "\"" + exe ":! pandoc --highlight-style tango -o \"" . expand("%:r") . ".html\"" . " \"" . expand("%") . "\"" + echo "html saved as " . expand("%:p:r") . ".html" +endfunction + +command Md2Html call Md2Html() + +" Save markdown as ODT file (.docx is also possible) +function! Md2Odt ( ) + exe ":w" + exe ":! pandoc -s --toc -H ~/mahcode/markdown/pandoc/pandoc_style.html --highlight-style tango -o \"" . expand("%:r") . ".odt\"" . " \"" . expand("%") . "\"" + echo "ODT saved as " . expand("%:p:r") . ".odt" +endfunction + +command Md2Odt call Md2Odt() + + +" Compiles and Runs a C++ project +" TODO: how to add program's arguments or file redirectioning from command. +function! CompRunProj ( ) + exe ":w" + exe ":! g++ -o " . expand("%:r") . "-g *.cpp" + exe ":! ./" . expand("%:r") +endfunction + +command CompRunProj call CompRunProj() + + +" Function made to give feedback to students code in 1INF01 +" export C code to syntax highlighted pdf +function! C2Pdf ( ) + exe ":set ts=4" + exe ":w" + exe ":ha > %.ps" + exe ":!ps2pdf %.ps" + exe ":!rm %.ps" +endfunction + + +" For printing first export to html and then print using web browser +" Ref.: https://vi.stackexchange.com/questions/12058/printing-unicode-chars +function! ExportHTML (colorscheme="quiet", bg="light") + " Nice colorschemes for printing on paper: quiet, morning, mac_classic + let s:prev_color = g:colors_name + let s:prev_bg = &background + exe "colorscheme" a:colorscheme + exe "set bg=" . a:bg + + exe "TOhtml | w | !xdg-open %" + echo "html export saved as " . expand('%:p') + exe "bd" + + exe "colorscheme" s:prev_color + exe "set bg=" . s:prev_bg +endfunction + +command ExportHTML call ExportHTML() diff --git a/nvim/pack/mitsuo/start/vim-commentary b/nvim/pack/mitsuo/start/vim-commentary new file mode 160000 +Subproject e87cd90dc09c2a203e13af9704bd0ef79303d75 diff --git a/other/zathurarc b/zathura/zathurarc index 4d38c70..4d38c70 100644 --- a/other/zathurarc +++ b/zathura/zathurarc |
