[macemacsjp-cvs 210] CVS update: CarbonEmacsPackage/GPL/ruby-mode

Back to archive index

Seiji Zenitani zenit****@users*****
2005年 12月 26日 (月) 21:31:46 JST


Index: CarbonEmacsPackage/GPL/ruby-mode/inf-ruby.el
diff -u CarbonEmacsPackage/GPL/ruby-mode/inf-ruby.el:1.4 CarbonEmacsPackage/GPL/ruby-mode/inf-ruby.el:removed
--- CarbonEmacsPackage/GPL/ruby-mode/inf-ruby.el:1.4	Mon Oct 31 23:16:07 2005
+++ CarbonEmacsPackage/GPL/ruby-mode/inf-ruby.el	Mon Dec 26 21:31:46 2005
@@ -1,417 +0,0 @@
-;;; -*-Emacs-Lisp-*-
-;;;
-;;;  $Id: inf-ruby.el,v 1.7 2004/07/27 08:11:36 matz Exp $
-;;;  $Author: matz $
-;;;  $Date: 2004/07/27 08:11:36 $
-;;;
-;;; Inferior Ruby Mode - ruby process in a buffer.
-;;;                      adapted from cmuscheme.el
-;;;
-;;; Usage:
-;;;
-;;; (0) check ruby-program-name variable that can run your environment.
-;;;
-;;; (1) modify .emacs to use ruby-mode 
-;;;     for example :
-;;;
-;;;    (autoload 'ruby-mode "ruby-mode"
-;;;      "Mode for editing ruby source files" t)
-;;;    (setq auto-mode-alist
-;;;          (append '(("\\.rb$" . ruby-mode)) auto-mode-alist))
-;;;    (setq interpreter-mode-alist (append '(("ruby" . ruby-mode))
-;;;    				     interpreter-mode-alist))
-;;;    
-;;; (2) set to load inf-ruby and set inf-ruby key definition in ruby-mode.
-;;;
-;;;    (autoload 'run-ruby "inf-ruby"
-;;;      "Run an inferior Ruby process")
-;;;    (autoload 'inf-ruby-keys "inf-ruby"
-;;;      "Set local key defs for inf-ruby in ruby-mode")
-;;;    (add-hook 'ruby-mode-hook
-;;;          '(lambda ()
-;;;             (inf-ruby-keys)
-;;;    ))
-;;;
-;;; HISTORY
-;;; senda -  8 Apr 1998: Created.
-;;;	 $Log: inf-ruby.el,v $
-;;;	 Revision 1.7  2004/07/27 08:11:36  matz
-;;;	 * eval.c (rb_eval): copy on write for argument local variable
-;;;	   assignment.
-;;;	
-;;;	 * eval.c (assign): ditto.
-;;;	
-;;;	 * eval.c (rb_call0): update ruby_frame->argv with the default
-;;;	   value used for the optional arguments.
-;;;	
-;;;	 * object.c (Init_Object): "===" calls rb_obj_equal() directly.
-;;;	   [ruby-list:39937]
-;;;	
-;;;	 Revision 1.6  2002/09/07 14:35:46  nobu
-;;;	 * misc/inf-ruby.el (inferior-ruby-error-regexp-alist): regexp
-;;;	   alist for error message from ruby.
-;;;	
-;;;	 * misc/inf-ruby.el (inferior-ruby-mode): fixed for Emacs.
-;;;	
-;;;	 * misc/inf-ruby.el (ruby-send-region): compilation-parse-errors
-;;;	   doesn't parse first line, so insert separators before each
-;;;	   evaluations.
-;;;	
-;;;	 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
-;;;	
-;;;	 Revision 1.2  1999/08/13 05:45:18  matz
-;;;	 1.4.0
-;;;	
-;;;	 Revision 1.1.1.1.2.1  1999/07/15 07:59:59  matz
-;;;	 990715
-;;;	
-;;;	 Revision 1.1.1.1  1999/01/20 04:59:36  matz
-;;;	 ruby 1.3 cycle
-;;;	
-;;;	 Revision 1.1.2.1  1998/12/16 07:30:36  matz
-;;;	 first public release of 1.1d (pre1.2) series
-;;;	
-;;;	 Revision 1.4  1998/05/20 02:45:58  senda
-;;;	 default program to irb
-;;;
-;;;	 Revision 1.3  1998/04/10 04:11:30  senda
-;;;	 modification by Matsumoto san (1.1b9_09)
-;;;	 remove-in-string defined
-;;;	 global variable :
-;;;	 	 inferior-ruby-first-prompt-pattern
-;;;	       inferior-ruby-prompt-pattern
-;;;	 defined
-;;;
-;;;	 Revision 1.2  1998/04/09 07:53:42  senda
-;;;	 remove M-C-x in inferior-ruby-mode
-;;;
-;;;	 Revision 1.1  1998/04/09 07:28:36  senda
-;;;	 Initial revision
-;;;
-;;;
-
-(require 'comint)
-(require 'compile)
-(require 'ruby-mode)
-
-;;
-;; you may change these variables
-;;
-;(defvar ruby-program-name "rbc --noreadline"
-;  "*Program invoked by the run-ruby command")
-;
-;(defvar inferior-ruby-first-prompt-pattern "^rbc0> *"
-;  "first prompt regex pattern of ruby interpreter.")
-;
-;(defvar inferior-ruby-prompt-pattern "^\\(rbc.[>*\"'] *\\)+"
-;  "prompt regex pattern of ruby interpreter.")
-
-;;;; for irb
-(defvar ruby-program-name "irb --inf-ruby-mode"
-  "*Program invoked by the run-ruby command")
-
-(defvar inferior-ruby-first-prompt-pattern "^irb(.*)[0-9:]+0> *"
-  "first prompt regex pattern of ruby interpreter.")
-
-(defvar inferior-ruby-prompt-pattern "^\\(irb(.*)[0-9:]+[>*\"'] *\\)+"
-  "prompt regex pattern of ruby interpreter.")
-
-;;
-;; mode variables
-;;
-(defvar inferior-ruby-mode-hook nil
-  "*Hook for customising inferior-ruby mode.")
-(defvar inferior-ruby-mode-map nil
-  "*Mode map for inferior-ruby-mode")
-
-(defconst inferior-ruby-error-regexp-alist
-       '(("SyntaxError: compile error\n^\\([^\(].*\\):\\([1-9][0-9]*\\):" 1 2)
-	 ("^\tfrom \\([^\(].*\\):\\([1-9][0-9]*\\)\\(:in `.*'\\)?$" 1 2)))
-
-(cond ((not inferior-ruby-mode-map)
-       (setq inferior-ruby-mode-map
-	     (copy-keymap comint-mode-map))
-;       (define-key inferior-ruby-mode-map "\M-\C-x" ;gnu convention
-;	           'ruby-send-definition)
-;       (define-key inferior-ruby-mode-map "\C-x\C-e" 'ruby-send-last-sexp)
-       (define-key inferior-ruby-mode-map "\C-c\C-l" 'ruby-load-file)
-))
-
-(defun inf-ruby-keys ()
-  "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-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)
-  (define-key ruby-mode-map "\C-c\C-l" 'ruby-load-file)
-  (define-key ruby-mode-map "\C-c\C-s" 'run-ruby)
-)
-
-(defvar ruby-buffer nil "current ruby (actually irb) process buffer.")
-
-(defun inferior-ruby-mode ()
-  "Major mode for interacting with an inferior ruby (irb) process.
-
-The following commands are available:
-\\{inferior-ruby-mode-map}
-
-A ruby process can be fired up with M-x run-ruby.
-
-Customisation: Entry to this mode runs the hooks on comint-mode-hook and
-inferior-ruby-mode-hook (in that order).
-
-You can send text to the inferior ruby process from other buffers containing
-Ruby source.
-    switch-to-ruby switches the current buffer to the ruby process buffer.
-    ruby-send-definition sends the current definition to the ruby process.
-    ruby-send-region sends the current region to the ruby process.
-
-    ruby-send-definition-and-go, ruby-send-region-and-go,
-        switch to the ruby process buffer after sending their text.
-For information on running multiple processes in multiple buffers, see
-documentation for variable ruby-buffer.
-
-Commands:
-Return after the end of the process' output sends the text from the 
-    end of process to point.
-Return before the end of the process' output copies the sexp ending at point
-    to the end of the process' output, and sends it.
-Delete converts tabs to spaces as it moves back.
-Tab indents for ruby; with argument, shifts rest
-    of expression rigidly with the current line.
-C-M-q does Tab on each line starting within following expression.
-Paragraphs are separated only by blank lines.  # start comments.
-If you accidentally suspend your process, use \\[comint-continue-subjob]
-to continue it."
-  (interactive)
-  (comint-mode)
-  ;; Customise in inferior-ruby-mode-hook
-  ;(setq comint-prompt-regexp "^[^>\n]*>+ *")
-  (setq comint-prompt-regexp inferior-ruby-prompt-pattern)
-  ;;(scheme-mode-variables)
-  (ruby-mode-variables)
-  (setq major-mode 'inferior-ruby-mode)
-  (setq mode-name "Inferior Ruby")
-  (setq mode-line-process '(":%s"))
-  (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-shell-minor-mode t)
-  (make-local-variable 'compilation-error-regexp-alist)
-  (setq compilation-error-regexp-alist inferior-ruby-error-regexp-alist)
-  (run-hooks 'inferior-ruby-mode-hook))
-
-(defvar inferior-ruby-filter-regexp "\\`\\s *\\S ?\\S ?\\s *\\'"
-  "*Input matching this regexp are not saved on the history list.
-Defaults to a regexp ignoring all inputs of 0, 1, or 2 letters.")
-
-(defun ruby-input-filter (str)
-  "Don't save anything matching inferior-ruby-filter-regexp"
-  (not (string-match inferior-ruby-filter-regexp str)))
-
-;; adapted from replace-in-string in XEmacs (subr.el)
-(defun remove-in-string (str regexp)
-  "Remove all matches in STR for REGEXP and returns the new string."
-  (let ((rtn-str "") (start 0) match prev-start)
-    (while (setq match (string-match regexp str start))
-      (setq prev-start start
-	    start (match-end 0)
-	    rtn-str (concat rtn-str (substring str prev-start match))))
-    (concat rtn-str (substring str start))))
-
-(defun ruby-get-old-input ()
-  "Snarf the sexp ending at point"
-  (save-excursion
-    (let ((end (point)))
-      (re-search-backward inferior-ruby-first-prompt-pattern)
-      (remove-in-string (buffer-substring (point) end)
-			inferior-ruby-prompt-pattern)
-      )))
-
-(defun ruby-args-to-list (string)
-  (let ((where (string-match "[ \t]" string)))
-    (cond ((null where) (list string))
-	  ((not (= where 0))
-	   (cons (substring string 0 where)
-		 (ruby-args-to-list (substring string (+ 1 where)
-						 (length string)))))
-	  (t (let ((pos (string-match "[^ \t]" string)))
-	       (if (null pos)
-		   nil
-		 (ruby-args-to-list (substring string pos
-						 (length string)))))))))
-
-(defun run-ruby (cmd)
-  "Run an inferior Ruby process, input and output via buffer *ruby*.
-If there is a process already running in `*ruby*', switch to that buffer.
-With argument, allows you to edit the command line (default is value
-of `ruby-program-name').  Runs the hooks `inferior-ruby-mode-hook'
-\(after the `comint-mode-hook' is run).
-\(Type \\[describe-mode] in the process buffer for a list of commands.)"
-
-  (interactive (list (if current-prefix-arg
-			 (read-string "Run Ruby: " ruby-program-name)
-			 ruby-program-name)))
-  (if (not (comint-check-proc "*ruby*"))
-      (let ((cmdlist (ruby-args-to-list cmd)))
-	(set-buffer (apply 'make-comint "ruby" (car cmdlist)
-			   nil (cdr cmdlist)))
-	(inferior-ruby-mode)))
-  (setq ruby-program-name cmd)
-  (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.")
-
-(defconst ruby-eval-separator "")
-
-(defun ruby-send-region (start end)
-  "Send the current region to the inferior Ruby process."
-  (interactive "r")
-  (let (term (file (buffer-file-name)) line)
-    (save-excursion
-      (save-restriction
-	(widen)
-	(goto-char start)
-	(setq line (+ start (forward-line (- start)) 1))
-	(goto-char start)
-	(while (progn
-		 (setq term (apply 'format ruby-send-terminator (random) (current-time)))
-		 (re-search-forward (concat "^" (regexp-quote term) "$") end t)))))
-    ;; compilation-parse-errors parses from second line.
-    (save-excursion
-      (let ((m (process-mark (ruby-proc))))
-	(set-buffer (marker-buffer m))
-	(goto-char m)
-	(insert ruby-eval-separator "\n")
-	(set-marker m (point))))
-    (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."
-  (interactive)
-  (save-excursion
-    (ruby-end-of-defun)
-    (let ((end (point)))
-      (ruby-beginning-of-defun)
-      (ruby-send-region (point) end))))
-
-;(defun ruby-send-last-sexp ()
-;  "Send the previous sexp to the inferior Ruby process."
-;  (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."
-  (interactive "P")
-  (if (get-buffer ruby-buffer)
-      (pop-to-buffer ruby-buffer)
-      (error "No current process buffer. See variable ruby-buffer."))
-  (cond (eob-p
-	 (push-mark)
-	 (goto-char (point-max)))))
-
-(defun ruby-send-region-and-go (start end)
-  "Send the current region to the inferior Ruby process.
-Then switch to the process buffer."
-  (interactive "r")
-  (ruby-send-region start end)
-  (switch-to-ruby t))
-
-(defun ruby-send-definition-and-go ()
-  "Send the current definition to the inferior Ruby. 
-Then switch to the process buffer."
-  (interactive)
-  (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
-considered a ruby source file by ruby-load-file.
-Used by these commands to determine defaults.")
-
-(defvar ruby-prev-l/c-dir/file nil
-  "Caches the last (directory . file) pair.
-Caches the last pair used in the last ruby-load-file command.
-Used for determining the default in the 
-next one.")
-
-(defun ruby-load-file (file-name)
-  "Load a Ruby file into the inferior Ruby process."
-  (interactive (comint-get-source "Load Ruby file: " ruby-prev-l/c-dir/file
-				  ruby-source-modes t)) ; T because LOAD 
-                                                          ; needs an exact name
-  (comint-check-source file-name) ; Check to see if buffer needs saved.
-  (setq ruby-prev-l/c-dir/file (cons (file-name-directory    file-name)
-				       (file-name-nondirectory file-name)))
-  (comint-send-string (ruby-proc) (concat "(load \""
-					    file-name
-					    "\"\)\n")))
-
-(defun ruby-proc ()
-  "Returns the current ruby process. See variable ruby-buffer."
-  (let ((proc (get-buffer-process (if (eq major-mode 'inferior-ruby-mode)
-				      (current-buffer)
-				    ruby-buffer))))
-    (or proc
-	(error "No current process. See variable ruby-buffer"))))
-
-;;; Do the user's customisation...
-
-(defvar inf-ruby-load-hook nil
-  "This hook is run when inf-ruby is loaded in.
-This is a good place to put keybindings.")
-	
-(run-hooks 'inf-ruby-load-hook)
-
-(provide 'inf-ruby)
-
-;;; inf-ruby.el ends here
Index: CarbonEmacsPackage/GPL/ruby-mode/ruby-electric.el
diff -u CarbonEmacsPackage/GPL/ruby-mode/ruby-electric.el:1.3 CarbonEmacsPackage/GPL/ruby-mode/ruby-electric.el:removed
--- CarbonEmacsPackage/GPL/ruby-mode/ruby-electric.el:1.3	Mon Oct 31 23:16:07 2005
+++ CarbonEmacsPackage/GPL/ruby-mode/ruby-electric.el	Mon Dec 26 21:31:46 2005
@@ -1,200 +0,0 @@
-;; -*-Emacs-Lisp-*-
-;;
-;; ruby-electric.el --- electric editing commands for ruby files
-;;
-;; Copyright (C) 2005 by Dee Zsombor <dee dot zsombor at gmail dot com>.
-;; Released under same license terms as Ruby.
-;;
-;; Due credit: this work was inspired by a code snippet posted by
-;; Frederick Ros at http://rubygarden.org/ruby?EmacsExtensions.
-;;
-;; Following improvements where added:
-;;
-;;       - handling of strings of type 'here document'
-;;       - more keywords, with special handling for 'do'
-;;       - packaged into a minor mode
-;;
-;; Usage:
-;;
-;;    0) copy ruby-electric.el into directory where emacs can find it.
-;;
-;;    1) modify your startup file (.emacs or whatever) by adding
-;;       following line:
-;;
-;;            (require 'ruby-electric)
-;;
-;;       note that you need to have font lock enabled beforehand.
-;;
-;;    2) toggle Ruby Electric Mode on/off with ruby-electric-mode.
-;;
-;; Changelog:
-;;
-;;  2005/Jan/14: inserts matching pair delimiters like {, [, (, ', ",
-;;  ' and | .
-;;
-;;  2005/Jan/14: added basic Custom support for configuring keywords
-;;  with electric closing.
-;;
-;;  2005/Jan/18: more Custom support for configuring characters for
-;;  which matching expansion should occur.
-;;
-;;  2005/Jan/18: no longer uses 'looking-back' or regexp character
-;;  classes like [:space:] since they are not implemented on XEmacs.
-;;
-;;  2005/Feb/01: explicitly provide default argument of 1 to
-;;  'backward-word' as it requires it on Emacs 21.3
-;;
-;;  2005/Mar/06: now stored inside ruby CVS; customize pages now have
-;;  ruby as parent; cosmetic fixes.
-
-
-(require 'ruby-mode)
-
-(defgroup ruby-electric nil
-  "Minor mode providing electric editing commands for ruby files"
-  :group 'ruby) 
-
-(defconst ruby-electric-expandable-do-re
-  "do\\s-$")
-
-(defconst ruby-electric-expandable-bar
-  "\\s-\\(do\\|{\\)\\s-+|")
-
-(defvar ruby-electric-matching-delimeter-alist
-  '((?\[ . ?\])
-    (?\( . ?\))
-    (?\' . ?\')
-    (?\` . ?\`)
-    (?\" . ?\")))
-
-(defcustom ruby-electric-simple-keywords-re 
-  "\\(def\\|if\\|class\\|module\\|unless\\|case\\|while\\|do\\|until\\|for\\|begin\\)"
-  "*Regular expresion matching keywords for which closing 'end'
-is to be inserted."
-  :type 'regexp :group 'ruby-electric)
-
-(defcustom ruby-electric-expand-delimiters-list '(all)
-  "*List of contexts where matching delimiter should be
-inserted. The word 'all' will do all insertions."
-  :type '(set :extra-offset 8
-	      (const :tag "Everything" all )
-	      (const :tag "Curly brace" ?\{ )
-	      (const :tag "Square brace" ?\[ )
-	      (const :tag "Round brace" ?\( )
-	      (const :tag "Quote" ?\' )
-	      (const :tag "Double quote" ?\" )
-	      (const :tag "Back quote" ?\` )
-	      (const :tag "Vertical bar" ?\| ))
-  :group 'ruby-electric) 
-
-(defcustom ruby-electric-newline-before-closing-bracket nil
-  "*Controls whether a newline should be inserted before the
-closing bracket or not."
-  :type 'boolean :group 'ruby-electric)
-
-(define-minor-mode ruby-electric-mode
-  "Toggle Ruby Electric minor mode.
-With no argument, this command toggles the mode.  Non-null prefix
-argument turns on the mode.  Null prefix argument turns off the
-mode.
-
-When Ruby Electric mode is enabled, an indented 'end' is
-heuristicaly inserted whenever typing a word like 'module',
-'class', 'def', 'if', 'unless', 'case', 'until', 'for', 'begin',
-'do'. Simple, double and back quotes as well as braces are paired
-auto-magically. Expansion does not occur inside comments and
-strings. Note that you must have Font Lock enabled."
-  ;; initial value.
-  nil
-  ;;indicator for the mode line.
-  " REl"
-  ;;keymap
-  ruby-mode-map
-  (ruby-electric-setup-keymap))
-
-(defun ruby-electric-setup-keymap()
-  (define-key ruby-mode-map " " 'ruby-electric-space)
-  (define-key ruby-mode-map "{" 'ruby-electric-curlies)
-  (define-key ruby-mode-map "(" 'ruby-electric-matching-char)
-  (define-key ruby-mode-map "[" 'ruby-electric-matching-char)
-  (define-key ruby-mode-map "\"" 'ruby-electric-matching-char)
-  (define-key ruby-mode-map "\'" 'ruby-electric-matching-char)
-  (define-key ruby-mode-map "|" 'ruby-electric-bar))
-
-(defun ruby-electric-space (arg)
-  (interactive "P")
-  (self-insert-command (prefix-numeric-value arg))
-  (if (ruby-electric-space-can-be-expanded-p)
-      (save-excursion
-	(ruby-indent-line t)
-	(newline)
-	(ruby-insert-end))))
-
-(defun ruby-electric-code-at-point-p()
-  (and ruby-electric-mode
-       (let* ((properties (text-properties-at (point))))
-	 (and (null (memq 'font-lock-string-face properties))
-	      (null (memq 'font-lock-comment-face properties))))))
-
-(defun ruby-electric-string-at-point-p()
-  (and ruby-electric-mode
-       (consp (memq 'font-lock-string-face (text-properties-at (point))))))
-
-(defun ruby-electric-is-last-command-char-expandable-punct-p()
-  (or (memq 'all ruby-electric-expand-delimiters-list)
-      (memq last-command-char ruby-electric-expand-delimiters-list))) 
-
-(defun ruby-electric-space-can-be-expanded-p()
-  (if (ruby-electric-code-at-point-p)
-      (let* ((ruby-electric-keywords-re 
-	      (concat ruby-electric-simple-keywords-re "\\s-$"))
-	     (ruby-electric-single-keyword-in-line-re 
-	      (concat "\\s-*" ruby-electric-keywords-re)))
-	(save-excursion
-	  (backward-word 1)
-	  (or (looking-at ruby-electric-expandable-do-re)
-	      (and (looking-at ruby-electric-keywords-re)
-		   (not (string= "do" (match-string 1)))
-		   (progn
-		     (beginning-of-line)
-		     (looking-at ruby-electric-single-keyword-in-line-re))))))))
-
-
-(defun ruby-electric-curlies(arg)
-  (interactive "P")
-  (self-insert-command (prefix-numeric-value arg))
-  (if (ruby-electric-is-last-command-char-expandable-punct-p)
-      (cond ((ruby-electric-code-at-point-p)
-	     (insert " ")
-	     (save-excursion
-	       (if ruby-electric-newline-before-closing-bracket
-		   (newline))
-	       (insert "}")))
-	    ((ruby-electric-string-at-point-p)
-	     (save-excursion
-	       (backward-char 1)
-	       (when (char-equal ?\# (preceding-char))
-		 (forward-char 1)
-		 (insert "}")))))))
-
-(defun ruby-electric-matching-char(arg)
-  (interactive "P")
-  (self-insert-command (prefix-numeric-value arg))
-  (and (ruby-electric-is-last-command-char-expandable-punct-p)
-       (ruby-electric-code-at-point-p)
-       (save-excursion
-	 (insert (cdr (assoc last-command-char 
-			     ruby-electric-matching-delimeter-alist))))))
-
-(defun ruby-electric-bar(arg)
-  (interactive "P")
-  (self-insert-command (prefix-numeric-value arg))
-  (and (ruby-electric-is-last-command-char-expandable-punct-p)
-       (ruby-electric-code-at-point-p)
-       (and (save-excursion (re-search-backward ruby-electric-expandable-bar nil t))
-	    (= (point) (match-end 0))) ;looking-back is missing on XEmacs
-       (save-excursion 
-	 (insert "|"))))
-
-
-(provide 'ruby-electric)
Index: CarbonEmacsPackage/GPL/ruby-mode/ruby-mode.el
diff -u CarbonEmacsPackage/GPL/ruby-mode/ruby-mode.el:1.4 CarbonEmacsPackage/GPL/ruby-mode/ruby-mode.el:removed
--- CarbonEmacsPackage/GPL/ruby-mode/ruby-mode.el:1.4	Mon Oct 31 23:16:07 2005
+++ CarbonEmacsPackage/GPL/ruby-mode/ruby-mode.el	Mon Dec 26 21:31:46 2005
@@ -1,1205 +0,0 @@
-;;;
-;;;  ruby-mode.el -
-;;;
-;;;  $Author: nobu $
-;;;  $Date: 2005/09/24 16:47:07 $
-;;;  created at: Fri Feb  4 14:49:13 JST 1994
-;;;
-
-(defconst ruby-mode-revision "$Revision: 1.94 $")
-
-(defconst ruby-mode-version
-  (progn
-   (string-match "[0-9.]+" ruby-mode-revision)
-   (substring ruby-mode-revision (match-beginning 0) (match-end 0))))
-
-(defconst ruby-block-beg-re
-  "class\\|module\\|def\\|if\\|unless\\|case\\|while\\|until\\|for\\|begin\\|do"
-  )
-
-(defconst ruby-non-block-do-re
-  "\\(while\\|until\\|for\\|rescue\\)\\>[^_]"
-  )
-
-(defconst ruby-indent-beg-re
-  "\\(\\s *\\(class\\|module\\|def\\)\\)\\|if\\|unless\\|case\\|while\\|until\\|for\\|begin"
-    )
-
-(defconst ruby-modifier-beg-re
-  "if\\|unless\\|while\\|until"
-  )
-
-(defconst ruby-modifier-re
-  (concat ruby-modifier-beg-re "\\|rescue")
-  )
-
-(defconst ruby-block-mid-re
-  "then\\|else\\|elsif\\|when\\|rescue\\|ensure"
-  )
-
-(defconst ruby-block-op-re
-  "and\\|or\\|not"
-  )
-
-(defconst ruby-block-hanging-re
-  (concat ruby-modifier-beg-re "\\|" ruby-block-op-re)
-  )
-
-(defconst ruby-block-end-re "\\<end\\>\\|;;")
-
-(defconst ruby-here-doc-beg-re
-  "<<\\(-\\)?\\(\\([a-zA-Z0-9_]+\\)\\|[\"]\\([^\"]+\\)[\"]\\|[']\\([^']+\\)[']\\)")
-
-(defun ruby-here-doc-end-match ()
-  (concat "^"
-	  (if (match-string 1) "[ \t]*" nil)
-	  (regexp-quote
-	   (or (match-string 3)
-	       (match-string 4)
-	       (match-string 5)))))
-
-(defconst ruby-delimiter
-  (concat "[?$/%(){}#\"'`.:]\\|<<\\|\\[\\|\\]\\|\\<\\("
-	  ruby-block-beg-re
-	  "\\)\\>\\|" ruby-block-end-re
-	  "\\|^=begin\\|" ruby-here-doc-beg-re)
-  )
-
-(defconst ruby-negative
-  (concat "^[ \t]*\\(\\(" ruby-block-mid-re "\\)\\>\\|"
-	    ruby-block-end-re "\\|}\\|\\]\\)")
-  )
-
-(defconst ruby-operator-chars "-,.+*/%&|^~=<>:")
-(defconst ruby-operator-re (concat "[" ruby-operator-chars "]"))
-
-(defconst ruby-symbol-chars "a-zA-Z0-9_")
-(defconst ruby-symbol-re (concat "[" ruby-symbol-chars "]"))
-
-(defvar ruby-mode-abbrev-table nil
-  "Abbrev table in use in ruby-mode buffers.")
-
-(define-abbrev-table 'ruby-mode-abbrev-table ())
-
-(defvar ruby-mode-map nil "Keymap used in ruby mode.")
-
-(if ruby-mode-map
-    nil
-  (setq ruby-mode-map (make-sparse-keymap))
-  (define-key ruby-mode-map "{" 'ruby-electric-brace)
-  (define-key ruby-mode-map "}" 'ruby-electric-brace)
-  (define-key ruby-mode-map "\e\C-a" 'ruby-beginning-of-defun)
-  (define-key ruby-mode-map "\e\C-e" 'ruby-end-of-defun)
-  (define-key ruby-mode-map "\e\C-b" 'ruby-backward-sexp)
-  (define-key ruby-mode-map "\e\C-f" 'ruby-forward-sexp)
-  (define-key ruby-mode-map "\e\C-p" 'ruby-beginning-of-block)
-  (define-key ruby-mode-map "\e\C-n" 'ruby-end-of-block)
-  (define-key ruby-mode-map "\e\C-h" 'ruby-mark-defun)
-  (define-key ruby-mode-map "\e\C-q" 'ruby-indent-exp)
-  (define-key ruby-mode-map "\t" 'ruby-indent-command)
-  (define-key ruby-mode-map "\C-c\C-e" 'ruby-insert-end)
-  (define-key ruby-mode-map "\C-j" 'ruby-reindent-then-newline-and-indent)
-  (define-key ruby-mode-map "\C-m" 'newline))
-
-(defvar ruby-mode-syntax-table nil
-  "Syntax table in use in ruby-mode buffers.")
-
-(if ruby-mode-syntax-table
-    ()
-  (setq ruby-mode-syntax-table (make-syntax-table))
-  (modify-syntax-entry ?\' "\"" ruby-mode-syntax-table)
-  (modify-syntax-entry ?\" "\"" ruby-mode-syntax-table)
-  (modify-syntax-entry ?\` "\"" ruby-mode-syntax-table)
-  (modify-syntax-entry ?# "<" ruby-mode-syntax-table)
-  (modify-syntax-entry ?\n ">" ruby-mode-syntax-table)
-  (modify-syntax-entry ?\\ "\\" ruby-mode-syntax-table)
-  (modify-syntax-entry ?$ "." ruby-mode-syntax-table)
-  (modify-syntax-entry ?? "_" ruby-mode-syntax-table)
-  (modify-syntax-entry ?_ "_" ruby-mode-syntax-table)
-  (modify-syntax-entry ?< "." ruby-mode-syntax-table)
-  (modify-syntax-entry ?> "." ruby-mode-syntax-table)
-  (modify-syntax-entry ?& "." ruby-mode-syntax-table)
-  (modify-syntax-entry ?| "." ruby-mode-syntax-table)
-  (modify-syntax-entry ?% "." ruby-mode-syntax-table)
-  (modify-syntax-entry ?= "." ruby-mode-syntax-table)
-  (modify-syntax-entry ?/ "." ruby-mode-syntax-table)
-  (modify-syntax-entry ?+ "." ruby-mode-syntax-table)
-  (modify-syntax-entry ?* "." ruby-mode-syntax-table)
-  (modify-syntax-entry ?- "." ruby-mode-syntax-table)
-  (modify-syntax-entry ?\; "." ruby-mode-syntax-table)
-  (modify-syntax-entry ?\( "()" ruby-mode-syntax-table)
-  (modify-syntax-entry ?\) ")(" ruby-mode-syntax-table)
-  (modify-syntax-entry ?\{ "(}" ruby-mode-syntax-table)
-  (modify-syntax-entry ?\} "){" ruby-mode-syntax-table)
-  (modify-syntax-entry ?\[ "(]" ruby-mode-syntax-table)
-  (modify-syntax-entry ?\] ")[" ruby-mode-syntax-table)
-  )
-
-(defcustom ruby-indent-tabs-mode nil
-  "*Indentation can insert tabs in ruby mode if this is non-nil."
-  :type 'boolean :group 'ruby)
-
-(defcustom ruby-indent-level 2
-  "*Indentation of ruby statements."
-  :type 'integer :group 'ruby)
-
-(defcustom ruby-comment-column 32
-  "*Indentation column of comments."
-  :type 'integer :group 'ruby)
-
-(defcustom ruby-deep-arglist t
-  "*Deep indent lists in parenthesis when non-nil.
-Also ignores spaces after parenthesis when 'space."
-  :group 'ruby)
-
-(defcustom ruby-deep-indent-paren '(?\( ?\[ ?\] t)
-  "*Deep indent lists in parenthesis when non-nil. t means continuous line.
-Also ignores spaces after parenthesis when 'space."
-  :group 'ruby)
-
-(defcustom ruby-deep-indent-paren-style 'space
-  "Default deep indent style."
-  :options '(t nil space) :group 'ruby)
-
-(eval-when-compile (require 'cl))
-(defun ruby-imenu-create-index-in-block (prefix beg end)
-  (let ((index-alist '()) (case-fold-search nil)
-	name next pos decl sing)
-    (goto-char beg)
-    (while (re-search-forward "^\\s *\\(\\(class\\>\\(\\s *<<\\)?\\|module\\>\\)\\s *\\([^\(<\n ]+\\)\\|\\(def\\|alias\\)\\>\\s *\\([^\(\n ]+\\)\\)" end t)
-      (setq sing (match-beginning 3))
-      (setq decl (match-string 5))
-      (setq next (match-end 0))
-      (setq name (or (match-string 4) (match-string 6)))
-      (setq pos (match-beginning 0))
-      (cond
-       ((string= "alias" decl)
-	(if prefix (setq name (concat prefix name)))
-	(push (cons name pos) index-alist))
-       ((string= "def" decl)
-	(if prefix
-	    (setq name
-		  (cond
-		   ((string-match "^self\." name)
-		    (concat (substring prefix 0 -1) (substring name 4)))
-		  (t (concat prefix name)))))
-	(push (cons name pos) index-alist)
-	(ruby-accurate-end-of-block end))
-       (t
-	(if (string= "self" name)
-	    (if prefix (setq name (substring prefix 0 -1)))
-	  (if prefix (setq name (concat (substring prefix 0 -1) "::" name)))
-	  (push (cons name pos) index-alist))
-	(ruby-accurate-end-of-block end)
-	(setq beg (point))
-	(setq index-alist
-	      (nconc (ruby-imenu-create-index-in-block
-		      (concat name (if sing "." "#"))
-		      next beg) index-alist))
-	(goto-char beg))))
-    index-alist))
-
-(defun ruby-imenu-create-index ()
-  (nreverse (ruby-imenu-create-index-in-block nil (point-min) nil)))
-
-(defun ruby-accurate-end-of-block (&optional end)
-  (let (state)
-    (or end (setq end (point-max)))
-    (while (and (setq state (apply 'ruby-parse-partial end state))
-		(>= (nth 2 state) 0) (< (point) end)))))
-
-(defun ruby-mode-variables ()
-  (set-syntax-table ruby-mode-syntax-table)
-  (setq local-abbrev-table ruby-mode-abbrev-table)
-  (make-local-variable 'indent-line-function)
-  (setq indent-line-function 'ruby-indent-line)
-  (make-local-variable 'require-final-newline)
-  (setq require-final-newline t)
-  (make-variable-buffer-local 'comment-start)
-  (setq comment-start "# ")
-  (make-variable-buffer-local 'comment-end)
-  (setq comment-end "")
-  (make-variable-buffer-local 'comment-column)
-  (setq comment-column ruby-comment-column)
-  (make-variable-buffer-local 'comment-start-skip)
-  (setq comment-start-skip "#+ *")
-  (setq indent-tabs-mode ruby-indent-tabs-mode)
-  (make-local-variable 'parse-sexp-ignore-comments)
-  (setq parse-sexp-ignore-comments t)
-  (make-local-variable 'paragraph-start)
-  (setq paragraph-start (concat "$\\|" page-delimiter))
-  (make-local-variable 'paragraph-separate)
-  (setq paragraph-separate paragraph-start)
-  (make-local-variable 'paragraph-ignore-fill-prefix)
-  (setq paragraph-ignore-fill-prefix t))
-
-;;;###autoload
-(defun ruby-mode ()
-  "Major mode for editing ruby scripts.
-\\[ruby-indent-command] properly indents subexpressions of multi-line
-class, module, def, if, while, for, do, and case statements, taking
-nesting into account.
-
-The variable ruby-indent-level controls the amount of indentation.
-\\{ruby-mode-map}"
-  (interactive)
-  (kill-all-local-variables)
-  (use-local-map ruby-mode-map)
-  (setq mode-name "Ruby")
-  (setq major-mode 'ruby-mode)
-  (ruby-mode-variables)
-
-  (make-local-variable 'imenu-create-index-function)
-  (setq imenu-create-index-function 'ruby-imenu-create-index)
-
-  (make-local-variable 'add-log-current-defun-function)
-  (setq add-log-current-defun-function 'ruby-add-log-current-method)
-
-  (run-hooks 'ruby-mode-hook))
-
-(defun ruby-current-indentation ()
-  (save-excursion
-    (beginning-of-line)
-    (back-to-indentation)
-    (current-column)))
-
-(defun ruby-indent-line (&optional flag)
-  "Correct indentation of the current ruby line."
-  (ruby-indent-to (ruby-calculate-indent)))
-
-(defun ruby-indent-command ()
-  (interactive)
-  (ruby-indent-line t))
-
-(defun ruby-indent-to (x)
-  (if x
-      (let (shift top beg)
-	(and (< x 0) (error "invalid nest"))
-	(setq shift (current-column))
-	(beginning-of-line)
-	(setq beg (point))
-	(back-to-indentation)
-	(setq top (current-column))
-	(skip-chars-backward " \t")
-	(if (>= shift top) (setq shift (- shift top))
-	  (setq shift 0))
-	(if (and (bolp)
-		 (= x top))
-	    (move-to-column (+ x shift))
-	  (move-to-column top)
-	  (delete-region beg (point))
-	  (beginning-of-line)
-	  (indent-to x)
-	  (move-to-column (+ x shift))))))
-
-(defun ruby-special-char-p (&optional pnt)
-  (setq pnt (or pnt (point)))
-  (let ((c (char-before pnt)) (b (and (< (point-min) pnt) (char-before (1- pnt)))))
-    (cond ((or (eq c ??) (eq c ?$)))
-	  ((and (eq c ?:) (or (not b) (eq (char-syntax b) ? ))))
-	  ((eq c ?\\) (eq b ??)))))
-
-(defun ruby-expr-beg (&optional option)
-  (save-excursion
-    (store-match-data nil)
-    (let ((space (skip-chars-backward " \t"))
-	  (start (point)))
-      (cond
-       ((bolp) t)
-       ((progn
-	  (forward-char -1)
-	  (and (looking-at "\\?")
-	       (or (eq (char-syntax (char-before (point))) ?w)
-		   (ruby-special-char-p))))
-	nil)
-       ((and (eq option 'heredoc) (< space 0)) t)
-       ((or (looking-at ruby-operator-re)
-	    (looking-at "[\\[({,;]")
-	    (and (looking-at "[!?]")
-		 (or (not (eq option 'modifier))
-		     (bolp)
-		     (save-excursion (forward-char -1) (looking-at "\\Sw"))))
-	    (and (looking-at ruby-symbol-re)
-		 (skip-chars-backward ruby-symbol-chars)
-		 (cond
-		  ((or (looking-at (concat "\\<\\(" ruby-block-beg-re
-					   "|" ruby-block-op-re
-					   "|" ruby-block-mid-re "\\)\\>")))
-		   (goto-char (match-end 0))
-		   (not (looking-at "\\s_")))
-		  ((eq option 'expr-qstr)
-		   (looking-at "[a-zA-Z][a-zA-z0-9_]* +%[^ \t]"))
-		  ((eq option 'expr-re)
-		   (looking-at "[a-zA-Z][a-zA-z0-9_]* +/[^ \t]"))
-		  (t nil)))))))))
-
-(defun ruby-forward-string (term &optional end no-error expand)
-  (let ((n 1) (c (string-to-char term))
-	(re (if expand
-		(concat "[^\\]\\(\\\\\\\\\\)*\\([" term "]\\|\\(#{\\)\\)")
-	      (concat "[^\\]\\(\\\\\\\\\\)*[" term "]"))))
-    (while (and (re-search-forward re end no-error)
-		(if (match-beginning 3)
-		    (ruby-forward-string "}{" end no-error nil)
-		  (> (setq n (if (eq (char-before (point)) c)
-				     (1- n) (1+ n))) 0)))
-      (forward-char -1))
-    (cond ((zerop n))
-	  (no-error nil)
-	  ((error "unterminated string")))))
-
-(defun ruby-deep-indent-paren-p (c)
-  (cond ((listp ruby-deep-indent-paren)
-	 (let ((deep (assoc c ruby-deep-indent-paren)))
-	   (cond (deep
-		  (or (cdr deep) ruby-deep-indent-paren-style))
-		 ((memq c ruby-deep-indent-paren)
-		  ruby-deep-indent-paren-style))))
-	((eq c ruby-deep-indent-paren) ruby-deep-indent-paren-style)
-	((eq c ?\( ) ruby-deep-arglist)))
-
-(defun ruby-parse-partial (&optional end in-string nest depth pcol indent)
-  (or depth (setq depth 0))
-  (or indent (setq indent 0))
-  (when (re-search-forward ruby-delimiter end 'move)
-    (let ((pnt (point)) w re expand)
-      (goto-char (match-beginning 0))
-      (cond
-       ((and (memq (char-before) '(?@ ?$)) (looking-at "\\sw"))
-	(goto-char pnt))
-       ((looking-at "[\"`]")		;skip string
-	(cond
-	 ((and (not (eobp))
-	       (ruby-forward-string (buffer-substring (point) (1+ (point))) end t t))
-	  nil)
-	 (t
-	  (setq in-string (point))
-	  (goto-char end))))
-       ((looking-at "'")
-	(cond
-	 ((and (not (eobp))
-	       (re-search-forward "[^\\]\\(\\\\\\\\\\)*'" end t))
-	  nil)
-	 (t
-	  (setq in-string (point))
-	  (goto-char end))))
-       ((looking-at "/")
-	(cond
-	 ((and (not (eobp)) (ruby-expr-beg 'expr-re))
-	  (if (ruby-forward-string "/" end t t)
-	      nil
-	    (setq in-string (point))
-	    (goto-char end)))
-	 (t
-	  (goto-char pnt))))
-       ((looking-at "%")
-	(cond
-	 ((and (not (eobp))
-	       (ruby-expr-beg 'expr-qstr)
-	       (not (looking-at "%="))
-	       (looking-at "%[QqrxWw]?\\([^a-zA-Z0-9 \t\n]\\)"))
-	  (goto-char (match-beginning 1))
-	  (setq expand (not (memq (char-before) '(?q ?w))))
-	  (setq w (match-string 1))
-	  (cond
-	   ((string= w "[") (setq re "]["))
-	   ((string= w "{") (setq re "}{"))
-	   ((string= w "(") (setq re ")("))
-	   ((string= w "<") (setq re "><"))
-	   ((and expand (string= w "\\"))
-	    (setq w (concat "\\" w))))
-	  (unless (cond (re (ruby-forward-string re end t expand))
-			(expand (ruby-forward-string w end t t))
-			(t (re-search-forward
-			    (if (string= w "\\")
-				"\\\\[^\\]*\\\\"
-			      (concat "[^\\]\\(\\\\\\\\\\)*" w))
-			    end t)))
-	    (setq in-string (point))
-	    (goto-char end)))
-	 (t
-	  (goto-char pnt))))
-       ((looking-at "\\?")		;skip ?char
-	(cond
-	 ((and (ruby-expr-beg)
-	       (looking-at "?\\(\\\\C-\\|\\\\M-\\)*\\\\?."))
-	  (goto-char (match-end 0)))
-	 (t
-	  (goto-char pnt))))
-       ((looking-at "\\$")		;skip $char
-	(goto-char pnt)
-	(forward-char 1))
-       ((looking-at "#")		;skip comment
-	(forward-line 1)
-	(goto-char (point))
-	)
-       ((looking-at "[\\[{(]")
-	(let ((deep (ruby-deep-indent-paren-p (char-after))))
-	  (if (and deep (or (not (eq (char-after) ?\{)) (ruby-expr-beg)))
-	      (progn
-		(and (eq deep 'space) (looking-at ".\\s +[^# \t\n]")
-		     (setq pnt (1- (match-end 0))))
-		(setq nest (cons (cons (char-after (point)) pnt) nest))
-		(setq pcol (cons (cons pnt depth) pcol))
-		(setq depth 0))
-	    (setq nest (cons (cons (char-after (point)) pnt) nest))
-	    (setq depth (1+ depth))))
-	(goto-char pnt)
-	)
-       ((looking-at "[])}]")
-	(if (ruby-deep-indent-paren-p (matching-paren (char-after)))
-	    (setq depth (cdr (car pcol)) pcol (cdr pcol))
-	  (setq depth (1- depth)))
-	(setq nest (cdr nest))
-	(goto-char pnt))
-       ((looking-at ruby-block-end-re)
-	(if (or (and (not (bolp))
-		     (progn
-		       (forward-char -1)
-		       (setq w (char-after (point)))
-		       (or (eq ?_ w)
-			   (eq ?. w))))
-		(progn
-		  (goto-char pnt)
-		  (setq w (char-after (point)))
-		  (or (eq ?_ w)
-		      (eq ?! w)
-		      (eq ?? w))))
-	    nil
-	  (setq nest (cdr nest))
-	  (setq depth (1- depth)))
-	(goto-char pnt))
-       ((looking-at "def\\s +[^(\n;]*")
-	(if (or (bolp)
-		(progn
-		  (forward-char -1)
-		  (not (eq ?_ (char-after (point))))))
-	    (progn
-	      (setq nest (cons (cons nil pnt) nest))
-	      (setq depth (1+ depth))))
-	(goto-char (match-end 0)))
-       ((looking-at (concat "\\<\\(" ruby-block-beg-re "\\)\\>"))
-	(and
-	 (save-match-data
-	   (or (not (looking-at "do\\>[^_]"))
-	       (save-excursion
-		 (back-to-indentation)
-		 (not (looking-at ruby-non-block-do-re)))))
-	 (or (bolp)
-	     (progn
-	       (forward-char -1)
-	       (setq w (char-after (point)))
-	       (not (or (eq ?_ w)
-			(eq ?. w)))))
-	 (goto-char pnt)
-	 (setq w (char-after (point)))
-	 (not (eq ?_ w))
-	 (not (eq ?! w))
-	 (not (eq ?? w))
-	 (skip-chars-forward " \t")
-	 (goto-char (match-beginning 0))
-	 (or (not (looking-at ruby-modifier-re))
-	     (ruby-expr-beg 'modifier))
-	 (goto-char pnt)
-	 (setq nest (cons (cons nil pnt) nest))
-	 (setq depth (1+ depth)))
-	(goto-char pnt))
-       ((looking-at ":\\(['\"]\\)\\(\\\\.\\|[^\\\\]\\)*\\1")
-	(goto-char (match-end 0)))
-       ((looking-at ":\\([-,.+*/%&|^~<>]=?\\|===?\\|<=>\\)")
-	(goto-char (match-end 0)))
-       ((looking-at ":\\([a-zA-Z_][a-zA-Z_0-9]*[!?=]?\\)?")
-	(goto-char (match-end 0)))
-       ((or (looking-at "\\.\\.\\.?")
-	    (looking-at "\\.[0-9]+")
-	    (looking-at "\\.[a-zA-Z_0-9]+")
-	    (looking-at "\\."))
-	(goto-char (match-end 0)))
-       ((looking-at "^=begin")
-	(if (re-search-forward "^=end" end t)
-	    (forward-line 1)
-	  (setq in-string (match-end 0))
-	  (goto-char end)))
-       ((looking-at "<<")
-	(cond
-	 ((and (ruby-expr-beg 'heredoc)
-	       (looking-at "<<\\(-\\)?\\(\\([\"'`]\\)\\([^\n]+?\\)\\3\\|\\sw+\\)"))
-	  (setq re (regexp-quote (or (match-string 4) (match-string 2))))
-	  (if (match-beginning 1) (setq re (concat "\\s *" re)))
-	  (let* ((id-end (goto-char (match-end 0)))
-		 (line-end-position (save-excursion (end-of-line) (point)))
-		 (state (list in-string nest depth pcol indent)))
-	    ;; parse the rest of the line
-	    (while (and (> line-end-position (point))
-			(setq state (apply 'ruby-parse-partial
-					   line-end-position state))))
-	    (setq in-string (car state)
-		  nest (nth 1 state)
-		  depth (nth 2 state)
-		  pcol (nth 3 state)
-		  indent (nth 4 state))
-	    ;; skip heredoc section
-	    (if (re-search-forward (concat "^" re "$") end 'move)
-		(forward-line 1)
-	      (setq in-string id-end)
-	      (goto-char end))))
-	 (t
-	  (goto-char pnt))))
-       ((looking-at "^__END__$")
-	(goto-char pnt))
-       ((looking-at ruby-here-doc-beg-re)
-	(if (re-search-forward (ruby-here-doc-end-match)
-			       indent-point t)
-	    (forward-line 1)
-	  (setq in-string (match-end 0))
-	  (goto-char indent-point)))
-       (t
-	(error (format "bad string %s"
-		       (buffer-substring (point) pnt)
-		       ))))))
-  (list in-string nest depth pcol))
-
-(defun ruby-parse-region (start end)
-  (let (state)
-    (save-excursion
-      (if start
-	  (goto-char start)
-	(ruby-beginning-of-indent))
-      (save-restriction
-	(narrow-to-region (point) end)
-	(while (and (> end (point))
-		    (setq state (apply 'ruby-parse-partial end state))))))
-    (list (nth 0 state)			; in-string
-	  (car (nth 1 state))		; nest
-	  (nth 2 state)			; depth
-	  (car (car (nth 3 state)))	; pcol
-	  ;(car (nth 5 state))		; indent
-	  )))
-
-(defun ruby-indent-size (pos nest)
-  (+ pos (* (or nest 1) ruby-indent-level)))
-
-(defun ruby-calculate-indent (&optional parse-start)
-  (save-excursion
-    (beginning-of-line)
-    (let ((indent-point (point))
-	  (case-fold-search nil)
-	  state bol eol begin op-end
-	  (paren (progn (skip-syntax-forward " ")
-			(and (char-after) (matching-paren (char-after)))))
-	  (indent 0))
-      (if parse-start
-	  (goto-char parse-start)
-	(ruby-beginning-of-indent)
-	(setq parse-start (point)))
-      (back-to-indentation)
-      (setq indent (current-column))
-      (setq state (ruby-parse-region parse-start indent-point))
-      (cond
-       ((nth 0 state)			; within string
-	(setq indent nil))		;  do nothing
-       ((car (nth 1 state))		; in paren
-	(goto-char (setq begin (cdr (nth 1 state))))
-	(let ((deep (ruby-deep-indent-paren-p (car (nth 1 state)))))
-	  (if deep
-	      (cond ((and (eq deep t) (eq (car (nth 1 state)) paren))
-		     (skip-syntax-backward " ")
-		     (setq indent (1- (current-column))))
-		    ((let ((s (ruby-parse-region (point) indent-point)))
-		       (and (nth 2 s) (> (nth 2 s) 0)
-			    (or (goto-char (cdr (nth 1 s))) t)))
-		     (forward-word -1)
-		     (setq indent (ruby-indent-size (current-column) (nth 2 state))))
-		    (t
-		     (setq indent (current-column))
-		     (cond ((eq deep 'space))
-			   (paren (setq indent (1- indent)))
-			   (t (setq indent (ruby-indent-size (1- indent) 1))))))
-	    (if (nth 3 state) (goto-char (nth 3 state))
-	      (goto-char parse-start) (back-to-indentation))
-	    (setq indent (ruby-indent-size (current-column) (nth 2 state))))
-	  (and (eq (car (nth 1 state)) paren)
-	       (ruby-deep-indent-paren-p (matching-paren paren))
-	       (search-backward (char-to-string paren))
-	       (setq indent (current-column)))))
-       ((and (nth 2 state) (> (nth 2 state) 0)) ; in nest
-	(if (null (cdr (nth 1 state)))
-	    (error "invalid nest"))
-	(goto-char (cdr (nth 1 state)))
-	(forward-word -1)		; skip back a keyword
-	(setq begin (point))
-	(cond
-	 ((looking-at "do\\>[^_]")	; iter block is a special case
-	  (if (nth 3 state) (goto-char (nth 3 state))
-	    (goto-char parse-start) (back-to-indentation))
-	  (setq indent (ruby-indent-size (current-column) (nth 2 state))))
-	 (t
-	  (setq indent (+ (current-column) ruby-indent-level)))))
-       
-       ((and (nth 2 state) (< (nth 2 state) 0)) ; in negative nest
-	(setq indent (ruby-indent-size (current-column) (nth 2 state)))))
-      (when indent
-	(goto-char indent-point)
-	(end-of-line)
-	(setq eol (point))
-	(beginning-of-line)
-	(cond
-	 ((and (not (ruby-deep-indent-paren-p paren))
-	       (re-search-forward ruby-negative eol t))
-	  (and (not (eq ?_ (char-after (match-end 0))))
-	       (setq indent (- indent ruby-indent-level))))
-	 ((and
-	   (save-excursion
-	     (beginning-of-line)
-	     (not (bobp)))
-	   (or (ruby-deep-indent-paren-p t)
-	       (null (car (nth 1 state)))))
-	  ;; goto beginning of non-empty no-comment line
-	  (let (end done)
-	    (while (not done)
-	      (skip-chars-backward " \t\n")
-	      (setq end (point))
-	      (beginning-of-line)
-	      (if (re-search-forward "^\\s *#" end t)
-		  (beginning-of-line)
-		(setq done t))))
-	  (setq bol (point))
-	  (end-of-line)
-	  ;; skip the comment at the end
-	  (skip-chars-backward " \t")
-	  (let (end (pos (point)))
-	    (beginning-of-line)
-	    (while (and (re-search-forward "#" pos t)
-			(setq end (1- (point)))
-			(or (ruby-special-char-p end)
-			    (and (setq state (ruby-parse-region parse-start end))
-				 (nth 0 state))))
-	      (setq end nil))
-	    (goto-char (or end pos))
-	    (skip-chars-backward " \t")
-	    (setq begin (if (nth 0 state) pos (cdr (nth 1 state))))
-	    (setq state (ruby-parse-region parse-start (point))))
-	  (or (bobp) (forward-char -1))
-	  (and
-	   (or (and (looking-at ruby-symbol-re)
-		    (skip-chars-backward ruby-symbol-chars)
-		    (looking-at (concat "\\<\\(" ruby-block-hanging-re "\\)\\>"))
-		    (not (eq (point) (nth 3 state)))
-		    (save-excursion
-		      (goto-char (match-end 0))
-		      (not (looking-at "[a-z_]"))))
-	       (and (looking-at ruby-operator-re)
-		    (not (ruby-special-char-p))
-		    ;; operator at the end of line
-		    (let ((c (char-after (point))))
-		      (and
-;; 		       (or (null begin)
-;; 			   (save-excursion
-;; 			     (goto-char begin)
-;; 			     (skip-chars-forward " \t")
-;; 			     (not (or (eolp) (looking-at "#")
-;; 				      (and (eq (car (nth 1 state)) ?{)
-;; 					   (looking-at "|"))))))
-		       (or (not (eq ?/ c))
-			   (null (nth 0 (ruby-parse-region (or begin parse-start) (point)))))
-		       (or (not (eq ?| (char-after (point))))
-			   (save-excursion
-			     (or (eolp) (forward-char -1))
-			     (cond
-			      ((search-backward "|" nil t)
-			       (skip-chars-backward " \t\n")
-			       (and (not (eolp))
-				    (progn
-				      (forward-char -1)
-				      (not (looking-at "{")))
-				    (progn
-				      (forward-word -1)
-				      (not (looking-at "do\\>[^_]")))))
-			      (t t))))
-		       (not (eq ?, c))
-		       (setq op-end t)))))
-	   (setq indent
-		 (cond
-		  ((and
-		    (null op-end)
-		    (not (looking-at (concat "\\<\\(" ruby-block-hanging-re "\\)\\>")))
-		    (eq (ruby-deep-indent-paren-p t) 'space)
-		    (not (bobp)))
-		   (save-excursion
-		     (widen)
-		     (goto-char (or begin parse-start))
-		     (skip-syntax-forward " ")
-		     (current-column)))
-		  ((car (nth 1 state)) indent)
-		  (t
-		   (+ indent ruby-indent-level))))))))
-      indent)))
-
-(defun ruby-electric-brace (arg)
-  (interactive "P")
-  (insert-char last-command-char 1)
-  (ruby-indent-line t)
-  (delete-char -1)
-  (self-insert-command (prefix-numeric-value arg)))
-
-(eval-when-compile
-  (defmacro defun-region-command (func args &rest body)
-    (let ((intr (car body)))
-      (when (featurep 'xemacs)
-	(if (stringp intr) (setq intr (cadr body)))
-	(and (eq (car intr) 'interactive)
-	     (setq intr (cdr intr))
-	     (setcar intr (concat "_" (car intr)))))
-      (cons 'defun (cons func (cons args body))))))
-
-(defun-region-command ruby-beginning-of-defun (&optional arg)
-  "Move backward to next beginning-of-defun.
-With argument, do this that many times.
-Returns t unless search stops due to end of buffer."
-  (interactive "p")
-  (and (re-search-backward (concat "^\\(" ruby-block-beg-re "\\)\\b")
-			   nil 'move (or arg 1))
-       (progn (beginning-of-line) t)))
-
-(defun ruby-beginning-of-indent ()
-  (and (re-search-backward (concat "^\\(" ruby-indent-beg-re "\\)\\b")
-			   nil 'move)
-       (progn
-	 (beginning-of-line)
-	 t)))
-
-(defun-region-command ruby-end-of-defun (&optional arg)
-  "Move forward to next end of defun.
-An end of a defun is found by moving forward from the beginning of one."
-  (interactive "p")
-  (and (re-search-forward (concat "^\\(" ruby-block-end-re "\\)\\($\\|\\b[^_]\\)")
-			  nil 'move (or arg 1))
-       (progn (beginning-of-line) t))
-  (forward-line 1))
-
-(defun ruby-move-to-block (n)
-  (let (start pos done down)
-    (setq start (ruby-calculate-indent))
-    (setq down (looking-at (if (< n 0) ruby-block-end-re
-			     (concat "\\<\\(" ruby-block-beg-re "\\)\\>"))))
-    (while (and (not done) (not (if (< n 0) (bobp) (eobp))))
-      (forward-line n)
-      (cond
-       ((looking-at "^\\s *$"))
-       ((looking-at "^\\s *#"))
-       ((and (> n 0) (looking-at "^=begin\\>"))
-	(re-search-forward "^=end\\>"))
-       ((and (< n 0) (looking-at "^=end\\>"))
-	(re-search-backward "^=begin\\>"))
-       (t
-	(setq pos (current-indentation))
-	(cond
-	 ((< start pos)
-	  (setq down t))
-	 ((and down (= pos start))
-	  (setq done t))
-	 ((> start pos)
-	  (setq done t)))))
-      (if done
-	  (save-excursion
-	    (back-to-indentation)
-	    (if (looking-at (concat "\\<\\(" ruby-block-mid-re "\\)\\>"))
-		(setq done nil))))))
-  (back-to-indentation))
-
-(defun-region-command ruby-beginning-of-block (&optional arg)
-  "Move backward to next beginning-of-block"
-  (interactive "p")
-  (ruby-move-to-block (- (or arg 1))))
-
-(defun-region-command ruby-end-of-block (&optional arg)
-  "Move forward to next beginning-of-block"
-  (interactive "p")
-  (ruby-move-to-block (or arg 1)))
-
-(defun-region-command ruby-forward-sexp (&optional cnt)
-  (interactive "p")
-  (if (and (numberp cnt) (< cnt 0))
-      (ruby-backward-sexp (- cnt))
-    (let ((i (or cnt 1)))
-      (condition-case nil
-	  (while (> i 0)
-	    (skip-syntax-forward " ")
-	    (cond ((looking-at "\\?\\(\\\\[CM]-\\)*\\\\?\\S ")
-		   (goto-char (match-end 0)))
-		  ((progn
-		     (skip-chars-forward ",.:;|&^~=!?\\+\\-\\*")
-		     (looking-at "\\s("))
-		   (goto-char (scan-sexps (point) 1)))
-		  ((and (looking-at (concat "\\<\\(" ruby-block-beg-re "\\)\\>"))
-			(not (eq (char-before (point)) ?.))
-			(not (eq (char-before (point)) ?:)))
-		   (ruby-end-of-block)
-		   (forward-word 1))
-		  ((looking-at "\\(\\$\\|@@?\\)?\\sw")
-		   (while (progn
-			    (while (progn (forward-word 1) (looking-at "_")))
-			    (cond ((looking-at "::") (forward-char 2) t)
-				  ((> (skip-chars-forward ".") 0))
-				  ((looking-at "\\?\\|!\\(=[~=>]\\|[^~=]\\)")
-				   (forward-char 1) nil)))))
-		  ((let (state expr)
-		     (while
-			 (progn
-			   (setq expr (or expr (ruby-expr-beg)
-					  (looking-at "%\\sw?\\Sw\\|[\"'`/]")))
-			   (nth 1 (setq state (apply 'ruby-parse-partial nil state))))
-		       (setq expr t)
-		       (skip-chars-forward "<"))
-		     (not expr))))
-	    (setq i (1- i)))
-	((error) (forward-word 1)))
-      i)))
-
-(defun-region-command ruby-backward-sexp (&optional cnt)
-  (interactive "p")
-  (if (and (numberp cnt) (< cnt 0))
-      (ruby-forward-sexp (- cnt))
-    (let ((i (or cnt 1)))
-      (condition-case nil
-	  (while (> i 0)
-	    (skip-chars-backward " \t\n,.:;|&^~=!?\\+\\-\\*")
-	    (forward-char -1)
-	    (cond ((looking-at "\\s)")
-		   (goto-char (scan-sexps (1+ (point)) -1))
-		   (case (char-before)
-		     (?% (forward-char -1))
-		     ('(?q ?Q ?w ?W ?r ?x)
-		      (if (eq (char-before (1- (point))) ?%) (forward-char -2))))
-		   nil)
-		  ((looking-at "\\s\"\\|\\\\\\S_")
-		   (let ((c (char-to-string (char-before (match-end 0)))))
-		     (while (and (search-backward c)
-				 (oddp (skip-chars-backward "\\")))))
-		   nil)
-		  ((looking-at "\\s.\\|\\s\\")
-		   (if (ruby-special-char-p) (forward-char -1)))
-		  ((looking-at "\\s(") nil)
-		  (t
-		   (forward-char 1)
-		   (while (progn (forward-word -1)
-				 (case (char-before)
-				   (?_ t)
-				   (?. (forward-char -1) t)
-				   ((?$ ?@)
-				    (forward-char -1)
-				    (and (eq (char-before) (char-after)) (forward-char -1)))
-				   (?:
-				    (forward-char -1)
-				    (eq (char-before) :)))))
-		   (if (looking-at ruby-block-end-re)
-		       (ruby-beginning-of-block))
-		   nil))
-	    (setq i (1- i)))
-	((error)))
-      i)))
-
-(defun ruby-reindent-then-newline-and-indent ()
-  (interactive "*")
-  (newline)
-  (save-excursion
-    (end-of-line 0)
-    (indent-according-to-mode)
-    (delete-region (point) (progn (skip-chars-backward " \t") (point))))
-  (indent-according-to-mode))
-
-(fset 'ruby-encomment-region (symbol-function 'comment-region))
-
-(defun ruby-decomment-region (beg end)
-  (interactive "r")
-  (save-excursion
-    (goto-char beg)
-    (while (re-search-forward "^\\([ \t]*\\)#" end t)
-      (replace-match "\\1" nil nil)
-      (save-excursion
-	(ruby-indent-line)))))
-
-(defun ruby-insert-end ()
-  (interactive)
-  (insert "end")
-  (ruby-indent-line t)
-  (end-of-line))
-
-(defun ruby-mark-defun ()
-  "Put mark at end of this Ruby function, point at beginning."
-  (interactive)
-  (push-mark (point))
-  (ruby-end-of-defun)
-  (push-mark (point) nil t)
-  (ruby-beginning-of-defun)
-  (re-search-backward "^\n" (- (point) 1) t))
-
-(defun ruby-indent-exp (&optional shutup-p)
-  "Indent each line in the balanced expression following point syntactically.
-If optional SHUTUP-P is non-nil, no errors are signalled if no
-balanced expression is found."
-  (interactive "*P")
-  (let ((here (point-marker)) start top column (nest t))
-    (set-marker-insertion-type here t)
-    (unwind-protect
-	(progn
-	  (beginning-of-line)
-	  (setq start (point) top (current-indentation))
-	  (while (and (not (eobp))
-		      (progn
-			(setq column (ruby-calculate-indent start))
-			(cond ((> column top)
-			       (setq nest t))
-			      ((and (= column top) nest)
-			       (setq nest nil) t))))
-	    (ruby-indent-to column)
-	    (beginning-of-line 2)))
-      (goto-char here)
-      (set-marker here nil))))
-
-(defun ruby-add-log-current-method ()
-  "Return current method string."
-  (condition-case nil
-      (save-excursion
-	(let ((mlist nil) (indent 0))
-	  ;; get current method (or class/module)
-	  (if (re-search-backward
-	       (concat "^[ \t]*\\(def\\|class\\|module\\)[ \t]+"
-		       "\\(" 
-		       ;; \\. for class method
-			"\\(" ruby-symbol-re "\\|\\." "\\)" 
-			"+\\)")
-	       nil t)
-	      (progn
-		(setq mlist (list (match-string 2)))
-		(goto-char (match-beginning 1))
-		(setq indent (current-column))
-		(beginning-of-line)))
-	  ;; nest class/module
-	  (while (and (> indent 0)
-		      (re-search-backward
-		       (concat
-			"^[ \t]*\\(class\\|module\\)[ \t]+"
-			"\\([A-Z]" ruby-symbol-re "+\\)")
-		       nil t))
-	    (goto-char (match-beginning 1))
-	    (if (< (current-column) indent)
-		(progn
-		  (setq mlist (cons (match-string 2) mlist))
-		  (setq indent (current-column))
-		  (beginning-of-line))))
-	  ;; generate string
-	  (if (consp mlist)
-	      (mapconcat (function identity) mlist "::")
-	    nil)))))
-
-(cond
- ((featurep 'font-lock)
-  (or (boundp 'font-lock-variable-name-face)
-      (setq font-lock-variable-name-face font-lock-type-face))
-
-  (setq ruby-font-lock-syntactic-keywords
-	'(
-	  ;; #{ }, #$hoge, #@foo are not comments
-	  ("\\(#\\)[{$@]" 1 (1 . nil))
-	  ;; the last $', $", $` in the respective string is not variable
-	  ;; the last ?', ?", ?` in the respective string is not ascii code
-	  ("\\(^\\|[\[ \t\n<+\(,=]\\)\\(['\"`]\\)\\(\\\\.\\|\\2\\|[^'\"`\n\\\\]\\)*?\\\\?[?$]\\(\\2\\)"
-	   (2 (7 . nil))
-	   (4 (7 . nil)))
-	  ;; $' $" $` .... are variables
-	  ;; ?' ?" ?` are ascii codes
-	  ("\\(^\\|[^\\\\]\\)\\(\\\\\\\\\\)*[?$]\\([#\"'`]\\)" 3 (1 . nil))
-	  ;; regexps
-	  ("\\(^\\|[=(,~?:;]\\|\\(^\\|\\s \\)\\(if\\|elsif\\|unless\\|while\\|until\\|when\\|and\\|or\\|&&\\|||\\)\\|g?sub!?\\|scan\\|split!?\\)\\s *\\(/\\)[^/\n\\\\]*\\(\\\\.[^/\n\\\\]*\\)*\\(/\\)"
-	   (4 (7 . ?/))
-	   (6 (7 . ?/)))
-	  ("^\\(=\\)begin\\(\\s \\|$\\)" 1 (7 . nil))
-	  ("^\\(=\\)end\\(\\s \\|$\\)" 1 (7 . nil))))
-
-  (cond ((featurep 'xemacs)
-	 (put 'ruby-mode 'font-lock-defaults
-	      '((ruby-font-lock-keywords)
-		nil nil nil
-		beginning-of-line
-		(font-lock-syntactic-keywords
-		 . ruby-font-lock-syntactic-keywords))))
-	(t
-	 (add-hook 'ruby-mode-hook
-	    '(lambda ()
-	       (make-local-variable 'font-lock-defaults)
-	       (make-local-variable 'font-lock-keywords)
-	       (make-local-variable 'font-lock-syntax-table)
-	       (make-local-variable 'font-lock-syntactic-keywords)
-	       (setq font-lock-defaults '((ruby-font-lock-keywords) nil nil))
-	       (setq font-lock-keywords ruby-font-lock-keywords)
-	       (setq font-lock-syntax-table ruby-font-lock-syntax-table)
-	       (setq font-lock-syntactic-keywords ruby-font-lock-syntactic-keywords)))))
-
-  (defun ruby-font-lock-docs (limit)
-    (if (re-search-forward "^=begin\\(\\s \\|$\\)" limit t)
-	(let (beg)
-	  (beginning-of-line)
-	  (setq beg (point))
-	  (forward-line 1)
-	  (if (re-search-forward "^=end\\(\\s \\|$\\)" limit t)
-	      (progn
-		(set-match-data (list beg (point)))
-		t)))))
-
-  (defun ruby-font-lock-maybe-docs (limit)
-    (let (beg)
-      (save-excursion
-	(if (and (re-search-backward "^=\\(begin\\|end\\)\\(\\s \\|$\\)" nil t)
-		 (string= (match-string 1) "begin"))
-	    (progn
-	      (beginning-of-line)
-	      (setq beg (point)))))
-      (if (and beg (and (re-search-forward "^=\\(begin\\|end\\)\\(\\s \\|$\\)" nil t)
-			(string= (match-string 1) "end")))
-	  (progn
-	    (set-match-data (list beg (point)))
-	    t)
-	nil)))
-
-  (defvar ruby-font-lock-syntax-table
-    (let* ((tbl (copy-syntax-table ruby-mode-syntax-table)))
-      (modify-syntax-entry ?_ "w" tbl)
-      tbl))
-
-  (defun ruby-font-lock-here-docs (limit)
-    (if (re-search-forward ruby-here-doc-beg-re limit t)
-	(let (beg)
-	  (beginning-of-line)
-          (forward-line)
-	  (setq beg (point))
-	  (if (re-search-forward (ruby-here-doc-end-match) nil t)
-	      (progn
-		(set-match-data (list beg (point)))
-		t)))))
-
-  (defun ruby-font-lock-maybe-here-docs (limit)
-    (let (beg)
-      (save-excursion
-	(if (re-search-backward ruby-here-doc-beg-re nil t)
-	    (progn
-	      (beginning-of-line)
-              (forward-line)
-	      (setq beg (point)))))
-      (if (and beg
-	       (let ((end-match (ruby-here-doc-end-match)))
-                 (and (not (re-search-backward end-match beg t))
-		      (re-search-forward end-match nil t))))
-	  (progn
-	    (set-match-data (list beg (point)))
-	    t)
-          nil)))
-
-  (defvar ruby-font-lock-keywords
-    (list
-     ;; functions
-     '("^\\s *def\\s +\\([^( \t\n]+\\)"
-       1 font-lock-function-name-face)
-     ;; keywords
-     (cons (concat
-	    "\\(^\\|[^_:.@$]\\|\\.\\.\\)\\b\\(defined\\?\\|\\("
-	    (mapconcat
-	     'identity
-	     '("alias"
-	       "and"
-	       "begin"
-	       "break"
-	       "case"
-	       "catch"
-	       "class"
-	       "def"
-	       "do"
-	       "elsif"
-	       "else"
-	       "fail"
-	       "ensure"
-	       "for"
-	       "end"
-	       "if"
-	       "in"
-	       "module"
-	       "next"
-	       "not"
-	       "or"
-	       "raise"
-	       "redo"
-	       "rescue"
-	       "retry"
-	       "return"
-	       "then"
-	       "throw"
-	       "super"
-	       "unless"
-	       "undef"
-	       "until"
-	       "when"
-	       "while"
-	       "yield"
-	       )
-	     "\\|")
-	    "\\)\\>\\)")
-	   2)
-     ;; variables
-     '("\\(^\\|[^_:.@$]\\|\\.\\.\\)\\b\\(nil\\|self\\|true\\|false\\)\\>"
-       2 font-lock-variable-name-face)
-     ;; variables
-     '("\\(\\$\\([^a-zA-Z0-9 \n]\\|[0-9]\\)\\)\\W"
-       1 font-lock-variable-name-face)
-     '("\\(\\$\\|@\\|@@\\)\\(\\w\\|_\\)+"
-       0 font-lock-variable-name-face)
-     ;; embedded document
-     '(ruby-font-lock-docs
-       0 font-lock-comment-face t)
-     '(ruby-font-lock-maybe-docs
-       0 font-lock-comment-face t)
-     ;; "here" document
-     '(ruby-font-lock-here-docs
-       0 font-lock-string-face t)
-     '(ruby-font-lock-maybe-here-docs
-       0 font-lock-string-face t)
-     `(,ruby-here-doc-beg-re
-       0 font-lock-string-face t)
-     ;; general delimited string
-     '("\\(^\\|[[ \t\n<+(,=]\\)\\(%[xrqQwW]?\\([^<[{(a-zA-Z0-9 \n]\\)[^\n\\\\]*\\(\\\\.[^\n\\\\]*\\)*\\(\\3\\)\\)"
-       (2 font-lock-string-face))
-     ;; constants
-     '("\\(^\\|[^_]\\)\\b\\([A-Z]+\\(\\w\\|_\\)*\\)"
-       2 font-lock-type-face)
-     ;; symbols
-     '("\\(^\\|[^:]\\)\\(:\\([-+~]@?\\|[/%&|^`]\\|\\*\\*?\\|<\\(<\\|=>?\\)?\\|>[>=]?\\|===?\\|=~\\|\\[\\]=?\\|\\(\\w\\|_\\)+\\([!?=]\\|\\b_*\\)\\|#{[^}\n\\\\]*\\(\\\\.[^}\n\\\\]*\\)*}\\)\\)"
-       2 font-lock-reference-face)
-     ;; expression expansion
-     '("#\\({[^}\n\\\\]*\\(\\\\.[^}\n\\\\]*\\)*}\\|\\(\\$\\|@\\|@@\\)\\(\\w\\|_\\)+\\)"
-       0 font-lock-variable-name-face t)
-     ;; warn lower camel case
-     ;'("\\<[a-z]+[a-z0-9]*[A-Z][A-Za-z0-9]*\\([!?]?\\|\\>\\)"
-     ;  0 font-lock-warning-face)
-     )
-    "*Additional expressions to highlight in ruby mode."))
-
- ((featurep 'hilit19)
-  (hilit-set-mode-patterns
-   'ruby-mode
-   '(("[^$\\?]\\(\"[^\\\"]*\\(\\\\\\(.\\|\n\\)[^\\\"]*\\)*\"\\)" 1 string)
-     ("[^$\\?]\\('[^\\']*\\(\\\\\\(.\\|\n\\)[^\\']*\\)*'\\)" 1 string)
-     ("[^$\\?]\\(`[^\\`]*\\(\\\\\\(.\\|\n\\)[^\\`]*\\)*`\\)" 1 string)
-     ("^\\s *#.*$" nil comment)
-     ("[^$@?\\]\\(#[^$@{\n].*$\\)" 1 comment)
-     ("[^a-zA-Z_]\\(\\?\\(\\\\[CM]-\\)*.\\)" 1 string)
-     ("^\\s *\\(require\\|load\\).*$" nil include)
-     ("^\\s *\\(include\\|alias\\|undef\\).*$" nil decl)
-     ("^\\s *\\<\\(class\\|def\\|module\\)\\>" "[)\n;]" defun)
-     ("[^_]\\<\\(begin\\|case\\|else\\|elsif\\|end\\|ensure\\|for\\|if\\|unless\\|rescue\\|then\\|when\\|while\\|until\\|do\\|yield\\)\\>\\([^_]\\|$\\)" 1 defun)
-     ("[^_]\\<\\(and\\|break\\|next\\|raise\\|fail\\|in\\|not\\|or\\|redo\\|retry\\|return\\|super\\|yield\\|catch\\|throw\\|self\\|nil\\)\\>\\([^_]\\|$\\)" 1 keyword)
-     ("\\$\\(.\\|\\sw+\\)" nil type)
-     ("[$@].[a-zA-Z_0-9]*" nil struct)
-     ("^__END__" nil label))))
- )
-
-
-(provide 'ruby-mode)
Index: CarbonEmacsPackage/GPL/ruby-mode/rubydb3x.el
diff -u CarbonEmacsPackage/GPL/ruby-mode/rubydb3x.el:1.3 CarbonEmacsPackage/GPL/ruby-mode/rubydb3x.el:removed
--- CarbonEmacsPackage/GPL/ruby-mode/rubydb3x.el:1.3	Mon Oct 31 23:16:07 2005
+++ CarbonEmacsPackage/GPL/ruby-mode/rubydb3x.el	Mon Dec 26 21:31:46 2005
@@ -1,115 +0,0 @@
-(require 'gud)
-(provide 'rubydb)
-
-;; ======================================================================
-;; rubydb functions
-
-;;; History of argument lists passed to rubydb.
-(defvar gud-rubydb-history nil)
-
-(if (fboundp 'gud-overload-functions)
-    (defun gud-rubydb-massage-args (file args)
-      (cons "-r" (cons "debug" (cons file args))))
-  (defun gud-rubydb-massage-args (file args)
-      (cons "-r" (cons "debug" args))))
-
-;; There's no guarantee that Emacs will hand the filter the entire
-;; marker at once; it could be broken up across several strings.  We
-;; might even receive a big chunk with several markers in it.  If we
-;; receive a chunk of text which looks like it might contain the
-;; beginning of a marker, we save it here between calls to the
-;; filter.
-(defvar gud-rubydb-marker-acc "")
-(make-variable-buffer-local 'gud-rubydb-marker-acc)
-
-(defun gud-rubydb-marker-filter (string)
-  (setq gud-rubydb-marker-acc (concat gud-rubydb-marker-acc string))
-  (let ((output ""))
-
-    ;; Process all the complete markers in this chunk.
-    (while (string-match "\032\032\\([^:\n]*\\):\\([0-9]*\\):.*\n"
-			 gud-rubydb-marker-acc)
-      (setq
-
-       ;; Extract the frame position from the marker.
-       gud-last-frame
-       (cons (substring gud-rubydb-marker-acc (match-beginning 1) (match-end 1))
-	     (string-to-int (substring gud-rubydb-marker-acc
-				       (match-beginning 2)
-				       (match-end 2))))
-
-       ;; Append any text before the marker to the output we're going
-       ;; to return - we don't include the marker in this text.
-       output (concat output
-		      (substring gud-rubydb-marker-acc 0 (match-beginning 0)))
-
-       ;; Set the accumulator to the remaining text.
-       gud-rubydb-marker-acc (substring gud-rubydb-marker-acc (match-end 0))))
-
-    ;; Does the remaining text look like it might end with the
-    ;; beginning of another marker?  If it does, then keep it in
-    ;; gud-rubydb-marker-acc until we receive the rest of it.  Since we
-    ;; know the full marker regexp above failed, it's pretty simple to
-    ;; test for marker starts.
-    (if (string-match "\032.*\\'" gud-rubydb-marker-acc)
-	(progn
-	  ;; Everything before the potential marker start can be output.
-	  (setq output (concat output (substring gud-rubydb-marker-acc
-						 0 (match-beginning 0))))
-
-	  ;; Everything after, we save, to combine with later input.
-	  (setq gud-rubydb-marker-acc
-		(substring gud-rubydb-marker-acc (match-beginning 0))))
-
-      (setq output (concat output gud-rubydb-marker-acc)
-	    gud-rubydb-marker-acc ""))
-
-    output))
-
-(defun gud-rubydb-find-file (f)
-  (save-excursion
-    (let ((buf (find-file-noselect f)))
-      (set-buffer buf)
-;;      (gud-make-debug-menu)
-      buf)))
-
-(defvar rubydb-command-name "ruby"
-  "File name for executing ruby.")
-
-;;;###autoload
-(defun rubydb (command-line)
-  "Run rubydb on program FILE in buffer *gud-FILE*.
-The directory containing FILE becomes the initial working directory
-and source-file directory for your debugger."
-  (interactive
-   (list (read-from-minibuffer "Run rubydb (like this): "
-			       (if (consp gud-rubydb-history)
-				   (car gud-rubydb-history)
-				 (concat rubydb-command-name " "))
-			       nil nil
-			       '(gud-rubydb-history . 1))))
-
-  (if (not (fboundp 'gud-overload-functions))
-      (gud-common-init command-line 'gud-rubydb-massage-args
-		       'gud-rubydb-marker-filter 'gud-rubydb-find-file)
-    (gud-overload-functions '((gud-massage-args . gud-rubydb-massage-args)
-			      (gud-marker-filter . gud-rubydb-marker-filter)
-			      (gud-find-file . gud-rubydb-find-file)))
-    (gud-common-init command-line rubydb-command-name))
-
-  (gud-def gud-break  "b %l"         "\C-b" "Set breakpoint at current line.")
-;  (gud-def gud-remove "clear %l"     "\C-d" "Remove breakpoint at current line")
-  (gud-def gud-step   "s"            "\C-s" "Step one source line with display.")
-  (gud-def gud-next   "n"            "\C-n" "Step one line (skip functions).")
-  (gud-def gud-cont   "c"            "\C-r" "Continue with display.")
-  (gud-def gud-finish "finish"       "\C-f" "Finish executing current function.")
-  (gud-def gud-up     "up %p"        "<" "Up N stack frames (numeric arg).")
-  (gud-def gud-down   "down %p"      ">" "Down N stack frames (numeric arg).")
-  (gud-def gud-print  "p %e"         "\C-p" "Evaluate ruby expression at point.")
-
-  (setq comint-prompt-regexp "^(rdb:-) ")
-  (if (boundp 'comint-last-output-start)
-      (set-marker comint-last-output-start (point)))
-  (set (make-local-variable 'paragraph-start) comint-prompt-regexp)
-  (run-hooks 'rubydb-mode-hook)
-  )


macemacsjp-cvs メーリングリストの案内
Back to archive index