;ELC ;;; compiled by rms@mole.gnu.ai.mit.edu on Mon Aug 9 01:54:50 1993 ;;; from file /home/fsf/rms/e19/lisp/server.el ;;; emacs version 19.17.7. ;;; bytecomp version FSF 2.10 ;;; optimization is on. ;;; this file uses opcodes which do not exist in Emacs 18. (if (and (boundp 'emacs-version) (or (and (boundp 'epoch::version) epoch::version) (string-lessp emacs-version "19"))) (error "This file was compiled for Emacs 19")) (defvar server-program "emacsserver" "\ *The program to use as the edit server") (defvar server-visit-hook nil "\ *List of hooks to call when visiting a file for the Emacs server.") (defvar server-switch-hook nil "\ *List of hooks to call when switching to a buffer for the Emacs server.") (defvar server-process nil "\ the current server process") (byte-code "!" [boundp server-previous-string ""] 2) (defvar server-clients nil "\ List of current server clients. Each element is (CLIENTID FILES...) where CLIENTID is a string that can be given to the server process to identify a client. When a buffer is marked as \"done\", it is removed from this list.") (defvar server-buffer-clients nil "\ List of clientids for clients requesting editing of current buffer.") (put (quote server-buffer-clients) (quote permanent-local) t) (defvar server-window nil "\ *The window to use for selecting Emacs server buffers. If nil, use the selected window. If it is a frame, use the frame's selected window.") (defvar server-temp-file-regexp "^/tmp/Re\\|/draft$" "\ *Regexp which should match filenames of temporary files which are deleted and reused after each edit by the programs that invoke the emacs server.") (byte-code "!#\"B\"\"" [make-variable-buffer-local server-buffer-clients put permanent-local t set-default nil minor-mode-alist (server-buffer-clients " Server") defalias server-log #[(string) "!qdb\nco )" [get-buffer "*server*" string newline] 2] server-sentinel #[(proc msg) " !=!! !=!!" [process-status proc exit server-log message "Server subprocess exited" signal "Server subprocess killed"] 3]] 4) (defalias 'server-start #[(&optional leave-dead) "\"ďƏ(@A@!)\n?L8!!#\"\"!" [server-process set-process-sentinel nil (delete-process server-process) ((error)) (delete-file "~/.emacs_server") ((error)) server-clients buffer server-buffer-done leave-dead server-log message "Restarting server" start-process "server" server-program server-sentinel set-process-filter server-process-filter process-kill-without-query] 4 "\ Allow this Emacs process to be a server for client processes. This starts a server communications subprocess through which client \"editors\" can send your editing commands to this Emacs job. To use the server, set up the program `etc/emacsclient' in the Emacs distribution as your standard \"editor\". Prefix arg means just kill any existing server communications subprocess." "P"]) (defalias (quote server-process-filter) #[(proc string) " !\n PGSH= \"=  ƕO \"OC   ƕO \"x ƔƕSO ƕO\"gO! t D B  )=  \" B A@!!!!+" [server-log string server-previous-string 10 string-match "Client: " 0 nil "" " " 1 lineno files client "[^ ]+ " arg "\\`\\+[0-9]+\\'" read server-visit-files server-clients server-switch-buffer run-hooks server-switch-hook message substitute-command-keys "When done with a buffer, type \\[server-edit]."] 6]) (defalias 'server-visit-files #[(files client) "pÎ i @@ !E qE !5 !- !N\"N Q!N !N !q!* @A@!@Bp\nB A\n)\n*" [nil obuf client-record ((set-buffer obuf)) files filen get-file-buffer file-exists-p verify-visited-file-modtime buffer-modified-p revert-buffer t y-or-n-p "File no longer exists: " ", write buffer to file? " write-file find-file-noselect run-hooks server-visit-hook goto-line client server-buffer-clients] 5 "\ Finds FILES and returns the list CLIENT with the buffers nconc'd. FILES is an alist whose elements are (FILENAME LINENUMBER)."]) (defalias 'server-buffer-done #[(buffer) " !=  U @\" >A@ \"AMG @\"\"@\"! \") A !e q) !+" [process-status server-process run nil server-clients old-clients next-buffer running client buffer delq send-string format "Close: %s Done\n" server-log buffer-name server-buffer-clients bury-buffer] 6 "\ Mark BUFFER as \"done\" for its client(s). Buries the buffer, and returns another server buffer as a suggestion for what to select next."]) (defalias 'server-temp-file-p #[(buffer) " ! !\"" [buffer-file-name buffer string-match server-temp-file-regexp] 4 "\ Return non-nil if BUFFER contains a file considered temporary. These are files whose names suggest they are repeatedly reused to pass information to another program. The variable `server-temp-file-regexp' controls which filenames are considered temporary."]) (defalias 'server-done #[nil "p 1!É !*. . Q!.!!)" [buffer server-buffer-clients server-temp-file-p nil buffer-backed-up version-control save-buffer kill-buffer buffer-modified-p y-or-n-p "Save file " buffer-file-name "? " server-buffer-done] 4 "\ Offer to save current buffer, mark it as \"done\" for clients. Then bury it, and return a suggested buffer to select next."]) (defalias 'server-edit #[(&optional arg) "  !>! !" [arg server-process process-status (signal exit) server-start nil server-switch-buffer server-done] 2 "\ Switch to next server editing buffer; say \"Done\" for current buffer. If a server buffer is current, it is marked \"done\" and optionally saved. When all of a client's buffers are marked as \"done\", the client is notified. Temporary files such as MH files are always saved and backed up, no questions asked. (The variable `make-backup-files', if nil, still inhibits a backup; you can set it locally in a particular buffer to prevent a backup for it.) The variable `server-temp-file-regexp' controls which filenames are considered temporary. If invoked with a prefix argument, or if there is no server process running, starts server process and that is all. Invoked by \\[server-edit]." "P"]) (defalias 'server-switch-buffer #[(next-buffer) " ! ! ! !! 3 !- !- ! !! @ @A@! !" [windowp server-window select-window framep frame-selected-window next-buffer bufferp buffer-name switch-to-buffer server-switch-buffer server-buffer-done server-clients other-buffer] 3 "\ Switch to another buffer, preferably one that has a client. Arg NEXT-BUFFER is a suggestion; if it is a live buffer, use it."]) (byte-code "\"!" [global-set-key "#" server-edit provide server] 3)