* X-Face support in XEmacs @ 1996-03-25 16:05 Pekka Marjola 1996-03-25 18:08 ` Steven L Baur 1996-04-03 16:07 ` Mark Borges 0 siblings, 2 replies; 9+ messages in thread From: Pekka Marjola @ 1996-03-25 16:05 UTC (permalink / raw) [-- Attachment #1: Type: text/plain, Size: 213 bytes --] Since XEmacs can show X-Face without external processes, shouldn't something like this be included in gnus-xmas.el? (Coincidentally, I was planning to rip exactly same code from VM, but never bothered :) # pema [-- Attachment #2: gnus-xemacs-x-face.el --] [-- Type: application/octet-stream, Size: 1159 bytes --] ;; X-Face inline for XEmacs ;; Based on the VM (thanks Kyle) code. ;; glenn@mathcs.emory.edu 1/16/96 (defvar gnus-xface-cache (make-vector 29 0)) (defun gnus-article-x-face-xemacs-inline (beg end) "Display X-Face header inline for XEmacs." (let (xf e gl) (make-face 'gnus-xface) (set-face-background 'gnus-xface "white") (set-face-foreground 'gnus-xface "black") (setq xf (concat "X-Face: " (buffer-substring beg end))) (setq gl (intern xf gnus-xface-cache)) (if (boundp gl) (setq gl (symbol-value gl)) (set gl (make-glyph xf)) (setq gl (symbol-value gl)) (set-glyph-face gl 'gnus-xface)) (goto-char (point-min)) (re-search-forward "^From: " nil t) ;; We display the face. (setq e (make-extent (point) (point))) (set-extent-property e 'gnus-xface t) (set-extent-begin-glyph e gl))) (setq gnus-article-x-face-command 'gnus-article-x-face-xemacs-inline) ;; This hook needs to go after gnus-article-highlight and/or ;; gnus-article-hide-headers-if-wanted (unsure exactly which). (add-hook 'gnus-article-display-hook 'gnus-article-display-x-face t) ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: X-Face support in XEmacs 1996-03-25 16:05 X-Face support in XEmacs Pekka Marjola @ 1996-03-25 18:08 ` Steven L Baur 1996-03-26 7:07 ` Pekka Marjola 1996-03-26 9:53 ` Jens Lautenbacher 1996-04-03 16:07 ` Mark Borges 1 sibling, 2 replies; 9+ messages in thread From: Steven L Baur @ 1996-03-25 18:08 UTC (permalink / raw) Support for X-Face is already built into the Tools for MIME package, so effectively, it's already supported. Gnus need do nothing more. Regards, -- steve@miranova.com baur Unsolicited commercial e-mail will be proofread for $250/hour. Andrea Seastrand: For your vote on the Telecom bill, I will vote for anyone except you in November. ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: X-Face support in XEmacs 1996-03-25 18:08 ` Steven L Baur @ 1996-03-26 7:07 ` Pekka Marjola 1996-03-26 8:17 ` Pekka Marjola 1996-03-26 9:53 ` Jens Lautenbacher 1 sibling, 1 reply; 9+ messages in thread From: Pekka Marjola @ 1996-03-26 7:07 UTC (permalink / raw) "Steven" == Steven L Baur <steve@miranova.com> writes: Steven> Support for X-Face is already built into the Tools for MIME package, Steven> so effectively, it's already supported. Gnus need do nothing more. I know that, but it uses external process by default and not everyone uses TM. (OK, I do, but that's beside the point :) # pema ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: X-Face support in XEmacs 1996-03-26 7:07 ` Pekka Marjola @ 1996-03-26 8:17 ` Pekka Marjola 0 siblings, 0 replies; 9+ messages in thread From: Pekka Marjola @ 1996-03-26 8:17 UTC (permalink / raw) "PeMa" == Pekka Marjola <marjola@shire.ntc.nokia.com> writes: PeMa> "Steven" == Steven L Baur <steve@miranova.com> writes: Steven> Support for X-Face is already built into the Tools for MIME package, Steven> so effectively, it's already supported. Gnus need do nothing more. PeMa> I know that, but TM uses external process by default and not everyone PeMa> uses TM. (OK, I do, but that's beside the point :) ... and X-Face is not really MIME stuff. # pema ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: X-Face support in XEmacs 1996-03-25 18:08 ` Steven L Baur 1996-03-26 7:07 ` Pekka Marjola @ 1996-03-26 9:53 ` Jens Lautenbacher 1996-03-27 7:04 ` Pekka Marjola 1 sibling, 1 reply; 9+ messages in thread From: Jens Lautenbacher @ 1996-03-26 9:53 UTC (permalink / raw) >>>>> "SLB" == Steven L Baur <steve@miranova.com> writes: SLB> Support for X-Face is already built into the Tools for MIME SLB> package, so effectively, it's already supported. Gnus need SLB> do nothing more. Unfortunately I never got this one to work. But maybe I don't understand how it is supposed to work: Should it display X-faces automatically inside the buffer as the proposed code of the original poster does? Or does it spawn a xv? How does it react if the message has no mime header? I think something that simple as the proposed piece of code should be added to gnus, at least until tm is oficially added to (X)Emacs. Cheers, Jens ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: X-Face support in XEmacs 1996-03-26 9:53 ` Jens Lautenbacher @ 1996-03-27 7:04 ` Pekka Marjola 1996-03-29 18:51 ` Wes Hardaker 0 siblings, 1 reply; 9+ messages in thread From: Pekka Marjola @ 1996-03-27 7:04 UTC (permalink / raw) "Jens" == Jens Lautenbacher <jtl@tkm.physik.uni-karlsruhe.de> writes: >>>>>> "SLB" == Steven L Baur <steve@miranova.com> writes: SLB> Support for X-Face is already built into the Tools for MIME SLB> package, so effectively, it's already supported. Gnus need SLB> do nothing more. Jens> Unfortunately I never got this one to work. But maybe I don't Jens> understand how it is supposed to work: Should it display X-faces Jens> automatically inside the buffer as the proposed code of the original Jens> poster does? Or does it spawn a xv? How does it react if the message Jens> has no mime header? There is no specific support in Gnus for showing X-Face in XEmacs currently... Using xv is kinda silly. It also requires netpbm package. Anyway, I noticed that x-face displaying hook must be added after other hooks are there (otherwise highlighting stuff etc. are never added): (add-hook 'gnus-startup-hook '(lambda () (add-hook 'gnus-article-display-hook 'gnus-article-display-x-face t))) Jens> I think something that simple as the proposed piece of code should be Jens> added to gnus, at least until tm is oficially added to (X)Emacs. Well, tm uses external processes to show X-Face, too. (It shows X-Face in article buffer, though.) X-Face support is in precompiled XEmacs binaries, so most XEmacs users should be able to use internal method. IMNSHO X-Face support should in both Gnus and tm, as it is now. It's not MIME thing, but for completeness (everyone does not use Gnus :( ), tm should have it, too. Until tm is used almost always/automatically with Gnus, if ever, it shouldn't be removed from Gnus. # pema ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: X-Face support in XEmacs 1996-03-27 7:04 ` Pekka Marjola @ 1996-03-29 18:51 ` Wes Hardaker 1996-04-01 6:51 ` Pekka Marjola 0 siblings, 1 reply; 9+ messages in thread From: Wes Hardaker @ 1996-03-29 18:51 UTC (permalink / raw) Cc: ding >>>>> "Pekka" == Pekka Marjola <marjola@bilbo.ntc.nokia.com> writes: Pekka> There is no specific support in Gnus for showing X-Face in Pekka> XEmacs currently... Using xv is kinda silly. It also Pekka> requires netpbm package. Well, I really really really should write docs for the gnus-picon.el file. It allows you to display them in the buffer instead (though it still requires running an external process instead of converting the face internally like it should). (setq gnus-picons-display-where 'picons) ; default -- its own buffer (setq gnus-picons-display-where 'article) ; something you probably ; have displayed without ; recustomizing (add-hook 'gnus-article-display-hook 'gnus-picons-article-display-x-face) I guess I'll try to get docs in by next week at the latest... _____ Wes Hardaker / ___ \ Department of Electrical and Computer Engineering / / \//\ University of California at Davis __________________ \--/ /--\ Davis CA 95616 / Recycle! \ \//\___/ / (hardaker@ece.ucdavis.edu) / It's not too late! \ \_____/ ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: X-Face support in XEmacs 1996-03-29 18:51 ` Wes Hardaker @ 1996-04-01 6:51 ` Pekka Marjola 0 siblings, 0 replies; 9+ messages in thread From: Pekka Marjola @ 1996-04-01 6:51 UTC (permalink / raw) "Wes" == Wes Hardaker <hardaker@ece.ucdavis.edu> writes: >>>>>> "Pekka" == Pekka Marjola <marjola@bilbo.ntc.nokia.com> writes: Pekka> There is no specific support in Gnus for showing X-Face in Pekka> XEmacs currently... Using xv is kinda silly. It also Pekka> requires netpbm package. Wes> Well, I really really really should write docs for the gnus-picon.el Wes> file. It allows you to display them in the buffer instead (though it Wes> still requires running an external process instead of converting the Wes> face internally like it should). Yes, I know that. I read all X-Face code in sgnus, but since there wasn't proper thing :) I added that piece of code. I don't have picons nor netpbm package installed here, so gnus-picon.el as such is useless. Basically gnus-picon.el requires external stuff (picons db), but X-Face does not... I don't really think xv should be used in XEmacs even though picons are not used. And I like to show X-Face in the From: line as in VM :) Anyway, internal method should be added somewhere :-P -- Pekka Marjola :: pema@iki.fi :: http://www.iki.fi/pema/ :: +358-40-551 4842 =========================================================================== Quidquid latine dictum sit, altum viditur. ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: X-Face support in XEmacs 1996-03-25 16:05 X-Face support in XEmacs Pekka Marjola 1996-03-25 18:08 ` Steven L Baur @ 1996-04-03 16:07 ` Mark Borges 1 sibling, 0 replies; 9+ messages in thread From: Mark Borges @ 1996-04-03 16:07 UTC (permalink / raw) >> On 25 Mar 1996 18:05:42 +0200, >> Pekka Marjola(p) wrote: p> Since XEmacs can show X-Face without external processes, shouldn't p> something like this be included in gnus-xmas.el? (Coincidentally, I p> was planning to rip exactly same code from VM, but never bothered Appended is an alternative patch to gnus-xmas.el that works for me. I like it more better because it has different behavior than the one based on Kyle's work (background/foreground faces are definable by user, optional hiding of X-Face data, maybe something else, I forget). If you don't have highlight headers loaded (or don't want to use it) you'll have to uncomment the line containing the call to gnus-xmas-embed-xface-to-pixmap() below). -mb- --- gnus-xmas.el.orig Tue Apr 2 06:58:56 1996 +++ gnus-xmas.el Tue Apr 2 09:58:35 1996 @@ -422,7 +422,8 @@ (fset 'gnus-tree-minimize 'gnus-xmas-tree-minimize) (fset 'gnus-appt-select-lowest-window 'gnus-xmas-appt-select-lowest-window) - (fset 'gnus-mail-strip-quoted-names 'gnus-xmas-mail-strip-quoted-names) + (if (< emacs-minor-version 14) + (fset 'gnus-mail-strip-quoted-names 'gnus-xmas-mail-strip-quoted-names)) (fset 'gnus-make-local-hook 'make-local-variable) (add-hook 'gnus-group-mode-hook 'gnus-xmas-group-menu-add) @@ -434,6 +435,15 @@ (add-hook 'gnus-binary-mode-hook 'gnus-xmas-binary-menu-add) (add-hook 'gnus-grouplens-mode-hook 'gnus-xmas-grouplens-menu-add) + ;; Note that this hook into gnus-article-display-hook needs to be + ;; run last -- hence the trailing t (for append). Alternatively, + ;; you could comment it out and have the users put it in their + ;; gnus-init-file instead; this may be the right thing to do anyway, + ;; since the decision is left to the user to enable it or not. But + ;; then again, if one has xface support compiled in one should use + ;; it. So I don't know. Lars? <mdb> + (add-hook 'gnus-article-display-hook '(lambda() (gnus-xmas-embed-xface t)) t) + (add-hook 'gnus-group-mode-hook 'gnus-xmas-setup-group-toolbar) (add-hook 'gnus-summary-mode-hook 'gnus-xmas-setup-summary-toolbar)) @@ -742,6 +752,100 @@ (after-find-file error (not nowarn))))) buf))) + +;;; gnus-xmas-embed-xface() --- embed an X-Face in the article buffer. +;;; Coded by Mark Borges <mdb@cdc.noaa.gov>, based on original ideas +;;; in highlight-headers.el by Jamie Zawinski (which see). +;;; +;;; The auxilliary function gnus-xmas-embed-xface-to-pixmap() is +;;; called to do the actual conversion. +;;; The variable gnus-xmas-embed-xface-p is consulted to determine if +;;; xface conversion is possible. +;;; + +(defvar gnus-xmas-embed-xface-p (featurep 'xface) + "*If true, then the bitmap in an X-Face header will be displayed +in the buffer.") + +(defun gnus-xmas-embed-xface (&optional hide-data) + "Search for an X-Face header line; if found, display next to the From line. +Optional argument HIDE-DATA makes the original X-Face header invisible. +" + ;; make sure a face exists + (if (find-face 'x-face) + nil + (make-face 'x-face) + (or (face-differs-from-default-p 'x-face) + (progn + (set-face-background 'x-face "white") + (set-face-foreground 'x-face "black")))) + + ;; delete previous highlighting + (map-extents (function (lambda (extent ignore) + (if (extent-property extent 'is-xface) + (delete-extent extent)) + nil)) + (current-buffer) (point-min) (point-max)) + + (save-excursion + (let* (e) + + (goto-char (point-min)) + ;; + (cond + ( (and gnus-xmas-embed-xface-p + (re-search-forward "^X-Face: *\\(.*\\(\n[ \t].*\\)*\n\\)" nil t)) + (setq e (make-extent (match-beginning 0) (match-end 0))) + + ;; if requested, make the whole header invisible + (if hide-data + (set-extent-property e 'invisible t)) + + ;; now extract the xface and put it somewhere interesting +; (let ((xface (gnus-xmas-embed-xface-to-pixmap + (let ((xface (highlight-headers-x-face-to-pixmap + (match-beginning 1) + (match-end 1)))) + (if (not xface) + nil ; just leave the header invisible if we can't convert + ; the face for some reason + (cond + ( (save-excursion + (goto-char (point-min)) + (save-excursion (re-search-forward "^From: *" + nil t))) + (setq e (make-extent (match-end 0) + (match-end 0)))) + (t + ;; okay, make the beginning of the the invisible + ;; move forward to only hide the modem noise... + (set-extent-endpoints e + (match-beginning 2) + (1- (match-end 2))) + ;; kludge: if a zero-length extent exists at the + ;; starting point of an invisible extent, then + ;; it's invisible... even if the invisible extent + ;; is start-open. + (setq e (make-extent (1- (match-beginning 2)) + (match-beginning 2))) + )) + (set-extent-property e 'is-xface t) + (set-extent-end-glyph e xface)) + ) + ))) + )) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;;; auxilliary function for X-Face header conversion: +(defun gnus-xmas-embed-xface-to-pixmap (start end) + (let* ((string (if (stringp start) start (buffer-substring start end)))) + (if (featurep 'xface) + (let ((new-face (make-glyph (concat "X-Face: " string)))) + (set-glyph-face new-face 'x-face) + new-face) + (message "This cannot happen when called from gnus-xmas-embed-xface!") + )) + ) (defun gnus-xmas-mail-strip-quoted-names (address) "Protect mail-strip-quoted-names from NIL input. XEmacs compatibility workaround." ^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~1996-04-03 16:07 UTC | newest] Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 1996-03-25 16:05 X-Face support in XEmacs Pekka Marjola 1996-03-25 18:08 ` Steven L Baur 1996-03-26 7:07 ` Pekka Marjola 1996-03-26 8:17 ` Pekka Marjola 1996-03-26 9:53 ` Jens Lautenbacher 1996-03-27 7:04 ` Pekka Marjola 1996-03-29 18:51 ` Wes Hardaker 1996-04-01 6:51 ` Pekka Marjola 1996-04-03 16:07 ` Mark Borges
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).