]> git.eshelyaron.com Git - emacs.git/commitdiff
* lisp/pcomplete.el (pcomplete-parse-comint-arguments): Fix inf-loop.
authorStefan Monnier <monnier@iro.umontreal.ca>
Tue, 23 Aug 2011 05:21:09 +0000 (01:21 -0400)
committerStefan Monnier <monnier@iro.umontreal.ca>
Tue, 23 Aug 2011 05:21:09 +0000 (01:21 -0400)
Mark obsolete.
* lisp/shell.el (shell-parse-pcomplete-arguments): New function.
(shell-completion-vars): Use it instead.

Fixes: debbugs:9160
lisp/ChangeLog
lisp/pcomplete.el
lisp/shell.el

index 82d67fe476de6980317b9bc7e3725d790ab90a8e..e0322ae45958592f4b7893a0d3ebb1c6f3ab5cf7 100644 (file)
@@ -1,3 +1,10 @@
+2011-08-23  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * pcomplete.el (pcomplete-parse-comint-arguments): Fix inf-loop.
+       Mark obsolete.
+       * shell.el (shell-parse-pcomplete-arguments): New function.
+       (shell-completion-vars): Use it instead (bug#9160).
+
 2011-08-22  Stefan Monnier  <monnier@iro.umontreal.ca>
 
        * progmodes/sh-script.el (sh-maybe-here-document): Disable magic in
@@ -54,8 +61,8 @@
        (font-lock-default-fontify-region)
        (font-lock-default-unfontify-region): Add docstrings (Bug#8624).
 
-       * progmodes/compile.el (compilation-error-properties): Fix
-       confusion between file struct and message struct (Bug#9319).
+       * progmodes/compile.el (compilation-error-properties):
+       Fix confusion between file struct and message struct (Bug#9319).
        (compilation-error-regexp-alist-alist): Fix 2011-05-09 change to
        `ant' regexp.
 
        binding variables (bug#9298).  Also clean up some unused
        autoloads.
 
-       * net/network-stream.el (network-stream-open-starttls): Support
-       using starttls.el without using gnutls-cli.
+       * net/network-stream.el (network-stream-open-starttls):
+       Support using starttls.el without using gnutls-cli.
 
 2011-08-17  Juri Linkov  <juri@jurta.org>
 
index 46a82e3720dc265fed24d09d2d3d1c9d492bb36e..02f3c4ad1da7cc17082f4d557531d57d6037bc12 100644 (file)
@@ -811,15 +811,19 @@ this is `comint-dynamic-complete-functions'."
       (while (< (point) end)
        (skip-chars-forward " \t\n")
        (push (point) begins)
-       (let ((skip t))
-         (while skip
-           (skip-chars-forward "^ \t\n")
-           (if (eq (char-before) ?\\)
-               (skip-chars-forward " \t\n")
-             (setq skip nil))))
+        (while
+            (progn
+              (skip-chars-forward "^ \t\n\\")
+              (when (eq (char-after) ?\\)
+                (forward-char 1)
+                (unless (eolp)
+                  (forward-char 1)
+                  t))))
        (push (buffer-substring-no-properties (car begins) (point))
               args))
       (cons (nreverse args) (nreverse begins)))))
+(make-obsolete 'pcomplete-parse-comint-arguments
+               'comint-parse-pcomplete-arguments "24.1")
 
 (defun pcomplete-parse-arguments (&optional expand-p)
   "Parse the command line arguments.  Most completions need this info."
index de811543ba089f3fcaf02eb587607c177e1aaf2c..53472d9ef0a21e581481d7ee3c80e1053b4c9fcf 100644 (file)
@@ -383,6 +383,21 @@ to `dirtrack-mode'."
   :group 'shell
   :type '(choice (const nil) regexp))
 
+(defun shell-parse-pcomplete-arguments ()
+  "Parse whitespace separated arguments in the current region."
+  (let ((begin (save-excursion (shell-backward-command 1) (point)))
+       (end (point))
+       begins args)
+    (save-excursion
+      (goto-char begin)
+      (while (< (point) end)
+       (skip-chars-forward " \t\n")
+       (push (point) begins)
+        (looking-at "\\(?:[^\s\t\n\\]\\|'[^']*'\\|\"\\(?:[^\"\\]\\|\\\\.\\)*\"\\|\\\\.\\)*\\(?:\\\\\\|'[^']*\\|\"\\(?:[^\"\\]\\|\\\\.\\)*\\)?")
+        (goto-char (match-end 0))
+       (push (buffer-substring-no-properties (car begins) (point))
+              args))
+      (cons (nreverse args) (nreverse begins)))))
 
 (defun shell-completion-vars ()
   "Setup completion vars for `shell-mode' and `read-shell-command'."
@@ -396,8 +411,7 @@ to `dirtrack-mode'."
   (set (make-local-variable 'comint-dynamic-complete-functions)
        shell-dynamic-complete-functions)
   (set (make-local-variable 'pcomplete-parse-arguments-function)
-       ;; FIXME: This function should be moved to shell.el.
-       #'pcomplete-parse-comint-arguments)
+       #'shell-parse-pcomplete-arguments)
   (set (make-local-variable 'pcomplete-termination-string)
        (cond ((not comint-completion-addsuffix) "")
              ((stringp comint-completion-addsuffix)