emacs-diffs
[Top][All Lists]
Advanced

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

[Emacs-diffs] /srv/bzr/emacs/trunk r111526: * progmodes/sql.el: (sql-ime


From: Michael Mauger
Subject: [Emacs-diffs] /srv/bzr/emacs/trunk r111526: * progmodes/sql.el: (sql-imenu-generic-expression):
Date: Mon, 14 Jan 2013 22:21:56 -0500
User-agent: Bazaar (2.5.0)

------------------------------------------------------------
revno: 111526
committer: Michael Mauger <address@hidden>
branch nick: trunk
timestamp: Mon 2013-01-14 22:21:56 -0500
message:
  * progmodes/sql.el: (sql-imenu-generic-expression):
  (sql-mode-font-lock-object-name): Match schema qualified names.
  (sql-connect): Use string keys.
  (sql-product-interactive): Wait for interpreter prompt.
  (sql-comint-oracle): Set process coding based on NLS_LANG.
modified:
  lisp/ChangeLog
  lisp/progmodes/sql.el
=== modified file 'lisp/ChangeLog'
--- a/lisp/ChangeLog    2013-01-15 02:35:45 +0000
+++ b/lisp/ChangeLog    2013-01-15 03:21:56 +0000
@@ -1,5 +1,13 @@
 2013-01-15  Michael R. Mauger  <address@hidden>
 
+       * progmodes/sql.el: (sql-imenu-generic-expression): 
+       (sql-mode-font-lock-object-name): Match schema qualified names.
+       (sql-connect): Use string keys.
+       (sql-product-interactive): Wait for interpreter prompt.
+       (sql-comint-oracle): Set process coding based on NLS_LANG.
+
+2013-01-15  Michael R. Mauger  <address@hidden>
+
        * progmodes/sql.el (sql-output-to-send): Remove, unused.
        (sql-interactive-remove-continuation-prompt): 
        (sql-send-magic-terminator, sql-interactive-mode): Remove

=== modified file 'lisp/progmodes/sql.el'
--- a/lisp/progmodes/sql.el     2013-01-15 02:35:45 +0000
+++ b/lisp/progmodes/sql.el     2013-01-15 03:21:56 +0000
@@ -723,15 +723,15 @@
 
 (defvar sql-imenu-generic-expression
   ;; Items are in reverse order because they are rendered in reverse.
-  '(("Rules/Defaults" 
"^\\s-*create\\s-+\\(?:\\w+\\s-+\\)*\\(?:rule\\|default\\)\\(?:if\\s-+not\\s-+exists\\s-+\\)?\\s-+\\(\\w+\\)"
 1)
-    ("Sequences" 
"^\\s-*create\\s-+\\(?:\\w+\\s-+\\)*sequence\\s-+\\(?:if\\s-+not\\s-+exists\\s-+\\)?\\(\\w+\\)"
 1)
-    ("Triggers" 
"^\\s-*create\\s-+\\(?:\\w+\\s-+\\)*trigger\\s-+\\(?:if\\s-+not\\s-+exists\\s-+\\)?\\(\\w+\\)"
 1)
-    ("Functions" 
"^\\s-*\\(?:create\\s-+\\(?:\\w+\\s-+\\)*\\)?function\\s-+\\(?:if\\s-+not\\s-+exists\\s-+\\)?\\(\\w+\\)"
 1)
-    ("Procedures" 
"^\\s-*\\(?:create\\s-+\\(?:\\w+\\s-+\\)*\\)?proc\\(?:edure\\)?\\s-+\\(?:if\\s-+not\\s-+exists\\s-+\\)?\\(\\w+\\)"
 1)
-    ("Packages" 
"^\\s-*create\\s-+\\(?:\\w+\\s-+\\)*package\\s-+\\(?:body\\s-+\\)?\\(?:if\\s-+not\\s-+exists\\s-+\\)?\\(\\w+\\)"
 1)
-    ("Types" 
"^\\s-*create\\s-+\\(?:\\w+\\s-+\\)*type\\s-+\\(?:body\\s-+\\)?\\(?:if\\s-+not\\s-+exists\\s-+\\)?\\(\\w+\\)"
 1)
-    ("Indexes" 
"^\\s-*create\\s-+\\(?:\\w+\\s-+\\)*index\\s-+\\(?:if\\s-+not\\s-+exists\\s-+\\)?\\(\\w+\\)"
 1)
-    ("Tables/Views" 
"^\\s-*create\\s-+\\(?:\\w+\\s-+\\)*\\(?:table\\|view\\)\\s-+\\(?:if\\s-+not\\s-+exists\\s-+\\)?\\(\\w+\\)"
 1))
+  '(("Rules/Defaults" 
"^\\s-*create\\s-+\\(?:\\w+\\s-+\\)*\\(?:rule\\|default\\)\\(?:if\\s-+not\\s-+exists\\s-+\\)?\\s-+\\(\\(?:\\w+\\s-*[.]\\s-*\\)*\\w+\\)"
 1)
+    ("Sequences" 
"^\\s-*create\\s-+\\(?:\\w+\\s-+\\)*sequence\\s-+\\(?:if\\s-+not\\s-+exists\\s-+\\)?\\(\\(?:\\w+\\s-*[.]\\s-*\\)*\\w+\\)"
 1)
+    ("Triggers" 
"^\\s-*create\\s-+\\(?:\\w+\\s-+\\)*trigger\\s-+\\(?:if\\s-+not\\s-+exists\\s-+\\)?\\(\\(?:\\w+\\s-*[.]\\s-*\\)*\\w+\\)"
 1)
+    ("Functions" 
"^\\s-*\\(?:create\\s-+\\(?:\\w+\\s-+\\)*\\)?function\\s-+\\(?:if\\s-+not\\s-+exists\\s-+\\)?\\(\\(?:\\w+\\s-*[.]\\s-*\\)*\\w+\\)"
 1)
+    ("Procedures" 
"^\\s-*\\(?:create\\s-+\\(?:\\w+\\s-+\\)*\\)?proc\\(?:edure\\)?\\s-+\\(?:if\\s-+not\\s-+exists\\s-+\\)?\\(\\(?:\\w+\\s-*[.]\\s-*\\)*\\w+\\)"
 1)
+    ("Packages" 
"^\\s-*create\\s-+\\(?:\\w+\\s-+\\)*package\\s-+\\(?:body\\s-+\\)?\\(?:if\\s-+not\\s-+exists\\s-+\\)?\\(\\(?:\\w+\\s-*[.]\\s-*\\)*\\w+\\)"
 1)
+    ("Types" 
"^\\s-*create\\s-+\\(?:\\w+\\s-+\\)*type\\s-+\\(?:body\\s-+\\)?\\(?:if\\s-+not\\s-+exists\\s-+\\)?\\(\\(?:\\w+\\s-*[.]\\s-*\\)*\\w+\\)"
 1)
+    ("Indexes" 
"^\\s-*create\\s-+\\(?:\\w+\\s-+\\)*index\\s-+\\(?:if\\s-+not\\s-+exists\\s-+\\)?\\(\\(?:\\w+\\s-*[.]\\s-*\\)*\\w+\\)"
 1)
+    ("Tables/Views" 
"^\\s-*create\\s-+\\(?:\\w+\\s-+\\)*\\(?:table\\|view\\)\\s-+\\(?:if\\s-+not\\s-+exists\\s-+\\)?\\(\\(?:\\w+\\s-*[.]\\s-*\\)*\\w+\\)"
 1))
   "Define interesting points in the SQL buffer for `imenu'.
 
 This is used to set `imenu-generic-expression' when SQL mode is
@@ -1313,7 +1313,7 @@
                  
"\\(?:table\\|view\\|\\(?:package\\|type\\)\\(?:\\s-+body\\)?\\|proc\\(?:edure\\)?"
                  "\\|function\\|trigger\\|sequence\\|rule\\|default\\)\\s-+"
                   "\\(?:if\\s-+not\\s-+exists\\s-+\\)?" ;; IF NOT EXISTS
-                 "\\(\\w+\\)")
+                 "\\(\\w+\\(?:\\s-*[.]\\s-*\\w+\\)*\\)")
          1 'font-lock-function-name-face))
 
   "Pattern to match the names of top-level objects.
@@ -3924,7 +3924,7 @@
       ;; Was one selected
       (when connection
         ;; Get connection settings
-        (let ((connect-set  (assoc connection sql-connection-alist)))
+        (let ((connect-set (assoc-string connection sql-connection-alist t)))
           ;; Settings are defined
           (if connect-set
               ;; Set the desired parameters
@@ -4128,9 +4128,17 @@
                   (setq sql-buffer (buffer-name new-sqli-buffer))
                   (run-hooks 'sql-set-sqli-hook)))
 
+              ;; Make sure the connection is complete
+              ;; (Sometimes start up can be slow)
+              ;;  and call the login hook
+              (let ((proc (get-buffer-process new-sqli-buffer)))
+                (while (and (memq (process-status proc) '(open run))
+                            (accept-process-output proc 2.5)
+                            (progn (goto-char (point-max))
+                                   (not (looking-back sql-prompt-regexp))))))
+              (run-hooks 'sql-login-hook)
               ;; All done.
               (message "Login...done")
-              (run-hooks 'sql-login-hook)
               (pop-to-buffer new-sqli-buffer)))))
     (message "No default SQL product defined.  Set `sql-product'.")))
 
@@ -4196,7 +4204,7 @@
   ;; is meaningless; database without user/password is meaningless,
   ;; because "@param" will ask sqlplus to interpret the script
   ;; "param".
-  (let ((parameter nil))
+  (let (parameter nlslang coding)
     (if (not (string= "" sql-user))
        (if (not (string= "" sql-password))
            (setq parameter (concat sql-user "/" sql-password))
@@ -4206,7 +4214,29 @@
     (if parameter
        (setq parameter (nconc (list parameter) options))
       (setq parameter options))
-    (sql-comint product parameter)))
+    (sql-comint product parameter)
+    ;; Set process coding system to agree with the interpreter
+    (setq nlslang (or (getenv "NLS_LANG") "")
+          coding  (dolist (cs
+                           ;; Are we missing any common NLS character sets
+                           '(("US8PC437"  . cp437)
+                             ("EL8PC737"  . cp737)
+                             ("WE8PC850"  . cp850)
+                             ("EE8PC852"  . cp852)
+                             ("TR8PC857"  . cp857)
+                             ("WE8PC858"  . cp858)
+                             ("IS8PC861"  . cp861)
+                             ("IW8PC1507" . cp862)
+                             ("N8PC865"   . cp865)
+                             ("RU8PC866"  . cp866)
+                             ("US7ASCII"  . us-ascii)
+                             ("UTF8"      . utf-8)
+                             ("AL32UTF8"  . utf-8)
+                             ("AL16UTF16" . utf-16))
+                           (or coding 'utf-8))
+                    (when (string-match (format "\\.%s\\'" (car cs)) nlslang)
+                      (setq coding (cdr cs)))))
+    (set-buffer-process-coding-system coding coding)))
 
 (defun sql-oracle-save-settings (sqlbuf)
   "Save most SQL*Plus settings so they may be reset by \\[sql-redirect]."


reply via email to

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