Merge from emacs-24; up to 2014-04-17T02:05:48Z!eggert@cs.ucla.edu

This commit is contained in:
Daniel Colascione 2014-04-19 13:32:05 -07:00
commit 6dfa19c50f
6 changed files with 98 additions and 58 deletions

View file

@ -1,3 +1,8 @@
2014-04-19 Stefan Monnier <monnier@iro.umontreal.ca>
* progmodes/sh-script.el (sh-smie--sh-keyword-p): Handle variable
assignments such as "case=hello" (bug#17297).
2014-04-18 Michael Albinus <michael.albinus@gmx.de>
* net/tramp.el (tramp-run-real-handler, tramp-file-name-handler):

View file

@ -1832,9 +1832,10 @@ Does not preserve point."
(defun sh-smie--sh-keyword-p (tok)
"Non-nil if TOK (at which we're looking) really is a keyword."
(if (equal tok "in")
(sh-smie--sh-keyword-in-p)
(sh-smie--keyword-p)))
(cond
((looking-at "[[:alnum:]_]+=") nil)
((equal tok "in") (sh-smie--sh-keyword-in-p))
(t (sh-smie--keyword-p))))
(defun sh-smie-sh-forward-token ()
(if (and (looking-at "[ \t]*\\(?:#\\|\\(\\s|\\)\\|$\\)")

View file

@ -1,3 +1,9 @@
2014-04-19 Stefan Monnier <monnier@iro.umontreal.ca>
* intervals.c (rotate_right, rotate_left): Fix up length computation.
Also change identifiers to match the comments, and add more assertions
(bug#16234).
2014-04-18 Paul Eggert <eggert@cs.ucla.edu>
* emacs.c (close_output_streams): Don't clear and restore errno.

View file

@ -332,39 +332,43 @@ root_interval (INTERVAL interval)
*/
static INTERVAL
rotate_right (INTERVAL interval)
rotate_right (INTERVAL A)
{
INTERVAL i;
INTERVAL B = interval->left;
ptrdiff_t old_total = interval->total_length;
INTERVAL B = A->left;
INTERVAL c = B->right;
ptrdiff_t old_total = A->total_length;
eassert (old_total > 0);
eassert (old_total
> TOTAL_LENGTH (B) + TOTAL_LENGTH (A->right));
eassert (TOTAL_LENGTH (B)
> TOTAL_LENGTH (B->left) + TOTAL_LENGTH (c));
/* Deal with any Parent of A; make it point to B. */
if (! ROOT_INTERVAL_P (interval))
if (! ROOT_INTERVAL_P (A))
{
if (AM_LEFT_CHILD (interval))
set_interval_left (INTERVAL_PARENT (interval), B);
if (AM_LEFT_CHILD (A))
set_interval_left (INTERVAL_PARENT (A), B);
else
set_interval_right (INTERVAL_PARENT (interval), B);
set_interval_right (INTERVAL_PARENT (A), B);
}
copy_interval_parent (B, interval);
copy_interval_parent (B, A);
/* Make B the parent of A */
i = B->right;
set_interval_right (B, interval);
set_interval_parent (interval, B);
/* Make B the parent of A. */
set_interval_right (B, A);
set_interval_parent (A, B);
/* Make A point to c */
set_interval_left (interval, i);
if (i)
set_interval_parent (i, interval);
/* Make A point to c. */
set_interval_left (A, c);
if (c)
set_interval_parent (c, A);
/* A's total length is decreased by the length of B and its left child. */
interval->total_length -= B->total_length - LEFT_TOTAL_LENGTH (interval);
eassert (TOTAL_LENGTH (interval) >= 0);
A->total_length -= B->total_length - TOTAL_LENGTH (c);
eassert (TOTAL_LENGTH (A) > 0);
/* B must have the same total length of A. */
B->total_length = old_total;
eassert (TOTAL_LENGTH (B) >= 0);
return B;
}
@ -379,39 +383,43 @@ rotate_right (INTERVAL interval)
*/
static INTERVAL
rotate_left (INTERVAL interval)
rotate_left (INTERVAL A)
{
INTERVAL i;
INTERVAL B = interval->right;
ptrdiff_t old_total = interval->total_length;
INTERVAL B = A->right;
INTERVAL c = B->left;
ptrdiff_t old_total = A->total_length;
eassert (old_total > 0);
eassert (old_total
> TOTAL_LENGTH (B) + TOTAL_LENGTH (A->left));
eassert (TOTAL_LENGTH (B)
> TOTAL_LENGTH (B->right) + TOTAL_LENGTH (c));
/* Deal with any parent of A; make it point to B. */
if (! ROOT_INTERVAL_P (interval))
if (! ROOT_INTERVAL_P (A))
{
if (AM_LEFT_CHILD (interval))
set_interval_left (INTERVAL_PARENT (interval), B);
if (AM_LEFT_CHILD (A))
set_interval_left (INTERVAL_PARENT (A), B);
else
set_interval_right (INTERVAL_PARENT (interval), B);
set_interval_right (INTERVAL_PARENT (A), B);
}
copy_interval_parent (B, interval);
copy_interval_parent (B, A);
/* Make B the parent of A */
i = B->left;
set_interval_left (B, interval);
set_interval_parent (interval, B);
/* Make B the parent of A. */
set_interval_left (B, A);
set_interval_parent (A, B);
/* Make A point to c */
set_interval_right (interval, i);
if (i)
set_interval_parent (i, interval);
/* Make A point to c. */
set_interval_right (A, c);
if (c)
set_interval_parent (c, A);
/* A's total length is decreased by the length of B and its right child. */
interval->total_length -= B->total_length - RIGHT_TOTAL_LENGTH (interval);
eassert (TOTAL_LENGTH (interval) >= 0);
A->total_length -= B->total_length - TOTAL_LENGTH (c);
eassert (TOTAL_LENGTH (A) > 0);
/* B must have the same total length of A. */
B->total_length = old_total;
eassert (TOTAL_LENGTH (B) >= 0);
return B;
}

View file

@ -1,3 +1,8 @@
2014-04-19 Michael Albinus <michael.albinus@gmx.de>
* automated/tramp-tests.el (tramp--test-check-files): Extend test.
(tramp-test31-utf8): Let-bind also `file-name-coding-system'.
2014-04-18 Michael Albinus <michael.albinus@gmx.de>
* automated/tramp-tests.el (tramp-copy-size-limit): Set to nil.

View file

@ -1418,23 +1418,37 @@ This tests also `make-symbolic-link', `file-truename' and `add-name-to-file'."
(defun tramp--test-check-files (&rest files)
"Runs a simple but comprehensive test over every file in FILES."
(let ((tmp-name (tramp--test-make-temp-name)))
(let ((tmp-name1 (tramp--test-make-temp-name))
(tmp-name2 (tramp--test-make-temp-name 'local)))
(unwind-protect
(progn
(make-directory tmp-name)
(make-directory tmp-name1)
(make-directory tmp-name2)
(dolist (elt files)
(let ((file (expand-file-name elt tmp-name)))
(write-region elt nil file)
(should (file-exists-p file))
(let ((file1 (expand-file-name elt tmp-name1))
(file2 (expand-file-name elt tmp-name2)))
(write-region elt nil file1)
(should (file-exists-p file1))
;; Check file contents.
(with-temp-buffer
(insert-file-contents file)
(should (string-equal (buffer-string) elt)))))
(insert-file-contents file1)
(should (string-equal (buffer-string) elt)))
;; Copy file both directions.
(copy-file file1 tmp-name2)
(should (file-exists-p file2))
(delete-file file1)
(should-not (file-exists-p file1))
(copy-file file2 tmp-name1)
(should (file-exists-p file1))))
;; Check file names.
(should (equal (directory-files
tmp-name nil directory-files-no-dot-files-regexp)
(sort files 'string-lessp))))
(ignore-errors (delete-directory tmp-name 'recursive)))))
tmp-name1 nil directory-files-no-dot-files-regexp)
(sort (copy-sequence files) 'string-lessp)))
(should (equal (directory-files
tmp-name2 nil directory-files-no-dot-files-regexp)
(sort (copy-sequence files) 'string-lessp))))
(ignore-errors (delete-directory tmp-name1 'recursive))
(ignore-errors (delete-directory tmp-name2 'recursive)))))
;; This test is inspired by Bug#17238.
(ert-deftest tramp-test30-special-characters ()
@ -1463,11 +1477,12 @@ This tests also `make-symbolic-link', `file-truename' and `add-name-to-file'."
(skip-unless (tramp--test-enabled))
(let ((coding-system-for-read 'utf-8)
(coding-system-for-write 'utf-8))
(tramp--test-check-files
"أصبح بوسعك الآن تنزيل نسخة كاملة من موسوعة ويكيبيديا العربية لتصفحها بلا اتصال بالإنترنت"
"银河系漫游指南系列"
"Автостопом по гала́ктике")))
(coding-system-for-write 'utf-8)
(file-name-coding-system 'utf-8))
(tramp--test-check-files
"أصبح بوسعك الآن تنزيل نسخة كاملة من موسوعة ويكيبيديا العربية لتصفحها بلا اتصال بالإنترنت"
"银河系漫游指南系列"
"Автостопом по гала́ктике")))
;; This test is inspired by Bug#16928.
(ert-deftest tramp-test32-asynchronous-requests ()