Location: lg@xxxxxxxxxxxxxx http://arch.xwem.org/2005/
Revision: xwem--main--2.2--patch-11
Archive: lg@xxxxxxxxxxxxxx
Creator: Zajcev Evgeny <lg@xxxxxxxx>
Date: Sat May 14 02:30:34 MSD 2005
Standard-date: 2005-05-13 22:30:34 GMT
Modified-files: lisp/xwem-launcher.el
lisp/xwem-minibuffer.el
New-patches: dev@xxxxxxxxxxxxxxxx/xwem--dev--2.2--patch-7
lg@xxxxxxxxxxxxxx/xwem--main--2.2--patch-11
steve@xxxxxxxxxxxxxx/xwem--steve--2.2--patch-3
Summary: Various fixes, minibuffer resize mode should work now
Keywords: enhancement, internal
* lisp/xwem-launcher.el (xwem-execute-program): Set the process to be
killed without query to exit (S)XEmacs without having to confirm
killing client processes.
* lisp/xwem-launcher.el (xwem-execute-program-other-win): [fix] Do
splitting only after client successfully managed. This allows to avoid
spliting when client is not started/managed correctly.
* lisp/xwem-minibuffer.el (xwem-minib-resize-mode): At last i think we
have pretty stable and workable automatic resize mode for xwem
minibuffer, i.e. xwem minibuffer enlarges in height when there no
sufficient space to show contents, and reduces height when there
superfluous space. To start using resize-mode, just add either:
(xwem-minib-resize-mode 1)
or
(customize-set-variable 'xwem-minib-resize-mode t)
to your xwemrc.
* added files
{arch}/xwem/xwem--dev/xwem--dev--2.2/dev@xxxxxxxxxxxxxxxx/patch-log/patch-7
{arch}/xwem/xwem--main/xwem--main--2.2/lg@xxxxxxxxxxxxxx/patch-log/patch-11
{arch}/xwem/xwem--steve/xwem--steve--2.2/steve@xxxxxxxxxxxxxx/patch-log/patch-3
* modified files
--- orig/lisp/xwem-launcher.el
+++ mod/lisp/xwem-launcher.el
@@ -297,6 +297,7 @@
(setq proc (get-buffer-process
(comint-exec buffer-name job-name prg nil args)))
+ (process-kill-without-query proc)
(comint-mode)
;; COND because the proc may have died before the G-B-P is called.
(cond (proc (set-process-sentinel proc 'xwem-program-sentinel)
@@ -372,18 +373,20 @@
If SELECT-P is non-nil - select newly created client.
Return newly created client."
(let ((own (xwem-window-other 1))
- cl)
- ;; Check is there split needed
- (when (eq own (xwem-win-selected))
- (if (eq type 'horizontal)
- (xwem-window-split-horizontally 0)
- (xwem-window-split-vertically 0))
- (setq own (xwem-win-next (xwem-win-selected))))
-
- (setq cl (xwem-execute-program-expecting
- cmd nil `(expect-win ,(xwem-win-id own))))
- (when select-p
- (xwem-select-client cl))
+ (cl (xwem-execute-program-expecting cmd 'default)))
+ (when (xwem-cl-alive-p cl)
+ (when (xwem-win-only-one-p own)
+ (let ((xwem-win-split-hook nil)) ; Omit split hooks
+ (if (eq type 'horizontal)
+ (xwem-window-split-horizontally 0 own)
+ (xwem-window-split-vertically 0 own)))
+ (setq own (xwem-win-next own)))
+ ;; Manage CL in OWN window using generic mode
+ (xwem-client-change-manage-type
+ cl `(generic (expect-win ,(xwem-win-id own))))
+ ;; And possible select client
+ (when select-p
+ (xwem-select-client cl)))
cl))
(defun xwem-execute-program-other-win-horizontal (cmd &optional select-p)
@@ -541,7 +544,7 @@
;;;###autoload(autoload 'xwem-launch-xterm-other-win "xwem-launcher" "" t)
(define-xwem-command xwem-launch-xterm-other-win (arg)
"Execute xterm in other window, ARG have same meaning as in
`xwem-launch-xterm'."
- (xwem-interactive "p")
+ (xwem-interactive "_p")
(let ((xwem-launcher-function xwem-launcher-split-type))
(xwem-launch-xterm arg)))
@@ -549,7 +552,7 @@
;;;###autoload(autoload 'xwem-launch-xterm-other-frame "xwem-launcher" "" t)
(define-xwem-command xwem-launch-xterm-other-frame (arg)
"Execute xterm in other frame, ARG have same meaning as in
`xwem-launch-xterm'."
- (xwem-interactive "p")
+ (xwem-interactive "_p")
(let ((xwem-launcher-function xwem-launcher-frame-type))
(xwem-launch-xterm arg)))
@@ -567,7 +570,7 @@
(define-xwem-command xwem-launch-lupe-other-win (arg)
"Run lupe in other window.
Prefix ARG is actually unused."
- (xwem-interactive "P")
+ (xwem-interactive "_P")
(let ((xwem-launcher-function xwem-launcher-split-type))
(xwem-launch-lupe arg)))
--- orig/lisp/xwem-minibuffer.el
+++ mod/lisp/xwem-minibuffer.el
@@ -163,6 +163,14 @@
When `xwem-minibuffer' loses focus Emacs cursor hides, and unhides
when it focused."
:type 'boolean
+ :set (lambda (sym val)
+ (set sym val)
+ (when (and xwem-minibuffer (xwem-cl-p (xwem-minib-cl
xwem-minibuffer)))
+ (set-frame-property (xwem-minib-frame xwem-minibuffer)
+ 'text-cursor-visible-p
+ (or (not xwem-minibuffer-hide-cursor-mode)
+ (xwem-cl-selected-p (xwem-minib-cl
xwem-minibuffer))))))
+ :initialize 'custom-initialize-default
:group 'xwem-minibuffer)
(defcustom xwem-minibuffer-hide-show-parameter 0
@@ -629,7 +637,13 @@
(xwem-message 'init "Initializing minibuffer ... done"))
;;; Resize-minibuffer mode
-(defvar xwem-minib-rsz-saved-height nil)
+(defcustom xwem-minib-resize-mode nil
+ "*Non-nil activates xwem minibuffer automatic resize mode."
+ :type 'boolean
+ :set (lambda (sym val)
+ (xwem-minib-resize-mode (if val 1 -1)))
+ :initialize 'custom-initialize-default
+ :group 'xwem-minibuffer)
(defun xwem-minib-rsz-count-window-lines (&optional start end)
"Return number of window lines occupied by text in region.
@@ -638,77 +652,66 @@
Optional arguments START and END default to point-min and point-max,
respectively."
- (or start (setq start (point-min)))
- (or end (setq end (point-max)))
- (if (= start end)
- 0
+ (with-current-buffer
+ (window-buffer (frame-selected-window (xwem-minib-frame
xwem-minibuffer)))
(save-excursion
- (save-restriction
- (widen)
- (narrow-to-region start end)
- (goto-char start)
- (vertical-motion (buffer-size))))))
-
-(defun xwem-minib-rsz-restore ()
- "Restore xwem minibuffer size."
- (xwem-minib-rsz-resize xwem-minib-rsz-saved-height)
- (xwem-misc-lower-xwin (xwem-minib-xwin xwem-minibuffer)))
-
-(defun xwem-minib-rsz-check ()
- "Called in `pre-command-hook'.
-Check is next command is actually keyboard quit.
-If yes, then restore xwem minibuffer size."
- (when (member this-command '(minibuffer-keyboard-quit keyboard-quit))
- (xwem-minib-rsz-restore)))
+ (goto-char (point-min))
+ (vertical-motion (buffer-size)))))
-(defun xwem-minib-rsz-resize (&optional new-height)
+(define-xwem-deffered xwem-minib-rsz-resize (&optional new-height)
"Resize xwem minibuffer to fit either NEW-HEIGHT.
If NEW-HEIGHT is ommited, current window height considered."
- (let* ((frame (xwem-minib-frame xwem-minibuffer))
- (height (frame-height frame))
- (lines (or new-height (1+ (xwem-minib-rsz-count-window-lines))))
- w n)
- (cond ((or new-height xwem-minib-resize-exact (> lines height))
- (setq w (frame-pixel-height frame))
- (set-frame-size frame (frame-width frame) lines)
- (setq n (frame-pixel-height frame))
-
- (xwem-misc-raise-xwin (xwem-minib-xwin xwem-minibuffer))
-
- ;; Adjust xwem minibuffer cl height
- (xwem-client-resize (xwem-minib-cl xwem-minibuffer) nil
- (+ (X-Geom-height
- (xwem-minib-cl-xgeom xwem-minibuffer))
- (- n w)))
- ))))
+ (when (xwem-cl-selected-p (xwem-minib-cl xwem-minibuffer))
+ (let ((height (window-height
+ (frame-selected-window (xwem-minib-frame xwem-minibuffer))))
+ (lines (or new-height (xwem-minib-rsz-count-window-lines))))
+ (cond ((or new-height xwem-minib-resize-exact (> lines height))
+ ;; Adjust xwem minibuffer cl height
+ (xwem-client-resize (xwem-minib-cl xwem-minibuffer) nil
+ (+ (X-Geom-height-with-borders
+ (xwem-minib-cl-xgeom xwem-minibuffer))
+ (* (face-height 'default (xwem-minib-frame
xwem-minibuffer))
+ (- lines height)))))))))
+
+(defvar xwem-minib-rsz-saved-height nil)
-(defun xwem-minib-rsz-setup ()
+(define-xwem-deffered xwem-minib-rsz-setup ()
"Setup xwem resize minibuffer mode for xwem minibuffer."
- (when (eq (window-frame (minibuffer-window))
- (xwem-minib-frame xwem-minibuffer))
+ (when (xwem-cl-selected-p (xwem-minib-cl xwem-minibuffer))
(setq xwem-minib-rsz-saved-height
- (frame-property (selected-frame) 'height))
+ (X-Geom-height (xwem-minib-cl-xgeom xwem-minibuffer)))
- (make-local-hook 'minibuffer-exit-hook)
- (add-hook 'minibuffer-exit-hook 'xwem-minib-rsz-restore nil t)
- (make-local-hook 'pre-command-hook)
- (add-hook 'pre-command-hook 'xwem-minib-rsz-check nil t)
- (make-local-hook 'post-command-hook)
(add-hook 'post-command-hook 'xwem-minib-rsz-resize nil t)
(unless (and (boundp 'icomplete-mode)
(eval 'icomplete-mode)) ; shutup compiler
- (xwem-minib-rsz-resize))
- ))
+ (xwem-minib-rsz-resize))))
+
+(defun xwem-minib-rsz-restore ()
+ "Restore xwem minibuffer size."
+ (when (and (xwem-cl-selected-p (xwem-minib-cl xwem-minibuffer))
+ xwem-minib-rsz-saved-height)
+ (xwem-client-resize (xwem-minib-cl xwem-minibuffer) nil
+ xwem-minib-rsz-saved-height)
+
+ (remove-hook 'post-command-hook 'xwem-minib-rsz-resize)))
;;;###autoload(autoload 'xwem-minib-resize-mode "xwem-minibuffer" "" t)
(define-xwem-command xwem-minib-resize-mode (arg)
- "Start/stop xwem minibuffer auto-resize mode.
-With prefix ARG start, without - stop."
+ "Toggle xwem minibuffer auto-resize mode.
+If prefix ARG is positive number - start.
+If prefix ARG is negative number - stop.
+Otherwise toggle."
(xwem-interactive "P")
- (if arg
- (add-hook 'minibuffer-setup-hook 'xwem-minib-rsz-setup)
- (remove-hook 'minibuffer-setup-hook 'xwem-minib-rsz-setup)))
+ (if (or (and (numberp arg) (> arg 0))
+ (not xwem-minib-resize-mode))
+ (progn
+ (add-hook 'xwem-client-select-hook 'xwem-minib-rsz-setup)
+ (add-hook 'xwem-client-deselect-hook 'xwem-minib-rsz-restore)
+ (setq xwem-minib-resize-mode t))
+ (remove-hook 'xwem-client-select-hook 'xwem-minib-rsz-setup)
+ (remove-hook 'xwem-client-deselect-hook 'xwem-minib-rsz-restore)
+ (setq xwem-minib-resize-mode nil)))
;;; xwem minibuffer modeline using top gutter
(defvar xwem-modeline-format
|