Location: lg@xxxxxxxxxxxxxx http://arch.xwem.org/2005/
Revision: xwem--main--2.1--patch-26
Archive: lg@xxxxxxxxxxxxxx
Creator: Zajcev Evgeny <lg@xxxxxxxx>
Date: Wed Feb 23 03:00:08 MSK 2005
Standard-date: 2005-02-23 00:00:08 GMT
Modified-files: extra/xwem-keytt.el extra/xwem-vline.el
lisp/xwem-clients.el lisp/xwem-help.el
lisp/xwem-keydefs.el lisp/xwem-manage.el
lisp/xwem-minibuffer.el lisp/xwem-misc.el
lisp/xwem-netwm.el lisp/xwem-selections.el
New-patches: dev@xxxxxxxxxxxxxxxx/xwem--dev--2.1--patch-20
dev@xxxxxxxxxxxxxxxx/xwem--dev--2.1--patch-21
dev@xxxxxxxxxxxxxxxx/xwem--dev--2.1--patch-22
lg@xxxxxxxxxxxxxx/xwem--main--2.1--patch-26
Summary: keytt addons imported, aspect ratio fix, vline fix, help fix
Keywords: keytt, aspect ratio, vline, help, modeline
* extra/xwem-keytt.el (xwem-keytt-global-mode): [new] Function to enable
global xwem-keytt minor mode. Just add `(xwem-keytt-global-mode)' into
xwemrc.el to start using xwem-keytt globally. xwem-keytt currently
supports: gv, firefox, acroread, xpdf, xdvi, djview, xchm applications.
* extra/xwem-vline.el (xwem-turn-on-vline): [addon] Accepts numeric
prefix argument to specify column at which vline to display. NOTE:
`xwem-turn-on-vline' command is not bound by default.
* lisp/xwem-clients.el (xwem-cl-switch-other-omit-mode-specific): [new]
Customizable variable to control `xwem-switch-other-client' command
behaviour. Non-nil - mean new behaviour (smart switcher to recent
client), nil - old behaviour (always switch to last most recent client)
* lisp/xwem-clients.el (xwem-cl-correct-size-for-size): [addon] Support
for aspect ratio, final, thanks to Richard for contribution!
* lisp/xwem-help.el (xwem-describe-prefix-bindings): [fix] Show minor
mode bindings as well.
* lisp/xwem-help.el (xwem-help-mode): [new] Command to describe current
major/minor mode. By default bound to `H-h m'
* lisp/xwem-keydefs.el (xwem-help-map): [addon] `H-h m'
* lisp/xwem-manage.el (xwem-applications-alist): [addon] xdvi, xpdf, xchm
applications added.
* lisp/xwem-minibuffer.el (xwem-manage-minibuffer): [bug fix] Select
correct position, thanks to Steve's eagle eyes!
* lisp/xwem-minibuffer.el (modeline): fixes, automatical minibuffer
resizing on `xwem-modeline-enable' and `xwem-modeline-disable'
commands. Everybody please try H-M-x xwem-modeline-enable RET ..
* lisp/xwem-netwm.el (fullscreen): [addon] Set major mode property
'omit-aspect-ratio to disregard client's aspect ratio when doing
refiting.
* lisp/xwem-selections.el (xwem-selections-no-remove): [change] t now by
default. Was discussed and agreed.
* lisp/xwem-selections.el (xwem-copy-cutbuffer): [fix] To make `H-w' work
with mozilla selections.
* added files
{arch}/xwem/xwem--dev/xwem--dev--2.1/dev@xxxxxxxxxxxxxxxx/patch-log/patch-20
{arch}/xwem/xwem--dev/xwem--dev--2.1/dev@xxxxxxxxxxxxxxxx/patch-log/patch-21
{arch}/xwem/xwem--dev/xwem--dev--2.1/dev@xxxxxxxxxxxxxxxx/patch-log/patch-22
{arch}/xwem/xwem--main/xwem--main--2.1/lg@xxxxxxxxxxxxxx/patch-log/patch-26
* modified files
--- orig/extra/xwem-keytt.el
+++ mod/extra/xwem-keytt.el
@@ -27,7 +27,12 @@
;;; Commentary:
-;;
+;; Add this:
+
+;; (xwem-keytt-global-mode)
+
+;; to your ~/.xwem/xwemrc.el to enable keytt minor mode at manage time
+;; for clients that have support.
;;; Code:
@@ -99,25 +104,39 @@
(xwem-turn-on-keytt client)
(xwem-turn-off-keytt client))))
+;;;###autoload
+(defun xwem-keytt-global-mode ()
+ "Enable global mode.
+For each client that have support for keytt minor mode,
+xwem-keytt-minor-mode will be enabled at manage time."
+ (add-hook 'xwem-cl-manage-hook 'xwem-turn-on-keytt))
+
-;;; Add some predefined keymaps
+;;;; Add some predefined keymaps:
+
+(defmacro xwem-keytt-define-universal-argument-commands (keymap)
+ "Define command universal prefix argument commands for KEYMAP."
+ `(progn
+ (define-key ,keymap (kbd "C-u") 'xwem-universal-argument)
+ (define-key ,keymap (kbd "C-0") 'xwem-universal-digit)
+ (define-key ,keymap (kbd "C-1") 'xwem-universal-digit)
+ (define-key ,keymap (kbd "C-2") 'xwem-universal-digit)
+ (define-key ,keymap (kbd "C-3") 'xwem-universal-digit)
+ (define-key ,keymap (kbd "C-4") 'xwem-universal-digit)
+ (define-key ,keymap (kbd "C-5") 'xwem-universal-digit)
+ (define-key ,keymap (kbd "C-6") 'xwem-universal-digit)
+ (define-key ,keymap (kbd "C-7") 'xwem-universal-digit)
+ (define-key ,keymap (kbd "C-8") 'xwem-universal-digit)
+ (define-key ,keymap (kbd "C-9") 'xwem-universal-digit)))
+
+
+;; GV
(defvar xwem-keytt-gv-keymap (make-sparse-keymap 'xwem-keytt-gv-keymap)
"Keytt keymap for GV commands.")
(xwem-keytt-add-keymap '((application "gv")) xwem-keytt-gv-keymap t)
;; Universal argument, so `C-5 C-n' for exampl will emulate five `C-n'
-(define-key xwem-keytt-gv-keymap (kbd "C-u") 'xwem-universal-argument)
-(define-key xwem-keytt-gv-keymap (kbd "C-0") 'xwem-universal-digit)
-(define-key xwem-keytt-gv-keymap (kbd "C-1") 'xwem-universal-digit)
-(define-key xwem-keytt-gv-keymap (kbd "C-2") 'xwem-universal-digit)
-(define-key xwem-keytt-gv-keymap (kbd "C-3") 'xwem-universal-digit)
-(define-key xwem-keytt-gv-keymap (kbd "C-4") 'xwem-universal-digit)
-(define-key xwem-keytt-gv-keymap (kbd "C-5") 'xwem-universal-digit)
-(define-key xwem-keytt-gv-keymap (kbd "C-6") 'xwem-universal-digit)
-(define-key xwem-keytt-gv-keymap (kbd "C-7") 'xwem-universal-digit)
-(define-key xwem-keytt-gv-keymap (kbd "C-8") 'xwem-universal-digit)
-(define-key xwem-keytt-gv-keymap (kbd "C-9") 'xwem-universal-digit)
-
+(xwem-keytt-define-universal-argument-commands xwem-keytt-gv-keymap)
(define-key xwem-keytt-gv-keymap (kbd "C-x C-f") (kbd "o")) ; open
(define-key xwem-keytt-gv-keymap (kbd "C-x C-c") (kbd "q")) ; exit
(define-key xwem-keytt-gv-keymap (kbd "C-x C-w") (kbd "s")) ; save marked
@@ -132,6 +151,121 @@
(define-key xwem-keytt-gv-keymap (kbd "C-<SPC>") (kbd "M")) ; mark page
(define-key xwem-keytt-gv-keymap (kbd "C-g") (kbd "N")) ; unmark page
+
+;; FIREFOX
+(defvar xwem-keytt-firefox-keymap (make-sparse-keymap
'xwem-keytt-firefox-keymap)
+ "Keytt keymap for firefox commands.")
+(xwem-keytt-add-keymap '((application "firefox")) xwem-keytt-firefox-keymap t)
+
+(xwem-keytt-define-universal-argument-commands xwem-keytt-firefox-keymap)
+(define-key xwem-keytt-firefox-keymap (kbd "C-x C-f") (kbd "C-l")) ; open url
+(define-key xwem-keytt-firefox-keymap (kbd "C-n") (kbd "<down>")) ; scroll down
+(define-key xwem-keytt-firefox-keymap (kbd "C-p") (kbd "<up>")) ; scroll up
+(define-key xwem-keytt-firefox-keymap (kbd "C-f") (kbd "<right>")) ; scroll
right
+(define-key xwem-keytt-firefox-keymap (kbd "C-b") (kbd "<left>")) ; scroll left
+(define-key xwem-keytt-firefox-keymap (kbd "C-v") (kbd "<next>")) ; scroll
page down
+(define-key xwem-keytt-firefox-keymap (kbd "M-v") (kbd "<prior>")) ; scroll
page up
+(define-key xwem-keytt-firefox-keymap (kbd "M->") (kbd "<end>")) ; goto end
+(define-key xwem-keytt-firefox-keymap (kbd "M-<") (kbd "<home>")) ; goto home
+(define-key xwem-keytt-firefox-keymap (kbd "C-s") (kbd "/")) ; search
+(define-key xwem-keytt-firefox-keymap (kbd "C-g") (kbd "<esc>")) ; cancel
search
+(define-key xwem-keytt-firefox-keymap (kbd "C-x [") (kbd "M-<left>")) ; back
+(define-key xwem-keytt-firefox-keymap (kbd "C-x ]") (kbd "M-<right>")) ;
forward
+
+
+;; ACROREAD
+(defvar xwem-keytt-acroread-keymap (make-sparse-keymap
'xwem-keytt-acroread-keymap)
+ "Keytt keymap for acroread commands.")
+(xwem-keytt-add-keymap '((application "acroread")) xwem-keytt-acroread-keymap
t)
+
+(xwem-keytt-define-universal-argument-commands xwem-keytt-acroread-keymap)
+(define-key xwem-keytt-acroread-keymap (kbd "C-x C-f") (kbd "C-o")) ; open file
+(define-key xwem-keytt-acroread-keymap (kbd "C-x C-c") (kbd "C-q")) ; quit
+(define-key xwem-keytt-acroread-keymap (kbd "C-x C-s") (kbd "C-S")) ; save copy
+(define-key xwem-keytt-acroread-keymap (kbd "C-x k") (kbd "C-w")) ; close file
+(define-key xwem-keytt-acroread-keymap (kbd "C-n") (kbd "<down>")) ; scroll
down
+(define-key xwem-keytt-acroread-keymap (kbd "C-p") (kbd "<up>")) ; scroll up
+(define-key xwem-keytt-acroread-keymap (kbd "C-v") (kbd "<right>")) ; next page
+(define-key xwem-keytt-acroread-keymap (kbd "M-v") (kbd "<left>")) ; prev page
+(define-key xwem-keytt-acroread-keymap (kbd "M->") (kbd "C-Sh-<next>")) ; last
page
+(define-key xwem-keytt-acroread-keymap (kbd "M-<") (kbd "C-Sh-<prior>")) ;
first page
+(define-key xwem-keytt-acroread-keymap (kbd "C-M-l") (kbd "C-<left>")) ; first
page
+(define-key xwem-keytt-acroread-keymap (kbd "C-x h") (kbd "C-a")) ; select all
+(define-key xwem-keytt-acroread-keymap (kbd "C-s") (kbd "C-f")) ; search
+(define-key xwem-keytt-acroread-keymap (kbd "+") (kbd "C-=")) ; zoom in
+(define-key xwem-keytt-acroread-keymap (kbd "-") (kbd "C--")) ; zoom out
+
+
+;; XPDF
+(defvar xwem-keytt-xpdf-keymap (make-sparse-keymap 'xwem-keytt-xpdf-keymap)
+ "Keytt keymap for xpdf commands.")
+(xwem-keytt-add-keymap '((application "xpdf")) xwem-keytt-xpdf-keymap t)
+
+(xwem-keytt-define-universal-argument-commands xwem-keytt-xpdf-keymap)
+(define-key xwem-keytt-xpdf-keymap (kbd "C-x C-f") (kbd "o")) ; open
+(define-key xwem-keytt-xpdf-keymap (kbd "C-x C-c") (kbd "q")) ; exit
+(define-key xwem-keytt-xpdf-keymap (kbd "C-s") (kbd "f")) ; find text
+(define-key xwem-keytt-xpdf-keymap (kbd "C-g") (kbd "<esc>")) ; stop searching
+(define-key xwem-keytt-xpdf-keymap (kbd "M-<") (kbd "<home>")) ; goto first
page
+(define-key xwem-keytt-xpdf-keymap (kbd "M->") (kbd "<end>")) ; goto last page
+(define-key xwem-keytt-xpdf-keymap (kbd "C-n") (kbd "<down>")) ; scroll down
+(define-key xwem-keytt-xpdf-keymap (kbd "C-p") (kbd "<up>")) ; scroll up
+(define-key xwem-keytt-xpdf-keymap (kbd "C-v") (kbd "n"))
+(define-key xwem-keytt-xpdf-keymap (kbd "M-v") (kbd "p"))
+
+;; XDVI
+(defvar xwem-keytt-xdvi-keymap (make-sparse-keymap 'xwem-keytt-xdvi-keymap)
+ "Keytt keymap for xdvi commands.")
+(xwem-keytt-add-keymap '((application "xdvi")) xwem-keytt-xdvi-keymap t)
+
+(xwem-keytt-define-universal-argument-commands xwem-keytt-xdvi-keymap)
+(define-key xwem-keytt-xdvi-keymap (kbd "C-x C-f") (kbd "C-F")) ; open
+(define-key xwem-keytt-xdvi-keymap (kbd "C-x C-c") (kbd "q")) ; exit
+(define-key xwem-keytt-xdvi-keymap (kbd "C-s") (kbd "f")); find text
+(define-key xwem-keytt-xdvi-keymap (kbd "M-<") (kbd "<home>")) ; goto first
page
+(define-key xwem-keytt-xdvi-keymap (kbd "M->") (kbd "<end>")) ; goto last page
+(define-key xwem-keytt-xdvi-keymap (kbd "C-n") (kbd "<down>")) ; scroll down
+(define-key xwem-keytt-xdvi-keymap (kbd "C-p") (kbd "<up>")) ; scroll up
+(define-key xwem-keytt-xdvi-keymap (kbd "C-v") (kbd "n"))
+(define-key xwem-keytt-xdvi-keymap (kbd "M-v") (kbd "p"))
+(define-key xwem-keytt-xdvi-keymap (kbd "C-l") (kbd "R")) ; reread dvi
+
+
+;; DJVIEW
+;; Note: djvu has trouble with the file menu having two of the entries liked
+;; to o so not likely to work untill its fixed.
+(defvar xwem-keytt-djvu-keymap (make-sparse-keymap 'xwem-keytt-djvu-keymap)
+ "Keytt keymap for djvu commands.")
+(xwem-keytt-add-keymap '((application "djview")) xwem-keytt-djvu-keymap t)
+
+(xwem-keytt-define-universal-argument-commands xwem-keytt-djvu-keymap)
+(define-key xwem-keytt-djvu-keymap (kbd "C-x C-f") (kbd "A-f O")) ; open
+(define-key xwem-keytt-djvu-keymap (kbd "C-x C-c") (kbd "A-f x")) ; exit
+(define-key xwem-keytt-djvu-keymap (kbd "C-x C-w") (kbd "A-f a")) ; save
current page
+(define-key xwem-keytt-djvu-keymap (kbd "C-x C-s") (kbd "A-f o")) ; save
+
+(define-key xwem-keytt-djvu-keymap (kbd "C-s") (kbd "f")); find text
+(define-key xwem-keytt-djvu-keymap (kbd "M-<") (kbd "<home>")) ; goto first
page
+(define-key xwem-keytt-djvu-keymap (kbd "M->") (kbd "<end>")) ; goto last page
+(define-key xwem-keytt-djvu-keymap (kbd "C-n") (kbd "<down>")) ; scroll down
+(define-key xwem-keytt-djvu-keymap (kbd "C-p") (kbd "<up>")) ; scroll up
+(define-key xwem-keytt-djvu-keymap (kbd "C-v") (kbd "<next>"))
+(define-key xwem-keytt-djvu-keymap (kbd "M-v") (kbd "<prior>"))
+
+
+;; XCHM
+;; Note: Must send mail to the xchm developer with patches to xchm and make
+;; it have more stuff it menus attached to keymaps
+(defvar xwem-keytt-xchm-keymap (make-sparse-keymap 'xwem-keytt-xchm-keymap)
+ "Keytt keymap for xchm commands.")
+(xwem-keytt-add-keymap '((application "xchm")) xwem-keytt-xchm-keymap t)
+
+(xwem-keytt-define-universal-argument-commands xwem-keytt-xchm-keymap)
+(define-key xwem-keytt-xchm-keymap (kbd "C-x C-f") (kbd "C-o")) ; open
+(define-key xwem-keytt-xchm-keymap (kbd "C-x C-c") (kbd "C-x")) ; exit
+(define-key xwem-keytt-xchm-keymap (kbd "C-s") (kbd "C-s ")); find show tree
+
+
;;; On-load actions:
(xwem-add-minor-mode 'xwem-keytt-minor-mode "KeyTT " 'xwem-keytt-keymap)
--- orig/extra/xwem-vline.el
+++ mod/extra/xwem-vline.el
@@ -61,22 +61,26 @@
(define-xwem-command xwem-turn-on-vline
(client &optional color column column-width)
"Enable vertical line minor mode for CLIENT."
- (xwem-interactive (list (xwem-cl-selected)))
+ (xwem-interactive (list (xwem-cl-selected) nil
+ (and xwem-prefix-arg
+ (prefix-numeric-value xwem-prefix-arg))
+ nil))
- (let ((vc xwem-vline-config))
+ (let ((vc xwem-vline-config)
+ (frame (xwem-misc-find-emacs-frame client)))
(while (and vc (not (xwem-cl-match-p client (car (car vc)))))
(setq vc (cdr vc)))
(setq vc (cdr (car vc)))
(when vc
- (unless color
- (setq color (eval (plist-get vc :color))))
- (unless column
- (setq column (eval (plist-get vc :column))))
- (unless column-width
- (setq column-width (eval (plist-get vc :column-width))))
+ (with-selected-frame (or frame (selected-frame))
+ (unless color
+ (setq color (eval (plist-get vc :color))))
+ (unless column
+ (setq column (eval (plist-get vc :column))))
+ (unless column-width
+ (setq column-width (eval (plist-get vc :column-width)))))
(let ((vline-xwin (xwem-cl-get-sys-prop client 'vline-xwin))
- (frame (xwem-misc-find-emacs-frame client))
(xoff (* column column-width)))
;; XXX Adjust XOFF for Emacs frames
(when (framep frame)
--- orig/lisp/xwem-clients.el
+++ mod/lisp/xwem-clients.el
@@ -147,6 +147,12 @@
(function :tag "Custom function"))
:group 'xwem-cl)
+(defcustom xwem-cl-switch-other-omit-mode-specific nil
+ "*Non-nil mean \\<xwem-global-map>\\[xwem-switch-other-client]
+wont select client that can be selected with
\\<xwem-global-map>\\[xwem-cl-switch-to-other]."
+ :type 'boolean
+ :group 'xwem-cl)
+
(defcustom xwem-client-strict-activation nil
"*Non-nil mean client is checked for aliveness before the activation.
Seting `xwem-client-strict-activation' to non-nil can decrease
@@ -813,25 +819,49 @@
(when (> bh he)
(setq he-rmd (- he-st he-rmd))))
- ;; Check aspect ratio
- (when (X-WMSize-paspect-p wmnh)
- (let ((mia-x (X-WMSize-min-aspect-x wmnh))
- (mia-y (X-WMSize-min-aspect-y wmnh))
- (maa-x (X-WMSize-max-aspect-x wmnh))
- (maa-y (X-WMSize-max-aspect-y wmnh))
- (ai 0)
- tmp-nw tmp-nh nw nh)
-
- ;; Find appropriate aspect index AI
- (while (and (incf ai)
- (< (setq tmp-nw (* mia-x ai)) (- wi bw))
- (< (setq tmp-nh (* mia-y ai)) (- he bh)))
- (setq nw tmp-nw nh tmp-nh))
+ ;; Check aspect ratio, note: major mode may have
+ ;; 'omit-aspect-ratio property, in this case no aspect ratio
+ ;; checking is performed.
+ ;; NOTE: not full support of aspect ratios, only minimal aspect
+ ;; ratio is used in geometry calculation.
+ (when (and (X-WMSize-paspect-p wmnh)
+ (not (xwem-manage-property
+ (xwem-cl-manage-type cl) 'omit-aspect-ratio)))
+ (let* ((mia-x (X-WMSize-min-aspect-x wmnh))
+ (mia-y (X-WMSize-min-aspect-y wmnh))
+; (maa-x (X-WMSize-max-aspect-x wmnh))
+; (maa-y (X-WMSize-max-aspect-y wmnh))
+ (client-ratio (/ (float mia-x) mia-y))
+ (window-ratio (/ (float wi) he))
+ nw nh)
+ ;; +-------------+
+ ;; | | <---- window aspect ratio <
+ ;; |MMMMMMMMMMMMM| client aspect ratio
+ ;; |MMMMMMMMMMMMM| (width = window width)
+ ;; | |
+ ;; +-------------+ +-------------+
+ ;; | MMMMMMM |
+ ;; window aspect ratio > ----> | MMMMMMM |
+ ;; client aspect ratio | MMMMMMM |
+ ;; (height = window height) | MMMMMMM |
+ ;; +-------------+
+
+ ;; width width = ratio * height
+ ;; ratio = ------ =>
+ ;; height height = width / ratio
+ ;;
+ ;; --ignotus
+ (cond ((< window-ratio client-ratio)
+ (setq nw (- wi bw)
+ nh (floor (/ nw client-ratio))))
+ ((> window-ratio client-ratio)
+ (setq nh (- he bh)
+ nw (floor (* client-ratio nh)))))
+ ;; Set reminders according to calculated NW/NH
(when (and nw nh)
(setq wi-rmd (- wi nw)
- he-rmd (- he nh)))))
- )
+ he-rmd (- he nh))))))
(unless (X-Geom-p clgmt)
(setf (xwem-cl-xgeom cl) (make-X-Geom))
@@ -900,7 +930,8 @@
(xwem-interactive "p")
(let* ((cl (xwem-cl-selected))
- (ocl (xwem-method-other-client cl)))
+ (ocl (and xwem-cl-switch-other-omit-mode-specific
+ (xwem-method-other-client cl))))
(while (> arg 0)
(setq cl (xwem-cl-other
cl :clients (xwem-clients-list
--- orig/lisp/xwem-help.el
+++ mod/lisp/xwem-help.el
@@ -157,34 +157,34 @@
(setq prefix (vconcat (butlast (append prefix nil)))))
(xwem-help-display (format "%s prefix" (key-description prefix))
- (when prefix
- (insert (format "Key bindings starting with `%s':\n"
- (key-description prefix))))
-
- ;; Minor modes bindings
- (mapc (lambda (mimap)
- (when (eval (car mimap))
- (xwem-describe-prefix-bindings-1 (cdr mimap) prefix
- (format "\nMinor mode bindings for `%S':" (eval (car mimap))))))
- xwem-minor-mode-map-alist)
-
- ;; Local bindings
- (xwem-describe-prefix-bindings-1 (xwem-local-map xwem-event-client) prefix
- (format "\n%s major mode bindings:"
- (upcase (symbol-name (xwem-cl-manage-type xwem-event-client)))))
-
- ;; Finally global bindings
- (xwem-describe-prefix-bindings-1 xwem-global-map prefix
- (format "\nGlobal bindings:"))
-
- ;; Frame bindings
- (xwem-describe-prefix-bindings-1 'xwem-frame-prefix prefix
- (format "\nFrame bindings:"))
-
- ;; Root bindings. Really need?
- (xwem-describe-prefix-bindings-1 'xwem-root-prefix prefix
- (format "\nRoot bindings:"))
- ))
+ (when prefix
+ (insert (format "Key bindings starting with `%s':\n"
+ (key-description prefix))))
+
+ ;; Minor modes bindings
+ (mapc (lambda (mimap)
+ (when (eval (car mimap))
+ (xwem-describe-prefix-bindings-1 (eval (cdr mimap)) prefix
+ (format "\nMinor mode bindings for `%S':" (car mimap)))))
+ xwem-minor-mode-map-alist)
+
+ ;; Local bindings
+ (xwem-describe-prefix-bindings-1 (xwem-local-map xwem-event-client) prefix
+ (format "\n%s major mode bindings:"
+ (upcase (symbol-name (xwem-cl-manage-type xwem-event-client)))))
+
+ ;; Finally global bindings
+ (xwem-describe-prefix-bindings-1 xwem-global-map prefix
+ (format "\nGlobal bindings:"))
+
+ ;; Frame bindings
+ (xwem-describe-prefix-bindings-1 'xwem-frame-prefix prefix
+ (format "\nFrame bindings:"))
+
+ ;; Root bindings. Really need?
+ (xwem-describe-prefix-bindings-1 'xwem-root-prefix prefix
+ (format "\nRoot bindings:"))
+ ))
;;;###autoload(autoload 'xwem-help-describe-bindings "xwem-help" "" t)
(define-xwem-command xwem-help-describe-bindings ()
@@ -227,7 +227,25 @@
(insert (documentation dfn)))
(t (insert "not documented"))))
)))
-
+
+;;;###autoload(autoload 'xwem-help-mode "xwem-help" "" t)
+(define-xwem-command xwem-help-mode (client)
+ "Describe client mode."
+ (xwem-interactive (list (xwem-cl-selected)))
+
+ (xwem-help-display (format "%S" (xwem-cl-manage-type client))
+ (insert (format "%s mode:\n" (upcase (symbol-name (xwem-cl-manage-type
client)))))
+ (insert (function-documentation
+ (get 'manage (xwem-cl-manage-type client))))
+ (insert "\nCommands:\n")
+ ;; Minor modes bindings
+ (mapc (lambda (mimap)
+ (when (eval (car mimap))
+ (xwem-describe-prefix-bindings-1 (eval (cdr mimap)) nil
+ (format "\nMinor mode bindings for `%S':" (car mimap)))))
+ xwem-minor-mode-map-alist)
+ ))
+
;;;###autoload(autoload 'xwem-help-describe-key "xwem-help" "" t)
(define-xwem-command xwem-help-describe-key (keys)
"Describe keysequence."
--- orig/lisp/xwem-keydefs.el
+++ mod/lisp/xwem-keydefs.el
@@ -209,6 +209,7 @@
(define-key xwem-help-map (xwem-kbd "s") 'xwem-strokes-list)
(define-key xwem-help-map (xwem-kbd "r") 'xwem-registers-list)
(define-key xwem-help-map (xwem-kbd "H-y") 'xwem-help-cutbuffers)
+(define-key xwem-help-map (xwem-kbd "m") 'xwem-help-mode)
;; Universal argument
(define-key xwem-global-map (xwem-kbd "H-u") 'xwem-universal-argument)
--- orig/lisp/xwem-manage.el
+++ mod/lisp/xwem-manage.el
@@ -114,6 +114,10 @@
(class-name "Emacs$")))
("xterm" (and (class-inst "^xterm$")
(class-name "^XTerm$")))
+ ("xdvi" (and (class-inst "^xdvi$")
+ (class-name "^XDvi$")))
+ ("xpdf" (class-name "^Xpdf$"))
+ ("xchm" (name "^xCHM"))
("acroread" (class-name "^AcroRead$"))
("djview" (and (class-inst "^djview$")
(class-name "^Djview$")))
--- orig/lisp/xwem-minibuffer.el
+++ mod/lisp/xwem-minibuffer.el
@@ -318,7 +318,9 @@
(defun xwem-manage-minibuffer (cl)
"Manage method for xwem minibuffers."
(let* ((xgeom (make-X-Geom :x 0 ; XXX
- :y (X-Geom-height (xwem-rootgeom))
+ :y (- (X-Geom-height (xwem-rootgeom))
+ xwem-minibuffer-outer-border-width
+ xwem-minibuffer-outer-border-width)
:width (- (X-Geom-width (xwem-rootgeom))
xwem-minibuffer-outer-border-width
xwem-minibuffer-outer-border-width)
@@ -660,14 +662,14 @@
;;; xwem minibuffer modeline using top gutter
(defvar xwem-modeline-format
- '(("--" red)
- ((symbol-name (xwem-cl-manage-type cl)) blue)
- (": " blue)
+ '(("--")
+ ((symbol-name (xwem-cl-manage-type cl)))
+ (": ")
("[")
((or (car (xwem-client-application cl))
"unknown"))
("] ")
- ((xwem-client-name cl) blue)
+ ((xwem-client-name cl) modeline-buffer-id)
(" ")
;; Minor modes
("(")
@@ -676,7 +678,7 @@
(cadr mm)))
xwem-minor-mode-alist ""))
(")")
- ("--" red))
+ ("--"))
"Modeline format.")
(xwem-make-variable-client-local 'xwem-modeline-format)
@@ -685,9 +687,8 @@
(mapconcat (lambda (me)
(let ((cl (xwem-cl-selected)))
(condition-case nil
- (xwem-str-with-faces
- (eval (car me))
- (append '(buffers-tab) (cdr me)))
+ (let ((str (copy-sequence (eval (car me)))))
+ (xwem-str-with-faces str (append '(modeline) (cdr me))))
(t "<error>"))))
xwem-modeline-format ""))
@@ -698,7 +699,7 @@
(let* ((str (xwem-modeline-regenerate))
(mw (frame-width (xwem-minib-frame xwem-minibuffer))))
- (set-specifier top-gutter str
+ (set-specifier top-gutter (substring str 0 (and (> (length str) mw) mw))
(xwem-minib-frame xwem-minibuffer))
)))
@@ -709,7 +710,14 @@
(add-hook 'xwem-cl-change-hook 'xwem-modeline-redraw)
(add-hook 'xwem-client-select-hook 'xwem-modeline-redraw)
- (xwem-modeline-redraw))
+
+ ;; Start showing gutter
+ (xwem-modeline-redraw-1)
+ ;; Fix xwem minibuffer height size
+ (xwem-client-resize
+ (xwem-minib-cl xwem-minibuffer) nil
+ (+ (X-Geom-height-with-borders (xwem-minib-cl-xgeom xwem-minibuffer))
+ (gutter-pixel-height 'top (xwem-minib-frame xwem-minibuffer)))))
;;;###autoload(autoload 'xwem-modeline-disable "xwem-minibuffer" nil t)
(define-xwem-command xwem-modeline-disable (arg)
@@ -718,7 +726,13 @@
(remove-hook 'xwem-cl-change-hook 'xwem-modeline-redraw)
(remove-hook 'xwem-client-select-hook 'xwem-modeline-redraw)
-
+
+ ;; Fix xwem minibuffer height size
+ (xwem-client-resize
+ (xwem-minib-cl xwem-minibuffer) nil
+ (- (X-Geom-height-with-borders (xwem-minib-cl-xgeom xwem-minibuffer))
+ (gutter-pixel-height 'top (xwem-minib-frame xwem-minibuffer))))
+ ;; Stop showing gutter
(set-specifier top-gutter nil (xwem-minib-frame xwem-minibuffer)))
--- orig/lisp/xwem-misc.el
+++ mod/lisp/xwem-misc.el
@@ -939,13 +939,12 @@
;;;###autoload(autoload 'xwem-execute-extended-command "xwem-misc" nil t)
(define-xwem-command xwem-execute-extended-command (arg)
"Execute Emacs command.
-If prefix ARG is given insert result to current client."
+Prefix ARG is passed to extended command."
(xwem-interactive "P")
(with-xwem-read-from-minibuffer
- (let ((retval (execute-extended-command arg)))
- (when arg
- (xwem-kbd-add-pending-keys (pp retval))))))
+ (let ((xwem-prefix-arg arg))
+ (execute-extended-command arg))))
;;;###autoload(autoload 'xwem-shell-command "xwem-misc" nil t)
(define-xwem-command xwem-shell-command (command arg)
--- orig/lisp/xwem-netwm.el
+++ mod/lisp/xwem-netwm.el
@@ -575,7 +575,8 @@
(define-xwem-manage-model fullscreen
"Managing model to show client at fullscreen size."
:match-spec '(function xwem-netwm-fullscreen-p)
-
+ :manage-properties '(omit-aspect-ratio t) ; disregard aspect ratio
+
:manage-method 'xwem-manage-fullscreen
:activate-method 'xwem-activate-fullscreen
:deactivate-method 'xwem-deactivate-fullscreen
--- orig/lisp/xwem-selections.el
+++ mod/lisp/xwem-selections.el
@@ -45,7 +45,7 @@
:type 'number
:group 'xwem-selections)
-(defcustom xwem-selections-no-remove nil
+(defcustom xwem-selections-no-remove t
"*Non-nil mean, reverse meaning of prefix arg for `xwem-paste-cutbuffer'
command.
Without prefix arg, keep currently pasted cutbuffer.
With prefix arg, remove it."
@@ -117,6 +117,7 @@
(insert "X cutbuffers:\n\n")
(insert "NUMBER VALUE\n")
(insert "------ -----\n")
+ (insert (format "%-9s%S\n" 'PRIMARY (get-selection)))
(mapc (lambda (n)
(let ((cbval (x-get-cutbuffer n)))
(when cbval
@@ -145,11 +146,13 @@
(xwem-copy-region-as-cutbuffer)
(decf which-one)
- (let ((cb0 (x-get-cutbuffer which-one)))
+ (let ((cb0 (condition-case nil
+ (get-selection)
+ (t (x-get-cutbuffer which-one)))))
(if (not cb0)
- (xwem-message 'note "No active CUTBUFFER")
+ (xwem-message 'note "No active selection")
(push cb0 xwem-selections)
- (xwem-message 'info "Copying CUTBUFFER%d: %S" which-one cb0)))))
+ (xwem-message 'info "Copying %S" cb0)))))
;;;###autoload(autoload 'xwem-paste-cutbuffer "xwem-selections" "Paste
CUTBUFFER0 to `xwem-selections'." t)
(define-xwem-command xwem-paste-cutbuffer (&optional no-remove)
|