Merge from emacs-23
[bpt/emacs.git] / lisp / progmodes / vera-mode.el
index b8c5850..b80f60f 100644 (file)
@@ -1,7 +1,7 @@
 ;;; vera-mode.el --- major mode for editing Vera files.
 
 ;; Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
-;;   2006, 2007, 2008 Free Software Foundation, Inc.
+;;   2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
 
 ;; Author:      Reto Zimmermann <reto@gnu.org>
 ;; Maintainer:  Reto Zimmermann <reto@gnu.org>
@@ -250,10 +250,10 @@ If nil, TAB always indents current line."
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;; Mode definition
 
-;;;###autoload (add-to-list 'auto-mode-alist '("\\.vr[hi]?\\'" . vera-mode))
+;;;###autoload (add-to-list 'auto-mode-alist (cons (purecopy "\\.vr[hi]?\\'")  'vera-mode))
 
 ;;;###autoload
-(defun vera-mode ()
+(define-derived-mode vera-mode prog-mode "Vera"
   "Major mode for editing Vera code.
 
 Usage:
@@ -291,7 +291,7 @@ Add a description of the problem and include a reproducible test case.
 Feel free to send questions and enhancement requests to <reto@gnu.org>.
 
 Official distribution is at
-<http://www.iis.ee.ethz.ch/~zimmi/emacs/vera-mode.html>.
+URL `http://www.iis.ee.ethz.ch/~zimmi/emacs/vera-mode.html'
 
 
                                                   The Vera Mode Maintainer
@@ -301,13 +301,6 @@ Key bindings:
 -------------
 
 \\{vera-mode-map}"
-  (interactive)
-  (kill-all-local-variables)
-  (setq major-mode 'vera-mode)
-  (setq mode-name "Vera")
-  ;; set maps and tables
-  (use-local-map vera-mode-map)
-  (set-syntax-table vera-mode-syntax-table)
   ;; set local variables
   (require 'cc-cmds)
   (set (make-local-variable 'comment-start) "//")
@@ -328,9 +321,7 @@ Key bindings:
   ;; add menu (XEmacs)
   (easy-menu-add vera-mode-menu)
   ;; miscellaneous
-  (message "Vera Mode %s.  Type C-c C-h for documentation." vera-version)
-  ;; run hooks
-  (run-hooks 'vera-mode-hook))
+  (message "Vera Mode %s.  Type C-c C-h for documentation." vera-version))
 
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
@@ -770,7 +761,7 @@ the offset is simply returned."
              relpos 0)
       (setq offset (vera-evaluate-offset offset langelem symbol)))
     (+ (if (and relpos
-               (< relpos (save-excursion (beginning-of-line) (point))))
+               (< relpos (line-beginning-position)))
           (save-excursion
             (goto-char relpos)
             (current-column))
@@ -1261,7 +1252,9 @@ If `vera-intelligent-tab' is nil, always indent line."
   (interactive "*P")
   (if vera-intelligent-tab
       (progn
-       (cond ((memq (char-syntax (preceding-char)) '(?w ?_))
+       (cond ((and (not (featurep 'xemacs)) (use-region-p))
+              (vera-indent-region (region-beginning) (region-end) nil))
+             ((memq (char-syntax (preceding-char)) '(?w ?_))
               (let ((case-fold-search t)
                     (case-replace nil)
                     (hippie-expand-only-buffers
@@ -1338,7 +1331,7 @@ If `vera-intelligent-tab' is nil, always indent line."
   (interactive "*P")
   (let* ((ch (char-before))
         (indentp (and (not arg)
-                      (eq last-command-char ?/)
+                      (eq last-command-event ?/)
                       (or (and (eq ch ?/)
                                (not (vera-in-literal)))
                           (and (eq ch ?*)
@@ -1480,5 +1473,4 @@ If `vera-intelligent-tab' is nil, always indent line."
 
 (provide 'vera-mode)
 
-;; arch-tag: 22eae722-7ac5-47ac-a713-c4db1cf623a9
 ;;; vera-mode.el ends here