xwem-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [XWEM]: registers


From: Zajcev Evgeny
Subject: Re: [XWEM]: registers
Date: Sun, 28 Nov 2004 02:59:59 +0300
User-agent: Gnus/5.1002 (Gnus v5.10.2) XEmacs/21.4 (Reasonable Discussion, berkeley-unix)

Steve Youngs <address@hidden> writes:

> Is there any way to start an xwem client and assign it to a register
> automatically?
>
> Currently I start...
>
>         Mozilla and H-x / m
>         Gnus and H-x / g
>         BitchX and H-x / b
>
> and put x (H-x / x) on my main XEmacs frame
>
> I have to do it manually, can it be automated?

Here is example how it can be done:

    ;; Atomatically put new client in register
    (defvar my-xwem-autoregister-alist
      '((?x (application "xemacs"))
        (?m (application "mozilla"))))
    
    (defun my-xwem-autoregister-client (cl)
      (let ((r (car (xwem-manda-find-match-1 cl my-xwem-autoregister-alist 
'cdr))))
        (when (and r (not (xwem-register-get r)))
          (xwem-register-set r (list 'XWEM-CLIENT cl)))))
    
    (add-hook 'xwem-cl-create-hook 'my-xwem-autoregister-client)

Another advantage you probably would like is to show client's register
in tab, here it is:

    ;; Show register(if any) in client's tab
    (defun my-xwem-check-register (cl)
      "Return xwem register where CL stored.
    If no register return \"-\"."
      (let ((rs xwem-registers))
        (while (and rs
                    (or (not (eq (cadr (car rs)) 'XWEM-CLIENT))
                        (not (eq (caddr (car rs)) cl))))
          (setq rs (cdr rs)))
        (if rs
            (char-to-string (car (car rs)))
          "")))
    
    (defadvice xwem-register-client (around call-client-change activate)
      "Call client change hook."
      (let ((rval (xwem-register-get (event-key (ad-get-arg 0)))))
        ad-do-it
    
        (when (and (xwem-cl-p rval)
                   (not (eq rval (xwem-cl-selected))))
          (run-hook-with-args 'xwem-cl-change-hook rval))
    
        (run-hook-with-args 'xwem-cl-change-hook (xwem-cl-selected))))
    
    ;; Additional tabber face, will be used in `xwem-tab-default-format'
    (define-xwem-face xwem-tabber-face1
      `(((frame-selected tab-selected)
         (:foreground "red" :bold t))
        ((frame-selected tab-nonselected)
         (:foreground "red2"))
        ((frame-nonselected tab-selected)
         (:foreground "red3" :bold t))
        ((frame-nonselected tab-nonselected)
         (:foreground "red4"))
        (t (:foreground "red")))
      "Additional face for tabber.")
    
    (setq xwem-tab-default-format " %i  %*%#%I%1%{(my-xwem-check-register 
cl)%}%0  %n")

Thanks!

-- 
lg




reply via email to

[Prev in Thread] Current Thread [Next in Thread]