diff options
| author | Jay Belanger | 2004-12-29 04:58:24 +0000 |
|---|---|---|
| committer | Jay Belanger | 2004-12-29 04:58:24 +0000 |
| commit | 090ca6e3e60cd18ad600fccd2dee0e5439dc1fbb (patch) | |
| tree | b4c78703c21792cb45bffcc663727f4bf3863493 | |
| parent | 993ce732149d539a6698fe4062f50c8467fb7ce3 (diff) | |
| download | emacs-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.el | 75 |
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 |