[elpa] externals/exwm dd6f5c3 1/4: Inform user about making a frame a workspace

2019-08-11 Thread Chris Feng
branch: externals/exwm
commit dd6f5c36edf62f8c9d3c98a77b0d22b141663f6c
Author: Chris Feng 
Commit: Chris Feng 

Inform user about making a frame a workspace

* exwm-workspace.el (exwm-workspace--add-frame-as-workspace): Add a
message.
(exwm-workspace--init): Exclude initial workspaces.
---
 exwm-workspace.el | 6 --
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/exwm-workspace.el b/exwm-workspace.el
index a4ccc2f..f536bc5 100644
--- a/exwm-workspace.el
+++ b/exwm-workspace.el
@@ -1337,6 +1337,7 @@ Please check `exwm-workspace--minibuffer-own-frame-p' 
first."
   (if exwm-workspace--create-silently
   (setq exwm-workspace--switch-history-outdated t)
 (exwm-workspace-switch frame t)
+(message "Added %s as workspace %d" frame exwm-workspace-current-index)
 (run-hooks 'exwm-workspace-list-change-hook)))
 
 (defun exwm-workspace--get-remove-frame-next-workspace (frame)
@@ -1629,8 +1630,9 @@ applied to all subsequently created X frames."
   (nconc initial-workspaces (list (make-frame '((window-system . x)
 (client . nil))
 ;; Configure workspaces
-(dolist (i initial-workspaces)
-  (exwm-workspace--add-frame-as-workspace i)))
+(let ((exwm-workspace--create-silently t))
+  (dolist (i initial-workspaces)
+(exwm-workspace--add-frame-as-workspace i
   (xcb:flush exwm--connection)
   ;; We have to advice `x-create-frame' or every call to it would hang EXWM
   (advice-add 'x-create-frame :around #'exwm-workspace--x-create-frame)



[elpa] externals/exwm a1cf0d9 3/4: Avoid checking `*temp*' buffers

2019-08-11 Thread Chris Feng
branch: externals/exwm
commit a1cf0d9b85e1d1d4f3b50a9d51980688b7b816df
Author: Chris Feng 
Commit: Chris Feng 

Avoid checking `*temp*' buffers

* exwm-input.el (exwm-input--on-buffer-list-update): The way of
detecting a switch from a `*temp*' buffer does not always work.
Disable it until we find a better way.
---
 exwm-input.el | 6 +-
 1 file changed, 1 insertion(+), 5 deletions(-)

diff --git a/exwm-input.el b/exwm-input.el
index ababbb6..2b421d0 100644
--- a/exwm-input.el
+++ b/exwm-input.el
@@ -277,11 +277,7 @@ ARGS are additional arguments to CALLBACK."
   (when (and (not (eq this-command #'handle-switch-frame))
  (not exwm-input--skip-buffer-list-update)
  (not (exwm-workspace--client-p))
- ;; The following conditions filter out events relating to temp
- ;; buffers.
- (eq (current-buffer) (window-buffer))
- (not (string-prefix-p " *temp*"
-   (buffer-name (car (last (buffer-list)))
+ (eq (current-buffer) (window-buffer)))
 (exwm--log "current-buffer=%S selected-window=%S"
(current-buffer) (selected-window))
 (redirect-frame-focus (selected-frame) nil)



[elpa] externals/exwm d78c562 4/4: Make `exwm-manage-configurations' more user friendly

2019-08-11 Thread Chris Feng
branch: externals/exwm
commit d78c562f9a90055b595cb783928af43597b5ca6c
Author: Chris Feng 
Commit: Chris Feng 

Make `exwm-manage-configurations' more user friendly

* exwm-manage.el (exwm-manage-configurations): Specify type for each
configuration option.
---
 exwm-manage.el | 78 ++
 1 file changed, 57 insertions(+), 21 deletions(-)

diff --git a/exwm-manage.el b/exwm-manage.el
index 6f89fff..797fc15 100644
--- a/exwm-manage.el
+++ b/exwm-manage.el
@@ -74,28 +74,64 @@ criterion would be applied."
   :type '(alist :key-type (sexp :tag "Matching criterion" nil)
 :value-type
 (plist :tag "Configurations"
-   :key-type
-   (choice
-(const :tag "Floating" floating)
-(const :tag "X" x)
-(const :tag "Y" y)
-(const :tag "Width" width)
-(const :tag "Height" height)
-(const :tag "Border width" border-width)
-(const :tag "Fullscreen" fullscreen)
-(const :tag "Floating mode-line" floating-mode-line)
-(const :tag "Tiling mode-line" tiling-mode-line)
-(const :tag "Floating header-line"
-   floating-header-line)
-(const :tag "Tiling header-line" tiling-header-line)
-(const :tag "Char-mode" char-mode)
-(const :tag "Prefix keys" prefix-keys)
-(const :tag "Simulation keys" simulation-keys)
-(const :tag "Workspace" workspace)
-(const :tag "Managed" managed)
+   :options
+   (((const :tag "Floating" floating) boolean)
+((const :tag "X" x) number)
+((const :tag "Y" y) number)
+((const :tag "Width" width) number)
+((const :tag "Height" height) number)
+((const :tag "Border width" border-width) integer)
+((const :tag "Fullscreen" fullscreen) boolean)
+((const :tag "Floating mode-line" floating-mode-line)
+ sexp)
+((const :tag "Tiling mode-line" tiling-mode-line) sexp)
+((const :tag "Floating header-line"
+floating-header-line)
+ sexp)
+((const :tag "Tiling header-line" tiling-header-line)
+ sexp)
+((const :tag "Char-mode" char-mode) boolean)
+((const :tag "Prefix keys" prefix-keys)
+ (repeat key-sequence))
+((const :tag "Simulation keys" simulation-keys)
+ (alist :key-type (key-sequence :tag "From")
+:value-type (key-sequence :tag "To")))
+((const :tag "Workspace" workspace) integer)
+((const :tag "Managed" managed) boolean)
 ;; For forward compatibility.
-(other))
-   :value-type (sexp :tag "Value" nil
+((other) sexp
+  ;; TODO: This is admittedly ugly.  We'd be better off with an event type.
+  :get (lambda (symbol)
+ (mapcar (lambda (pair)
+   (let* ((match (car pair))
+  (config (cdr pair))
+  (prefix-keys (plist-get config 'prefix-keys)))
+ (when prefix-keys
+   (setq config (copy-tree config)
+ config (plist-put config 'prefix-keys
+   (mapcar (lambda (i)
+ (if (sequencep i)
+ i
+   (vector i)))
+   prefix-keys
+ (cons match config)))
+ (default-value symbol)))
+  :set (lambda (symbol value)
+ (set symbol
+  (mapcar (lambda (pair)
+(let* ((match (car pair))
+   (config (cdr pair))
+   (prefix-keys (plist-get config 'prefix-keys)))
+  (when prefix-keys
+(setq config (copy-tree config)
+  config (plist-put config 'prefix-keys
+(mapcar (lambda (i)
+  (if (sequencep i)
+  

[elpa] externals/exwm 1f2bd54 2/4: Fix a regression with systemtray

2019-08-11 Thread Chris Feng
branch: externals/exwm
commit 1f2bd54c117b3eeb88b6af1e8627030f00e37898
Author: Chris Feng 
Commit: Chris Feng 

Fix a regression with systemtray

* exwm-systemtray.el (exwm-systemtray--on-workspace-switch)
(exwm-systemtray--on-randr-refresh): Instead of retrieving the real
frame height, manually calculate it with workarea height and
menu-bar/tool-bar size.
---
 exwm-systemtray.el | 40 +---
 1 file changed, 25 insertions(+), 15 deletions(-)

diff --git a/exwm-systemtray.el b/exwm-systemtray.el
index 80505c2..a095bfa 100644
--- a/exwm-systemtray.el
+++ b/exwm-systemtray.el
@@ -331,27 +331,37 @@ You shall use the default value if using auto-hide 
minibuffer."
   "Reparent/Refresh the system tray in `exwm-workspace-switch-hook'."
   (exwm--log)
   (unless (exwm-workspace--minibuffer-own-frame-p)
-(xcb:+request exwm-systemtray--connection
-(make-instance 'xcb:ReparentWindow
-   :window exwm-systemtray--embedder-window
-   :parent (string-to-number
-(frame-parameter exwm-workspace--current
- 'window-id))
-   :x 0
-   :y (- (frame-pixel-height exwm-workspace--current)
- exwm-systemtray-height
+(let ((geometry (frame-geometry exwm-workspace--current)))
+  (xcb:+request exwm-systemtray--connection
+  (make-instance 'xcb:ReparentWindow
+ :window exwm-systemtray--embedder-window
+ :parent (string-to-number
+  (frame-parameter exwm-workspace--current
+   'window-id))
+ :x 0
+ :y (- (elt (elt exwm-workspace--workareas
+ exwm-workspace-current-index)
+3)
+   (or (cddr (assq 'menu-bar-size geometry)) 0)
+   (or (cddr (assq 'tool-bar-size geometry)) 0)
+   exwm-systemtray-height)
   (exwm-systemtray--refresh))
 
 (defun exwm-systemtray--on-randr-refresh ()
   "Reposition/Refresh the system tray in `exwm-randr-refresh-hook'."
   (exwm--log)
   (unless (exwm-workspace--minibuffer-own-frame-p)
-(xcb:+request exwm-systemtray--connection
-(make-instance 'xcb:ConfigureWindow
-   :window exwm-systemtray--embedder-window
-   :value-mask xcb:ConfigWindow:Y
-   :y (- (frame-pixel-height exwm-workspace--current)
- exwm-systemtray-height
+(let ((geometry (frame-geometry exwm-workspace--current)))
+  (xcb:+request exwm-systemtray--connection
+  (make-instance 'xcb:ConfigureWindow
+ :window exwm-systemtray--embedder-window
+ :value-mask xcb:ConfigWindow:Y
+ :y (- (elt (elt exwm-workspace--workareas
+ exwm-workspace-current-index)
+3)
+   (or (cddr (assq 'menu-bar-size geometry)) 0)
+   (or (cddr (assq 'tool-bar-size geometry)) 0)
+   exwm-systemtray-height)
   (exwm-systemtray--refresh))
 
 (defalias 'exwm-systemtray--on-struts-update



[elpa] externals/exwm updated (37098a4 -> d78c562)

2019-08-11 Thread Chris Feng
ch11ng pushed a change to branch externals/exwm.

  from  37098a4   Fix detection of modifier keys in Emacs events
   new  dd6f5c3   Inform user about making a frame a workspace
   new  1f2bd54   Fix a regression with systemtray
   new  a1cf0d9   Avoid checking `*temp*' buffers
   new  d78c562   Make `exwm-manage-configurations' more user friendly


Summary of changes:
 exwm-input.el  |  6 +
 exwm-manage.el | 78 +++---
 exwm-systemtray.el | 40 +---
 exwm-workspace.el  |  6 +++--
 4 files changed, 87 insertions(+), 43 deletions(-)