home *** CD-ROM | disk | FTP | other *** search
- Date: Wed, 26 Jan 1994 12:25:34 +0100
- Return-Path: owner-gwmtalk@sophia.inria.fr
- From: Sven Wischnowsky <oberon@cs.tu-berlin.de>
- Message-Id: <199401261125.AA00332@mail.cs.tu-berlin.de>
- To: geroahde@w250zrz.zrz.TU-Berlin.DE
- Cc: gwm-talk@mirsa.inria.fr
- In-Reply-To: <9401241755.AA22923@w250zrz.zrz.TU-Berlin.DE> (message from Gero Guenther on Mon, 24 Jan 94 18:55:29 +0100)
- Subject: Re: gwm support for emacs-19.22
- No-Reply-To: oberon@cs.tu-berlin.de
- Content-Length: 6754
-
-
- Gero Guenther wrote:
-
- > Hello folks,
- >
- > are there patches available for emacs-19.22
- > to support the wool-interaction-mode and the other comunication with
- > gwm I know from epoch?
- >
- > I lost the account with my addr on the mailinglist for gwm so please
- > respond with email or put me on the mailinglist again before
- > responding.
- >
-
- Well, not exactly...
-
- My solution to this problem was to patch gwm. Below is a patch for the
- gwm.c file (version 1.7o) which adds two new options:
-
- -I: this one makes gwm read its stdin (and, of course, evaluate it)
- -P: together with -I makes gwm print a simple prompt showing the
- number of currently open parentheses
-
- COLAS NOTE: these patches has been added in the current version...
- The rest is simple, something like this (in emacs):
-
- (defvar gwm-proc nil)
- (defvar gwm-buf nil)
-
- (if (not gwm-proc)
- (let ((b (generate-new-buffer "*gwm*"))
- (ob (current-buffer))
- (m (copy-keymap lisp-mode-map)))
- (set-buffer b)
- (use-local-map m)
- (local-set-key "\C-j" 'gwm-send)
- (set-buffer ob)
- (setq gwm-buf b)
- (setq gwm-proc (start-process "gwm"
- b
- (if (string-equal system-type
- "usg-unix-v")
- "/home/pub/bin/sol2/gwm"
- "/home/pub/bin/sun4/gwm")
- "-I"))
- (process-kill-without-query gwm-proc)
- (set-process-filter gwm-proc 'gwm-filter)
- (set-process-sentinel gwm-proc 'gwm-sentinel)))
-
- (defun gwm-filter (p s)
- (let ((ob (current-buffer)))
- (unwind-protect
- (let ((i 0) (l (length s)) (p (point)))
- (set-buffer zg-buf)
- (insert s)
- (if (string-match "\012--emacs-exec:\012\\(.*\\)\012--end" s)
- (eval-region (+ p (match-beginning 1))
- (+ p (match-end 1))))))
- (set-buffer ob)))
-
- (defun gwm-sentinel (process message)
- (setq gwm-proc (start-process "gwm"
- gwm-buf
- (if (string-equal system-type
- "usg-unix-v")
- "/home/pub/bin/sol2/gwm"
- "/home/pub/bin/sun4/gwm")
- "-I"))
- (process-kill-without-query gwm-proc)
- (set-process-filter gwm-proc 'gwm-filter)
- (set-process-sentinel gwm-proc 'gwm-sentinel))
-
- (defun gwm-exec (s)
- (interactive "Sgwm: ")
- (send-string gwm-proc (concat s "\n")))
-
- (defun gwm-send ()
- (interactive)
- (let ((op (point))
- (stab (syntax-table)))
- (set-syntax-table emacs-lisp-mode-syntax-table)
- (forward-sexp -1)
- (gwm-exec (buffer-substring (point) op))
- (goto-char op)
- (insert "\n")
- (set-syntax-table stab)))
-
-
- The filter function allows you to execute emacs code from gwm:
-
- (defun eval-emacs (s)
- (print "\n--emacs-exec:\n" s "\n--end\n"))
-
- Hope this helps...
-
- Bye
- Sven
-
-