From 7683acd80a679a33e19121d0e78f2b2fa33ed515 Mon Sep 17 00:00:00 2001 From: Madeleine Sydney Date: Sun, 12 Jan 2025 12:51:38 -0700 Subject: [PATCH] feat: Add keybinding stubs --- users/crumb/programs/emacs/lib/syd-buffers.el | 25 ++++++++ users/crumb/programs/emacs/lib/syd-file.el | 50 +++++++++++++++ users/crumb/programs/emacs/lib/syd-prelude.el | 10 ++- users/crumb/programs/emacs/lib/syd-window.el | 28 ++++++++ .../programs/emacs/modules/syd-keybinds.el | 64 +++++++++++++++++-- 5 files changed, 169 insertions(+), 8 deletions(-) create mode 100644 users/crumb/programs/emacs/lib/syd-buffers.el create mode 100644 users/crumb/programs/emacs/lib/syd-file.el create mode 100644 users/crumb/programs/emacs/lib/syd-window.el diff --git a/users/crumb/programs/emacs/lib/syd-buffers.el b/users/crumb/programs/emacs/lib/syd-buffers.el new file mode 100644 index 0000000..b8f66ae --- /dev/null +++ b/users/crumb/programs/emacs/lib/syd-buffers.el @@ -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) diff --git a/users/crumb/programs/emacs/lib/syd-file.el b/users/crumb/programs/emacs/lib/syd-file.el new file mode 100644 index 0000000..9dca811 --- /dev/null +++ b/users/crumb/programs/emacs/lib/syd-file.el @@ -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) diff --git a/users/crumb/programs/emacs/lib/syd-prelude.el b/users/crumb/programs/emacs/lib/syd-prelude.el index bcae20f..9768a6f 100644 --- a/users/crumb/programs/emacs/lib/syd-prelude.el +++ b/users/crumb/programs/emacs/lib/syd-prelude.el @@ -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. diff --git a/users/crumb/programs/emacs/lib/syd-window.el b/users/crumb/programs/emacs/lib/syd-window.el new file mode 100644 index 0000000..ba997ae --- /dev/null +++ b/users/crumb/programs/emacs/lib/syd-window.el @@ -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) diff --git a/users/crumb/programs/emacs/modules/syd-keybinds.el b/users/crumb/programs/emacs/modules/syd-keybinds.el index 26f6890..b2005d1 100644 --- a/users/crumb/programs/emacs/modules/syd-keybinds.el +++ b/users/crumb/programs/emacs/modules/syd-keybinds.el @@ -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)