2006-10-26 John W. Eaton * 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". *** octave-inf.el.orig Thu Oct 26 09:48:26 2006 --- octave-inf.el Thu Oct 26 09:50:06 2006 *************** *** 113,118 **** --- 113,121 ---- (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,228 **** 'identity inferior-octave-output-list "\n") "\n")))) ;; 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"))) ;; O.k., now we are ready for the Inferior Octave startup commands. (let* (commands --- 221,240 ---- '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\\|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,239 **** (file (or inferior-octave-startup-file (concat "~/.emacs-" program)))) (setq commands ! (list "page_screen_output = 0;\n" (if (not (string-equal inferior-octave-output-string ">> ")) ! "PS1=\"\\\\s> \";\n") (if (file-exists-p file) (format "source (\"%s\");\n" file)))) (inferior-octave-send-list-and-digest commands)) --- 242,253 ---- (file (or inferior-octave-startup-file (concat "~/.emacs-" program)))) (setq commands ! (list "more off;\n" (if (not (string-equal inferior-octave-output-string ">> ")) ! (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,389 **** 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")) (cd (car inferior-octave-output-list))) ;;; provide ourself --- 397,403 ---- 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 '("disp (pwd ())\n")) (cd (car inferior-octave-output-list))) ;;; provide ourself