From e0c5eed65c3b6c4cfb2a922286b1be792ddac58b Mon Sep 17 00:00:00 2001 From: nobu Date: Mon, 19 Aug 2002 10:07:06 +0000 Subject: * misc/inf-ruby.el (inf-ruby-keys): ruby-send-definition conflicted with ruby-insert-end. * misc/inf-ruby.el (inferior-ruby-mode): compilation-minor-mode. * misc/inf-ruby.el (ruby-send-region): send as here document to adjust source file/line. [ruby-talk:47113], [ruby-dev:17965] * misc/inf-ruby.el (ruby-send-terminator): added to make unique terminator. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@2724 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 13 ++++++++++++ misc/inf-ruby.el | 65 ++++++++++++++++++++++++++++++++++++++++++++++++++------ 2 files changed, 71 insertions(+), 7 deletions(-) diff --git a/ChangeLog b/ChangeLog index 48645005ae..f3d2a8e25c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,16 @@ +Mon Aug 19 19:01:55 2002 Nobuyoshi Nakada + + * misc/inf-ruby.el (inf-ruby-keys): ruby-send-definition + conflicted with ruby-insert-end. + + * misc/inf-ruby.el (inferior-ruby-mode): compilation-minor-mode. + + * misc/inf-ruby.el (ruby-send-region): send as here document to + adjust source file/line. [ruby-talk:47113], [ruby-dev:17965] + + * misc/inf-ruby.el (ruby-send-terminator): added to make unique + terminator. + Mon Aug 19 15:38:44 2002 Yukihiro Matsumoto * array.c (sort_2): comparison should be done as signed long. diff --git a/misc/inf-ruby.el b/misc/inf-ruby.el index 7679ff91d7..21b203dd91 100644 --- a/misc/inf-ruby.el +++ b/misc/inf-ruby.el @@ -35,13 +35,25 @@ ;;; HISTORY ;;; senda - 8 Apr 1998: Created. ;;; $Log$ +;;; Revision 1.5 2002/08/19 10:05:47 nobu +;;; * misc/inf-ruby.el (inf-ruby-keys): ruby-send-definition +;;; conflicted with ruby-insert-end. +;;; +;;; * misc/inf-ruby.el (inferior-ruby-mode): compilation-minor-mode. +;;; +;;; * misc/inf-ruby.el (ruby-send-region): send as here document to +;;; adjust source file/line. [ruby-talk:47113], [ruby-dev:17965] +;;; +;;; * misc/inf-ruby.el (ruby-send-terminator): added to make unique +;;; terminator. +;;; ;;; Revision 1.4 2002/01/29 07:16:09 matz ;;; * file.c (rb_stat_rdev_major): added. [new] -;;; +;;; ;;; * file.c (rb_stat_rdev_minor): added. [new] -;;; +;;; ;;; * file.c (rb_stat_inspect): print mode in octal. -;;; +;;; ;;; Revision 1.3 1999/12/01 09:24:18 matz ;;; 19991201 ;;; @@ -77,6 +89,7 @@ ;;; (require 'comint) +(require 'compile) (require 'ruby-mode) ;; @@ -109,6 +122,11 @@ (defvar inferior-ruby-mode-map nil "*Mode map for inferior-ruby-mode") +(pushnew '(ruby ("^\tfrom \\([^\(].*\\):\\([1-9][0-9]*\\):in \`.*\'$" 1 2)) + compilation-error-regexp-alist-alist) +(pushnew '(ruby ("SyntaxError: compile error\n^\\([^\(].*\\):\\([1-9][0-9]*\\):" 1 2)) + compilation-error-regexp-alist-alist) + (cond ((not inferior-ruby-mode-map) (setq inferior-ruby-mode-map (copy-keymap comint-mode-map)) @@ -122,8 +140,10 @@ "Set local key defs for inf-ruby in ruby-mode" (define-key ruby-mode-map "\M-\C-x" 'ruby-send-definition) ; (define-key ruby-mode-map "\C-x\C-e" 'ruby-send-last-sexp) - (define-key ruby-mode-map "\C-c\C-e" 'ruby-send-definition) - (define-key ruby-mode-map "\C-c\M-e" 'ruby-send-definition-and-go) + (define-key ruby-mode-map "\C-c\C-b" 'ruby-send-block) + (define-key ruby-mode-map "\C-c\M-b" 'ruby-send-block-and-go) + (define-key ruby-mode-map "\C-c\C-x" 'ruby-send-definition) + (define-key ruby-mode-map "\C-c\M-x" 'ruby-send-definition-and-go) (define-key ruby-mode-map "\C-c\C-r" 'ruby-send-region) (define-key ruby-mode-map "\C-c\M-r" 'ruby-send-region-and-go) (define-key ruby-mode-map "\C-c\C-z" 'switch-to-ruby) @@ -180,6 +200,8 @@ to continue it." (use-local-map inferior-ruby-mode-map) (setq comint-input-filter (function ruby-input-filter)) (setq comint-get-old-input (function ruby-get-old-input)) + (compilation-minor-mode) + (compilation-build-compilation-error-regexp-alist) (run-hooks 'inferior-ruby-mode-hook)) (defvar inferior-ruby-filter-regexp "\\`\\s *\\S ?\\S ?\\s *\\'" @@ -242,11 +264,23 @@ of `ruby-program-name'). Runs the hooks `inferior-ruby-mode-hook' (setq ruby-buffer "*ruby*") (pop-to-buffer "*ruby*")) +(defconst ruby-send-terminator "--inf-ruby-%x-%d-%d-%d--" + "Template for irb here document terminator. +Must not contain ruby meta characters.") + (defun ruby-send-region (start end) "Send the current region to the inferior Ruby process." (interactive "r") - (comint-send-region (ruby-proc) start end) - (comint-send-string (ruby-proc) "\n")) + (let (term (file (buffer-file-name)) line) + (save-excursion + (goto-char start) + (setq line (line-number)) + (while (progn + (setq term (apply 'format ruby-send-terminator (random) (current-time))) + (re-search-forward (concat "^" (regexp-quote term) "$") end t)))) + (comint-send-string (ruby-proc) (format "eval <<'%s', nil, %S, %d\n" term file line)) + (comint-send-region (ruby-proc) start end) + (comint-send-string (ruby-proc) (concat "\n" term "\n")))) (defun ruby-send-definition () "Send the current definition to the inferior Ruby process." @@ -262,6 +296,16 @@ of `ruby-program-name'). Runs the hooks `inferior-ruby-mode-hook' ; (interactive) ; (ruby-send-region (save-excursion (backward-sexp) (point)) (point))) +(defun ruby-send-block () + "Send the current block to the inferior Ruby process." + (interactive) + (save-excursion + (ruby-end-of-block) + (end-of-line) + (let ((end (point))) + (ruby-beginning-of-block) + (ruby-send-region (point) end)))) + (defun switch-to-ruby (eob-p) "Switch to the ruby process buffer. With argument, positions cursor at end of buffer." @@ -287,6 +331,13 @@ Then switch to the process buffer." (ruby-send-definition) (switch-to-ruby t)) +(defun ruby-send-block-and-go () + "Send the current block to the inferior Ruby. +Then switch to the process buffer." + (interactive) + (ruby-send-block) + (switch-to-ruby t)) + (defvar ruby-source-modes '(ruby-mode) "*Used to determine if a buffer contains Ruby source code. If it's loaded into a buffer that is in one of these major modes, it's -- cgit v1.2.3