Mercurial > emacs
changeset 109524:893ec0a03db8
Merge from mainline.
author | Katsumi Yamaoka <yamaoka@jpl.org> |
---|---|
date | Wed, 21 Jul 2010 22:51:18 +0000 |
parents | 19ca6f3cc339 (current diff) bb9894b5234f (diff) |
children | be6e78af486e |
files | |
diffstat | 8 files changed, 256 insertions(+), 134 deletions(-) [+] |
line wrap: on
line diff
--- a/etc/NEWS Tue Jul 20 22:54:46 2010 +0000 +++ b/etc/NEWS Wed Jul 21 22:51:18 2010 +0000 @@ -296,6 +296,17 @@ SQLite database without prompting; the "prd" connection would prompt for the users password and then connect to the Oracle database. +**** Added SQL->Start... submenu when connections are defined. +When connections have been defined, There is a submenu available that +allows the user to select one to start a SQLi session. The "Start +SQLi Session" item moves to the "Start..." submenu when cnnections +have been defined. + +**** Added "Save Connection" menu item in SQLi buffers. +When a SQLi session is not started by a connection then +`sql-save-connection' will gather the login params specified for the +session and save them as a new connection. + *** Added option `sql-send-terminator'. When set makes sure that each command sent with `sql-send-*' commands are properly terminated and submitted to the SQL processor.
--- a/lisp/ChangeLog Tue Jul 20 22:54:46 2010 +0000 +++ b/lisp/ChangeLog Wed Jul 21 22:51:18 2010 +0000 @@ -1,3 +1,25 @@ +2010-07-21 Michael Albinus <michael.albinus@gmx.de> + + * net/tramp.el (tramp-get-ls-command) + (tramp-get-ls-command-with-dired): Run tests on "/dev/null" + instead of "/". + +2010-07-20 Michael R. Mauger <mmaug@yahoo.com> + + * progmodes/sql.el: Version 2.3. + (sql-connection-alist): Changed keys from symbols to strings; + enhanced the widget definition. + (sql-mode-menu): Added submenu to select connections. + (sql-interactive-mode-menu): Added "Save Connection" item. + (sql-add-product): Fixed menu item. + (sql-get-product-feature): Improved error handling. + (sql--alt-buffer-part, sql--alt-if-not-empty): Removed. + (sql-make-alternate-buffer-name): Simplified. + (sql-product-interactive): Handle missing product. + (sql-connect): Support string keys, minor improvements. + (sql-save-connection): New function. + (sql-connection-menu-filter): New function. + 2010-07-20 Michael Albinus <michael.albinus@gmx.de> * net/tramp.el (tramp-file-name-handler): Trace 'quit.
--- a/lisp/gnus/ChangeLog Tue Jul 20 22:54:46 2010 +0000 +++ b/lisp/gnus/ChangeLog Wed Jul 21 22:51:18 2010 +0000 @@ -1,3 +1,8 @@ +2010-07-21 Daiki Ueno <ueno@unixuser.org> + + * mml.el (mml-parse-1): Collect "certfile" attributes in "<#secure>" + tag (Bug#6654). + 2010-07-20 Katsumi Yamaoka <yamaoka@jpl.org> * gnus-sum.el (gnus-summary-bookmark-make-record): Bookmark position in
--- a/lisp/gnus/mml.el Tue Jul 20 22:54:46 2010 +0000 +++ b/lisp/gnus/mml.el Wed Jul 21 22:51:18 2010 +0000 @@ -228,7 +228,10 @@ (let* (secure-mode (taginfo (mml-read-tag)) (keyfile (cdr (assq 'keyfile taginfo))) - (certfile (cdr (assq 'certfile taginfo))) + (certfiles (delq nil (mapcar (lambda (tag) + (if (eq (car-safe tag) 'certfile) + (cdr tag))) + taginfo))) (recipients (cdr (assq 'recipients taginfo))) (sender (cdr (assq 'sender taginfo))) (location (cdr (assq 'tag-location taginfo))) @@ -254,8 +257,10 @@ ,@tags ,(if keyfile "keyfile") ,keyfile - ,(if certfile "certfile") - ,certfile + ,@(apply #'append + (mapcar (lambda (certfile) + (list "certfile" certfile)) + certfiles)) ,(if recipients "recipients") ,recipients ,(if sender "sender")
--- a/lisp/net/tramp.el Tue Jul 20 22:54:46 2010 +0000 +++ b/lisp/net/tramp.el Wed Jul 21 22:51:18 2010 +0000 @@ -8344,7 +8344,8 @@ (when (zerop (tramp-send-command-and-check vec (format "%s -lnd /" result))) (when (zerop (tramp-send-command-and-check - vec (format "%s --color=never -al /" result))) + vec (format + "%s --color=never -al /dev/null" result))) (setq result (concat result " --color=never"))) (throw 'ls-found result)) (setq dl (cdr dl)))))) @@ -8358,7 +8359,8 @@ ;; they fail when "-al" is after the "--dired" argument (for ;; example on FreeBSD). (zerop (tramp-send-command-and-check - vec (format "%s --dired -al /" (tramp-get-ls-command vec))))))) + vec (format "%s --dired -al /dev/null" + (tramp-get-ls-command vec))))))) (defun tramp-get-test-command (vec) (with-connection-property vec "test"
--- a/lisp/progmodes/sql.el Tue Jul 20 22:54:46 2010 +0000 +++ b/lisp/progmodes/sql.el Wed Jul 21 22:51:18 2010 +0000 @@ -5,7 +5,7 @@ ;; Author: Alex Schroeder <alex@gnu.org> ;; Maintainer: Michael Mauger <mmaug@yahoo.com> -;; Version: 2.2 +;; Version: 2.3 ;; 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 @@ -188,7 +188,7 @@ ;; (sql-comint product params))) ;; ;; (sql-set-product-feature 'xyz -;; :sqli-connect-func 'my-sql-comint-xyz) +;; :sqli-comint-func 'my-sql-comint-xyz) ;; 6) Define a convienence function to invoke the SQL interpreter. @@ -236,9 +236,8 @@ (eval-when-compile (require 'regexp-opt)) (require 'custom) -(require 'assoc) (eval-when-compile ;; needed in Emacs 19, 20 - (setq max-specpdl-size 2000)) + (setq max-specpdl-size (max max-specpdl-size 2000))) (defvar font-lock-keyword-face) (defvar font-lock-set-defaults) @@ -539,7 +538,7 @@ If a SQL-VARIABLE is part of the connection, it will not be prompted for during login." - :type `(alist :key-type (symbol :tag "Connection") + :type `(alist :key-type (string :tag "Connection") :value-type (set (group (const :tag "Product" sql-product) @@ -554,7 +553,11 @@ (group (const :tag "Password" sql-password) string) (group (const :tag "Server" sql-server) string) (group (const :tag "Database" sql-database) string) - (group (const :tag "Port" sql-port) integer))) + (group (const :tag "Port" sql-port) integer) + (repeat :inline t + (list :tab "Other" + (symbol :tag " Variable Symbol") + (sexp :tag "Value Expression"))))) :version "24.1" :group 'SQL) @@ -1115,8 +1118,17 @@ (get-buffer-process sql-buffer))] ["Send String" sql-send-string (and (buffer-live-p sql-buffer) (get-buffer-process sql-buffer))] - ["--" nil nil] - ["Start SQLi session" sql-product-interactive (sql-get-product-feature sql-product :sqli-comint-func)] + "--" + ["Start SQLi session" sql-product-interactive + :visible (not sql-connection-alist) + :enable (sql-get-product-feature sql-product :sqli-comint-func)] + ("Start..." + :visible sql-connection-alist + :filter sql-connection-menu-filter + "--" + ["New SQLi Session" sql-product-interactive (sql-get-product-feature sql-product :sqli-comint-func)]) + ["--" + :visible sql-connection-alist] ["Show SQLi buffer" sql-show-sqli-buffer t] ["Set SQLi buffer" sql-set-sqli-buffer t] ["Pop to SQLi buffer after send" @@ -1144,7 +1156,8 @@ sql-interactive-mode-menu sql-interactive-mode-map "Menu for `sql-interactive-mode'." '("SQL" - ["Rename Buffer" sql-rename-buffer t])) + ["Rename Buffer" sql-rename-buffer t] + ["Save Connection" sql-save-connection (not sql-connection)])) ;; Abbreviations -- if you want more of them, define them in your ;; ~/.emacs file. Abbrevs have to be enabled in your ~/.emacs, too. @@ -2028,7 +2041,7 @@ ;; Each product is represented by a radio ;; button with it's display name. `[,display - (lambda () (interactive) (sql-set-product ',product)) + (sql-set-product ',product) :style radio :selected (eq sql-product ',product)] ;; Maintain the product list in @@ -2103,7 +2116,8 @@ (symbolp v)) (symbol-value v) v)) - (message "`%s' is not a known product; use `sql-add-product' to add it first." product)))) + (message "`%s' is not a known product; use `sql-add-product' to add it first." product) + nil))) (defun sql-product-font-lock (keywords-only imenu) "Configure font-lock and imenu with product-specific settings. @@ -2480,13 +2494,6 @@ (message "Buffer %s has no process." (buffer-name sql-buffer)) (message "Current SQLi buffer is %s." (buffer-name sql-buffer))))) -(defun sql--alt-buffer-part (delim part) - (unless (string= "" part) - (list delim part))) - -(defun sql--alt-if-not-empty (s) - (if (string= "" s) nil s)) - (defun sql-make-alternate-buffer-name () "Return a string that can be used to rename a SQLi buffer. @@ -2502,40 +2509,44 @@ If all else fails, the alternate name would be the user and server/database name." - (or - ;; If started by sql-connect, use that - (sql--alt-if-not-empty - (when sql-connection (symbol-name sql-connection))) - - ;; based on :sqli-login setting - (sql--alt-if-not-empty - (apply 'concat - (cdr - (apply 'append nil - (mapcar - (lambda (v) - (cond - ((eq v 'user) (sql--alt-buffer-part "/" sql-user)) - ((eq v 'server) (sql--alt-buffer-part "@" sql-server)) - ((eq v 'database) (sql--alt-buffer-part "@" sql-database)) - ((eq v 'port) (sql--alt-buffer-part ":" sql-port)) - - ((eq v 'password) nil) - (t nil))) - (sql-get-product-feature sql-product :sqli-login)))))) - - ;; Default: username/server format - (sql--alt-if-not-empty - (concat (if (string= "" sql-user) - (if (string= "" (user-login-name)) - () - (concat (user-login-name) "/")) - (concat sql-user "/")) - (if (string= "" sql-database) - (if (string= "" sql-server) - (system-name) - sql-server) - sql-database))))) + (let ((name "")) + + ;; Try using the :sqli-login setting + (when (string= "" (or name "")) + (setq name + (apply 'concat + (apply 'append nil + (mapcar + (lambda (v) + (cond + ((eq v 'user) (list "/" sql-user)) + ((eq v 'server) (list "." sql-server)) + ((eq v 'database) (list "@" sql-database)) + ((eq v 'port) (list ":" sql-port)) + + ((eq v 'password) nil) + (t nil))) + (sql-get-product-feature sql-product :sqli-login)))))) + + ;; Default: username/server format + (when (string= "" (or name "")) + (setq name + (concat " " + (if (string= "" sql-user) + (if (string= "" (user-login-name)) + () + (concat (user-login-name) "/")) + (concat sql-user "/")) + (if (string= "" sql-database) + (if (string= "" sql-server) + (system-name) + sql-server) + sql-database)))) + + ;; Return the final string; prefixed by the connection name + (if sql-connection + (format "<%s>%s" sql-connection (or name "")) + (substring (or name " ") 1)))) (defun sql-rename-buffer () "Rename a SQLi buffer." @@ -2959,55 +2970,58 @@ sql-product-alist) nil 'require-match (or (and sql-product (symbol-name sql-product)) "ansi")))) - ((symbolp product) product) ; Product specified + ((and product ; Product specified + (symbolp product)) product) (t sql-product))) ; Default to sql-product - (when (sql-get-product-feature product :sqli-comint-func) - (if (and sql-buffer - (buffer-live-p sql-buffer) - (comint-check-proc sql-buffer)) - (pop-to-buffer sql-buffer) - - ;; Is the current buffer in sql-mode and - ;; there is a buffer local setting of sql-buffer - (let* ((start-buffer - (and (derived-mode-p 'sql-mode) - (current-buffer))) - (start-sql-buffer - (and start-buffer - (let (found) - (dolist (var (buffer-local-variables)) - (and (consp var) - (eq (car var) 'sql-buffer) - (buffer-live-p (cdr var)) - (get-buffer-process (cdr var)) - (setq found (cdr var)))) - found))) - new-sqli-buffer) - - ;; Get credentials. - (apply 'sql-get-login (sql-get-product-feature product :sqli-login)) - - ;; Connect to database. - (message "Login...") - (funcall (sql-get-product-feature product :sqli-comint-func) - product - (sql-get-product-feature product :sqli-options)) - - ;; Set SQLi mode. - (setq sql-interactive-product product - new-sqli-buffer (current-buffer) - sql-buffer new-sqli-buffer) - (sql-interactive-mode) - - ;; Set `sql-buffer' in the start buffer - (when (and start-buffer (not start-sql-buffer)) - (with-current-buffer start-buffer - (setq sql-buffer new-sqli-buffer))) - - ;; All done. - (message "Login...done") - (pop-to-buffer sql-buffer))))) + (if product + (when (sql-get-product-feature product :sqli-comint-func) + (if (and sql-buffer + (buffer-live-p sql-buffer) + (comint-check-proc sql-buffer)) + (pop-to-buffer sql-buffer) + + ;; Is the current buffer in sql-mode and + ;; there is a buffer local setting of sql-buffer + (let* ((start-buffer + (and (derived-mode-p 'sql-mode) + (current-buffer))) + (start-sql-buffer + (and start-buffer + (let (found) + (dolist (var (buffer-local-variables)) + (and (consp var) + (eq (car var) 'sql-buffer) + (buffer-live-p (cdr var)) + (get-buffer-process (cdr var)) + (setq found (cdr var)))) + found))) + new-sqli-buffer) + + ;; Get credentials. + (apply 'sql-get-login (sql-get-product-feature product :sqli-login)) + + ;; Connect to database. + (message "Login...") + (funcall (sql-get-product-feature product :sqli-comint-func) + product + (sql-get-product-feature product :sqli-options)) + + ;; Set SQLi mode. + (setq sql-interactive-product product + new-sqli-buffer (current-buffer) + sql-buffer new-sqli-buffer) + (sql-interactive-mode) + + ;; Set `sql-buffer' in the start buffer + (when (and start-buffer (not start-sql-buffer)) + (with-current-buffer start-buffer + (setq sql-buffer new-sqli-buffer))) + + ;; All done. + (message "Login...done") + (pop-to-buffer sql-buffer)))) + (message "No default SQL product defined. Set `sql-product'."))) (defun sql-comint (product params) "Set up a comint buffer to run the SQL processor. @@ -3032,11 +3046,11 @@ (interactive (if sql-connection-alist (list - (intern - (completing-read "Connection: " - (mapcar (lambda (c) (symbol-name (car c))) - sql-connection-alist) - nil t))) + (let ((completion-ignore-case t)) + (completing-read "Connection: " + (mapcar (lambda (c) (car c)) + sql-connection-alist) + nil t nil nil '(())))) nil)) ;; Are there connections defined @@ -3044,12 +3058,12 @@ ;; Was one selected (when connection ;; Get connection settings - (let ((connect-set (aget sql-connection-alist connection))) + (let ((connect-set (assoc connection sql-connection-alist))) ;; Settings are defined (if connect-set ;; Set the desired parameters (eval `(let* - (,@connect-set + (,@(cdr connect-set) ;; :sqli-login params variable (param-var (sql-get-product-feature sql-product :sqli-login nil t)) @@ -3066,14 +3080,14 @@ ((eq (car v) 'sql-database) 'database) ((eq (car v) 'sql-port) 'port) (t (car v)))) - connect-set)) + (cdr connect-set))) ;; the remaining params (w/o the connection params) - (rem-params (apply 'append nil - (mapcar - (lambda (l) - (unless (member l set-params) - (list l))) - login-params))) + (rem-params (delq nil + (mapcar + (lambda (l) + (unless (member l set-params) + l)) + login-params))) ;; Remember the connection (sql-connection connection)) @@ -3081,11 +3095,66 @@ ;; interactive session (eval `(let ((,param-var ',rem-params)) (sql-product-interactive sql-product))))) - (message "SQL Connection \"%s\" does not exist" connection) + (message "SQL Connection <%s> does not exist" connection) nil))) (message "No SQL Connections defined") nil)) +(defun sql-save-connection (name) + "Captures the connection information of the current SQLi session. + +The information is appended to `sql-connection-alist' and +optionally is saved to the user's init file." + + (interactive "sNew connection name: ") + + (if sql-connection + (message "This session was started by a connection; it's already been saved.") + + (let ((login (sql-get-product-feature sql-product :sqli-login)) + (alist sql-connection-alist) + connect) + + ;; Remove the existing connection if the user says so + (when (and (assoc name alist) + (yes-or-no-p (format "Replace connection definition <%s>? " name))) + (setq alist (assq-delete-all name alist))) + + ;; Add the new connection if it doesn't exist + (if (assoc name alist) + (message "Connection <%s> already exists" name) + (setq connect + (append (list name) + (delq nil + (mapcar + (lambda (param) + (cond + ((eq param 'product) `(sql-product (quote ,sql-product))) + ((eq param 'user) `(sql-user ,sql-user)) + ((eq param 'database) `(sql-database ,sql-database)) + ((eq param 'server) `(sql-server ,sql-server)) + ((eq param 'port) `(sql-port ,sql-port)))) + (append (list 'product) login))))) + + (setq alist (append alist (list connect))) + + ;; confirm whether we want to save the connections + (if (yes-or-no-p "Save the connections for future sessions? ") + (customize-save-variable 'sql-connection-alist alist) + (customize-set-variable 'sql-connection-alist alist)))))) + +(defun sql-connection-menu-filter (tail) + "Generates menu entries for using each connection." + (append + (mapcar + (lambda (conn) + (vector + (format "Connection <%s>" (car conn)) + (list 'sql-connect (car conn)) + t)) + sql-connection-alist) + tail)) + ;;;###autoload (defun sql-oracle () "Run sqlplus by Oracle as an inferior process.
--- a/nt/ChangeLog Tue Jul 20 22:54:46 2010 +0000 +++ b/nt/ChangeLog Wed Jul 21 22:51:18 2010 +0000 @@ -1,3 +1,8 @@ +2010-07-21 Juanma Barranquero <lekktu@gmail.com> + + * INSTALL: Add note about backslashes in Windows paths. + Fix typos. Simplify references to Windows versions. + 2010-07-20 Juanma Barranquero <lekktu@gmail.com> * addpm.c (add_registry, main):
--- a/nt/INSTALL Tue Jul 20 22:54:46 2010 +0000 +++ b/nt/INSTALL Wed Jul 21 22:51:18 2010 +0000 @@ -1,5 +1,5 @@ - Building and Installing Emacs - on Windows NT/2K/XP and Windows 95/98/ME + Building and Installing Emacs on Windows + (from 95 to 7 and beyond) Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. @@ -158,7 +158,7 @@ emacs source with text!=binary. [2] fails when needs to invoke shell commands; okay invoking gcc etc. [3] requires LC_MESSAGES support to build; cannot build with early - versions of cygwin. + versions of Cygwin. [4] may fail on Windows 9X and Windows ME; if so, install Bash. [5] fails when building leim due to the use of cygwin style paths. May work if building emacs without leim. @@ -174,8 +174,8 @@ like this, we recommend the use of the supported compilers mentioned in the previous paragraph. - You will also need a copy of the Posix cp, rm and mv programs. These - and other useful Posix utilities can be obtained from one of several + You will also need a copy of the POSIX cp, rm and mv programs. These + and other useful POSIX utilities can be obtained from one of several projects: * http://gnuwin32.sourceforge.net/ ( GnuWin32 ) @@ -183,13 +183,12 @@ * http://www.cygwin.com/ ( Cygwin ) * http://unxutils.sourceforge.net/ ( UnxUtils ) - If you build Emacs on Windows 9X or ME, not on Windows 2K/XP or - Windows NT, we suggest to install the Cygwin port of Bash. That is - because the native Windows shell COMMAND.COM is too limited; the - Emacs build procedure tries very hard to support even such limited - shells, but as none of the Windows developers of Emacs work on - Windows 9x, we cannot guarantee that it works without a more - powerful shell. + If you build Emacs on 16-bit versions of Windows (9X or ME), we + suggest to install the Cygwin port of Bash. That is because the + native Windows shell COMMAND.COM is too limited; the Emacs build + procedure tries very hard to support even such limited shells, but + as none of the Windows developers of Emacs work on Windows 9X, we + cannot guarantee that it works without a more powerful shell. Additional instructions and help for building Emacs on Windows can be found at the Emacs Wiki: @@ -224,7 +223,7 @@ N.B. It is normal to see a few error messages output while configure is running, when gcc support is being tested. These cannot be - suppressed because of limitations in the Windows 9x command.com shell. + suppressed because of limitations in the Windows 9X command.com shell. You are encouraged to look at the file config.log which shows details for failed tests, after configure.bat finishes. Any unexplained failure @@ -249,6 +248,10 @@ wrong. (Usually, any such failures happen because some headers are missing due to bad packaging of the image support libraries.) + Note that any file path passed to the compiler or linker must use + forward slashes; using backslashes will cause compiler warnings or + errors about unrecognized escape sequences. + To use the external image support, the DLLs implementing the functionality must be found when Emacs first needs them, either on the PATH, or in the same directory as emacs.exe. Failure to find a @@ -430,10 +433,10 @@ The main problems that are likely to be encountered when building Emacs stem from using an old version of GCC, or old MinGW or W32 API - headers. Additionally, cygwin ports of GNU make may require the Emacs + headers. Additionally, Cygwin ports of GNU make may require the Emacs source tree to be mounted with text!=binary, because the makefiles generated by configure.bat necessarily use DOS line endings. Also, - cygwin ports of make must run in UNIX mode, either by specifying + Cygwin ports of make must run in UNIX mode, either by specifying --unix on the command line, or MAKE_MODE=UNIX in the environment. When configure runs, it attempts to detect when GCC itself, or the