summaryrefslogtreecommitdiff
path: root/.zshrc
blob: 6db584781fc0853e01e29b958afb7a1c30a1e210 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
# zprof only makes sense at the very top
# zmodload zsh/zprof


# settings for the zsh don’t get exported

# where to write history
HISTFILE=~/.zsh_history
HISTSIZE=1000000000
SAVEHIST=1000000000

export ANSIBLE_NOCOWS=1
export ANSIBLE_STRATEGY=mitogen_linear

export TEXMFCNF=${HOME}/.texlive:

export FZF_DEFAULT_COMMAND='fdfind --type f'

# what is that for exactly? maybe taskwarrior? or timewarrior?
REPORTTIME=10

## define word characters (for stuff like backward-word, forward-word, backward-kill-word,..)
## these are NOT separators but chars considered part of a word
#WORDCHARS='*?_-.[]~=/&;!#$%^(){}<>' # the default

# zsh you-should-use
export YSU_MODE=ALL

# I want sbin executables available
export PATH=${PATH}:/usr/local/sbin:/sbin:/usr/sbin
export PATH=${PATH}:~/bin

# colors for newt/whiptail (for debconf, needrestart, etc.)
# works better with selenized colorscheme
# everything that seems irrelevant is set to brown
NEWT_COLORS=''
# foreground seems irrelevant
NEWT_COLORS="${NEWT_COLORS};root=brown,blue"
# text in the root window
NEWT_COLORS="${NEWT_COLORS};roottext=yellow,blue"

# box/window/button shadows
NEWT_COLORS="${NEWT_COLORS};shadow=brown,black"

# boxes/windows themselves
NEWT_COLORS="${NEWT_COLORS};window=brown,lightgray"
# box/window titles
NEWT_COLORS="${NEWT_COLORS};title=yellow,lightgray"
# box/window borders
NEWT_COLORS="${NEWT_COLORS};border=gray,lightgray"

# full buttons
NEWT_COLORS="${NEWT_COLORS};button=black,red"
# compact buttons
NEWT_COLORS="${NEWT_COLORS};compactbutton=black,lightgray"
# selected/active button
NEWT_COLORS="${NEWT_COLORS};actbutton=green,gray"

# checkbox itself and text
NEWT_COLORS="${NEWT_COLORS};checkbox=black,blue"
# selection marker for checkbox
NEWT_COLORS="${NEWT_COLORS};actcheckbox=yellow,gray"

# TODO FIXME: no clue what that is
NEWT_COLORS="${NEWT_COLORS};entry=yellow,brown"
# TODO FIXME: no clue what that is
NEWT_COLORS="${NEWT_COLORS};disentry=brown,yellow"

# TODO FIXME: no clue what that is
NEWT_COLORS="${NEWT_COLORS};label=yellow,red"

# unselected entries in menus
NEWT_COLORS="${NEWT_COLORS};listbox=lightgray,gray"
# selected entries in menus
NEWT_COLORS="${NEWT_COLORS};actsellistbox=yellow,blue"
# TODO FIXME: no clue what that is
NEWT_COLORS="${NEWT_COLORS};actlistbox=brown,red"
# TODO FIXME: no clue what that is
NEWT_COLORS="${NEWT_COLORS};sellistbox=black,brown"

NEWT_COLORS="${NEWT_COLORS};textbox=black,lightgray"
NEWT_COLORS="${NEWT_COLORS};acttextbox=brown,green"

# TODO FIXME: no clue what that is
NEWT_COLORS="${NEWT_COLORS};helpline=yellow,brown"

# probably for gauges
NEWT_COLORS="${NEWT_COLORS};emptyscale=red"
NEWT_COLORS="${NEWT_COLORS};fullscale=blue"

export NEWT_COLORS

# black
# darkgray
# brown
# yellow
#
# blue
# cyan
# gray
# green
# magenta
# red
#
# lightblue
# lightcyan
# lightgray
# lightgreen
# lightmagenta
# lightred


# where zsh looks for functions
fpath=(~/.zsh_functions $fpath)


# hashed directories are usually independent and standalone
# so they can stay at the top
hash -d diary=~/Data/henksfiles/workinprogress/Dokumente/diary
hash -d lifedocs=~/Data/henksfiles/workinprogress/Dokumente/Leben
hash -d bewerbung=~/Data/personal/henk/workinprogress/Dokumente/Arbeit/bewerbung
hash -d rezepte=~/Data/henksfiles/workinprogress/Dokumente/rezepte/cuisine
hash -d templates=~/Data/henksfiles/workinprogress/templates
hash -d gitignore=~/Data/public/software/gitignore
hash -d doc=/usr/share/doc
hash -d TODO=~/Data/henksfiles/TODO/
hash -d fortunes=~/Data/henksfiles/workinprogress/Dokumente/fortunes/


# aliases are usually independent and standalone
source ~/.zsh_aliases
# TODO break this up or make functions or get rid?
source ~/.zsh_qemu


# load plugin manager after all 'static' stuff is done
# source ~/Data/public/software/zinit/zinit.zsh
source "${HOME}/.zgenom/zgenom.zsh"
# Check for plugin and zgenom updates every 7 days
# This does not increase the startup time.
zgenom autoupdate


# mostly static stuff, env vars
# zinit load 'https://github.com/joel-porquet/zsh-dircolors-solarized'
# zinit load "https://github.com/greymd/tmux-xpanes"
zgenom load 'https://github.com/joel-porquet/zsh-dircolors-solarized'
zgenom load "https://github.com/greymd/tmux-xpanes"


# options are usually independent and standalone
# so they can stay at the top
setopt AUTO_CD
setopt CHASE_LINKS

setopt AUTO_NAME_DIRS

setopt BRACE_CCL
setopt EXTENDED_GLOB
setopt MARK_DIRS
setopt NUMERIC_GLOB_SORT
setopt RC_EXPAND_PARAM
#setopt WARN_CREATE_GLOBAL
setopt GLOB_DOTS

# remove previous entries from history
setopt HIST_IGNORE_ALL_DUPS
# do not write lines starting with a space to history file
setopt HIST_IGNORE_SPACE
# Remove superfluous blanks
setopt HIST_REDUCE_BLANKS
# expand history expansion for verification
setopt HIST_VERIFY
# save timestamp and runtime as well
setopt EXTENDED_HISTORY
# write line to history file when finished, not when started, to have correct runtime
setopt INC_APPEND_HISTORY_TIME

setopt NO_CLOBBER
setopt CORRECT
setopt CORRECT_ALL
#unsetopt NOMATCH
setopt PRINT_EXIT_VALUE

setopt AUTO_CONTINUE
setopt NO_BG_NICE
# display PID when suspending processes as well
setopt LONG_LIST_JOBS
# Report the status of background jobs immediately, rather than waiting until just before printing a prompt.
setopt NOTIFY
# Whenever  a  command completion or spelling correction is attempted, make sure the entire command path is hashed first.  This makes the first completion slower but avoids false reports of spelling errors.
setopt HASH_LIST_ALL
# If unset, the cursor is set to the end of the word if completion is started. Otherwise it stays there and completion is done from both ends.
setopt COMPLETE_IN_WORD
# use zsh field splitting
setopt NO_SH_WORD_SPLIT
# unset parameters should cause an error
# CONFLICTS WITH ZINIT
# CONFLICTS WITH ZGENOM
# setopt NO_UNSET


# load before completion system initialization
# zinit load 'https://github.com/zsh-users/zsh-completions'
zgenom load 'https://github.com/zsh-users/zsh-completions'

# initialize completion system before loading plugins and external configs
source ~/.zsh_comprc


# TODO reconsider this
# source /usr/share/autojump/autojump.sh


# autoload all functions defined by me
# since only filenames are required we
# * follow symlinks
# * work only on plainfiles
# * take only the filename part without dir
autoload ~/.zsh_functions/[^_]*(-.:t)


autoload -Uz vcs_info
autoload -Uz zcalc
autoload -Uz zargs


# spawn editor on current command line
autoload -Uz edit-command-line
zle -N edit-command-line
bindkey -M vicmd '^X^E' edit-command-line
bindkey -M viins '^X^E' edit-command-line


#this mainly sets vars, binds keys, does zle stuff
# zinit load 'https://github.com/laurenkt/zsh-vimto'
zgenom load 'https://github.com/laurenkt/zsh-vimto'

# functions and an autoload, should be fine here
# zinit load 'https://github.com/MichaelAquilina/zsh-you-should-use'
zgenom load 'https://github.com/MichaelAquilina/zsh-you-should-use'


# source ~/.zsh_taskwarrior
# source ~/.zsh_functions
# source ~/.zsh_functions_media
# source ~/.zsh_functions_taskwarrior


# TODO break this up
source ~/.zsh_local

# TODO break this up
for f in ~/.env_*(N)
do
	source $f
done


typeset -U path

#zle -N zle-line-init
#zle -N zle-keymap-select


# keybindings might have been changed by plugins, etc.
# so they go more to the bottom


# should probably be closer to the bottom than the top?
# zinit load 'https://github.com/nojhan/liquidprompt'
zgenom load 'https://github.com/nojhan/liquidprompt'


# needs to be loaded close to the end because it hooks into other stuff
# see https://github.com/zsh-users/zsh-syntax-highlighting
source /usr/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh

source /usr/share/doc/fzf/examples/key-bindings.zsh
source /usr/share/doc/fzf/examples/completion.zsh

# Use fd (https://github.com/sharkdp/fd) instead of the default find
# command for listing path candidates.
# - The first argument to the function ($1) is the base path to start traversal
# - See the source code (completion.{bash,zsh}) for the details.
_fzf_compgen_path() {
  fdfind --hidden --follow --exclude ".git" . "$1"
}

# Use fd to generate the list for directory completion
_fzf_compgen_dir() {
  fdfind --type d --hidden --follow --exclude ".git" . "$1"
}

# commands to run after initialization is complete
#task awaiting
cat ~/.motd
# zprof