emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Minor sql-mode bug fixes


From: Michael Mauger
Subject: Minor sql-mode bug fixes
Date: Mon, 18 Dec 2006 21:38:18 -0800 (PST)

I reviewed the behavior of sql-mode in the pretest and found some problems.  I 
had fixed these in
my local patches but there are too many additional feature enhancements in the 
patches to release
them during the feature freeze/pretest.  (That'll teach me to take the feature 
freeze seriously!
;) )

Anyways, attached is a patch that corrects several specific bugs and updates 
the commentary to
more accurately reflect the state of the mode and it's future directions.  I've 
also included the
ChangeLog entry.

Please review and apply.  Thx.

*** emacs/lisp/progmodes/sql.el.orig    Sun Dec 17 15:43:07 2006
--- emacs/lisp/progmodes/sql.el Mon Dec 18 23:46:34 2006
***************
*** 5,11 ****

  ;; Author: Alex Schroeder <address@hidden>
  ;; Maintainer: Michael Mauger <address@hidden>
! ;; Version: 2.0.1
  ;; Keywords: comm languages processes
  ;; URL: 
http://savannah.gnu.org/cgi-bin/viewcvs/emacs/emacs/lisp/progmodes/sql.el
  ;; URL: http://www.emacswiki.org/cgi-bin/wiki.pl?SqlMode
--- 5,11 ----

  ;; Author: Alex Schroeder <address@hidden>
  ;; Maintainer: Michael Mauger <address@hidden>
! ;; Version: 2.0.2
  ;; Keywords: comm languages processes
  ;; URL: 
http://savannah.gnu.org/cgi-bin/viewcvs/emacs/emacs/lisp/progmodes/sql.el
  ;; URL: http://www.emacswiki.org/cgi-bin/wiki.pl?SqlMode
***************
*** 30,55 ****
  ;;; Commentary:

  ;; Please send bug reports and bug fixes to the mailing list at
! ;; address@hidden  If you want to subscribe to the mailing list, send
! ;; mail to address@hidden with `subscribe sql.el FIRSTNAME
! ;; LASTNAME' in the mail body.
!
! ;; This file provides a sql-mode and a sql-interactive-mode.  My goals
! ;; were two simple modes providing syntactic hilighting.  The
! ;; interactive mode had to provide a command-line history; the other
! ;; mode had to provide "send region/buffer to SQL interpreter"
! ;; functions.  "simple" in this context means easy to use, easy to
! ;; maintain and little or no bells and whistles.

  ;; If anybody feels like extending this sql mode, take a look at the
  ;; above mentioned modes and write a sqlx-mode on top of this one.  If
  ;; this proves to be difficult, please suggest changes that will
! ;; facilitate your plans.

  ;; sql-interactive-mode is used to interact with a SQL interpreter
  ;; process in a SQLi buffer (usually called `*SQL*').  The SQLi buffer
! ;; is created by calling a SQL interpreter-specific entry function.  Do
! ;; *not* call sql-interactive-mode by itself.

  ;; The list of currently supported interpreters and the corresponding
  ;; entry function used to create the SQLi buffers is shown with
--- 30,69 ----
  ;;; Commentary:

  ;; Please send bug reports and bug fixes to the mailing list at
! ;; address@hidden  If you want to subscribe to the mailing
! ;; list, see the web page at
! ;; http://lists.gnu.org/mailman/listinfo/help-gnu-emacs for
! ;; instructions.  I monitor this list actively.  If you send an e-mail
! ;; to Alex Schroeder it usually makes it to me when Alex has a chance
! ;; to forward them along (Thanks, Alex).
!
! ;; This file provides a sql-mode and a sql-interactive-mode.  The
! ;; original goals were two simple modes providing syntactic
! ;; highlighting.  The interactive mode had to provide a command-line
! ;; history; the other mode had to provide "send region/buffer to SQL
! ;; interpreter" functions.  "simple" in this context means easy to
! ;; use, easy to maintain and little or no bells and whistles.  This
! ;; has changed somewhat as experience with the mode has accumulated.
!
! ;; Support for different flavors of SQL and command interpreters was
! ;; available in early versions of sql.el.  This support has been
! ;; extended and formalized in later versions.  Part of the impetus for
! ;; the improved support of SQL flavors was borne out of the current
! ;; maintainer's consulting experience.  In the past fifteen years, I
! ;; have used Oracle, Sybase, Informix, MySQL, Postgres, and SQLServer.
! ;; On some assignments, I have used two or more of these concurrently.

  ;; If anybody feels like extending this sql mode, take a look at the
  ;; above mentioned modes and write a sqlx-mode on top of this one.  If
  ;; this proves to be difficult, please suggest changes that will
! ;; facilitate your plans.  Facilities have been provided to add
! ;; products and product-specific configuration.

  ;; sql-interactive-mode is used to interact with a SQL interpreter
  ;; process in a SQLi buffer (usually called `*SQL*').  The SQLi buffer
! ;; is created by calling a SQL interpreter-specific entry function or
! ;; sql-product-interactive.  Do *not* call sql-interactive-mode by
! ;; itself.

  ;; The list of currently supported interpreters and the corresponding
  ;; entry function used to create the SQLi buffers is shown with
***************
*** 850,856 ****
    (define-abbrev-table 'sql-mode-abbrev-table nil))

  (mapcar
!  ;; In Emacs 21.3+, provide SYSTEM-FLAG to define-abbrev.
   '(lambda (abbrev)
      (let ((name (car abbrev))
            (expansion (cdr abbrev)))
--- 864,870 ----
    (define-abbrev-table 'sql-mode-abbrev-table nil))

  (mapcar
!  ;; In Emacs 22+, provide SYSTEM-FLAG to define-abbrev.
   '(lambda (abbrev)
      (let ((name (car abbrev))
            (expansion (cdr abbrev)))
***************
*** 858,870 ****
            (define-abbrev sql-mode-abbrev-table name expansion nil 0 t)
          (error
           (define-abbrev sql-mode-abbrev-table name expansion)))))
!  '(("ins" "insert")
!    ("upd" "update")
!    ("del" "delete")
!    ("sel" "select")
!    ("proc" "procedure")
!    ("func" "function")
!    ("cr" "create")))

  ;; Syntax Table

--- 872,884 ----
            (define-abbrev sql-mode-abbrev-table name expansion nil 0 t)
          (error
           (define-abbrev sql-mode-abbrev-table name expansion)))))
!  '(("ins"  . "insert")
!    ("upd"  . "update")
!    ("del"  . "delete")
!    ("sel"  . "select")
!    ("proc" . "procedure")
!    ("func" . "function")
!    ("cr"   . "create")))

  ;; Syntax Table

***************
*** 873,885 ****
      ;; C-style comments /**/ (see elisp manual "Syntax Flags"))
      (modify-syntax-entry ?/ ". 14" table)
      (modify-syntax-entry ?* ". 23" table)
!     ;; double-dash starts comment
      (modify-syntax-entry ?- ". 12b" table)
!     ;; newline and formfeed end coments
      (modify-syntax-entry ?\n "> b" table)
      (modify-syntax-entry ?\f "> b" table)
!     ;; single quotes (') quotes delimit strings
      (modify-syntax-entry ?' "\"" table)
      ;; backslash is no escape character
      (modify-syntax-entry ?\\ "." table)
      table)
--- 887,901 ----
      ;; C-style comments /**/ (see elisp manual "Syntax Flags"))
      (modify-syntax-entry ?/ ". 14" table)
      (modify-syntax-entry ?* ". 23" table)
!     ;; double-dash starts comments
      (modify-syntax-entry ?- ". 12b" table)
!     ;; newline and formfeed end comments
      (modify-syntax-entry ?\n "> b" table)
      (modify-syntax-entry ?\f "> b" table)
!     ;; single quotes (') delimit strings
      (modify-syntax-entry ?' "\"" table)
+     ;; double quotes (") don't delimit strings
+     (modify-syntax-entry ?\" "." table)
      ;; backslash is no escape character
      (modify-syntax-entry ?\\ "." table)
      table)
***************
*** 888,899 ****
  ;; Font lock support

  (defvar sql-mode-font-lock-object-name
!   (list (concat "^\\s-*\\(create\\|drop\\|alter\\)\\s-+" ;; lead off with 
CREATE, DROP or ALTER
!               "\\(\\w+\\s-+\\)*"  ;; optional intervening keywords
!               "\\(table\\|view\\|package\\(\\s-+body\\)?\\|proc\\(edure\\)?"
!               "\\|function\\|trigger\\|sequence\\|rule\\|default\\)\\s-+"
!               "\\(\\w+\\)")
!       6 'font-lock-function-name-face)

    "Pattern to match the names of top-level objects.

--- 904,916 ----
  ;; Font lock support

  (defvar sql-mode-font-lock-object-name
!   (eval-when-compile
!     (list (concat "^\\s-*\\(?:create\\|drop\\|alter\\)\\s-+" ;; lead off with 
CREATE, DROP or ALTER
!                 "\\(?:\\w+\\s-+\\)*"  ;; optional intervening keywords
!                 
"\\(?:table\\|view\\|\\(?:package\\|type\\)\\(?:\\s-+body\\)?\\|proc\\(?:edure\\)?"
!                 "\\|function\\|trigger\\|sequence\\|rule\\|default\\)\\s-+"
!                 "\\(\\w+\\)")
!         1 'font-lock-function-name-face))

    "Pattern to match the names of top-level objects.

2006-12-18  Michael R. Mauger  <address@hidden>

        * progmodes/sql.el: Updated commentary and contact info.
        (sql-mode-abbrev-table): Corrected initialization.
        (sql-mode-syntax-table): Disable double quoted strings.
        (sql-mode-font-lock-object-name): Added TYPE and TYPE BODY.


reply via email to

[Prev in Thread] Current Thread [Next in Thread]