Mercurial > emacs
annotate lisp/ledit.el @ 16945:d6cd00b2e214
(isnan): Define even if LISP_FLOAT_TYPE is not defined, since fmod
might need it.
(fmod): Ensure that the magnitude of the result does not exceed that
of the divisor, and that the sign of the result does not disagree with
that of the dividend. This does not yield a
particularly accurate result, but at least it will be in the
range promised by fmod.
author | Paul Eggert <eggert@twinsun.com> |
---|---|
date | Tue, 28 Jan 1997 04:51:45 +0000 |
parents | 83f275dcd93a |
children | 11218164bc54 |
rev | line source |
---|---|
659
505130d1ddf8
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
269
diff
changeset
|
1 ;;; ledit.el --- Emacs side of ledit interface |
505130d1ddf8
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
269
diff
changeset
|
2 |
846
20674ae6bf52
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
811
diff
changeset
|
3 ;; Copyright (C) 1985 Free Software Foundation, Inc. |
20674ae6bf52
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
811
diff
changeset
|
4 |
807
4f28bd14272c
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
659
diff
changeset
|
5 ;; Maintainer: FSF |
14040 | 6 ;; Keyword: languages |
807
4f28bd14272c
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
659
diff
changeset
|
7 |
36 | 8 ;; This file is part of GNU Emacs. |
9 | |
10 ;; GNU Emacs is free software; you can redistribute it and/or modify | |
11 ;; it under the terms of the GNU General Public License as published by | |
807
4f28bd14272c
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
659
diff
changeset
|
12 ;; the Free Software Foundation; either version 2, or (at your option) |
36 | 13 ;; any later version. |
14 | |
15 ;; GNU Emacs is distributed in the hope that it will be useful, | |
16 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of | |
17 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
18 ;; GNU General Public License for more details. | |
19 | |
20 ;; You should have received a copy of the GNU General Public License | |
14169 | 21 ;; along with GNU Emacs; see the file COPYING. If not, write to the |
22 ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, | |
23 ;; Boston, MA 02111-1307, USA. | |
36 | 24 |
2307
10e417efb12a
Added or corrected Commentary sections
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
923
diff
changeset
|
25 ;;; Commentary: |
10e417efb12a
Added or corrected Commentary sections
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
923
diff
changeset
|
26 |
10e417efb12a
Added or corrected Commentary sections
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
923
diff
changeset
|
27 ;; This is a major mode for editing Liszt. See etc/LEDIT for details. |
10e417efb12a
Added or corrected Commentary sections
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
923
diff
changeset
|
28 |
807
4f28bd14272c
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
659
diff
changeset
|
29 ;;; Code: |
36 | 30 |
31 ;;; To do: | |
32 ;;; o lisp -> emacs side of things (grind-definition and find-definition) | |
33 | |
34 (defvar ledit-mode-map nil) | |
35 | |
36 (defconst ledit-zap-file (concat "/tmp/" (user-login-name) ".l1") | |
37 "File name for data sent to Lisp by Ledit.") | |
38 (defconst ledit-read-file (concat "/tmp/" (user-login-name) ".l2") | |
39 "File name for data sent to Ledit by Lisp.") | |
40 (defconst ledit-compile-file | |
41 (concat "/tmp/" (user-login-name) ".l4") | |
42 "File name for data sent to Lisp compiler by Ledit.") | |
43 (defconst ledit-buffer "*LEDIT*" | |
44 "Name of buffer in which Ledit accumulates data to send to Lisp.") | |
256 | 45 |
269 | 46 ;;;###autoload |
47 (defconst ledit-save-files t "\ | |
48 *Non-nil means Ledit should save files before transferring to Lisp.") | |
49 ;;;###autoload | |
50 (defconst ledit-go-to-lisp-string "%?lisp" "\ | |
51 *Shell commands to execute to resume Lisp job.") | |
52 ;;;###autoload | |
53 (defconst ledit-go-to-liszt-string "%?liszt" "\ | |
54 *Shell commands to execute to resume Lisp compiler job.") | |
36 | 55 |
56 (defun ledit-save-defun () | |
57 "Save the current defun in the ledit buffer" | |
58 (interactive) | |
59 (save-excursion | |
60 (end-of-defun) | |
61 (let ((end (point))) | |
62 (beginning-of-defun) | |
63 (append-to-buffer ledit-buffer (point) end)) | |
64 (message "Current defun saved for Lisp"))) | |
65 | |
66 (defun ledit-save-region (beg end) | |
67 "Save the current region in the ledit buffer" | |
68 (interactive "r") | |
69 (append-to-buffer ledit-buffer beg end) | |
70 (message "Region saved for Lisp")) | |
71 | |
72 (defun ledit-zap-defun-to-lisp () | |
214 | 73 "Carry the current defun to Lisp." |
36 | 74 (interactive) |
75 (ledit-save-defun) | |
76 (ledit-go-to-lisp)) | |
77 | |
78 (defun ledit-zap-defun-to-liszt () | |
214 | 79 "Carry the current defun to liszt." |
36 | 80 (interactive) |
81 (ledit-save-defun) | |
82 (ledit-go-to-liszt)) | |
83 | |
84 (defun ledit-zap-region-to-lisp (beg end) | |
214 | 85 "Carry the current region to Lisp." |
36 | 86 (interactive "r") |
87 (ledit-save-region beg end) | |
88 (ledit-go-to-lisp)) | |
89 | |
90 (defun ledit-go-to-lisp () | |
91 "Suspend Emacs and restart a waiting Lisp job." | |
92 (interactive) | |
93 (if ledit-save-files | |
94 (save-some-buffers)) | |
95 (if (get-buffer ledit-buffer) | |
96 (save-excursion | |
97 (set-buffer ledit-buffer) | |
98 (goto-char (point-min)) | |
99 (write-region (point-min) (point-max) ledit-zap-file) | |
100 (erase-buffer))) | |
101 (suspend-emacs ledit-go-to-lisp-string) | |
102 (load ledit-read-file t t)) | |
103 | |
104 (defun ledit-go-to-liszt () | |
105 "Suspend Emacs and restart a waiting Liszt job." | |
106 (interactive) | |
107 (if ledit-save-files | |
108 (save-some-buffers)) | |
109 (if (get-buffer ledit-buffer) | |
110 (save-excursion | |
111 (set-buffer ledit-buffer) | |
112 (goto-char (point-min)) | |
113 (insert "(declare (macros t))\n") | |
114 (write-region (point-min) (point-max) ledit-compile-file) | |
115 (erase-buffer))) | |
116 (suspend-emacs ledit-go-to-liszt-string) | |
117 (load ledit-read-file t t)) | |
118 | |
119 (defun ledit-setup () | |
214 | 120 "Set up key bindings for the Lisp/Emacs interface." |
36 | 121 (if (not ledit-mode-map) |
923 | 122 (progn (setq ledit-mode-map (nconc (make-sparse-keymap) |
123 shared-lisp-mode-map)))) | |
36 | 124 (define-key ledit-mode-map "\e\^d" 'ledit-save-defun) |
125 (define-key ledit-mode-map "\e\^r" 'ledit-save-region) | |
126 (define-key ledit-mode-map "\^xz" 'ledit-go-to-lisp) | |
127 (define-key ledit-mode-map "\e\^c" 'ledit-go-to-liszt)) | |
128 | |
129 (ledit-setup) | |
130 | |
256 | 131 ;;;###autoload |
36 | 132 (defun ledit-mode () |
214 | 133 "\\<ledit-mode-map>Major mode for editing text and stuffing it to a Lisp job. |
36 | 134 Like Lisp mode, plus these special commands: |
214 | 135 \\[ledit-save-defun] -- record defun at or after point |
36 | 136 for later transmission to Lisp job. |
214 | 137 \\[ledit-save-region] -- record region for later transmission to Lisp job. |
138 \\[ledit-go-to-lisp] -- transfer to Lisp job and transmit saved text. | |
139 \\[ledit-go-to-liszt] -- transfer to Liszt (Lisp compiler) job | |
36 | 140 and transmit saved text. |
141 \\{ledit-mode-map} | |
142 To make Lisp mode automatically change to Ledit mode, | |
143 do (setq lisp-mode-hook 'ledit-from-lisp-mode)" | |
144 (interactive) | |
145 (lisp-mode) | |
146 (ledit-from-lisp-mode)) | |
147 | |
256 | 148 ;;;###autoload |
36 | 149 (defun ledit-from-lisp-mode () |
150 (use-local-map ledit-mode-map) | |
151 (setq mode-name "Ledit") | |
152 (setq major-mode 'ledit-mode) | |
153 (run-hooks 'ledit-mode-hook)) | |
659
505130d1ddf8
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
269
diff
changeset
|
154 |
505130d1ddf8
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
269
diff
changeset
|
155 ;;; ledit.el ends here |