*** pub/dgnus/lisp/browse-url.el Wed Sep 13 06:21:26 1995 --- dgnus/lisp/browse-url.el Fri Sep 15 11:18:46 1995 *************** *** 5,11 **** ;; Author: Denis Howe ;; Maintainer: Denis Howe ;; Created: 03 Apr 1995 ! ;; Version: 0.16 17 May 1995 ;; Keywords: hypertext ;; X-Home page: http://wombat.doc.ic.ac.uk/ --- 5,11 ---- ;; Author: Denis Howe ;; Maintainer: Denis Howe ;; Created: 03 Apr 1995 ! ;; Version: 0.22 13 Sep 1995 ;; Keywords: hypertext ;; X-Home page: http://wombat.doc.ic.ac.uk/ *************** *** 39,58 **** ;; each supported browser. If the chosen browser is not running, it ;; is started. Currently there is support for: ! ;; Function Browser Earliest version ! ;; browse-url-netscape Netscape 1.1b1 ! ;; browse-url-mosaic XMosaic <= 2.4 ! ;; browse-url-w3 w3 0 ! ;; browse-url-iximosaic IXI Mosaic ? ! ! ;; Note that earlier versions of Netscape did not have remote control. ! ;; and ! ;; . ! ;; If using Mosaic, check the definition of browse-url-usr1-signal ! ;; below. ;; ;; William M. Perry's excellent "w3" WWW browser for ;; Emacs ;; has a function w3-follow-url-at-point, but that --- 39,72 ---- ;; each supported browser. If the chosen browser is not running, it ;; is started. Currently there is support for: ! ;; Function Browser Earliest version ! ;; browse-url-netscape Netscape 1.1b1 ! ;; browse-url-mosaic XMosaic <= 2.4 ! ;; browse-url-cci XMosaic 2.5 ! ;; browse-url-w3 w3 0 ! ;; browse-url-iximosaic IXI Mosaic ? ! ! ;; Note that versions of Netscape before 1.1b1 did not have remote ! ;; control. ! ;; and . ! ;; Netscape can cache Web pages so it may be necessary to tell it to ! ;; reload the current page if it has changed (eg. if you have edited ! ;; it). There is currently no perfect automatic solution to this. ! ! ;; Netscape allows you to specify the id of the window you want to ! ;; control but which window DO you want to control and how do you ! ;; discover its id? ! ! ;; If using XMosaic before version 2.5, check the definition of ! ;; browse-url-usr1-signal below. ;; + ;; XMosaic version 2.5 introduced Common Client Interface allowing you + ;; to control mosaic through Unix sockets. + ;; + + ;; William M. Perry's excellent "w3" WWW browser for ;; Emacs ;; has a function w3-follow-url-at-point, but that *************** *** 76,111 **** ;; Can you write and test some code for the Macintrash and Windoze ;; Netscape remote control APIs? (See the URL above). - ;; Did earlier versions of Mosaic have remote control? - ;; Do any other browsers have remote control? ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Installation ! ;; In your ~/.emacs, put: ;; ! ;; (setq browse-url-browser-function ! ;; (if (eq window-system 'x) ! ;; 'browse-url-netscape ; or browse-url-mosaic ! ;; 'browse-url-w3)) ! ;; (autoload browse-url-browser-function "browse-url.el" ! ;; "Ask a WWW browser to show a URL." t) ! ;; Bind this to control-X w (normally undefined): ! ;; (global-set-key "\C-xw" browse-url-browser-function) ! ;; ;; Note: no quote ^ ! ;; For viewing current buffer: ! ;; ! ;; (autoload 'browse-url-of-file "browse-url.el" ! ;; "Ask a WWW browser to display the current file." t) ! ;; (setq browse-url-save-file t) ; Always save ;; To get round the Netscape caching problem, you could try either of ;; the following (but not both). EITHER write-file in ;; html-helper-mode makes Netscape reload document: ;; ! ;; (autoload 'browse-url-netscape-reload "browse-url.el" ;; "Ask a WWW browser to redisplay the current file." t) ;; (add-hook 'html-helper-mode-hook ;; (function (lambda () --- 90,160 ---- ;; Can you write and test some code for the Macintrash and Windoze ;; Netscape remote control APIs? (See the URL above). ;; Do any other browsers have remote control? ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Installation ! ;; Put the following in your ~/.emacs file: ;; ! ;; (autoload 'browse-url-at-point "browse-url" ! ;; "Ask a WWW browser to load the URL at or before point." t) ! ;; (autoload 'browse-url-at-mouse "browse-url" ! ;; "Ask a WWW browser to load a URL clicked with the mouse." t) ! ;; (autoload 'browse-url-of-buffer "browse-url" ! ;; "Ask a WWW browser to display BUFFER." t) ! ;; (autoload 'browse-url-of-file "browse-url" ! ;; "Ask a WWW browser to display FILE." t) ! ;; (autoload 'browse-url-of-dired-file "browse-url" ! ;; "In Dired, ask a WWW browser to display the file named on this line." t) ! ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ! ;; Usage ! ! ;; To display the URL at or before point: ! ;; M-x browse-url-at-point RET ! ! ;; To display a URL by shift-clicking on it, put this in your ~/.emacs ! ;; file: ! ;; (global-set-key [S-mouse-1] 'browse-url-at-mouse) ! ! ;; To display the current buffer in a web browser: ! ;; M-x browse-url-of-buffer RET ! ! ;; In Dired, to display the file named on the current line: ! ;; M-x browse-url-of-dired-file RET ! ! ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ! ;; Customisation (~/.emacs) ! ! ;; To see what variables are available for customization, type `M-x ! ;; set-variable browse-url TAB'. ! ! ;; To bind the browse-url commands to keys with the `C-c u' prefix: ! ;; (global-set-key "\C-cu." 'browse-url-at-point) ! ;; (global-set-key "\C-cub" 'browse-url-of-buffer) ! ;; (global-set-key "\C-cuf" 'browse-url-of-file) ! ;; (add-hook 'dired-mode-hook ! ;; (function (lambda () ! ;; (local-set-key "\C-cuf" 'browse-url-of-dired-file)))) ! ;; (if (boundp 'browse-url-browser-function) ! ;; (global-set-key "\C-cuu" browse-url-browser-function) ! ;; (eval-after-load ! ;; "browse-url" ! ;; '(global-set-key "\C-cuu" browse-url-browser-function))) ! ! ;; To use the Emacs w3 browser when not running under X11: ! ;; (if (not (eq window-system 'x)) ! ;; (setq browse-url-browser-function 'browse-url-w3)) ! ! ;; To always save modified buffers before displaying the file in a browser: ! ;; (setq browse-url-save-file t) ;; To get round the Netscape caching problem, you could try either of ;; the following (but not both). EITHER write-file in ;; html-helper-mode makes Netscape reload document: ;; ! ;; (autoload 'browse-url-netscape-reload "browse-url" ;; "Ask a WWW browser to redisplay the current file." t) ;; (add-hook 'html-helper-mode-hook ;; (function (lambda () *************** *** 118,124 **** ;; t)))) ; append to l-w-f-hooks ;; ;; [Does this work for html-mode too?] ! ;; OR browse-url-of-file ask Netscape to load and then reload the ;; file: ;; --- 167,173 ---- ;; t)))) ; append to l-w-f-hooks ;; ;; [Does this work for html-mode too?] ! ;; ;; OR browse-url-of-file ask Netscape to load and then reload the ;; file: ;; *************** *** 199,211 **** ;; Added browse-url-at-point. ;; Thanks Jonathan Cano . ! ;; Netscape can cache Web pages so it may be necessary to tell it to ! ;; reload the current page if it has changed (eg. if you have edited ! ;; it). There is currently no perfect automatic solution to this. ! ! ;; Netscape allows you to specify the id of the window you want to ! ;; control but which window DO you want to control and how do you ! ;; discover its id? ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; Code: --- 248,273 ---- ;; Added browse-url-at-point. ;; Thanks Jonathan Cano . ! ;; 0.18 16 Aug 1995 ! ;; Fixed call to browse-url-url-at-point in browse-url-at-point. ! ;; Thanks Eric Ding . ! ! ;; 0.19 24 Aug 1995 ! ;; Improved documentation. ! ;; Thanks Kevin Rodgers . ! ! ;; 0.20 31 Aug 1995 ! ;; browse-url-of-buffer to handle file-less buffers. ! ;; browse-url-of-dired-file browses current file in dired. ! ;; Thanks Kevin Rodgers . ! ! ;; 0.21 09 Sep 1995 ! ;; XMosaic CCI functions. ! ;; Thanks Marc Furrer . ! ! ;; 0.22 13 Sep 1995 ! ;; Fixed new-window documentation and added to browse-url-cci. ! ;; Thanks Dilip Sequeira . ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; Code: *************** *** 217,232 **** (defvar browse-url-browser-function 'browse-url-netscape "*Function to display the current buffer in a WWW browser. ! Used by function `browse-url-of-file'.") (defvar browse-url-netscape-arguments nil "*A list of strings to pass to Netscape as arguments.") ! (defvar browse-url-netscape-new-window-p nil ! "*If non-nil, Netscape always opens a new window. ! Passing an interactive argument to \\[browse-url-netscape] reverses ! the effect of this variable. Requires Netscape version 1.1N or ! later.") (defvar browse-url-mosaic-arguments nil "*A list of strings to pass to Mosaic as arguments.") --- 279,295 ---- (defvar browse-url-browser-function 'browse-url-netscape "*Function to display the current buffer in a WWW browser. ! Used by the `browse-url-at-point', `browse-url-at-mouse', and ! `browse-url-of-file' commands.") (defvar browse-url-netscape-arguments nil "*A list of strings to pass to Netscape as arguments.") ! (defvar browse-url-new-window-p nil ! "*If non-nil, always open a new browser window. ! Passing an interactive argument to \\[browse-url-netscape] or ! \\[browse-url-cci] reverses the effect of this variable. Requires ! Netscape version 1.1N or later or XMosaic version 2.5 or later.") (defvar browse-url-mosaic-arguments nil "*A list of strings to pass to Mosaic as arguments.") *************** *** 236,246 **** "An alist of (REGEXP . STRING) pairs. Any substring of a filename matching one of the REGEXPs is replaced by the corresponding STRING. All pairs are applied in the order given. ! Used by function `browse-url-of-file'.") (defvar browse-url-save-file nil "If non-nil, save the buffer before displaying its file. ! Used by function `browse-url-of-file'.") (defvar browse-url-of-file-hook nil "A hook to be run with run-hook after `browse-url-of-file' has asked --- 299,309 ---- "An alist of (REGEXP . STRING) pairs. Any substring of a filename matching one of the REGEXPs is replaced by the corresponding STRING. All pairs are applied in the order given. ! Used by the `browse-url-of-file' command.") (defvar browse-url-save-file nil "If non-nil, save the buffer before displaying its file. ! Used by the `browse-url-of-file' command.") (defvar browse-url-of-file-hook nil "A hook to be run with run-hook after `browse-url-of-file' has asked *************** *** 258,263 **** --- 321,331 ---- Emacs 19.29 accepts 'sigusr1, earlier versions require an integer which is 30 on SunOS and 16 on HP-UX and Solaris.") + (defvar browse-url-CCI-port 3003 + "Port to access XMosaic via CCI. + This can be any number between 1024 and 65535 but must correspond to + the value set in the browser.") + ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; URL input *************** *** 291,304 **** (list (read-string (or prompt "URL: ") (browse-url-url-at-point)))) (defun browse-url-at-point () ! "Pass the URL at or before point to a WWW browser." (interactive) ! (funcall browse-url-browser-function (browse-url-at-point))) (defun browse-url-at-mouse (event) ! "Ask a browser to load a URL clicked with the mouse. The URL is the one around or before the position of the mouse click ! but point is not changed. The URL is loaded using variable `browse-url-browser-function'." (interactive "e") (save-excursion --- 359,373 ---- (list (read-string (or prompt "URL: ") (browse-url-url-at-point)))) (defun browse-url-at-point () ! "Ask a WWW browser to load the URL at or before point. ! The URL is loaded according to the value of `browse-url-browser-function'." (interactive) ! (funcall browse-url-browser-function (browse-url-url-at-point))) (defun browse-url-at-mouse (event) ! "Ask a WWW browser to load a URL clicked with the mouse. The URL is the one around or before the position of the mouse click ! but point is not changed. The URL is loaded according to the value of `browse-url-browser-function'." (interactive "e") (save-excursion *************** *** 321,338 **** URL to a browser using variable `browse-url-browser-function' then run `browse-url-of-file-hook'." (interactive) ! (setq file (or file ! (buffer-file-name) ! (and (boundp 'dired-directory) dired-directory))) (let ((buf (get-file-buffer file))) ! (if buf (save-excursion ! (set-buffer buf) ! (cond ! ((not (buffer-modified-p))) ! (browse-url-save-file (save-buffer)) ! (t (message "%s modified since last save" file)))))) ! (funcall browse-url-browser-function ! (browse-url-file-url file)) (run-hooks 'browse-url-of-file-hook)) (defun browse-url-file-url (file) --- 390,407 ---- URL to a browser using variable `browse-url-browser-function' then run `browse-url-of-file-hook'." (interactive) ! (setq file ! (or file ! (buffer-file-name) ! (error "Current buffer has no file"))) (let ((buf (get-file-buffer file))) ! (if buf ! (save-excursion ! (set-buffer buf) ! (cond ((not (buffer-modified-p))) ! (browse-url-save-file (save-buffer)) ! (t (message "%s modified since last save" file)))))) ! (funcall browse-url-browser-function (browse-url-file-url file)) (run-hooks 'browse-url-of-file-hook)) (defun browse-url-file-url (file) *************** *** 350,355 **** --- 419,482 ---- (substring file (match-end 0)))))))) file) + (defvar browse-url-temp-file-name nil) + (make-variable-buffer-local 'browse-url-temp-file-name) + + (defvar browse-url-temp-file-list '()) + + (defun browse-url-of-buffer (&optional buffer) + "Ask a WWW browser to display BUFFER. + Display the current buffer if BUFFER is nil." + (interactive) + (save-excursion + (set-buffer (or buffer (current-buffer))) + (let ((file-name + (or buffer-file-name + (and (boundp 'dired-directory) dired-directory)))) + (if (null file-name) + (progn + (if (null browse-url-temp-file-name) + (progn + (setq browse-url-temp-file-name + (make-temp-name + (expand-file-name (buffer-name) + (or (getenv "TMPDIR") "/tmp")))) + (setq browse-url-temp-file-list + (cons browse-url-temp-file-name + browse-url-temp-file-list)))) + (write-region (point-min) (point-max) browse-url-temp-file-name + nil 'no-message))) + (browse-url-of-file (or file-name browse-url-temp-file-name))))) + + (defun browse-url-delete-temp-file (&optional temp-file-name) + ;; Delete browse-url-temp-file-name from the file system and from + ;; browse-url-temp-file-list. If optional arg TEMP-FILE-NAME is + ;; non-nil, delete it instead, but only from the file system -- + ;; browse-url-temp-file-list is not affected. + (let ((file-name (or temp-file-name browse-url-temp-file-name))) + (if (and file-name (file-exists-p file-name)) + (progn + (delete-file file-name) + (if (null temp-file-name) + (setq browse-url-temp-file-list + (delete browse-url-temp-file-name + browse-url-temp-file-list))))))) + + (defun browse-url-delete-temp-file-list () + ;; Delete all elements of browse-url-temp-file-list. + (while browse-url-temp-file-list + (browse-url-delete-temp-file (car browse-url-temp-file-list)) + (setq browse-url-temp-file-list + (cdr browse-url-temp-file-list)))) + + (add-hook 'kill-buffer-hook 'browse-url-delete-temp-file) + (add-hook 'kill-emacs-hook 'browse-url-delete-temp-file-list) + + (defun browse-url-of-dired-file () + "In Dired, ask a WWW browser to display the file named on this line." + (interactive) + (browse-url-of-file (dired-get-filename))) + ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Browser-specific functions *************** *** 359,371 **** Default to the URL around or before point. The strings in variable `browse-url-netscape-arguments' are also passed to Netscape. ! If variable `browse-url-netscape-new-window-p' is non-nil, load the ! document in a new Netscape window, otherwise use a random existing ! one. If optional argument NEW-WINDOW (prefix argument if interactive) ! is non-nil, the effect of browse-url-netscape-new-window-p is ! reversed." (interactive (append (browse-url-interactive-arg "Netscape URL: ") ! (list (not (eq (null browse-url-netscape-new-window-p) (null current-prefix-arg)))))) (or (zerop (apply 'call-process "netscape" nil nil nil --- 486,501 ---- Default to the URL around or before point. The strings in variable `browse-url-netscape-arguments' are also passed to Netscape. ! When called interactively, if variable `browse-url-new-window-p' is ! non-nil, load the document in a new Netscape window, otherwise use a ! random existing one. A non-nil interactive prefix argument reverses ! the effect of browse-url-new-window-p. ! ! When called non-interactively, optional second argument NEW-WINDOW is ! used instead of browse-url-new-window-p." ! (interactive (append (browse-url-interactive-arg "Netscape URL: ") ! (list (not (eq (null browse-url-new-window-p) (null current-prefix-arg)))))) (or (zerop (apply 'call-process "netscape" nil nil nil *************** *** 391,396 **** --- 521,527 ---- (append browse-url-netscape-arguments (list "-remote" command)))) + (defun browse-url-mosaic (url) "Ask the XMosaic WWW browser to load URL. Default to the URL around or before point." *************** *** 421,426 **** --- 552,586 ---- (apply 'start-process "xmosaic" nil "xmosaic" (append browse-url-mosaic-arguments (list url)))))) + + (defun browse-url-cci (url &optional new-window) + "Ask the XMosaic WWW browser to load URL. + Default to the URL around or before point. + + This function only works for XMosaic version 2.5 or later. You must + select `CCI' from XMosaic's File menu, set the CCI Port Address to the + value of variable `browse-url-CCI-port', and enable `Accept requests'. + + When called interactively, if variable `browse-url-new-window-p' is + non-nil, load the document in a new browser window, otherwise use a + random existing one. A non-nil interactive prefix argument reverses + the effect of browse-url-new-window-p. + + When called non-interactively, optional second argument NEW-WINDOW is + used instead of browse-url-new-window-p." + (interactive (append (browse-url-interactive-arg "Mosaic URL: ") + (list (not (eq (null browse-url-new-window-p) + (null current-prefix-arg)))))) + (open-network-stream "browse-url" " *browse-url*" + "localhost" browse-url-CCI-port) + ;; Todo: start browser if fails + (process-send-string "browse-url" + (concat "get url (" url ") output " + (if new-window "new" "current") "\r\n")) + (process-send-string "browse-url" "disconnect\r\n") + (delete-process "browse-url")) + + (defun browse-url-iximosaic (url) "Ask the IXIMosaic WWW browser to load URL. Default to the URL around or before point." *************** *** 428,438 **** --- 588,600 ---- (start-process "tellw3b" nil "tellw3b" "-service WWW_BROWSER ixi_showurl " url)) + (defun browse-url-w3 (url) "Ask the w3 WWW browser to load URL. Default to the URL around or before point." (interactive (browse-url-interactive-arg "W3 URL: ")) (w3-fetch url)) + (provide 'browse-url) *** pub/dgnus/lisp/custom.el Wed Sep 13 06:21:45 1995 --- dgnus/lisp/custom.el Fri Sep 15 10:55:05 1995 *************** *** 470,476 **** ;; A lisp list. (quote . custom-list-quote) (valid . (lambda (c d) ! (and (listp d) (not (eq custom-nil(car d)))))) (extract . custom-list-extract)) (group (type . default) ;; See `custom-match'. --- 470,476 ---- ;; A lisp list. (quote . custom-list-quote) (valid . (lambda (c d) ! (listp d))) (extract . custom-list-extract)) (group (type . default) ;; See `custom-match'. *** pub/dgnus/lisp/gnus-ems.el Wed Sep 13 06:21:49 1995 --- dgnus/lisp/gnus-ems.el Fri Sep 15 07:56:30 1995 *************** *** 69,74 **** --- 69,87 ---- ;; We do not byte-compile this file, because error messages are such a ;; bore. + (defun gnus-set-text-properties-xemacs (start end props &optional buffer) + "You should NEVER use this function. It is ideologically blasphemous. + It is provided only to ease porting of broken FSF Emacs programs." + (if (and (stringp buffer) (not (setq buffer (get-buffer buffer)))) + nil + (map-extents (lambda (extent ignored) + (remove-text-properties + start end + (list (extent-property extent 'text-prop) nil) + buffer)) + buffer start end nil nil 'text-prop) + (add-text-properties start end props buffer))) + (eval '(progn (if (string-match "XEmacs\\|Lucid" emacs-version) *************** *** 132,155 **** (or (face-differs-from-default-p 'underline) (funcall 'set-face-underline-p 'underline t)) - (defun set-text-properties (start end props &optional buffer) - "You should NEVER use this function. It is ideologically blasphemous. - It is provided only to ease porting of broken FSF Emacs programs." - (if (and (stringp buffer) (not (setq buffer (get-buffer buffer)))) - nil - (map-extents (symbol-function - (lambda (extent ignored) - (remove-text-properties - start end - (list (extent-property extent 'text-prop) nil) - buffer))) - buffer start end nil nil 'text-prop) - (add-text-properties start end props buffer))) - (defalias 'gnus-make-overlay 'make-extent) (defalias 'gnus-overlay-put 'set-extent-property) (defun gnus-move-overlay (extent start end &optional buffer) (set-extent-endpoints extent start end)) (or (boundp 'standard-display-table) (setq standard-display-table nil)) (or (boundp 'read-event) (fset 'read-event 'next-command-event)) --- 145,157 ---- (or (face-differs-from-default-p 'underline) (funcall 'set-face-underline-p 'underline t)) (defalias 'gnus-make-overlay 'make-extent) (defalias 'gnus-overlay-put 'set-extent-property) (defun gnus-move-overlay (extent start end &optional buffer) (set-extent-endpoints extent start end)) + + (require 'text-props) + (fset 'set-text-properties 'gnus-set-text-properties-xemacs) (or (boundp 'standard-display-table) (setq standard-display-table nil)) (or (boundp 'read-event) (fset 'read-event 'next-command-event)) *************** *** 536,541 **** --- 538,544 ---- (fset 'gnus-rebuild-thread 'gnus-rebuild-thread-xemacs) (fset 'gnus-article-add-button 'gnus-article-add-button-xemacs) (fset 'gnus-window-top-edge 'gnus-window-top-edge-xemacs) + (fset 'set-text-properties 'gnus-set-text-properties-xemacs) (or (fboundp 'appt-select-lowest-window) (fset 'appt-select-lowest-window *** pub/dgnus/lisp/gnus-msg.el Wed Sep 13 06:21:52 1995 --- dgnus/lisp/gnus-msg.el Fri Sep 15 11:10:40 1995 *************** *** 1249,1265 **** (defun gnus-inews-user-name () "Return user's network address as \"NAME@DOMAIN (FULL-NAME)\"." ! (let ((full-name (gnus-inews-full-name))) (or gnus-user-from-line ! (concat (if (or gnus-user-login-name gnus-use-generic-from ! gnus-local-domain (getenv "DOMAINNAME")) ! (concat (gnus-inews-login-name) "@" ! (gnus-inews-domain-name gnus-use-generic-from)) ! user-mail-address) ;; User's full name. ! (cond ((string-equal full-name "") "") ! ((string-equal full-name "&") ;Unix hack. (concat " (" (user-login-name) ")")) (t (concat " (" full-name ")"))))))) --- 1249,1267 ---- (defun gnus-inews-user-name () "Return user's network address as \"NAME@DOMAIN (FULL-NAME)\"." ! (let ((full-name (gnus-inews-full-name)) ! (address (if (or gnus-user-login-name gnus-use-generic-from ! gnus-local-domain (getenv "DOMAINNAME")) ! (concat (gnus-inews-login-name) "@" ! (gnus-inews-domain-name gnus-use-generic-from)) ! user-mail-address))) (or gnus-user-from-line ! (concat address ;; User's full name. ! (cond ((string-equal full-name "&") ;Unix hack. (concat " (" (user-login-name) ")")) + ((string-match "[^ ]+@[^ ]+ +(.*)" address) + "") (t (concat " (" full-name ")"))))))) *************** *** 1681,1691 **** (progn (switch-to-buffer gnus-summary-buffer) (funcall gnus-mail-reply-method yank address))))) - - (defun gnus-article-mail-with-original () - "Send a reply to the address near point and include the original article." - (interactive) - (gnus-article-mail 'yank)) (defun gnus-bug () "Send a bug report to the Gnus maintainers." --- 1683,1688 ---- *** pub/dgnus/lisp/gnus-vis.el Wed Sep 13 06:21:52 1995 --- dgnus/lisp/gnus-vis.el Fri Sep 15 11:10:45 1995 *************** *** 880,887 **** ["Show summary" gnus-article-show-summary t] ["Fetch Message-ID at point" gnus-article-refer-article t] ["Mail to address at point" gnus-article-mail t] - ["Mail to address at point and include original" - gnus-article-mail-with-original t] )) (easy-menu-define --- 880,885 ---- *** pub/dgnus/lisp/gnus.el Wed Sep 13 06:21:59 1995 --- dgnus/lisp/gnus.el Fri Sep 15 11:24:49 1995 *************** *** 100,106 **** (not (string= gnus-default-nntp-server ""))) gnus-default-nntp-server) (system-name))) ! (if (equal gnus-nntp-service "nntp") nil (list gnus-nntp-service))) "*Default method for selecting a newsgroup. This variable should be a list, where the first element is how the news is to be fetched, the second is the address. --- 100,109 ---- (not (string= gnus-default-nntp-server ""))) gnus-default-nntp-server) (system-name))) ! (if (or (null gnus-nntp-service) ! (equal gnus-nntp-service "nntp")) ! nil ! (list gnus-nntp-service))) "*Default method for selecting a newsgroup. This variable should be a list, where the first element is how the news is to be fetched, the second is the address. *************** *** 1351,1357 **** "gnus-bug@ifi.uio.no (The Gnus Bugfixing Girls + Boys)" "The mail address of the Gnus maintainers.") ! (defconst gnus-version "Gnus v5.0.2" "Version number for this version of Gnus.") (defvar gnus-info-nodes --- 1354,1360 ---- "gnus-bug@ifi.uio.no (The Gnus Bugfixing Girls + Boys)" "The mail address of the Gnus maintainers.") ! (defconst gnus-version "Gnus v5.0.3" "Version number for this version of Gnus.") (defvar gnus-info-nodes *************** *** 1727,1733 **** (autoload 'gnus-mail-send-and-exit "gnus-msg") (autoload 'gnus-mail-forward-using-mail "gnus-msg") (autoload 'gnus-mail-other-window-using-mail "gnus-msg") - (autoload 'gnus-article-mail-with-original "gnus-msg") (autoload 'gnus-article-mail "gnus-msg") (autoload 'gnus-bug "gnus-msg" nil t) --- 1730,1735 ---- *************** *** 9928,9943 **** (append gnus-newsgroup-marked gnus-newsgroup-dormant))) ;; We actually mark all articles as canceled, which we ;; have to do when using auto-expiry or adaptive scoring. ! (let ((unreads (length gnus-newsgroup-unreads))) ! (gnus-summary-show-all-threads) ! (if (gnus-summary-first-subject (not all)) ! (while (and ! (if to-here (< (point) to-here) t) ! (gnus-summary-mark-article-as-read gnus-catchup-mark) ! (gnus-summary-search-subject nil (not all))))) ! (- unreads (length gnus-newsgroup-unreads)) ! (or to-here ! (setq gnus-newsgroup-unreads gnus-newsgroup-marked))))) (let ((method (gnus-find-method-for-group gnus-newsgroup-name))) (if (and (not to-here) (eq 'nnvirtual (car method))) (nnvirtual-catchup-group --- 9930,9945 ---- (append gnus-newsgroup-marked gnus-newsgroup-dormant))) ;; We actually mark all articles as canceled, which we ;; have to do when using auto-expiry or adaptive scoring. ! (gnus-summary-show-all-threads) ! (if (gnus-summary-first-subject (not all)) ! (while (and ! (if to-here (< (point) to-here) t) ! (gnus-summary-mark-article-as-read gnus-catchup-mark) ! (gnus-summary-search-subject nil (not all))))) ! (or to-here ! (setq gnus-newsgroup-unreads ! (append gnus-newsgroup-marked ! gnus-newsgroup-dormant))))) (let ((method (gnus-find-method-for-group gnus-newsgroup-name))) (if (and (not to-here) (eq 'nnvirtual (car method))) (nnvirtual-catchup-group *************** *** 9947,9953 **** (defun gnus-summary-catchup-to-here (&optional all) "Mark all unticked articles before the current one as read. If ALL is non-nil, also mark ticked and dormant articles as read." ! (interactive) (gnus-set-global-variables) (save-excursion (and (zerop (forward-line -1)) --- 9949,9955 ---- (defun gnus-summary-catchup-to-here (&optional all) "Mark all unticked articles before the current one as read. If ALL is non-nil, also mark ticked and dormant articles as read." ! (interactive "P") (gnus-set-global-variables) (save-excursion (and (zerop (forward-line -1)) *************** *** 9959,9965 **** (defun gnus-summary-catchup-all (&optional quietly) "Mark all articles in this newsgroup as read." ! (interactive) (gnus-set-global-variables) (gnus-summary-catchup t quietly)) --- 9961,9967 ---- (defun gnus-summary-catchup-all (&optional quietly) "Mark all articles in this newsgroup as read." ! (interactive "P") (gnus-set-global-variables) (gnus-summary-catchup t quietly)) *************** *** 9976,9982 **** (defun gnus-summary-catchup-all-and-exit (&optional quietly) "Mark all articles in this newsgroup as read, and then exit." ! (interactive) (gnus-set-global-variables) (gnus-summary-catchup-and-exit t quietly)) --- 9978,9984 ---- (defun gnus-summary-catchup-all-and-exit (&optional quietly) "Mark all articles in this newsgroup as read, and then exit." ! (interactive "P") (gnus-set-global-variables) (gnus-summary-catchup-and-exit t quietly)) *************** *** 10665,10672 **** (define-key gnus-article-mode-map "h" 'gnus-article-show-summary) (define-key gnus-article-mode-map "s" 'gnus-article-show-summary) (define-key gnus-article-mode-map "\C-c\C-m" 'gnus-article-mail) - (define-key gnus-article-mode-map - "\C-c\C-M" 'gnus-article-mail-with-original) (define-key gnus-article-mode-map "?" 'gnus-article-describe-briefly) (define-key gnus-article-mode-map gnus-mouse-2 'gnus-article-push-button) (define-key gnus-article-mode-map "\r" 'gnus-article-press-button) --- 10667,10672 ---- *************** *** 10727,10733 **** \\[gnus-article-refer-article]\t Go to the article referred to by an article id near point \\[gnus-article-show-summary]\t Display the summary buffer \\[gnus-article-mail]\t Send a reply to the address near point - \\[gnus-article-mail-with-original]\t Send a reply to the address near point; include the original article \\[gnus-article-describe-briefly]\t Describe the current mode briefly \\[gnus-info-find-node]\t Go to the Gnus info node" (interactive) --- 10727,10732 ---- *** pub/dgnus/lisp/nnmail.el Wed Sep 13 06:21:59 1995 --- dgnus/lisp/nnmail.el Thu Sep 14 06:19:05 1995 *************** *** 257,270 **** (setq message-of (concat (if stop-pos (substring from 0 stop-pos) from) "'s message of " date)))) ! (setq cc (mail-strip-quoted-names (mail-fetch-field "cc"))) ! (setq to (mail-strip-quoted-names (mail-fetch-field "to"))) (setq new-cc (rmail-dont-reply-to (concat (or to "") (if cc (concat (if to ", " "") cc) "")))) (let ((rmail-dont-reply-to-names (regexp-quote (mail-strip-quoted-names ! (or method-address reply-to from))))) (setq new-cc (rmail-dont-reply-to new-cc))) (setq subject (mail-header-subject header)) (or (string-match "^[Rr][Ee]:" subject) --- 257,270 ---- (setq message-of (concat (if stop-pos (substring from 0 stop-pos) from) "'s message of " date)))) ! (setq cc (mail-strip-quoted-names (or (mail-fetch-field "cc") ""))) ! (setq to (mail-strip-quoted-names (or (mail-fetch-field "to") ""))) (setq new-cc (rmail-dont-reply-to (concat (or to "") (if cc (concat (if to ", " "") cc) "")))) (let ((rmail-dont-reply-to-names (regexp-quote (mail-strip-quoted-names ! (or method-address reply-to from ""))))) (setq new-cc (rmail-dont-reply-to new-cc))) (setq subject (mail-header-subject header)) (or (string-match "^[Rr][Ee]:" subject) *** pub/dgnus/lisp/nntp.el Wed Sep 13 06:22:01 1995 --- dgnus/lisp/nntp.el Fri Sep 15 10:00:08 1995 *************** *** 689,695 **** This function is supposed to be called from `nntp-server-opened-hook'. It will prompt for a password." (nntp-send-command "^.*\r?\n" "AUTHINFO USER" (user-login-name)) ! (nntp-send-command "^.*\r?\n" "AUTHINFO PASS" (read-string "NNTP password: "))) (defun nntp-default-sentinel (proc status) "Default sentinel function for NNTP server process." --- 689,711 ---- This function is supposed to be called from `nntp-server-opened-hook'. It will prompt for a password." (nntp-send-command "^.*\r?\n" "AUTHINFO USER" (user-login-name)) ! (nntp-send-command "^.*\r?\n" "AUTHINFO PASS" ! (read-string "NNTP password: "))) ! ! (defun nntp-send-authinfo-from-file () ! "Send the AUTHINFO to the nntp server. ! This function is supposed to be called from `nntp-server-opened-hook'. ! It will prompt for a password." ! (and (file-exists-p "~/.nntp-authinfo") ! (save-excursion ! (set-buffer (get-buffer-create " *tull*")) ! (insert-file-contents "~/.nntp-authinfo") ! (goto-char (point-min)) ! (nntp-send-command "^.*\r?\n" "AUTHINFO USER" (user-login-name)) ! (nntp-send-command "^.*\r?\n" "AUTHINFO PASS" ! (buffer-substring (point) ! (progn (end-of-line) (point)))) ! (kill-buffer (current-buffer))))) (defun nntp-default-sentinel (proc status) "Default sentinel function for NNTP server process." *** pub/dgnus/lisp/ChangeLog Wed Sep 13 06:22:09 1995 --- dgnus/lisp/ChangeLog Fri Sep 15 11:24:51 1995 *************** *** 1,4 **** --- 1,37 ---- + Fri Sep 15 11:09:52 1995 Lars Magne Ingebrigtsen + + * gnus.el (gnus-summary-catchup): Would make all dormants read. + + * gnus-msg.el (gnus-article-mail-with-original): Removed function. + + Wed Sep 13 17:50:12 1995 Per Abrahamsen + + * custom.el (custom-type-properties): List with uninitialized + fields are valid (required for `gnus-score-customize' to work). + + Fri Sep 15 09:31:21 1995 Lars Magne Ingebrigtsen + + * gnus.el (gnus-summary-catchup-all): Wrong interactive spec. + (gnus-select-method): Would sometimes set select method with a + bogus service value. + + Thu Sep 14 06:07:37 1995 Lars Magne Ingebrigtsen + + * nnmail.el (nnmail-request-post-buffer): Would bug out under + XEmacs. + + Thu Sep 14 06:04:52 1995 Lars Magne Ingebrigtsen + + * gnus-ems.el (gnus-set-text-properties-xemacs): Wrong definition. + + Thu Sep 14 03:44:27 1995 Lars Magne Ingebrigtsen + + * gnus-msg.el (gnus-inews-user-name): Check for too-verbose + user-mail-address variables. + Wed Sep 13 05:38:21 1995 Lars Magne Ingebrigtsen + + * gnus.el: 5.0.2 is released. * nntp.el (nntp-async-fetch-articles): Wouldn't allow entry into groups. *** pub/dgnus/texi/gnus.texi Wed Sep 13 06:22:15 1995 --- dgnus/texi/gnus.texi Fri Sep 15 11:10:40 1995 *************** *** 3528,3535 **** This required header says which newsgroups the article is to be posted to. If it isn't present already, it will be prompted for. @item Organization This optional header will be filled out depending on the ! @code{gnus-local-organization} variable. @item Lines This optional header will be computed by Gnus. @item Message-ID --- 3528,3539 ---- This required header says which newsgroups the article is to be posted to. If it isn't present already, it will be prompted for. @item Organization + @cindex organization + @vindex gnus-local-organization + @vindex gnus-organization-file This optional header will be filled out depending on the ! @code{gnus-local-organization} variable. @code{gnus-organization-file} ! will be used if that variable is nil. @item Lines This optional header will be computed by Gnus. @item Message-ID *************** *** 4250,4258 **** would like to display as few summary lines as possible, but still connect as many loose threads as possible, you should set this variable to @code{some}. In either case, fetching old headers only works if the ! select method you are using supports @sc{xover}. Also remember that if ! the root of the thread has been expired by the server, there's not much ! Gnus can do about that. @item gnus-summary-gather-subject-limit Loose threads are gathered by comparing subjects of articles. If this --- 4254,4263 ---- would like to display as few summary lines as possible, but still connect as many loose threads as possible, you should set this variable to @code{some}. In either case, fetching old headers only works if the ! backend you are using carries overview files -- this would normally be ! @code{nntp}, @code{nnspool} and @code{nnml}. Also remember that if the ! root of the thread has been expired by the server, there's not much Gnus ! can do about that. @item gnus-summary-gather-subject-limit Loose threads are gathered by comparing subjects of articles. If this *************** *** 6387,6398 **** @item C-c C-m @kindex C-c C-m (Article) @findex gnus-article-mail ! Send a reply to the address near point (@code{gnus-article-mail}). ! @item C-c C-M ! @kindex C-c C-M (Article) ! @findex gnus-article-mail-with-original ! Send a reply to the address near point and include the original article ! (@code{gnus-article-mail-with-original}). @item s @kindex s (Article) @findex gnus-article-show-summary --- 6392,6399 ---- @item C-c C-m @kindex C-c C-m (Article) @findex gnus-article-mail ! Send a reply to the address near point (@code{gnus-article-mail}). If ! given a prefix, include the mail. @item s @kindex s (Article) @findex gnus-article-show-summary