diff --git a/README.md b/README.md index e453aa5..cd93b63 100644 --- a/README.md +++ b/README.md @@ -6,6 +6,7 @@ setup, you don't need to leave behind your favorite terminal or tools like `yazi`, `starship`, `lazygit`, and `lazydocker` just to give Emacs a try. + Use Emacs the same way you'd use `Neovim`, seamlessly integrating it into your workflow inside terminal multiplexers like `tmux` or `Zellij`, while also enjoying modern features such as `treesitter` @@ -13,21 +14,23 @@ and `LSP`—no hassle. ![Demo](doc/demo01.png) + `Emacs-Kick` is not a distribution, but a starting point for your own configuration. It’s designed to be accessible to Vim/Neovim users without needing to adopt all of Emacs' ecosystem. You can still enjoy the power of Emacs without having to learn every Emacs-specific workflow. + **Minimum Requirements**: -- Emacs version **29+** +- Emacs version **>=30** - You can verify your version by running: ```bash emacs --version ``` -**Installation Instructions**: +## Installation Instructions 1. **Clone the repository**: @@ -35,6 +38,7 @@ emacs --version `~/.emacs.d`, please back it up before proceeding. You can do this by renaming the directory: + ```bash mv ~/.emacs.d ~/.emacs.d.backup ``` @@ -45,7 +49,8 @@ mv ~/.emacs.d ~/.emacs.d.backup `~/.config/emacs`, `~/.config/doom`, `~/.config/cache/emacs` and any other related files. - After backing up, clone the repository: + + After deleting/backing up, clone the repository: ```bash git clone https://github.com/LionyxML/emacs-kick.git ~/.emacs.d @@ -115,25 +120,85 @@ emacs `*Messages*` buffer for more information. You can switch between buffers with `SPC SPC`, and navigate options using `C-p` and `C-n`. ---- -This configuration is tailored for Vim/Neovim users looking to explore -Emacs while keeping their existing workflow intact. Feel free to -explore and customize it further as you go. +## Available Commands -Enjoy your Emacs experience! +| Keybinding | Action | +|---------------------|-------------------------------------------| +| `SPC` | Leader key | +| `C-d` | Scroll down | +| `C-u` | Scroll up | +| ` s f` | Find file | +| ` s g` | Grep | +| ` s G` | Git grep | +| ` s r` | Ripgrep | +| ` s h` | Consult info | +| ` /` | Consult line | +| ` x x` | Consult Flymake | +| `] d` | Next Flymake error | +| `[ d` | Previous Flymake error | +| ` x d` | Dired | +| ` x j` | Dired jump | +| ` x f` | Find file | +| `] c` | Next diff hunk | +| `[ c` | Previous diff hunk | +| ` e e` | Toggle NeoTree | +| ` g g` | Open Magit status | +| ` g l` | Show current log | +| ` g d` | Show diff for current file | +| ` g D` | Show diff for hunk | +| ` g b` | Annotate buffer with version control info | +| `] b` | Switch to next buffer | +| `[ b` | Switch to previous buffer | +| ` b i` | Consult buffer list | +| ` b b` | Open Ibuffer | +| ` b d` | Kill current buffer | +| ` b k` | Kill current buffer | +| ` b x` | Kill current buffer | +| ` b s` | Save buffer | +| ` b l` | Consult buffer | +| `SPC` | Consult buffer | +| ` p b` | Consult project buffer | +| ` p p` | Switch project | +| ` p f` | Find file in project | +| ` p g` | Find regexp in project | +| ` p k` | Kill project buffers | +| ` p D` | Dired for project | +| `P` | Yank from kill ring | +| ` P` | Yank from kill ring | +| ` .` | Embark act | +| ` u` | Undo tree visualize | +| ` h m` | Describe current mode | +| ` h f` | Describe function | +| ` h v` | Describe variable | +| ` h k` | Describe key | +| `] t` | Go to next tab | +| `[ t` | Go to previous tab | +| ` m p` | Format with Prettier | +| ` c a` | Execute code action | +| ` r n` | Rename symbol | +| `gI` | Find implementation | +| ` l f` | Format buffer via LSP | +| `K` | Show hover documentation | +| `gcc` | Comment/uncomment current line | +| `gc` | Comment/uncomment selected region | -# Contributing +...and a lot more, discoverable with which-key :) + + +## Contributing This package is intentionally designed with a specific vision in mind, reflecting my own opinions and preferences. While contributions are welcome, please understand that this configuration is quite opinionated. + If you have suggestions or requests, they will be considered carefully, but I cannot make any promises regarding implementation or acceptance. Your input is valuable, and I appreciate any help or feedback to improve the project. + To contribute, feel free to open an issue or submit a pull request. Let's make this configuration even better together! diff --git a/init.el b/init.el index 9272fa0..185c7a8 100644 --- a/init.el +++ b/init.el @@ -1,6 +1,6 @@ ;;; init.el --- Emacs-Kick --- A feature rich Emacs config for (neo)vi(m)mers -*- lexical-binding: t; -*- ;; Author: Rahul Martim Juliato -;; Version: 0.1.0-rc2 +;; Version: 0.1.0-rc3 ;; Package-Requires: ((emacs "30.0")) ;; License: GPL-2.0-or-later @@ -447,7 +447,11 @@ (use-package flymake :ensure nil ;; This is built-in, no need to fetch it. :defer t - :hook (prog-mode . flymake-mode)) + :hook (prog-mode . flymake-mode) + :custom + (flymake-margin-indicators-string + '((error "!»" compilation-error) (warning "»" compilation-warning) + (note "»" compilation-info)))) ;;; ORG-MODE @@ -836,9 +840,11 @@ (setq evil-want-integration t) ;; Integrate `evil' with other Emacs features (optional as it's true by default). (setq evil-want-keybinding nil) ;; Disable default keybinding to set custom ones. :config + (evil-set-undo-system 'undo-tree) ;; Uses the undo-tree package as the default undo system + ;; Set the leader key to space for easier access to custom commands. (setq evil-want-leader t) (setq evil-leader/in-all-states t) ;; Make the leader key available in all states. - (setq evil-undo-system 'undo-tree) ;; Use `undo-tree' for better visual undo history. + (setq evil-want-fine-undo t) ;; Evil uses finer grain undoing steps ;; Define the leader key as Space (evil-set-leader 'normal (kbd "SPC")) @@ -932,7 +938,7 @@ (evil-define-key 'normal lsp-mode-map ;; (kbd "gd") 'lsp-find-definition ;; Emacs already provides a better gd ;; (kbd "gr") 'lsp-find-references ;; Emacs already provides a better gr - (kbd " c a") 'lsp-describe-thing-at-point ;; Show hover documentation + (kbd " c a") 'lsp-execute-code-action ;; Execute code actions (kbd " r n") 'lsp-rename ;; Rename symbol (kbd "gI") 'lsp-find-implementation ;; Find implementation (kbd " l f") 'lsp-format-buffer) ;; Format buffer via lsp @@ -947,7 +953,11 @@ (switch-to-buffer-other-window help-buffer)))) ;; Open hover documentation (evil-define-key 'normal 'global (kbd "K") 'ek/lsp-describe-and-jump) - + ;; Yeah, on terminals, Emacs doesn't support (YET), the use of floating windows, + ;; thus, this will open a small buffer bellow your window. + ;; This floating frames are called "child frames" and some recent effort is being put + ;; into having a translation of those marvelous GUI stuff to terminal. Let's hope + ;; we add this to Emacs Kick soom :) ;; Commenting functionality for single and multiple lines (evil-define-key 'normal 'global (kbd "gcc") @@ -1019,6 +1029,14 @@ (prog-mode . rainbow-delimiters-mode)) +;;; DOTENV +;; A simple major mode to provide .env files with color highlighting +(use-package dotenv-mode + :defer t + :ensure t + :config) + + ;;; PULSAR ;; The `pulsar' package enhances the user experience in Emacs by providing ;; visual feedback through pulsating highlights. This feature is especially @@ -1131,15 +1149,15 @@ :config (custom-set-faces ;; Set the color for changes in the diff highlighting to blue. - `(diff-hl-change ((t (:background nil :foreground ,(catppuccin-get-color 'blue)))))) + `(diff-hl-change ((t (:background unspecified :foreground ,(catppuccin-get-color 'blue)))))) (custom-set-faces ;; Set the color for deletions in the diff highlighting to red. - `(diff-hl-delete ((t (:background nil :foreground ,(catppuccin-get-color 'red)))))) + `(diff-hl-delete ((t (:background unspecified :foreground ,(catppuccin-get-color 'red)))))) (custom-set-faces ;; Set the color for insertions in the diff highlighting to green. - `(diff-hl-insert ((t (:background nil :foreground ,(catppuccin-get-color 'green)))))) + `(diff-hl-insert ((t (:background unspecified :foreground ,(catppuccin-get-color 'green)))))) ;; Load the Catppuccin theme without prompting for confirmation. (load-theme 'catppuccin :no-confirm))