emacs-diffs
[Top][All Lists]
Advanced

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

[Emacs-diffs] master 6b8349a 3/5: Merge from emacs-26


From: Noam Postavsky
Subject: [Emacs-diffs] master 6b8349a 3/5: Merge from emacs-26
Date: Mon, 9 Jul 2018 20:45:18 -0400 (EDT)

branch: master
commit 6b8349a90274686d9cb67a2ffaac2d930d5f6b46
Merge: 6de90fb db3f779
Author: Noam Postavsky <address@hidden>
Commit: Noam Postavsky <address@hidden>

    Merge from emacs-26
    
    db3f779780 ; Test for Bug#32014
    90d95b000c Explicitly reject :server and :nowait (Bug#31903)
    917158f8c9 Fix Bug#32090
    
    # Conflicts:
    #   src/process.c
---
 lisp/files-x.el                         | 37 +++++++++++-----------
 src/process.c                           | 26 +++++++---------
 test/lisp/emacs-lisp/lisp-mode-tests.el | 11 +++++++
 test/lisp/files-x-tests.el              | 55 +++++++++++++++++++++------------
 4 files changed, 76 insertions(+), 53 deletions(-)

diff --git a/lisp/files-x.el b/lisp/files-x.el
index 74ea776..2a52792 100644
--- a/lisp/files-x.el
+++ b/lisp/files-x.el
@@ -578,31 +578,33 @@ strings.  All properties are optional; if CRITERIA is 
nil, it
 always applies.
 PROFILES is a list of connection profiles (symbols).")
 
-(defsubst connection-local-normalize-criteria (criteria &rest properties)
-  "Normalize plist CRITERIA according to PROPERTIES.
-Return a new ordered plist list containing only property names from 
PROPERTIES."
-  (delq
-   nil
+(defsubst connection-local-normalize-criteria (criteria)
+  "Normalize plist CRITERIA according to properties.
+Return a reordered plist."
+  (apply
+   'append
    (mapcar
     (lambda (property)
       (when (and (plist-member criteria property) (plist-get criteria 
property))
         (list property (plist-get criteria property))))
-    properties)))
+    '(:application :protocol :user :machine))))
 
 (defsubst connection-local-get-profiles (criteria)
   "Return the connection profiles list for CRITERIA.
 CRITERIA is a plist identifying a connection and the application
 using this connection, see `connection-local-criteria-alist'."
-  (or (cdr
-       (assoc
-        (connection-local-normalize-criteria
-         criteria :application :protocol :user :machine)
-        connection-local-criteria-alist))
-      ;; Try it without :application.
-      (cdr
-       (assoc
-        (connection-local-normalize-criteria criteria :protocol :user :machine)
-        connection-local-criteria-alist))))
+  (let (profiles)
+    (dolist (crit-alist connection-local-criteria-alist)
+      (let ((crit criteria)
+            (match t))
+        (while (and crit match)
+          (when (plist-member (car crit-alist) (car crit))
+            (setq match (equal (plist-get (car crit-alist) (car crit))
+                               (plist-get criteria (car crit)))))
+          (setq crit (cddr crit)))
+        (when match
+          (setq profiles (append profiles (cdr crit-alist))))))
+    (delete-dups profiles)))
 
 ;;;###autoload
 (defun connection-local-set-profiles (criteria &rest profiles)
@@ -621,8 +623,7 @@ variables for a connection profile are defined using
   (dolist (profile profiles)
     (unless (assq profile connection-local-profile-alist)
       (error "No such connection profile `%s'" (symbol-name profile))))
-  (let* ((criteria (connection-local-normalize-criteria
-                    criteria :application :protocol :user :machine))
+  (let* ((criteria (connection-local-normalize-criteria criteria))
          (slot (assoc criteria connection-local-criteria-alist)))
     (if slot
         (setcdr slot (delete-dups (append (cdr slot) profiles)))
diff --git a/src/process.c b/src/process.c
index 279b74b..5bd8c25 100644
--- a/src/process.c
+++ b/src/process.c
@@ -3897,12 +3897,15 @@ usage: (make-network-process &rest ARGS)  */)
   filter = Fplist_get (contact, QCfilter);
   sentinel = Fplist_get (contact, QCsentinel);
   use_external_socket_p = Fplist_get (contact, QCuse_external_socket);
+  Lisp_Object server = Fplist_get (contact, QCserver);
+  bool nowait = !NILP (Fplist_get (contact, QCnowait));
 
+  if (!NILP (server) && nowait)
+    error ("`:server' is incompatible with `:nowait'");
   CHECK_STRING (name);
 
   /* :local ADDRESS or :remote ADDRESS */
-  tem = Fplist_get (contact, QCserver);
-  if (NILP (tem))
+  if (!NILP (server))
     address = Fplist_get (contact, QCremote);
   else
     address = Fplist_get (contact, QClocal);
@@ -4017,7 +4020,7 @@ usage: (make-network-process &rest ARGS)  */)
        }
 
 #ifdef HAVE_GETADDRINFO_A
-      if (!NILP (Fplist_get (contact, QCnowait)))
+      if (nowait)
        {
          ptrdiff_t hostlen = SBYTES (host);
          struct req
@@ -4164,20 +4167,13 @@ usage: (make-network-process &rest ARGS)  */)
 
   set_network_socket_coding_system (proc, host, service, name);
 
-  /* :server BOOL */
-  tem = Fplist_get (contact, QCserver);
-  if (!NILP (tem))
-    {
-      /* Don't support network sockets when non-blocking mode is
-        not available, since a blocked Emacs is not useful.  */
-      p->is_server = true;
-      if (TYPE_RANGED_INTEGERP (int, tem))
-       p->backlog = XINT (tem);
-    }
+  /* :server QLEN */
+  p->is_server = !NILP (server);
+  if (TYPE_RANGED_INTEGERP (int, server))
+    p->backlog = XINT (server);
 
   /* :nowait BOOL */
-  if (!p->is_server && socktype != SOCK_DGRAM
-      && !NILP (Fplist_get (contact, QCnowait)))
+  if (!p->is_server && socktype != SOCK_DGRAM && nowait)
     p->is_non_blocking_client = true;
 
   bool postpone_connection = false;
diff --git a/test/lisp/emacs-lisp/lisp-mode-tests.el 
b/test/lisp/emacs-lisp/lisp-mode-tests.el
index 0b5b0a4..2ac0e5c 100644
--- a/test/lisp/emacs-lisp/lisp-mode-tests.el
+++ b/test/lisp/emacs-lisp/lisp-mode-tests.el
@@ -224,6 +224,17 @@ Expected initialization file: `%s'\"
       (comment-indent)
       (should (equal (buffer-string) correct)))))
 
+(ert-deftest lisp-indent-with-read-only-field ()
+  "Test indentation on line with read-only field (Bug#32014)."
+  :expected-result :failed
+  (with-temp-buffer
+    (insert (propertize "prompt> " 'field 'output 'read-only t
+                        'rear-nonsticky t 'front-sticky '(read-only)))
+    (insert " foo")
+    (lisp-indent-line)
+    (should (equal (buffer-string) "prompt> foo"))))
+
+
 
 (provide 'lisp-mode-tests)
 ;;; lisp-mode-tests.el ends here
diff --git a/test/lisp/files-x-tests.el b/test/lisp/files-x-tests.el
index 7bd69bd..a77c681 100644
--- a/test/lisp/files-x-tests.el
+++ b/test/lisp/files-x-tests.el
@@ -101,15 +101,19 @@
     (setq files-x-test--criteria
           (append files-x-test--application files-x-test--protocol
                   files-x-test--user files-x-test--machine))
+
     ;; An empty variable list is accepted (but makes no sense).
     (connection-local-set-profiles files-x-test--criteria)
     (should-not (connection-local-get-profiles files-x-test--criteria))
+
+    ;; First test, all declared properties.
     (connection-local-set-profiles
      files-x-test--criteria 'remote-bash 'remote-ksh)
     (should
      (equal
       (connection-local-get-profiles files-x-test--criteria)
       '(remote-bash remote-ksh)))
+
     ;; Changing the order of properties doesn't matter.
     (setq files-x-test--criteria
           (append files-x-test--protocol files-x-test--application
@@ -118,12 +122,14 @@
      (equal
       (connection-local-get-profiles files-x-test--criteria)
       '(remote-bash remote-ksh)))
-     ;; A further call adds profiles.
+
+    ;; A further call adds profiles.
     (connection-local-set-profiles files-x-test--criteria 'remote-nullfile)
     (should
      (equal
       (connection-local-get-profiles files-x-test--criteria)
       '(remote-bash remote-ksh remote-nullfile)))
+
     ;; Adding existing profiles doesn't matter.
     (connection-local-set-profiles
      files-x-test--criteria 'remote-bash 'remote-nullfile)
@@ -132,31 +138,38 @@
       (connection-local-get-profiles files-x-test--criteria)
       '(remote-bash remote-ksh remote-nullfile)))
 
-    ;; Use a criteria without application.
-    (setq files-x-test--criteria
-          (append files-x-test--protocol
-                  files-x-test--user files-x-test--machine))
-    (connection-local-set-profiles files-x-test--criteria 'remote-ksh)
-    (should
-     (equal
-      (connection-local-get-profiles files-x-test--criteria)
-      '(remote-ksh)))
-    ;; An application not used in any registered criteria matches also this.
-    (setq files-x-test--criteria
-          (append files-x-test--another-application files-x-test--protocol
-                  files-x-test--user files-x-test--machine))
-    (should
-     (equal
-      (connection-local-get-profiles files-x-test--criteria)
-      '(remote-ksh)))
+    ;; Use different properties.
+    (dolist (criteria
+             `(;; All properties.
+               ,(append files-x-test--application files-x-test--protocol
+                        files-x-test--user files-x-test--machine)
+               ;; Without :application.
+               ,(append files-x-test--protocol
+                        files-x-test--user files-x-test--machine)
+               ;; Without :protocol.
+               ,(append files-x-test--application
+                        files-x-test--user files-x-test--machine)
+               ;; Without :user.
+               ,(append files-x-test--application files-x-test--protocol
+                        files-x-test--machine)
+               ;; Without :machine.
+               ,(append files-x-test--application files-x-test--protocol
+                        files-x-test--user)
+               ;; No property at all.
+               nil))
+      (should
+       (equal
+        (connection-local-get-profiles criteria)
+        '(remote-bash remote-ksh remote-nullfile))))
 
     ;; Using a nil criteria also works.  Duplicate profiles are trashed.
     (connection-local-set-profiles
      nil 'remote-bash 'remote-ksh 'remote-ksh 'remote-bash)
+    ;; This matches also the existing profiles from other criteria.
     (should
      (equal
       (connection-local-get-profiles nil)
-      '(remote-bash remote-ksh)))
+      '(remote-bash remote-ksh remote-nullfile)))
 
     ;; A criteria other than plist is wrong.
     (should-error (connection-local-set-profiles 'dummy))))
@@ -235,7 +248,9 @@
         ;; declare same variables as in `remote-bash'.
         (should
          (equal connection-local-variables-alist
-                (nreverse (copy-tree files-x-test--variables1))))
+                (append
+                 (nreverse (copy-tree files-x-test--variables3))
+                 (nreverse (copy-tree files-x-test--variables1)))))
         ;; The variables exist also as local variables.
         (should (local-variable-p 'remote-shell-file-name))
         ;; The proper variable value is set.



reply via email to

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