comparison lisp/packages/gnuserv.el @ 173:8eaf7971accc r20-3b13

Import from CVS: tag r20-3b13
author cvs
date Mon, 13 Aug 2007 09:49:09 +0200
parents 929b76928fce
children e121b013d1f0
comparison
equal deleted inserted replaced
172:a38aed19690b 173:8eaf7971accc
1 ;;; gnuserv.el --- Lisp interface code between Emacs and gnuserv 1 ;;; gnuserv.el --- Lisp interface code between Emacs and gnuserv
2 ;; Copyright (C) 1989-1997 Free Software Foundation, Inc. 2 ;; Copyright (C) 1989-1997 Free Software Foundation, Inc.
3 3
4 ;; Version: 3.7 4 ;; Version: 3.9
5 ;; Author: Andy Norman (ange@hplb.hpl.hp.com), originally based on server.el 5 ;; Author: Andy Norman (ange@hplb.hpl.hp.com), originally based on server.el
6 ;; Hrvoje Niksic <hniksic@srce.hr> 6 ;; Hrvoje Niksic <hniksic@srce.hr>
7 ;; Maintainer: Jan Vroonhof <vroonhof@math.ethz.ch>, 7 ;; Maintainer: Jan Vroonhof <vroonhof@math.ethz.ch>,
8 ;; Hrvoje Niksic <hniksic@srce.hr> 8 ;; Hrvoje Niksic <hniksic@srce.hr>
9 ;; Keywords: environment, processes, terminals 9 ;; Keywords: environment, processes, terminals
73 ;; Customized. 73 ;; Customized.
74 ;; 74 ;;
75 ;; Hrvoje Niksic <hniksic@srce.hr> May/1997 75 ;; Hrvoje Niksic <hniksic@srce.hr> May/1997
76 ;; Completely rewritten. Now uses `defstruct' and other CL stuff 76 ;; Completely rewritten. Now uses `defstruct' and other CL stuff
77 ;; to define clients cleanly. Many thanks to Dave Gillespie! 77 ;; to define clients cleanly. Many thanks to Dave Gillespie!
78 ;;
79 ;; Mike Scheidler <c23mts@eng.delcoelect.com> July, 1997
80 ;; Added 'Done' button to the menubar.
78 81
79 82
80 ;;; Code: 83 ;;; Code:
81 84
82 (defgroup gnuserv nil 85 (defgroup gnuserv nil
130 (function :tag "Other")) 133 (function :tag "Other"))
131 :group 'gnuserv) 134 :group 'gnuserv)
132 135
133 (defcustom gnuserv-done-function 'kill-buffer 136 (defcustom gnuserv-done-function 'kill-buffer
134 "*Function used to remove a buffer after editing. 137 "*Function used to remove a buffer after editing.
135 It is called with one BUFFER argument. Functions such as 'kill-buffer' and 138 It is called with one BUFFER argument. Functions such as `kill-buffer' and
136 'bury-buffer' are good values. See also `gnuserv-done-temp-file-function'." 139 `bury-buffer' are good values. See also `gnuserv-done-temp-file-function'."
137 :type '(radio (function-item kill-buffer) 140 :type '(radio (function-item kill-buffer)
138 (function-item bury-buffer) 141 (function-item bury-buffer)
139 (function :tag "Other")) 142 (function :tag "Other"))
140 :group 'gnuserv) 143 :group 'gnuserv)
141 144
142 (defcustom gnuserv-done-temp-file-function 'kill-buffer 145 (defcustom gnuserv-done-temp-file-function 'kill-buffer
143 "*Function used to remove a temporary buffer after editing. 146 "*Function used to remove a temporary buffer after editing.
144 It is called with one BUFFER argument. Functions such as 'kill-buffer' and 147 It is called with one BUFFER argument. Functions such as `kill-buffer' and
145 'bury-buffer' are good values. See also `gnuserv-done-temp-file-function'." 148 `bury-buffer' are good values. See also `gnuserv-done-temp-file-function'."
146 :type '(radio (function-item kill-buffer) 149 :type '(radio (function-item kill-buffer)
147 (function-item bury-buffer) 150 (function-item bury-buffer)
148 (function :tag "Other")) 151 (function :tag "Other"))
149 :group 'gnuserv) 152 :group 'gnuserv)
150 153
436 (funcall (if view 439 (funcall (if view
437 gnuserv-view-file-function 440 gnuserv-view-file-function
438 gnuserv-find-file-function) 441 gnuserv-find-file-function)
439 path) 442 path)
440 (goto-line line) 443 (goto-line line)
441 (run-hooks 'gnuserv-visit-hook)
442 ;; Don't memorize the quick and view buffers. 444 ;; Don't memorize the quick and view buffers.
443 (unless (or quick view) 445 (unless (or quick view)
444 (pushnew (current-buffer) (gnuclient-buffers client)) 446 (pushnew (current-buffer) (gnuclient-buffers client))
445 (setq gnuserv-minor-mode t)) 447 (setq gnuserv-minor-mode t)
448 ;; Add the "Done" button to the menubar, only in this buffer.
449 (set-buffer-menubar current-menubar)
450 (add-menu-button nil ["Done" gnuserv-edit t]))
451 (run-hooks 'gnuserv-visit-hook)
446 (pop list))) 452 (pop list)))
447 (cond 453 (cond
448 ((and (or quick view) 454 ((and (or quick view)
449 (device-on-window-system-p device)) 455 (device-on-window-system-p device))
450 ;; Exit if on X device, and quick or view. NOTE: if the 456 ;; Exit if on X device, and quick or view. NOTE: if the
590 (defun gnuserv-buffer-done-1 (buffer) 596 (defun gnuserv-buffer-done-1 (buffer)
591 (dolist (client (gnuserv-buffer-clients buffer)) 597 (dolist (client (gnuserv-buffer-clients buffer))
592 (callf2 delq buffer (gnuclient-buffers client)) 598 (callf2 delq buffer (gnuclient-buffers client))
593 (when (null (gnuclient-buffers client)) 599 (when (null (gnuclient-buffers client))
594 (gnuserv-kill-client client))) 600 (gnuserv-kill-client client)))
595 ;; Get rid of the buffer 601 ;; Get rid of the buffer.
596 (save-excursion 602 (save-excursion
597 (set-buffer buffer) 603 (set-buffer buffer)
598 (run-hooks 'gnuserv-done-hook) 604 (run-hooks 'gnuserv-done-hook)
599 (setq gnuserv-minor-mode nil) 605 (setq gnuserv-minor-mode nil)
606 ;; Delete the menu button.
607 (delete-menu-item '("Done"))
600 (funcall (if (gnuserv-temp-file-p buffer) 608 (funcall (if (gnuserv-temp-file-p buffer)
601 gnuserv-done-temp-file-function 609 gnuserv-done-temp-file-function
602 gnuserv-done-function) 610 gnuserv-done-function)
603 buffer))) 611 buffer)))
604 612