feat: Add keybinding stubs

This commit is contained in:
Madeleine Sydney
2025-01-12 12:51:38 -07:00
parent 1ca55bc377
commit 7683acd80a
5 changed files with 169 additions and 8 deletions

View File

@@ -0,0 +1,25 @@
;;; syd-buffers.el -*- lexical-binding: t; -*-
(require 'syd-prelude)
(syd-define-stub
syd/kill-all-buffers
:desc "Kill all buffers. See `doom/kill-all-buffers'."
:interactive t)
(syd-define-stub
syd/kill-other-buffers
:desc "Kill other buffers. See `doom/kill-other-buffers'."
:interactive t)
(syd-define-stub
syd/kill-burried-buffers
:desc "Kill burried buffers. See `doom/kill-burried-buffers'."
:interactive t)
(syd-define-stub
syd/save-buffer-as-root
:desc "Sudo save buffer as root. See `doom/sudo-save-buffer'"
:interactive t)
(provide 'syd-buffers)

View File

@@ -0,0 +1,50 @@
;;; syd-file.el -*- lexical-binding: t; -*-
(require 'syd-prelude)
(syd-define-stub
syd/copy-this-file
:desc "Copy current file. See `doom/copy-this-file'."
:interactive t)
(syd-define-stub
syd/delete-this-file
:desc "Delete current file. See `doom/delete-this-file'."
:interactive t)
(syd-define-stub
syd/move-this-file
:desc "Move current file. See `doom/move-this-file'."
:interactive t)
(syd-define-stub
syd/find-file-under-emacs-user-directory
:desc "Find under `emacs-user-directory'. See `doom/find-file-in-private-config'."
:interactive t)
(syd-define-stub
syd/find-file-under-here
:desc "Find under CWD. See `+default/find-file-under-here'."
:interactive t)
(syd-define-stub
syd/yank-buffer-path
:desc "Yank buffer path."
:interactive t)
(syd-define-stub
syd/find-file-in-emacs-user-directory
:desc "Find file in `emacs-user-directory'. See `doom/open-private-config'."
:interactive t)
(syd-define-stub
syd/open-this-file-as-root
:desc "Open current file as root. See `doom/sudo-this-file'."
:interactive t)
(syd-define-stub
syd/find-file-as-root
:desc "Open current file as root. See `doom/sudo-this-file'."
:interactive t)
(provide 'syd-file)

View File

@@ -1,6 +1,6 @@
;;; syd-prelude.el -*- lexical-binding: t; -*-
;; (eval-when-compile (require 'cl-lib))
(eval-when-compile (require 'cl-lib))
(defvar syd-data-dir
(or (getenv "EMACS_DATA_DIR")
@@ -11,6 +11,14 @@
(or (getenv "EMACS_CACHE_DIR")
(error "Need $EMACS_CACHE_DIR")))
(cl-defmacro syd-define-stub
(name &key (desc "implement me!") interactive)
(let ((todo (format "%s: TODO: %s" name desc)))
`(defun ,name (&rest args)
,@(if interactive (list '(interactive)) nil)
,todo
(error ,todo))))
;; `on.el' provies a collection of utility hooks and functions ported from Doom
;; Emacs. The hooks make it easier to speed up Emacs startup by providing
;; finer-grained control of the timing at which packages are loaded.

View File

@@ -0,0 +1,28 @@
;;; syd-window.el -*- lexical-binding: t; -*-
(syd-define-stub
syd/window-swap-left
:desc "Select left window."
:interactive t)
(syd-define-stub
syd/window-swap-down
:desc "Select down window."
:interactive t)
(syd-define-stub
syd/window-swap-up
:desc "Select up window."
:interactive t)
(syd-define-stub
syd/window-swap-right
:desc "Select right window."
:interactive t)
(syd-define-stub
syd/window-maximise
:desc "Maximise window"
:interactive t)
(provide 'syd-window)

View File

@@ -36,12 +36,10 @@ are active.")
(defvar-keymap syd-leader-map
:doc "Leader-prefixed commands")
(defvar-keymap syd-leader-window-map
:doc "Window commands")
(defun syd--initialise-leader ()
"Set up the (empty) keymap associated with `syd-leader-key',
`syd-localleader-key', `syd-alt-leader-key', and `syd-alt-localleader-key'."
(require 'evil)
;; Define `syd/leader' as a command corresponding to the prefix map
;; `syd-leader-map'.
(define-prefix-command 'syd/leader 'syd-leader-map)
@@ -54,16 +52,68 @@ are active.")
(define-key syd-leader-map [override-state] 'all)
;; Finally, we shall bind the damned keys. }:)
(let ((map general-override-mode-map))
(require 'evil)
(evil-define-key* syd-leader-key-states map (kbd syd-leader-key) 'syd/leader)
(evil-define-key* syd-alt-leader-key-states map (kbd syd-alt-leader-key) 'syd/leader))
(general-override-mode 1))
(defun syd-keybinds-initialise ()
(syd--initialise-leader)
(general-define-key
:keymaps 'syd-leader-map
"." #'find-file))
;;; Buffer
(require 'syd-buffers)
(general-def
:prefix-map 'syd-leader-buffer-map
"k" `("Kill buffer" . ,#'kill-current-buffer)
"K" `("Kill all buffers" . ,#'syd/kill-all-buffers)
"O" `("Kill other buffers" . ,#'syd/kill-other-buffers)
"i" `("IBuffer" . ,#'ibuffer)
"Z" `("Kill burried buffers" . ,#'syd/kill-burried-buffers)
"C" `("Clone (indirect) buffer O/W" . ,#'clone-indirect-buffer-other-window)
"c" `("Clone (indirect) buffer" . ,#'clone-indirect-buffer)
"u" `("Save buffer as root" . ,#'syd/save-buffer-as-root)
"r" `("Revert buffer" . ,#'revert-buffer))
;;; File
(require 'syd-file)
(general-def
:prefix-map 'syd-leader-file-map
"D" `("Delete file" . ,#'syd/delete-this-file)
"R" `("Move file" . ,#'syd/move-this-file)
"C" `("Copy file" . ,#'syd/copy-this-file)
"F" `("Find file under current" . ,#'syd/find-file-under-here)
"p" `("Find under Emacs config" . ,#'syd/find-file-under-emacs-user-directory)
"P" `("Browse Emacs config" . ,#'syd/find-file-in-emacs-user-directory)
"u" `("Find file as root" . ,#'syd/find-file-as-root)
"U" `("Open this file as root" . ,#'syd/open-this-file-as-root)
"y" `("Yank buffer path" . ,#'syd/yank-buffer-path))
;;; Window
(require 'syd-window)
(general-def
:prefix-map 'syd-leader-window-maximise-map
"m" `("Maximise" . ,#'syd/window-maximise))
(general-def
:prefix-map 'syd-leader-window-map
"h" `("Select window left" . ,#'evil-window-left)
"j" `("Select window below" . ,#'evil-window-down)
"k" `("Select window above" . ,#'evil-window-up)
"l" `("Select window right" . ,#'evil-window-right)
"H" `("Swap window left" . ,#'syd/window-swap-left)
"J" `("Swap window below" . ,#'syd/window-swap-down)
"K" `("Swap window above" . ,#'syd/window-swap-up)
"L" `("Swap window right" . ,#'syd/window-swap-right)
"T" `("Tear off window" . ,#'tear-off-window)
"=" `("Balance windows" . ,#'balance-windows)
"m" `("Maximise" . ,syd-leader-window-maximise-map))
;;; Leader
(general-def
:keymaps 'syd-leader-map
"." #'find-file
"b" `("Buffer" . ,syd-leader-buffer-map)
"w" `("Window" . ,syd-leader-window-map)
"f" `("File" . ,syd-leader-file-map)
"h" `("Help" . ,help-map)))
(syd-keybinds-initialise)