# Archlinux Config

Ela's Archlinux Configfiles

## Features and Usage

### Terminal

This setup uses a powerful combination of [Alacritty](https://github.com/jwilm/alacritty), [tmux](https://github.com/tmux/tmux) and [zsh](https://www.zsh.org/) with a minimalistic prompt.

### Commands

- `pacu`: Update and upgrade the whole system (using `Brewfile` on macOS and `pacmanfile` on Arch Linux)
- `depu`: Update and upgrade the dependencies for the current project
- `mkcd`: Create a directory and enter it
- `fcd`: cd into a directory using fuzzy search
- `fe`: Edit a directory or file using fuzzy search
- `fco`: Checkout Git branches or tags using fuzzy search
- `fkill`: Kill any process with fuzzy search
- `fshow`: Git commit browser with fuzzy search

### Text Editor

Text editing is based on [Neovim](https://neovim.io/), configured to be an "IDE".

- `e`: Start Neovim with all plugins
- `ide`: Start Neovim with all plugins in an IDE like window layout

#### Navigation

- `gd`: Go to definition of symbol under cursor
- `gi`: Go to implementations of symbol under cursor
- `gr`: Go to references of symbol under cursor
- `<space><space>`: Fuzzy search files in workspace
- `<space>/`: Fuzzy search in all files in workspace
- `<space>j`: Open visual file explorer

#### Git

- `<space>gg`: Git status
- `<space>gd`: Git diff
- `<space>gb`: Git blame
- `<space>gs`: Git stage current hunk
- `<space>gu`: Git unstage current hunk
- `<space>gc`: Git commit
- `<space>gm`: Git three-way merge

#### Diagnostics and Refactoring

- `K`: Show signature of symbol under cursor
- `[d`: Go to previous diagnostic issue
- `d]`: Go to next diagnostic issue
- `<space>e`: Show diagnostics details
- `<space>s`: Open workspace diagnostics
- `<space>k`: Open symbols outline of file
- `<space>r`: Rename current symbol
- `<space>a`: Display code actions

#### Testing

- `<space>tn`: Run nearest test to cursor
- `<space>tf`: Run all tests in file
- `<space>ta`: Run all tests
- `<space>tu`: Toggle extended testing UI

#### Debugging

- `<space>db`: Toggle breakpoint on current line
- `<space>dB`: Set condition for breakpoint
- `<space>dd`: Start debugger or continue to next breakpoint
- `<space>dn`: Step over
- `<space>di`: Step into
- `<space>do`: Step out
- `<space>dK`: Show evaluation of symbol under cursor
- `<space>du`: Toggle extended debugging UI

#### Add Languages and Tools

To extend the editor with new languages and tools, simply add them to [`tools.lua`](./nvim/.config/nvim/lua/config/tools.lua).

## Installation

1. Clone this repo to `~/dotfiles` by running `git clone https://git.pew.io/technowitch/elas-arch-config.git ~/dotfiles`
2. Change the name and email address in `git/.config/git/config`
3. Arch Linux only: Change `pacmanfile/.config/pacmanfile/pacmanfile.txt` to your liking or add `pacmanfile-extra.txt` to the same directory for independent packages per machine

4. Run `~/dotfiles/install.sh`

   **WARNING: This may install and/or remove software and change your configs!**

5. Either import an existing PGP key pair by using `gpg --import my-key.asc` and `gpg --import my-key-pub.asc`, or create a new one by following the [GitHub guide](https://help.github.com/en/articles/generating-a-new-gpg-key). You need to use the same name and email address as an ID that you have configured in `git/.gitconfig` to correctly sign your Git commits.
6. Either import an existing SSH key pair by copying it to `~/.ssh/id_rsa` and `~/.ssh/id_rsa.pub` or create a new one by following the [GitHub guide](https://help.github.com/en/articles/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent).


## Forked from https://github.com/cloudlena/dotfiles