summaryrefslogtreecommitdiff
path: root/lisp/progmodes/octave-inf.el
diff options
context:
space:
mode:
authorChong Yidong <cyd@stupidchicken.com>2006-10-27 14:39:43 +0000
committerChong Yidong <cyd@stupidchicken.com>2006-10-27 14:39:43 +0000
commitd32f600dfcda95e50f6966d38a1d9c239902fb85 (patch)
tree1f22f0fc2d4764daa001b19ffc4bf1eb50dd4000 /lisp/progmodes/octave-inf.el
parent04a623aac6c05b968557c441bae5b0eb3871940a (diff)
downloademacs-d32f600dfcda95e50f6966d38a1d9c239902fb85.tar.gz
* progmodes/octave-inf.el (inferior-octave-has-built-in-variables):
New defvar. (inferior-octave-resync-dirs): Check to see whether Octave has built-in variables and set inferior-octave-has-built-in-variables. Check inferior-octave-has-built-in-variables to decide whether to send commands that set built-in variables or call functions to change Octave's behavior. Send "disp (pwd ())" to Octave instead of just "pwd". (inferior-octave-startup): Send "more off" to Octave instead of "page_screen_output = 0".
Diffstat (limited to 'lisp/progmodes/octave-inf.el')
-rw-r--r--lisp/progmodes/octave-inf.el24
1 files changed, 19 insertions, 5 deletions
diff --git a/lisp/progmodes/octave-inf.el b/lisp/progmodes/octave-inf.el
index 863f972086e..0f20626c9b9 100644
--- a/lisp/progmodes/octave-inf.el
+++ b/lisp/progmodes/octave-inf.el
@@ -113,6 +113,9 @@ the regular expression `comint-prompt-regexp', a buffer local variable."
(defvar inferior-octave-complete-impossible nil
"Non-nil means that `inferior-octave-complete' is impossible.")
+(defvar inferior-octave-has-built-in-variables nil
+ "Non-nil means that Octave has built-in variables.")
+
(defvar inferior-octave-dynamic-complete-functions
'(inferior-octave-complete comint-dynamic-complete-filename)
"List of functions called to perform completion for inferior Octave.
@@ -218,11 +221,20 @@ startup file, `~/.emacs-octave'."
'identity inferior-octave-output-list "\n")
"\n"))))
+ ;; Find out whether Octave has built-in variables.
+ (inferior-octave-send-list-and-digest
+ (list "exist \"LOADPATH\"\n"))
+ (setq inferior-octave-has-built-in-variables
+ (string-match "101$" (car inferior-octave-output-list)))
+
;; An empty secondary prompt, as e.g. obtained by '--braindead',
;; means trouble.
(inferior-octave-send-list-and-digest (list "PS2\n"))
- (if (string-match "^PS2 = *$" (car inferior-octave-output-list))
- (inferior-octave-send-list-and-digest (list "PS2 = \"> \"\n")))
+ (if (string-match "\\(PS2\\|ans\\) = *$" (car inferior-octave-output-list))
+ (inferior-octave-send-list-and-digest
+ (list (if inferior-octave-has-built-in-variables
+ "PS2 = \"> \"\n"
+ "PS2 (\"> \");\n"))))
;; O.k., now we are ready for the Inferior Octave startup commands.
(let* (commands
@@ -230,10 +242,12 @@ startup file, `~/.emacs-octave'."
(file (or inferior-octave-startup-file
(concat "~/.emacs-" program))))
(setq commands
- (list "page_screen_output = 0;\n"
+ (list "more off;\n"
(if (not (string-equal
inferior-octave-output-string ">> "))
- "PS1=\"\\\\s> \";\n")
+ (if inferior-octave-has-built-in-variables
+ "PS1=\"\\\\s> \";\n"
+ "PS1 (\"\\\\s> \");\n"))
(if (file-exists-p file)
(format "source (\"%s\");\n" file))))
(inferior-octave-send-list-and-digest commands))
@@ -383,7 +397,7 @@ Use \\[inferior-octave-resync-dirs] to resync if Emacs gets confused."
This command queries the inferior Octave process about its current
directory and makes this the current buffer's default directory."
(interactive)
- (inferior-octave-send-list-and-digest '("pwd\n"))
+ (inferior-octave-send-list-and-digest '("disp (pwd ())\n"))
(cd (car inferior-octave-output-list)))
;;; provide ourself