about summary refs log tree commit diff
diff options
context:
space:
mode:
authorChris Feng <chris.w.feng@gmail.com>2016-02-07T02·45+0800
committerChris Feng <chris.w.feng@gmail.com>2016-02-07T02·45+0800
commite2edf81271e1a7dd148aa7386b730ae2838c2860 (patch)
treeeb89d010d631444cd2ac8cce377f2724092e6a5e
parent3d643fafbe58d9b3e2dc9e864cbf05a2d911e1b2 (diff)
Add some useful key bindings
* exwm-core.el (exwm--floating-mode-line-format, exwm--mode-line-format)
(exwm-mode-map):
* exwm-floating.el (exwm-floating-hide-mode-line)
(exwm-floating-show-mode-line):
* exwm-layout.el (exwm-layout-hide-mode-line, exwm-layout-show-mode-line)
(exwm-layout-toggle-mode-line):
Allow hide/show mode-line for all `exwm-mode' buffers with 'C-c M'.

* exwm-config.el (exwm-config-default): Add simulation keys for 'C-d' and
'C-k'.
-rw-r--r--exwm-config.el4
-rw-r--r--exwm-core.el17
-rw-r--r--exwm-floating.el28
-rw-r--r--exwm-layout.el33
4 files changed, 49 insertions, 33 deletions
diff --git a/exwm-config.el b/exwm-config.el
index 512abfc0df..db8c68f445 100644
--- a/exwm-config.el
+++ b/exwm-config.el
@@ -55,7 +55,9 @@
      ([?\C-a] . home)
      ([?\C-e] . end)
      ([?\M-v] . prior)
-     ([?\C-v] . next)))
+     ([?\C-v] . next)
+     ([?\C-d] . delete)
+     ([?\C-k] . (S-end delete))))
   ;; Enable EXWM
   (exwm-enable)
   ;; Configure Ido
diff --git a/exwm-core.el b/exwm-core.el
index 61633c9775..9430b43548 100644
--- a/exwm-core.el
+++ b/exwm-core.el
@@ -79,14 +79,14 @@
   "Event mask set on all managed windows.")
 
 ;; Internal variables
-(defvar-local exwm--id nil)                        ;window ID
-(defvar-local exwm--container nil)                 ;container
-(defvar-local exwm--frame nil)                     ;workspace frame
-(defvar-local exwm--floating-frame nil)            ;floating frame
-(defvar-local exwm--floating-mode-line-format nil) ;save mode-line-format
-(defvar-local exwm--fullscreen nil)                ;used in fullscreen
-(defvar-local exwm--floating-frame-position nil)   ;used in fullscreen
-(defvar-local exwm--fixed-size nil)                ;fixed size
+(defvar-local exwm--id nil)               ;window ID
+(defvar-local exwm--container nil)        ;container
+(defvar-local exwm--frame nil)            ;workspace frame
+(defvar-local exwm--floating-frame nil)   ;floating frame
+(defvar-local exwm--mode-line-format nil) ;save mode-line-format
+(defvar-local exwm--fullscreen nil)       ;used in fullscreen
+(defvar-local exwm--floating-frame-position nil) ;used in fullscreen
+(defvar-local exwm--fixed-size nil)              ;fixed size
 (defvar-local exwm--on-KeyPress         ;KeyPress event handler
   #'exwm-input--on-KeyPress-line-mode)
 ;; Properties
@@ -122,6 +122,7 @@
     (define-key map "\C-cm" #'exwm-floating-toggle-floating)
     (define-key map "\C-cq" #'exwm-input-send-next-key)
     (define-key map "\C-cv" #'exwm-workspace-move-window)
+    (define-key map "\C-cM" #'exwm-layout-toggle-mode-line)
     map)
   "Keymap for `exwm-mode'.")
 
diff --git a/exwm-floating.el b/exwm-floating.el
index ff584c03ee..34e9f947e7 100644
--- a/exwm-floating.el
+++ b/exwm-floating.el
@@ -248,30 +248,10 @@ are provided. You should call `xcb:flush' and restore the value of
                                 (window-mode-line-height)
                                 (window-header-line-height)))))
 
-(defun exwm-floating-hide-mode-line ()
-  "Hide mode-line of a floating frame."
-  (interactive)
-  (unless (eq major-mode 'exwm-mode)
-    (user-error "[EXWM] Please use this command with EXWM buffers"))
-  (when (and exwm--floating-frame mode-line-format)
-    (setq exwm--floating-mode-line-format mode-line-format
-          mode-line-format nil)
-    (exwm-floating--fit-frame-to-window)
-    (xcb:flush exwm--connection)
-    (setq window-size-fixed exwm--fixed-size)))
-
-(defun exwm-floating-show-mode-line ()
-  "Show mode-line of a floating frame."
-  (interactive)
-  (unless (eq major-mode 'exwm-mode)
-    (user-error "[EXWM] Please use this command with EXWM buffers"))
-  (when (and exwm--floating-frame (not mode-line-format))
-    (setq mode-line-format exwm--floating-mode-line-format
-          exwm--floating-mode-line-format nil)
-    (exwm-floating--fit-frame-to-window)
-    (exwm-input-grab-keyboard)       ;mode-line-format may be outdated
-    (xcb:flush exwm--connection)
-    (setq window-size-fixed exwm--fixed-size)))
+(define-obsolete-function-alias 'exwm-floating-hide-mode-line
+  'exwm-layout-hide-mode-line "25.1" "Hide mode-line of a floating frame.")
+(define-obsolete-function-alias 'exwm-floating-show-mode-line
+  'exwm-layout-show-mode-line "25.1" "Show mode-line of a floating frame.")
 
 (defvar exwm-floating--moveresize-calculate nil
   "Calculate move/resize parameters [buffer event-mask x y width height].")
diff --git a/exwm-layout.el b/exwm-layout.el
index 871438f9f6..df603f709a 100644
--- a/exwm-layout.el
+++ b/exwm-layout.el
@@ -392,6 +392,39 @@ See also `exwm-layout-enlarge-window'."
   (interactive "p")
   (exwm-layout-enlarge-window (- delta) t))
 
+(defun exwm-layout-hide-mode-line ()
+  "Hide mode-line."
+  (interactive)
+  (when (and (eq major-mode 'exwm-mode) mode-line-format)
+    (setq exwm--mode-line-format mode-line-format
+          mode-line-format nil)
+    (if (not exwm--floating-frame)
+        (exwm-layout--show exwm--id)
+      (exwm-floating--fit-frame-to-window)
+      (xcb:flush exwm--connection)
+      (setq window-size-fixed exwm--fixed-size))))
+
+(defun exwm-layout-show-mode-line ()
+  "Show mode-line."
+  (interactive)
+  (when (and (eq major-mode 'exwm-mode) (not mode-line-format))
+    (setq mode-line-format exwm--mode-line-format
+          exwm--mode-line-format nil)
+    (if (not exwm--floating-frame)
+        (exwm-layout--show exwm--id)
+      (exwm-floating--fit-frame-to-window)
+      (exwm-input-grab-keyboard)
+      (xcb:flush exwm--connection)
+      (setq window-size-fixed exwm--fixed-size))))
+
+(defun exwm-layout-toggle-mode-line ()
+  "Toggle the display of mode-line."
+  (interactive)
+  (when (eq major-mode 'exwm-mode)
+    (if mode-line-format
+        (exwm-layout-hide-mode-line)
+      (exwm-layout-show-mode-line))))
+
 (defun exwm-layout--init ()
   "Initialize layout module."
   ;; Auto refresh layout