branch: elpa/lua-mode commit 8802c43ffb4d184453602da003f1ed65ac84dfce Author: juergen <juergen> Commit: juergen <juergen>
fixed lua-postprocess-output-buffer: start search from last prompt simplified: lua-send-current-line --- lua-mode.el | 29 ++++++++++++----------------- 1 file changed, 12 insertions(+), 17 deletions(-) diff --git a/lua-mode.el b/lua-mode.el index e99639a..9c30674 100755 --- a/lua-mode.el +++ b/lua-mode.el @@ -28,7 +28,7 @@ ;; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, ;; MA 02110-1301, USA. -(defconst lua-version "$Revision: 1.5 $" +(defconst lua-version "$Revision: 1.6 $" "Lua Mode version number.") ;; Keywords: languages, processes, tools @@ -962,13 +962,7 @@ If `lua-process' is nil or dead, start a new process first." (interactive) (let ((start (save-excursion (beginning-of-line) (point))) (end (save-excursion (end-of-line) (point)))) - (or (and lua-process - (eq (process-status lua-process) 'run)) - (lua-start-process lua-default-application lua-default-application)) - (comint-simple-send lua-process (buffer-substring start end)) - (forward-line 1) - (if lua-always-show - (display-buffer lua-process-buffer)))) + (lua-send-region start end))) ;;}}} ;;{{{ lua-send-region @@ -981,6 +975,7 @@ If `lua-process' is nil or dead, start a new process first." (current-prompt nil) (lua-stdin-line-offset (count-lines (point-min) start)) (lua-stdin-buffer (current-buffer)) + current-prompt ) (write-region start end tempfile) (or (and lua-process @@ -992,28 +987,28 @@ If `lua-process' is nil or dead, start a new process first." ;; send dofile(tempfile) (save-excursion (set-buffer lua-process-buffer) - (let ((current-prompt (comint-next-prompt 1))) - (comint-simple-send (get-buffer-process (current-buffer)) (format "dofile(\"%s\")" tempfile)) - ;; wait for prompt - (while (or (= (comint-next-prompt 1) current-prompt) - (not (lua-prompt-line))) - (accept-process-output (get-buffer-process (current-buffer)))))) + (setq current-prompt (comint-next-prompt 1)) + (comint-simple-send (get-buffer-process (current-buffer)) (format "dofile(\"%s\")" tempfile)) + ;; wait for prompt + (while (or (= (comint-next-prompt 1) current-prompt) + (not (lua-prompt-line))) + (accept-process-output (get-buffer-process (current-buffer))))) ;; remove temp. lua file (delete-file tempfile) - (lua-postprocess-output-buffer lua-process-buffer lua-stdin-line-offset) + (lua-postprocess-output-buffer lua-process-buffer current-prompt lua-stdin-line-offset) (if lua-always-show (display-buffer lua-process-buffer)))) ;;}}} ;;{{{ lua-prompt-line -(defun lua-postprocess-output-buffer (buf &optional lua-stdin-line-offset) +(defun lua-postprocess-output-buffer (buf start &optional lua-stdin-line-offset) "Highlight tracebacks found in buf. If an traceback occurred return t, otherwise return nil. BUF must exist." (let ((lua-stdin-line-offset (or lua-stdin-line-offset 0)) line file bol err-p) (save-excursion (set-buffer buf) - (beginning-of-buffer) + (goto-char start) (while (re-search-forward lua-traceback-line-re nil t) (setq file (match-string 1) line (string-to-int (match-string 2)))))