;;; ledit.el --- Emacs side of ledit interface;; Copyright (C) 1985 Free Software Foundation, Inc.;; Maintainer: FSF;; Keyword: languages;; This file is part of XEmacs.;; XEmacs is free software; you can redistribute it and/or modify it;; under the terms of the GNU General Public License as published by;; the Free Software Foundation; either version 2, or (at your option);; any later version.;; XEmacs is distributed in the hope that it will be useful, but;; WITHOUT ANY WARRANTY; without even the implied warranty of;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU;; General Public License for more details.;; You should have received a copy of the GNU General Public License;; along with XEmacs; see the file COPYING. If not, write to the Free;; Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA;; 02111-1307, USA.;;; Synched up with: FSF 19.34.;;; Commentary:;; This is a major mode for editing Liszt. See etc/LEDIT for details.;;; Code:;;; To do:;;; o lisp -> emacs side of things (grind-definition and find-definition)(defvarledit-mode-mapnil)(defconstledit-zap-file(concat"/tmp/"(user-login-name)".l1")"File name for data sent to Lisp by Ledit.")(defconstledit-read-file(concat"/tmp/"(user-login-name)".l2")"File name for data sent to Ledit by Lisp.")(defconstledit-compile-file(concat"/tmp/"(user-login-name)".l4")"File name for data sent to Lisp compiler by Ledit.")(defconstledit-buffer"*LEDIT*""Name of buffer in which Ledit accumulates data to send to Lisp.");;;###autoload(defconstledit-save-filest"\*Non-nil means Ledit should save files before transferring to Lisp.");;;###autoload(defconstledit-go-to-lisp-string"%?lisp""\*Shell commands to execute to resume Lisp job.");;;###autoload(defconstledit-go-to-liszt-string"%?liszt""\*Shell commands to execute to resume Lisp compiler job.")(defunledit-save-defun()"Save the current defun in the ledit buffer"(interactive)(save-excursion(end-of-defun)(let((end(point)))(beginning-of-defun)(append-to-bufferledit-buffer(point)end))(message"Current defun saved for Lisp")))(defunledit-save-region(begend)"Save the current region in the ledit buffer"(interactive"r")(append-to-bufferledit-bufferbegend)(message"Region saved for Lisp"))(defunledit-zap-defun-to-lisp()"Carry the current defun to Lisp."(interactive)(ledit-save-defun)(ledit-go-to-lisp))(defunledit-zap-defun-to-liszt()"Carry the current defun to liszt."(interactive)(ledit-save-defun)(ledit-go-to-liszt))(defunledit-zap-region-to-lisp(begend)"Carry the current region to Lisp."(interactive"r")(ledit-save-regionbegend)(ledit-go-to-lisp))(defunledit-go-to-lisp()"Suspend Emacs and restart a waiting Lisp job."(interactive)(ifledit-save-files(save-some-buffers))(if(get-bufferledit-buffer)(save-excursion(set-bufferledit-buffer)(goto-char(point-min))(write-region(point-min)(point-max)ledit-zap-file)(erase-buffer)))(suspend-emacsledit-go-to-lisp-string)(loadledit-read-filett))(defunledit-go-to-liszt()"Suspend Emacs and restart a waiting Liszt job."(interactive)(ifledit-save-files(save-some-buffers))(if(get-bufferledit-buffer)(save-excursion(set-bufferledit-buffer)(goto-char(point-min))(insert"(declare (macros t))\n")(write-region(point-min)(point-max)ledit-compile-file)(erase-buffer)))(suspend-emacsledit-go-to-liszt-string)(loadledit-read-filett))(defunledit-setup()"Set up key bindings for the Lisp/Emacs interface."(if(notledit-mode-map)(progn(setqledit-mode-map(nconc(make-sparse-keymap)shared-lisp-mode-map))))(define-keyledit-mode-map"\e\^d"'ledit-save-defun)(define-keyledit-mode-map"\e\^r"'ledit-save-region)(define-keyledit-mode-map"\^xz"'ledit-go-to-lisp)(define-keyledit-mode-map"\e\^c"'ledit-go-to-liszt))(ledit-setup);;;###autoload(defunledit-mode()"\\<ledit-mode-map>Major mode for editing text and stuffing it to a Lisp job.Like Lisp mode, plus these special commands: \\[ledit-save-defun] -- record defun at or after point for later transmission to Lisp job. \\[ledit-save-region] -- record region for later transmission to Lisp job. \\[ledit-go-to-lisp] -- transfer to Lisp job and transmit saved text. \\[ledit-go-to-liszt] -- transfer to Liszt (Lisp compiler) job and transmit saved text.\\{ledit-mode-map}To make Lisp mode automatically change to Ledit mode,do (setq lisp-mode-hook 'ledit-from-lisp-mode)"(interactive)(lisp-mode)(ledit-from-lisp-mode));;;###autoload(defunledit-from-lisp-mode()(use-local-mapledit-mode-map)(setqmode-name"Ledit")(setqmajor-mode'ledit-mode)(run-hooks'ledit-mode-hook));;; ledit.el ends here