Commit graph

534 commits

Author SHA1 Message Date
a29ce0aabf
Improve zsh vi-mode handling
Moved mode indicator to more immediately visible prompt location.
Allowed deletions and adding spaces regardless of mode.
Allow moving backwards through history and searching through terminal
input history.
2020-02-10 21:07:00 +01:00
b76b3ca4ca
Fix compile script
Fixed compile script to not use ifinstalled anymore.

HACK Fixed compile script to correctly pass through output targets to
RMarkdown, through the implementation is very rough currently.
It will look for additional arguments passed through and run RMarkdown
rendering once for each target. It would presumably be faster (and at
the very least more elegant) to pass all arguments through at once, but
I am not sure how to pass arguments through shell surrounded with
quotes.
2020-02-08 20:26:31 +01:00
145548c01a
Change ifinstalled script to exist
Renamed ifinstalled to exist, moved it into base shell module. It can be
called with just a command name to check for, or with an additional
libnotify urgency level (low, normal, critical).

If called with an urgency as the second argument, the user will be
notified of the missing command with the corresponding urgency.
2020-02-08 20:23:30 +01:00
97f7fcbbd6
Move scripts into respective directories
Having a general script folder makes little sense if the scripts are
targeted to specific applications. This commit moved every script that
solely, or mainly (like ueberzug), targets a single application into
that respective stow module.
2020-02-08 20:17:44 +01:00
7d60a61565
Add spellsync plugin to vim
Enables easier vcs integration of vim spelllang dictionaries. Will cause
them to be reloaded on external editing, add their binary parts to
ignore files, and set their addition files to unison merge mode.
2020-02-08 18:42:12 +01:00
40b6d2220c
Remove zsh plugin manager
Plugins are managed directly through pacman packages now. Since I am
only using six zsh plugins and they are staying relatively constant and
not changing much, pacman seems a much more sane way to manage them
without cluttering up my zsh initialization routine. All zgen management
can go and just needs 6 `source` lines in order to load the plugin
entrypoints.
2020-02-08 16:28:36 +01:00
370c155ca4
Standardize top-level directory paths
Anything which needs to be (at least partly) touched by stow should stay
in the top-level normal directory name that they are. Anything that
*only* concerns the repository, not the dotfiles, should be moved into a
hidden folder, preceded by a dot.

These directories should still contain a `.stow-local-ignore` file
patterning everything which should not show up in stow (i.e. `^/.*`,
everything) since it is not guaranteed that stow will ignore the
.dotfile directories. The installation script does ignore them on its
own, for now, but is not guaranteed to in the future either.
2020-02-07 22:41:30 +01:00
c76b0d0223
Sign commits by default
By default use the gpg signing key to sign any commit made from this
machine, or with the help of these dotfiles.
2020-02-07 22:36:00 +01:00
ecbf8409f9
Add git hook for package comparison
When moving to commit, this hook will automatically fire and check the
current system's installed packages against those explicitly committed
to the repository. If they mismatch it will inform the user.

It will not prevent the commit, but simply add a comment at the top of
the commit messages to remind the user that something is unbalanced
between both. It would be recommended to either check the additional
package into source control, remove it from the current system, or
explicitly add it to ignored packages.
2020-02-07 22:31:41 +01:00
c7ed986c0e
Update package list
Updated package list in preparation for unified package management. For
the moment still uses basic bash script to manage package installation.
Packages are collected in a big list, with some packages being ignored.

This is in preparation for the possibility to manage future package
'groups' directly in pacman meta packages. They will then be added /
removed to the individual PKGBUILD files as dependencies and will
automatically be kept up-to-date, added and removed on all systems which
use the corresponding meta group.

It also opens the path to have commit-time checking of irregularities
between the packages stipulated in the dotfile repository and the
current running system. This can be done by adding all packages of the
different package group lists, unifying them and removing potential
ignored packages.

It allows e.g. printing a warning when committing changes to the
repository while the system packages and the repository packages differ,
to make sure no package dependencies were introduced without knowing it
and which would introduce potential breaking changes into the dotfiles.
2020-02-07 22:07:53 +01:00
83728d6fb0 Add nvim spell dicts and management
Added custom term spell dictionary for neovim. Will track any words that
should be needed on all my machines.

Added spellmake plugin which watches spellfiles and rebuilds the binary
whenever a new word has been added through external edits like git.

The plugin also automatically adds a gitignore file for the .spl
file, and a unison merge strategy through a gitattributes file to any
spell directory it finds. Ignoring is due to .spl being automatically
generated binary files. The merge strategy ensures that no merge errors
will pop up even when words get added in different orders. All it cares
about is that the content of the files is the same, in whatever order.
2020-02-06 23:12:49 +01:00
348a167390 Fix tmux vim navigator movement
Fixes tmux xdg-compliance (and, more importantly, Tmux Plugin Manager's)
by setting the environment variable TMUX_PLUGIN_MANAGER_PATH to follow
xdg specifications. Tmux, due to not being xdg-compliant, needs to be
aliased to start with the `-f` option pointing into the configuration
directory.

Fixes tmux vim nagigator's controls being overwritten by other control
schemes in tmux.
2020-02-06 20:49:15 +01:00
87ad744e6a Point main README to git module README 2020-02-06 15:09:45 +01:00
8741bbac24 Add git module README 2020-02-06 15:09:22 +01:00
d411be708e Add gitignore usage information, fix empty api calls
Added general usage information. Made sure gitignore api is never called
without any arguments.

Made script fzf aware -- if it finds fzf it can be invoked without
arguments, if it does not it will display usage information instead.
2020-02-06 15:07:55 +01:00
84aae314f5 Fix dotlink.sh missing shebang 2020-02-06 13:12:08 +01:00
71f9076846 Change bootstrap to use standard stow functions
Removed the `autostow.sh` scipt. Its use was to call stow for every
folder in base directory and ignore certain folders. Both those
functions can be handled by stow on its own.

Stow allows defining per-directory ignore patterns with
`.stow-loca-ignore` files, which can be set to `.*` to completely ignore
a folder, just as before. And Stow can be called with a glob pattern to
automatically call it for every directory in the repository.

`.stowrc` additionally makes sure that all operations take place
targeting the home directory of the current user, since that is where
the dotfiles will (generally) be stored. Of course, this can be
overridden with the stow command-line options (see option precedence in
stow manual).

Finally, the bootstrap stow module adds an alias `dotlink` to the shell,
which allows fast (re-)stowing of all directories in the dotfile
repository. It uses a hard-coded location for the .dotfiles base
directory, so if the dotfiles are cloned anywhere else this has to be
customized.
2020-02-06 12:48:08 +01:00
1d28202f17 Add styler zsh completions
Can list available commands, specific options for commands (such as
list), and a complete list of installed themes that can be applied.
2020-02-05 23:52:23 +01:00
b344242dff Standardize and document styler cli commands
Removed superfluous styler `--theme`-style options, instead relying on
the commands provided to be the primary way of interaction.

Documented the new standardized ways with the `help` command and added
improved documentation for all avaliable options.
2020-02-05 23:51:49 +01:00
d1438b216c Styler add empty argument check 2020-02-04 22:00:13 +01:00
7b076d7a2f Standardize wiki link opening scheme with xdg-open 2020-02-04 20:47:49 +01:00
c541763617 Add wiki.vim file opening scheme for pdf, html
Can open file-links that the cursor is currently over (in markdown link
format). PDF is opened in zathura, html in qutebrowser, the rest in vim.
2020-02-04 20:40:03 +01:00
804ae4005a Fix Document Compile Function in vim
Fixed non-escaped directory sequence (erroring on spaces in filenames)
and silent code execution.
2020-02-04 20:38:47 +01:00
667595d2fb Fix static analysis 2020-02-04 15:27:44 +01:00
f5eddfdab2 Fix tmux_attach_start unit tests 2020-02-04 15:23:47 +01:00
66961cae79 Automatic Zettelkasten note-link naming scheme
When creating a new link within notes, using the wiki.vim openlink
shortcut (return by default), it will prepend a Zettelkasten-like unique
id based on current time in front of the link.

It will also lowercase it and substitute spaces for dashes.
2020-02-04 15:17:59 +01:00
90dfacf7bd Fix pandoc fzf citation adding location
Pandoc citations added through fzf (with the :CiteRef command) were
added in place, with an i. The usual case however is to write a
sentence, or part of a sentence, going out of insertion mode and wanting
the citation to appear *after* what was written.

Same story for insert mode citation (automatically called by typing
`@@`); also simplified its calling function somewhat.

Added simple maps for fzf finding note files from anywhere, searching
through wiki tags.
2020-02-04 13:17:22 +01:00
7917b45859 Remove experimental modules, add initial foldlevel
Vim experimental modules should be short-lived and really used for
experimentation, not be always in git and messing up diffs.

An initial foldlevel of 2 has been added to vim, this is experimental
and if it doesn't suit me can be easily reverted.
2020-02-04 11:40:06 +01:00
3668e11bbe Add git add interactive alias
Use gai to quickly reach interactive add mode.
2020-02-04 11:37:08 +01:00
36c202f48a Sort vim plugin loading 2020-02-04 11:36:42 +01:00
2c374249d4 Move git aliases to git stow module 2020-02-04 10:06:33 +01:00
65ad7f77ee Add tmux_attach_start script zsh completions
Will autocomplete with currently open tmux sessions.
2020-02-04 10:00:05 +01:00
e7ff8c9f78 Fix pandoc citation autocompletions
wiki.vim overwrites omnifunc for any buffer it sees as its own. Pandoc
uses g:pandoc#competion#Complete as its omnifunc to generate citations.

So we use deoplete to collect the citations and display them on being
invoked by `@`. When typing more, it filters the list accordingly.

Have not gotten preview window working again, nor searching of fields
other than bibkey.
2020-02-04 00:44:12 +01:00
756e45e037 Reorganize vim plugin settings
Setting everything during PlugLoad function caused some plugins to
misbehave. Plugins are now loaded by Plug and their settings can be
either set with a file in the plugin directory (this mimicks the old way
of setting plugin up during load) or in after/ directory, which sets
options *after* everything has loaded.
2020-02-03 22:23:45 +01:00
6b79eeef5d Refactor vim compile functions 2020-02-03 22:15:01 +01:00
92376839a4 Add tmux fzf session chooser
Added tmux session chooser. Aliased to `tm`, calling `tmux_attach_start`
(the original tm script).

When called without arguments displays a fzf list of currently running
tmux sessions, with a preview to their respective open panes. A session
can be chosen in fzf which tmux will attach itself to. When creating a
query in fzf which does not have a valid target and confirming, tmux
will automatically create that session and attach itself to it.

When called with an argument, tmux will attach itself or create a
session of the same name. If called with the name of a session file, as
before, tmux will automatically execute that session file and attach
itself to it.
2020-02-02 23:44:23 +01:00
fbc1c44652 Add zsh completion path, completions plugin
Added `$XDG_CONFIG_HOME/zsh/completions` to fpath for zsh to source
completions from. Any stow modules creating scripts and functions which
should be auto-completable can add their own completion scripts to this
directory for zsh to automatically pick them up.

Add zsh-users/zsh-completions plugin to provide completions for a wide
array of applications (e.g. glances, nvm).
2020-02-02 23:32:37 +01:00
1684aaa50f Add gitignore function 2020-02-02 18:34:35 +01:00
87308cbce9 Add git merge merge request on sucess alias
Works for gitlab.com, will merge a MR when the pipeline has finished
running sucessfully.
2020-02-02 16:13:51 +01:00
752f170caf Merge branch '75-organize-shell-configurations' into 'master'
Resolve "Organize Shell configurations"

Closes #75

See merge request marty-oehme/dotfiles!28
2020-02-02 15:08:40 +00:00
6380affb6f Add basic XDG compliant sh architecture
The only file left in $HOME is .zshenv, which sets up zsh to source everything from XDG_CONFIG_HOME/zsh.
Shell files are split into sh and zsh directories, for global assignments (which should be posix compliant, work on any posix shell) like environemnt variables, xdg vars, and global aliases. zsh contains zsh specific customization (prompt customization, plugin loading, zsh completions).

Zsh initialization will pull from sh directory first, loading the respective mirror to its startup file (`.zprofile` loads `sh/profile` and `profile.d/*`, `.zshenv` loads `sh/env` and `sh/env.d/*` and `zsh/env.d/*`, `.zshrc` loads `sh/alias`, `sh/alias.d/*` and `zsh/alias.d/*`)

Once all is done, it will have loaded both global variables, aliases and settings, and zsh-only specifications. Other stow modules, if they want to add shell functionality, can include their aliases and functions in one of the above directories to automatically be picked up by zsh.
2020-02-02 15:08:40 +00:00
a0a02be852 Fix xinitrc issues
Made posix compatible and ensured globbing protection.
2020-02-01 15:17:10 +01:00
7ebcce8e82 Add global gitconfig, improve glog display
Added global git config file, following XDG specifications (putting it
under `XDG_CONFIG_HOME/git/config`).

Adding a small improvement to default dot session for tmux, so that its
log watcher now shows all refs and remote refs.
2020-02-01 11:15:22 +01:00
7308828c67 Merge branch '74-theme-changing-using-standardized-base16-color-schemes' into 'master'
Resolve "Theme Changing using standardized base16 color schemes"

Closes #74

See merge request marty-oehme/dotfiles!27
2020-02-01 10:08:19 +00:00
e7b14a7a5a Update README.md with styler options
Updated to reflect new capabilities of `styler` utility.
2020-02-01 11:02:13 +01:00
ad8decb4ef Integrate dynamic colorschemes into applications
Makes polybar use Xresources color values for its colors. Resets rofi
values to their default after being overwritten by the base16 themes.
Makes qutebrowser include the colorscheme in its configuration file.

Ignore dynamically generated colorschemes in .gitignore file.
2020-02-01 11:01:26 +01:00
6ed90134a3 Move Xresources to comply to XDG
Moved Xresources to XDG compliant directory. Will make future styler
settings easier.
2020-02-01 11:01:26 +01:00
edfb305ef3 Add theme function
The theme function provides a quick but temporary switch to a specific
theme.

Themes can be applied with `styler theme [themename]`, they will be
instantly applied to all enabled applications. They will be lost on
restarts of the application or machine however.

Themes can be applied permanently with `styler set [themename]`, they
will be written into the application's settings. This *will* change
things in your local filesystem, so be wary. Generally, processors
should take the least invasive approach and use inclusion to append the
theme to the application's other settings.

But be *careful* with this option, and when in doubt double-check what
the processors you have installed do before losing your settings.
2020-02-01 11:00:29 +01:00
acbe002f87 Add download function to styler
Can take input in the form user/repo and pulls packages from github into
its package directory. Documented use of new function.

Can download both processors and packages. Styler decides between
both with their naming schemes, searching for `/base16-` or `baseproc16-`
respectively. For example:

username/base16-programname - package
username/baseproc16-programname - processor

If it can not determine it based on name alone, it will assume to be
dealing with a processor but spit out a warning for the user.

Styler processors use same layout as packages, such that package and
processor directories are mirrors of each other. So:

`chriskempson/base16-vim` lies in the packages directory,
`marty-oehme/vim-processor` mirrors it.

This opens up the way for custom processors.
2020-02-01 11:00:29 +01:00
4838aecb75 Add list function to styler
Can list available themes, packages, and processors. Invoked by `styler
list` and then the intended target. When invoked without any valid
target will remind the user to supply one.

`list`, `--list`, `-l` are aliases and perform the same function.

Examples:

`styler list themes`

`styler --list packages`

`styler -l processors`
2020-02-01 11:00:29 +01:00