:group 'processes
:group 'terminals)
+;;;###autoload
+(defcustom gnuserv-mode-line-string " Server"
+ "*String to display in the modeline when Gnuserv is active.
+Set this to nil if you don't want a modeline indicator."
+:type '(choice string
+ (const :tag "none" nil))
+:group 'gnuserv)
+
;; Provide the old variables as aliases, to avoid breaking .emacs
;; files. However, they are obsolete and should be converted to the
;; We want the client-infested buffers to have some modeline
;; identification, so we'll make a "minor mode".
(defvar gnuserv-minor-mode nil)
-(make-variable-buffer-local 'gnuserv-mode)
-(pushnew '(gnuserv-minor-mode " Server") minor-mode-alist
- :test 'equal)
+(make-variable-buffer-local 'gnuserv-minor-mode)
+;;(pushnew '(gnuserv-minor-mode "Server") minor-mode-alist
+;; :test 'equal)
+(add-minor-mode 'gnuserv-minor-mode 'gnuserv-mode-line-string)
\f
;; Sample gnuserv-frame functions
(defun gnuserv-main-frame-function (type)
"Return a sensible value for the main Emacs frame."
(if (or (eq type 'x)
+ (eq type 'gtk)
(eq type 'mswindows))
(car (frame-list))
nil))
This is meant in the X sense, so it will not return frames that are on another
visual screen. Totally visible frames are preferred. If none found, return nil."
(if (or (eq type 'x)
+ (eq type 'gtk)
(eq type 'mswindows))
(cond ((car (filtered-frame-list 'frame-totally-visible-p
(selected-device))))
(eval form))
\f
+
+(defun make-x-device-with-gtk-fallback (device)
+ (or (condition-case ()
+ (make-x-device device)
+ (error nil))
+ (make-gtk-device)))
+
;; "Execute" a client connection, called by gnuclient. This is the
;; backbone of gnuserv.el.
(defun gnuserv-edit-files (type list &rest flags)
((null dest-frame)
(case (car type)
(tty (apply 'make-tty-device (cdr type)))
- (x (make-x-device (cadr type)))
+ (gtk (make-gtk-device))
+ (x (make-x-device-with-gtk-fallback (cadr type)))
(mswindows (make-mswindows-device))
(t (error "Invalid device type"))))
(t