Protogg remapps the project.el
functions to their non-project related functions while also providing a minbuffer keybinding to toggle between the two.
Here is a basic configuration using use-package
.
(use-package protogg
:ensure nil
:vc (protogg :url "https://github.com/nehrbash/protogg"
:branch "main")
:custom (protogg-minibuffer-toggle-key "M-g")
:bind (([remap async-shell-command] . protogg-async-shell-command) ;; M-&
("C-c x" . protogg-compile)
([remap dired] . protogg-dired) ;; C-x d
("C-c e" . protogg-eshell)
("M-s d" . protogg-find-dired)
([remap find-file] . protogg-find-file) ;; C-x C-f
([remap list-buffers] . protogg-list-buffers) ;; type C-x C-b
([remap shell-command] . protogg-shell-command) ;; M-!
("C-c s" . protogg-shell)
([remap switch-to-buffer] . sn/consult-buffer) ;; C-x b
("M-s i" . sn/imenu))
:config
;; example adding your own
(protogg-define 'consult-project-buffer 'consult-buffer sn/consult-buffer)
(protogg-define 'consult-imenu-multi 'consult-imenu sn/imenu)) ;; C-x b
The project-*
commands will be called instead of the typical command if a project is detected. An example of this is calling find-file
. It will actually call project-find-file
. However, you may not always want the project version. To solve this, while in the minibuffer you may switch between the two command with the protogg-switch-minibuffer
Bounded to M-q
by default but can be customized with protogg-minibuffer-toggle-key
.
ibuffer-project
- to easily switch between project buffersconsult
- for the enhanced filtering and previewing as shown in the example config.embark
forembark-become
which can either replace this package or complement it by allowing you to turn any minbuffer command into a diffrent one.