Skip to content

Commit

Permalink
* progmodes/octave-inf.el (inferior-octave-has-built-in-variables):
Browse files Browse the repository at this point in the history
	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".
  • Loading branch information
Chong Yidong committed Oct 27, 2006
1 parent e757c0a commit ff3208a
Show file tree
Hide file tree
Showing 2 changed files with 32 additions and 5 deletions.
13 changes: 13 additions & 0 deletions lisp/ChangeLog
Original file line number Diff line number Diff line change
@@ -1,3 +1,16 @@
2006-10-26 John W. Eaton <jwe@octave.org>

* 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".

2006-10-26 Chong Yidong <cyd@stupidchicken.com>

* emacs-lisp/cl-indent.el (lisp-indent-259): Indent nil's in the
Expand Down
24 changes: 19 additions & 5 deletions lisp/progmodes/octave-inf.el
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down Expand Up @@ -218,22 +221,33 @@ 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
(program (file-name-nondirectory inferior-octave-program))
(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))
Expand Down Expand Up @@ -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
Expand Down

0 comments on commit ff3208a

Please sign in to comment.