Remove :index field from exwm/named-workspace struct
I can compute the index use dash.el's -elem-index. I'm also removing some unused EXWM workspaces.
This commit is contained in:
parent
099d88739b
commit
d8f0f3daf3
1 changed files with 14 additions and 75 deletions
|
@ -71,40 +71,19 @@
|
||||||
(defconst exwm/named-workspaces
|
(defconst exwm/named-workspaces
|
||||||
(list (make-exwm/named-workspace
|
(list (make-exwm/named-workspace
|
||||||
:label "Web surfing"
|
:label "Web surfing"
|
||||||
:index 0
|
|
||||||
:kbd "c")
|
:kbd "c")
|
||||||
(make-exwm/named-workspace
|
|
||||||
:label "Project"
|
|
||||||
:index 1
|
|
||||||
:kbd "p")
|
|
||||||
(make-exwm/named-workspace
|
(make-exwm/named-workspace
|
||||||
:label "Briefcase"
|
:label "Briefcase"
|
||||||
:index 2
|
|
||||||
:kbd "d")
|
:kbd "d")
|
||||||
(make-exwm/named-workspace
|
|
||||||
:label "Scratch"
|
|
||||||
:index 3
|
|
||||||
:kbd "s")
|
|
||||||
(make-exwm/named-workspace
|
(make-exwm/named-workspace
|
||||||
:label "Terminal"
|
:label "Terminal"
|
||||||
:index 4
|
|
||||||
:kbd "t")
|
:kbd "t")
|
||||||
(make-exwm/named-workspace
|
(make-exwm/named-workspace
|
||||||
:label "Todos"
|
:label "Todos"
|
||||||
:index 5
|
|
||||||
:kbd "o")
|
:kbd "o")
|
||||||
(make-exwm/named-workspace
|
(make-exwm/named-workspace
|
||||||
:label "Chatter"
|
:label "Chatter"
|
||||||
:index 6
|
:kbd "h"))
|
||||||
:kbd "h")
|
|
||||||
(make-exwm/named-workspace
|
|
||||||
:label "IRC"
|
|
||||||
:index 7
|
|
||||||
:kbd "i")
|
|
||||||
(make-exwm/named-workspace
|
|
||||||
:label "Work"
|
|
||||||
:index 8
|
|
||||||
:kbd "w"))
|
|
||||||
"List of `exwm/named-workspace' structs.")
|
"List of `exwm/named-workspace' structs.")
|
||||||
|
|
||||||
;; Assert that no two workspaces share KBDs.
|
;; Assert that no two workspaces share KBDs.
|
||||||
|
@ -346,14 +325,8 @@ Ivy is used to capture the user's input."
|
||||||
|
|
||||||
(defun exwm/label->index (label workspaces)
|
(defun exwm/label->index (label workspaces)
|
||||||
"Return the index of the workspace in WORKSPACES named LABEL."
|
"Return the index of the workspace in WORKSPACES named LABEL."
|
||||||
(let ((workspace (->> workspaces
|
(let ((index (-elem-index label (-map #'exwm/named-workspace-label workspaces))))
|
||||||
(list/find
|
(if index index (error (format "No workspace found for label: %s" label)))))
|
||||||
(lambda (x)
|
|
||||||
(equal label
|
|
||||||
(exwm/named-workspace-label x)))))))
|
|
||||||
(if (prelude/set? workspace)
|
|
||||||
(exwm/named-workspace-index workspace)
|
|
||||||
(error (string/concat "No workspace found for label: " label)))))
|
|
||||||
|
|
||||||
(defun exwm/register-kbd (workspace)
|
(defun exwm/register-kbd (workspace)
|
||||||
"Registers a keybinding for WORKSPACE struct.
|
"Registers a keybinding for WORKSPACE struct.
|
||||||
|
@ -368,7 +341,9 @@ Currently using super- as the prefix for switching workspaces."
|
||||||
|
|
||||||
(defun exwm/change-workspace (workspace)
|
(defun exwm/change-workspace (workspace)
|
||||||
"Switch EXWM workspaces to the WORKSPACE struct."
|
"Switch EXWM workspaces to the WORKSPACE struct."
|
||||||
(exwm-workspace-switch (exwm/named-workspace-index workspace))
|
(exwm-workspace-switch
|
||||||
|
(exwm/label->index (exwm/named-workspace-label workspace)
|
||||||
|
exwm/named-workspaces))
|
||||||
(window-manager/alert
|
(window-manager/alert
|
||||||
(string/format "Switched to: %s" (exwm/named-workspace-label workspace))))
|
(string/format "Switched to: %s" (exwm/named-workspace-label workspace))))
|
||||||
|
|
||||||
|
@ -428,26 +403,16 @@ This function asssumes that BUFFER passes the `exwm/exwm-buffer?' predicate."
|
||||||
;; coupled to their startup commands. Expedience wins this time.
|
;; coupled to their startup commands. Expedience wins this time.
|
||||||
(progn
|
(progn
|
||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
;; Chrome
|
;; Web surfing
|
||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
(progn
|
(progn
|
||||||
(exwm/switch "Web surfing")
|
(exwm/switch "Web surfing"))
|
||||||
;; make sure this blocks.
|
|
||||||
;; TODO: Support shell-cmd.el that has `shell-cmd/{sync,async}'.
|
|
||||||
;; (call-process-shell-command "google-chrome")
|
|
||||||
)
|
|
||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
;; Project
|
;; Briefcase
|
||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
(progn
|
(progn
|
||||||
(exwm/switch "Project")
|
(exwm/switch "Briefcase")
|
||||||
(find-file constants/current-project))
|
(dotfiles/find-emacs-file "init.el"))
|
||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
||||||
;; Scratch
|
|
||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
||||||
(progn
|
|
||||||
(exwm/switch "Scratch")
|
|
||||||
(switch-to-buffer "*scratch*"))
|
|
||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
;; Terminal
|
;; Terminal
|
||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
|
@ -459,38 +424,12 @@ This function asssumes that BUFFER passes the `exwm/exwm-buffer?' predicate."
|
||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
(progn
|
(progn
|
||||||
(exwm/switch "Todos")
|
(exwm/switch "Todos")
|
||||||
(org-helpers/find-file "today-expected.org")
|
(org-helpers/find-file "today-expected.org"))
|
||||||
(wpc/evil-window-vsplit-right)
|
|
||||||
(org-helpers/find-file "today-actual.org"))
|
|
||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
||||||
;; Dotfiles
|
|
||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
||||||
(progn
|
|
||||||
(exwm/switch "Briefcase")
|
|
||||||
(dotfiles/find-emacs-file "init.el"))
|
|
||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
;; Chatter
|
;; Chatter
|
||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
(progn
|
(progn
|
||||||
(exwm/switch "Chatter")
|
(exwm/switch "Chatter"))
|
||||||
;; TODO: Support the following chat applications:
|
|
||||||
;; - Slack teknql
|
|
||||||
;; - irccloud.net
|
|
||||||
;; - web.whatsapp.com
|
|
||||||
;; - Telegram
|
|
||||||
;; NOTE: Perhaps all of these should be borderless.
|
|
||||||
;; (call-process-shell-command "terminator")
|
|
||||||
)
|
|
||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
||||||
;; Work
|
|
||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
||||||
(progn
|
|
||||||
(exwm/switch "Work")
|
|
||||||
;; TODO: Support opening the following in chrome:
|
|
||||||
;; - calendar
|
|
||||||
;; - gmail
|
|
||||||
;; - chat (in a horizontal split)
|
|
||||||
)
|
|
||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
;; Reset to default
|
;; Reset to default
|
||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
|
|
Loading…
Reference in a new issue