Polish workgroups2 integration: tie frames to workgroups
This commit is contained in:
parent
1d4fea774d
commit
213c53f020
4 changed files with 38 additions and 11 deletions
|
@ -28,6 +28,8 @@
|
||||||
(candidates . wg-workgroup-names)
|
(candidates . wg-workgroup-names)
|
||||||
(action . narf/wg-helm-switch-to-workgroup)))
|
(action . narf/wg-helm-switch-to-workgroup)))
|
||||||
|
|
||||||
|
(defvar narf-wg-frames '())
|
||||||
|
|
||||||
(after! projectile
|
(after! projectile
|
||||||
;; Turns projectile switch-project interface (or helm's interface to it)
|
;; Turns projectile switch-project interface (or helm's interface to it)
|
||||||
;; create a new workgroup for the new project.
|
;; create a new workgroup for the new project.
|
||||||
|
|
|
@ -32,6 +32,7 @@
|
||||||
|
|
||||||
;;;###autoload (autoload 'narf:workgroup-new "defuns-workgroup" nil t)
|
;;;###autoload (autoload 'narf:workgroup-new "defuns-workgroup" nil t)
|
||||||
(evil-define-command narf:workgroup-new (bang name)
|
(evil-define-command narf:workgroup-new (bang name)
|
||||||
|
"Create a new workgroup. If BANG, clone the current one to it."
|
||||||
(interactive "<!><a>")
|
(interactive "<!><a>")
|
||||||
(unless name
|
(unless name
|
||||||
(user-error "No name specified for new workgroup"))
|
(user-error "No name specified for new workgroup"))
|
||||||
|
@ -44,6 +45,18 @@
|
||||||
(interactive "<a>")
|
(interactive "<a>")
|
||||||
(wg-rename-workgroup new-name))
|
(wg-rename-workgroup new-name))
|
||||||
|
|
||||||
|
;;;###autoload (autoload 'narf:workgroup-delete "defuns-workgroup" nil t)
|
||||||
|
(evil-define-command narf:workgroup-delete (bang &optional name)
|
||||||
|
(interactive "<!><a>")
|
||||||
|
(let ((wg-name name))
|
||||||
|
(when (or bang (eq name ""))
|
||||||
|
(setq wg-name (wg-read-workgroup-name)))
|
||||||
|
(let ((wg (wg-get-workgroup name)))
|
||||||
|
(if (eq wg (wg-current-workgroup))
|
||||||
|
(wg-kill-workgroup)
|
||||||
|
(wg-delete-workgroup wg))
|
||||||
|
(message "Deleted workgroup: %s" name))))
|
||||||
|
|
||||||
;;;###autoload
|
;;;###autoload
|
||||||
(defun narf:kill-other-workgroups ()
|
(defun narf:kill-other-workgroups ()
|
||||||
"Kill all other workgroups."
|
"Kill all other workgroups."
|
||||||
|
@ -63,7 +76,7 @@
|
||||||
(if (not workgroup) wg-nowg-string
|
(if (not workgroup) wg-nowg-string
|
||||||
(wg-element-display
|
(wg-element-display
|
||||||
workgroup
|
workgroup
|
||||||
(format "%d %s" index (wg-workgroup-name workgroup))
|
(format "%d %s" (1+ index) (wg-workgroup-name workgroup))
|
||||||
'wg-current-workgroup-p
|
'wg-current-workgroup-p
|
||||||
'wg-previous-workgroup-p)))
|
'wg-previous-workgroup-p)))
|
||||||
(wg-workgroup-list)))))
|
(wg-workgroup-list)))))
|
||||||
|
|
|
@ -18,19 +18,31 @@
|
||||||
"M-;" 'eval-expression
|
"M-;" 'eval-expression
|
||||||
"M-=" 'text-scale-increase
|
"M-=" 'text-scale-increase
|
||||||
"M--" 'text-scale-decrease
|
"M--" 'text-scale-decrease
|
||||||
"M-w" 'evil-window-delete
|
|
||||||
"M-/" 'evil-commentary-line
|
"M-/" 'evil-commentary-line
|
||||||
"M-b" 'narf:build
|
"M-b" 'narf:build
|
||||||
"M-t" 'helm-projectile-find-file
|
"M-t" 'helm-projectile-find-file
|
||||||
"A-`" 'narf-switch-to-iterm
|
"A-`" 'narf-switch-to-iterm
|
||||||
"C-`" 'narf/popwin-toggle
|
"C-`" 'narf/popwin-toggle
|
||||||
"M-n" (λ (switch-to-buffer (generate-new-buffer "*new*")))
|
|
||||||
|
|
||||||
;; Disable nlinum to fix elusive "invalid face linum" bug
|
"M-w" 'evil-window-delete
|
||||||
"M-N" (λ (let ((nlinum-p (and (featurep 'nlinum) global-nlinum-mode)))
|
"M-W" (λ (let ((data (assq (selected-frame) narf-wg-frames)))
|
||||||
(if nlinum-p (global-nlinum-mode -1))
|
(if data
|
||||||
(new-frame)
|
(progn (wg-delete-workgroup (wg-get-workgroup (cdr data)))
|
||||||
(if nlinum-p (global-nlinum-mode 1))))
|
(delete-frame (car data)))
|
||||||
|
(delete-frame))))
|
||||||
|
|
||||||
|
"M-n" (λ (switch-to-buffer (generate-new-buffer "*new*")))
|
||||||
|
"M-N" (λ (let ((nlinum-p (and (featurep 'nlinum)
|
||||||
|
(memq 'nlinum--setup-window window-configuration-change-hook))))
|
||||||
|
;; Disable nlinum to fix elusive "invalid face linum" bug
|
||||||
|
(remove-hook 'window-configuration-change-hook 'nlinum--setup-window t)
|
||||||
|
(let ((frame (new-frame))
|
||||||
|
(frame-name (format "*new-%s*" (length narf-wg-frames))))
|
||||||
|
(with-selected-frame frame
|
||||||
|
(wg-create-workgroup frame-name t)
|
||||||
|
(add-to-list 'narf-wg-frames (cons frame frame-name))))
|
||||||
|
(when nlinum-p
|
||||||
|
(add-hook 'window-configuration-change-hook 'nlinum--setup-window nil t))))
|
||||||
|
|
||||||
;; Simpler window navigation
|
;; Simpler window navigation
|
||||||
"C-j" 'evil-window-down
|
"C-j" 'evil-window-down
|
||||||
|
|
|
@ -52,12 +52,12 @@
|
||||||
(exmap "ss[ave]" 'narf:save-session)
|
(exmap "ss[ave]" 'narf:save-session)
|
||||||
(exmap "wg" 'narf:workgroup-display)
|
(exmap "wg" 'narf:workgroup-display)
|
||||||
(exmap "tab" 'narf:workgroup-display)
|
(exmap "tab" 'narf:workgroup-display)
|
||||||
(exmap "t[ab]new" 'narf:workgroup-new)
|
(exmap "tabn[ew]" 'narf:workgroup-new)
|
||||||
(exmap "tabre[name]" 'narf:workgroup-rename)
|
(exmap "tabr[ename]" 'narf:workgroup-rename)
|
||||||
(exmap "tabn[ext]" 'wg-switch-to-workgroup-right)
|
(exmap "tabn[ext]" 'wg-switch-to-workgroup-right)
|
||||||
(exmap "tabp[rev]" 'wg-switch-to-workgroup-left)
|
(exmap "tabp[rev]" 'wg-switch-to-workgroup-left)
|
||||||
(exmap "tabl[ast]" 'wg-switch-to-previous-workgroup)
|
(exmap "tabl[ast]" 'wg-switch-to-previous-workgroup)
|
||||||
(exmap "tabc[lose]" 'wg-kill-workgroup)
|
(exmap "tabq[uit]" 'narf:workgroup-delete)
|
||||||
(exmap "k[ill]w" 'wg-kill-workgroup)
|
(exmap "k[ill]w" 'wg-kill-workgroup)
|
||||||
(exmap "k[ill]ow" 'narf:kill-other-workgroups))
|
(exmap "k[ill]ow" 'narf:kill-other-workgroups))
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue