aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJay Belanger2004-12-29 04:58:24 +0000
committerJay Belanger2004-12-29 04:58:24 +0000
commit090ca6e3e60cd18ad600fccd2dee0e5439dc1fbb (patch)
treeb4c78703c21792cb45bffcc663727f4bf3863493
parent993ce732149d539a6698fe4062f50c8467fb7ce3 (diff)
downloademacs-090ca6e3e60cd18ad600fccd2dee0e5439dc1fbb.tar.gz
emacs-090ca6e3e60cd18ad600fccd2dee0e5439dc1fbb.zip
(calc-user-define-formula): Put default values for function names in
prompts.
-rw-r--r--lisp/calc/calc-prog.el75
1 files changed, 44 insertions, 31 deletions
diff --git a/lisp/calc/calc-prog.el b/lisp/calc/calc-prog.el
index d7d0a03c182..88157cfb687 100644
--- a/lisp/calc/calc-prog.el
+++ b/lisp/calc/calc-prog.el
@@ -170,7 +170,8 @@
170 (arglist nil) 170 (arglist nil)
171 (is-lambda (and (eq (car-safe form) 'calcFunc-lambda) 171 (is-lambda (and (eq (car-safe form) 'calcFunc-lambda)
172 (>= (length form) 2))) 172 (>= (length form) 2)))
173 odef key keyname cmd cmd-base func calc-user-formula-alist is-symb) 173 odef key keyname cmd cmd-base cmd-base-default
174 func calc-user-formula-alist is-symb)
174 (if is-lambda 175 (if is-lambda
175 (setq arglist (mapcar (function (lambda (x) (nth 1 x))) 176 (setq arglist (mapcar (function (lambda (x) (nth 1 x)))
176 (nreverse (cdr (reverse (cdr form))))) 177 (nreverse (cdr (reverse (cdr form)))))
@@ -189,18 +190,25 @@
189 (char-to-string key) 190 (char-to-string key)
190 (format "%03d" key))) 191 (format "%03d" key)))
191 odef (assq key (calc-user-key-map))) 192 odef (assq key (calc-user-key-map)))
193 (unless keyname
194 (setq keyname (format "%05d" (abs (% (random) 10000)))))
192 (while 195 (while
193 (progn 196 (progn
194 (setq cmd (completing-read "Define M-x command name: " 197 (setq cmd-base-default (concat "User-" keyname))
195 obarray 'commandp nil 198 (setq cmd (completing-read
196 (if (and odef (symbolp (cdr odef))) 199 (concat "Define M-x command name (default: calc-"
197 (symbol-name (cdr odef)) 200 cmd-base-default
198 "calc-")) 201 "): ")
199 cmd-base (and (string-match "\\`calc-\\(.+\\)\\'" cmd) 202 obarray 'commandp nil
200 (math-match-substring cmd 1)) 203 (if (and odef (symbolp (cdr odef)))
201 cmd (and (not (or (string-equal cmd "") 204 (symbol-name (cdr odef))
202 (string-equal cmd "calc-"))) 205 "calc-")))
203 (intern cmd))) 206 (if (or (string-equal cmd "")
207 (string-equal cmd "calc-"))
208 (setq cmd (concat "calc-User-" keyname)))
209 (setq cmd-base (and (string-match "\\`calc-\\(.+\\)\\'" cmd)
210 (math-match-substring cmd 1)))
211 (setq cmd (intern cmd))
204 (and cmd 212 (and cmd
205 (fboundp cmd) 213 (fboundp cmd)
206 odef 214 odef
@@ -210,30 +218,33 @@
210 (concat "Replace previous definition for " 218 (concat "Replace previous definition for "
211 (symbol-name cmd) "? ") 219 (symbol-name cmd) "? ")
212 "That name conflicts with a built-in Emacs function. Replace this function? ")))))) 220 "That name conflicts with a built-in Emacs function. Replace this function? "))))))
213 (if (and key (not cmd))
214 (setq cmd (intern (concat "calc-User-" keyname))))
215 (while 221 (while
216 (progn 222 (progn
223 (setq cmd-base-default
224 (if cmd-base
225 (if (string-match
226 "\\`User-.+" cmd-base)
227 (concat
228 "User"
229 (substring cmd-base 5))
230 cmd-base)
231 (concat "User" keyname)))
217 (setq func 232 (setq func
218 (concat "calcFunc-" 233 (concat "calcFunc-"
219 (completing-read "Define algebraic function name: " 234 (completing-read
220 (mapcar (lambda (x) (substring x 9)) 235 (concat "Define algebraic function name (default: "
221 (all-completions "calcFunc-" 236 cmd-base-default "): ")
222 obarray)) 237 (mapcar (lambda (x) (substring x 9))
223 (lambda (x) 238 (all-completions "calcFunc-"
224 (fboundp 239 obarray))
225 (intern (concat "calcFunc-" x)))) 240 (lambda (x)
226 nil 241 (fboundp
227 (if cmd-base 242 (intern (concat "calcFunc-" x))))
228 (if (string-match 243 nil)))
229 "\\`User-.+" cmd-base) 244 (setq func
230 (concat 245 (if (string-equal func "calcFunc-")
231 "User" 246 (intern (concat "calcFunc-" cmd-base-default))
232 (substring cmd-base 5)) 247 (intern func)))
233 cmd-base)
234 "")))
235 func (and (not (string-equal func "calcFunc-"))
236 (intern func)))
237 (and func 248 (and func
238 (fboundp func) 249 (fboundp func)
239 (not (fboundp cmd)) 250 (not (fboundp cmd))
@@ -244,11 +255,13 @@
244 (concat "Replace previous definition for " 255 (concat "Replace previous definition for "
245 (symbol-name func) "? ") 256 (symbol-name func) "? ")
246 "That name conflicts with a built-in Emacs function. Replace this function? ")))))) 257 "That name conflicts with a built-in Emacs function. Replace this function? "))))))
258
247 (if (not func) 259 (if (not func)
248 (setq func (intern (concat "calcFunc-User" 260 (setq func (intern (concat "calcFunc-User"
249 (or keyname 261 (or keyname
250 (and cmd (symbol-name cmd)) 262 (and cmd (symbol-name cmd))
251 (format "%05d" (% (random) 10000))))))) 263 (format "%05d" (% (random) 10000)))))))
264
252 (if is-lambda 265 (if is-lambda
253 (setq calc-user-formula-alist arglist) 266 (setq calc-user-formula-alist arglist)
254 (while 267 (while