Location: lg@xxxxxxxxxxxxxx http://arch.xwem.org/2005/
Revision: xwem--main--2.1--patch-14
Archive: lg@xxxxxxxxxxxxxx
Creator: Zajcev Evgeny <lg@xxxxxxxx>
Date: Fri Feb 4 02:52:39 MSK 2005
Standard-date: 2005-02-03 23:52:39 GMT
Modified-files: dockapp/xwem-time.el lisp/xwem-clients.el
lisp/xwem-keydefs.el lisp/xwem-launcher.el
New-patches: dev@xxxxxxxxxxxxxxxx/xwem--dev--2.1--patch-8
lg@xxxxxxxxxxxxxx/xwem--main--2.1--patch-14
Summary: merge from ckent, xwem-open-file command added
Keywords: merge, ckent, cleanup, xwem-open-file
* dockapp/xwem-time.el (xwem-time-event-handler): [fixes] typo
* lisp/xwem-clients.el (xwem-switch-other-client): [addon] try to avoid
selecting client that would be choosen by `xwem-method-other-client'.
This increases accuracy of hitting necessary client when using `H-x
H-l'.
* lisp/xwem-keydefs.el (H-x H-f): [new] xwem-open-file
* lisp/xwem-launcher.el (xwem-open-file-commands-alist): [new] Custom
variable to control `xwem-open-file'.
* lisp/xwem-launcher.el (xwem-open-file): [new cmd] Interactively open
some file.
* added files
{arch}/xwem/xwem--dev/xwem--dev--2.1/dev@xxxxxxxxxxxxxxxx/patch-log/patch-8
{arch}/xwem/xwem--main/xwem--main--2.1/lg@xxxxxxxxxxxxxx/patch-log/patch-14
* modified files
--- orig/dockapp/xwem-time.el
+++ mod/dockapp/xwem-time.el
@@ -1270,23 +1270,18 @@
(delete-itimer (X-Win-get-prop win 'xwem-time-timer))
(delete-itimer (X-Win-get-prop win 'xwem-time-load))
- (multiple-value-bind (m1 m2)
- (values-list (X-Win-get-prop win 'mail-pixmap))
- (XFreePixmap (xwem-dpy) m1)
- (XFreePixmap (xwem-dpy) m2))
- (multiple-value-bind (m1 m2)
- (values-list (X-Win-get-prop win 'load-pixmap))
- (XFreePixmap (xwem-dpy) m1)
- (XFreePixmap (xwem-dpy) m2))
- (multiple-value-bind (m1 m2)
- (values-list (X-Win-get-prop win 'time-pixmap))
- (XFreePixmap (xwem-dpy) m1)
- (XFreePixmap (xwem-dpy) m2))
- (multiple-value-bind (m1 m2)
- (values-list (X-Win-get-prop win 'mask-pixmap))
- (XFreePixmap (xwem-dpy) m1)
- (XFreePixmap (xwem-dpy) m2))
+ (let (cp)
+ (setq cp (X-Win-get-prop win 'mail-pixmap))
+ (XFreePixmap (xwem-dpy) (car cp))
+ (XFreePixmap (xwem-dpy) (cdr cp))
+ (setq cp (X-Win-get-prop win 'load-pixmap))
+ (XFreePixmap (xwem-dpy) (car cp))
+ (XFreePixmap (xwem-dpy) (cdr cp))
+ (setq cp (X-Win-get-prop win 'time-pixmap))
+ (XFreePixmap (xwem-dpy) (car cp))
+ (XFreePixmap (xwem-dpy) (cdr cp)))
+ (XFreePixmap (xwem-dpy) (X-Win-get-prop win 'mask-pixmap))
(XFreeGC (xwem-dpy) (X-Win-get-prop win 'time-gc))
(XFreeGC (xwem-dpy) (X-Win-get-prop win 'time-mask-gc))
@@ -1302,7 +1297,9 @@
(X-Win-rem-prop win 'mail-pixmap)
(X-Win-rem-prop win 'load-pixmap)
(X-Win-rem-prop win 'time-pixmap)
- (X-Win-rem-prop win 'mask-pixmap))
+ (X-Win-rem-prop win 'mask-pixmap)
+ (X-Win-rem-prop win 'time-gc)
+ (X-Win-rem-prop win 'time-mask-gc))
((:X-ButtonPress :X-ButtonRelease)
(let ((xwem-override-local-map xwem-time-map))
--- orig/lisp/xwem-clients.el
+++ mod/lisp/xwem-clients.el
@@ -845,15 +845,20 @@
`xwem-cl-switch-to-other'."
(xwem-interactive "p")
- (let ((ocl (xwem-cl-selected)))
+ (let* ((cl (xwem-cl-selected))
+ (ocl (xwem-method-other-client cl)))
(while (> arg 0)
- (setq ocl (xwem-cl-other ocl))
+ (setq cl (xwem-cl-other
+ cl :clients (xwem-clients-list
+ `(lambda (cl)
+ (not (eq cl ,ocl))))))
(decf arg))
-
- (unless (xwem-cl-p ocl)
- (error 'xwem-error "Invalid other client"))
+ (unless (xwem-cl-p cl)
+ (setq cl ocl))
+ (unless (xwem-cl-p cl)
+ (error 'xwem-error "No other client"))
- (xwem-select-client ocl)))
+ (xwem-select-client cl)))
;;;###autoload(autoload 'xwem-attach-client "xwem-clients" "" t)
(define-xwem-command xwem-attach-client (arg)
--- orig/lisp/xwem-keydefs.el
+++ mod/lisp/xwem-keydefs.el
@@ -366,6 +366,7 @@
(define-key xwem-global-map (xwem-kbd "H-y") 'xwem-paste-cutbuffer)
;;; Misc bindings
+(define-key xwem-global-map (xwem-kbd "H-x H-f") 'xwem-open-file)
;; Making holer in frames
(define-key xwem-global-map (xwem-kbd "H-x h") 'xwem-holer-prefix)
;; Log your work
--- orig/lisp/xwem-launcher.el
+++ mod/lisp/xwem-launcher.el
@@ -142,17 +142,17 @@
(defcustom xwem-launch-dock-width 24
"*Launcher dockapp width."
:type 'number
- :group 'xwem-launch)
+ :group 'xwem-launcher)
(defcustom xwem-launch-dock-height 24
"*Launcher dockapp height."
:type 'number
- :group 'xwem-launch)
+ :group 'xwem-launcher)
(defcustom xwem-launch-dock-thick 2
"*Launcher dockapp border thickness."
:type 'number
- :group 'xwem-launch)
+ :group 'xwem-launcher)
;;; Internal variables
@@ -626,7 +626,7 @@
((background-dark shadow-dark) (:foreground "black"))
(t (:foreground "gray70" :background "black")))
"Default background face for launcher docks."
- :group 'xwem-launch
+ :group 'xwem-launcher
:group 'xwem-faces)
(defvar xwem-launch-dock-keymap
@@ -857,7 +857,48 @@
(xwem-XTrayInit (xwem-dpy) xwin dockid dockgroup dockalign)
xwin))
-
+
+
+;;; Open file
+(defcustom xwem-open-file-commands-alist
+ '(("\\.\\(ps\\|ps_pages\\|eps\\)\\'" . "gv")
+ ("\\.pdf\\'" . "acroread")
+ ("\\.\\(jpe?g\\|gif\\|png\\)\\'" . "display")
+ ("\\.dvi\\'" . "xdvi")
+ ("\\.txt\\'" . "xterm -e less"))
+ "*Alist specifying how to view special types of files.
+`xwem-open-file-commands-alist' can be dynamically changed by
+`xwemw-open-file' when registering new file extensions, so we
+recommend to use `xwem-desktop' package to save/restore
+`xwem-open-file-commands-alist' value between sessions."
+ :group 'xwem-launcher
+ :type '(repeat (cons (string :tag "Regexp")
+ (string :tag "Command"))))
+
+;;;###autoload(autoload 'xwem-open-file "xwem-launcher" "Open file with
appopriate command" t)
+(define-xwem-command xwem-open-file (file &optional command)
+ "Open FILE with command specified by COMMAND."
+ (xwem-interactive
+ (let* ((file (expand-file-name (xwem-read-filename "Find File: ")))
+ cmd)
+ (dolist (elt xwem-open-file-commands-alist)
+ (if (string-match (car elt) file)
+ (setq cmd (cdr elt))))
+ (unless cmd
+ (setq cmd (xwem-read-from-minibuffer "Command: "))
+ ;; Try to register FILE extension in
+ ;; `xwem-open-file-commands-alist'.
+ (let ((fext (and (string-match "\\.\\(.+\\)\\'" file)
+ (match-string 1 file))))
+ (when (and fext
+ (xwem-under-minibuffer
+ (y-or-n-p (format "Register '%s' extension?: " fext))))
+ (push (cons (concat "\\." fext "\\'") cmd)
+ xwem-open-file-commands-alist))))
+ (list file cmd)))
+
+ (xwem-launch (format "%s %s" command file)))
+
(provide 'xwem-launcher)
|