emacs-diffs
[Top][All Lists]
Advanced

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

[Emacs-diffs] master 52d822f: Merge from origin/emacs-26


From: Glenn Morris
Subject: [Emacs-diffs] master 52d822f: Merge from origin/emacs-26
Date: Tue, 14 Nov 2017 17:43:25 -0500 (EST)

branch: master
commit 52d822f31bc7cb57694c1e209b2d02e5efb8f48c
Merge: 13248f7 796c7f7
Author: Glenn Morris <address@hidden>
Commit: Glenn Morris <address@hidden>

    Merge from origin/emacs-26
    
    796c7f7 (origin/emacs-26) ; Fix last fix of 'mouse-drag-and-drop-region'
    40d41dd (emacs-26) Fix Bug#28139
    a5ec644 Fix Bug#29291
    8b900e5 Fix Bug#2928
    ff7bd84 Make 'mouse-drag-and-drop-region' work with 'mouse-autoselect...
    0491de8 * etc/PROBLEMS: Remove fixed xterm-mouse-mode problems
    caa39f4 Fix cookie handling (bug#29282)
    93304e3 Improve documentation of Edebug and macros
---
 doc/lispref/edebug.texi      |  32 +++++++----
 etc/PROBLEMS                 |  24 ---------
 lisp/mouse.el                |   4 +-
 lisp/net/tramp-sh.el         |  25 ++++++---
 lisp/url/url-cookie.el       |  53 +++++--------------
 test/lisp/net/tramp-tests.el | 123 +++++++++++++++++++++++++++----------------
 6 files changed, 136 insertions(+), 125 deletions(-)

diff --git a/doc/lispref/edebug.texi b/doc/lispref/edebug.texi
index 651bfac..979add9 100644
--- a/doc/lispref/edebug.texi
+++ b/doc/lispref/edebug.texi
@@ -1144,9 +1144,12 @@ the @code{declare} form.
 @c automatically load the entire source file containing the function
 @c being instrumented.  That would avoid this.
   Take care to ensure that the specifications are known to Edebug when
-you instrument code.  If you are instrumenting a function from a file
-that uses @code{eval-when-compile} to require another file containing
-macro definitions, you may need to explicitly load that file.
+you instrument code.  If you are instrumenting a function which uses a
+macro defined in another file, you may first need to either evaluate
+the @code{require} forms in the file containing your function, or
+explicitly load the file containing the macro.  If the definition of a
+macro is wrapped by @code{eval-when-compile}, you may need to evaluate
+it.
 
   You can also define an edebug specification for a macro separately
 from the macro definition with @code{def-edebug-spec}.  Adding
@@ -1231,13 +1234,17 @@ A single unevaluated Lisp object, which is not 
instrumented.
 @c an "expression" is not necessarily intended for evaluation.
 
 @item form
-A single evaluated expression, which is instrumented.
+A single evaluated expression, which is instrumented.  If your macro
+wraps the expression with @code{lambda} before it is evaluated, use
address@hidden instead.  See @code{def-form} below.
 
 @item place
 A generalized variable.  @xref{Generalized Variables}.
 
 @item body
-Short for @code{&rest form}.  See @code{&rest} below.
+Short for @code{&rest form}.  See @code{&rest} below.  If your macro
+wraps its body of code with @code{lambda} before it is evaluated, use
address@hidden instead.  See @code{def-body} below.
 
 @item function-form
 A function form: either a quoted function symbol, a quoted lambda
@@ -1292,11 +1299,16 @@ succeeds.
 
 @item &define
 @c @kindex &define @r{(Edebug)}
-Indicates that the specification is for a defining form.  The defining
-form itself is not instrumented (that is, Edebug does not stop before and
-after the defining form), but forms inside it typically will be
-instrumented.  The @code{&define} keyword should be the first element in
-a list specification.
+
+Indicates that the specification is for a defining form.  Edebug's
+definition of a defining form is a form containing one or more code
+forms which are saved and executed later, after the execution of the
+defining form.
+
+The defining form itself is not instrumented (that is, Edebug does not
+stop before and after the defining form), but forms inside it
+typically will be instrumented.  The @code{&define} keyword should be
+the first element in a list specification.
 
 @item nil
 This is successful when there are no more arguments to match at the
diff --git a/etc/PROBLEMS b/etc/PROBLEMS
index 6a847f6..78d563e 100644
--- a/etc/PROBLEMS
+++ b/etc/PROBLEMS
@@ -1113,14 +1113,6 @@ to happen in *.UTF-8 locales; zh_CN.GB2312 and zh_CN.GBK 
locales, for
 example, work fine.  A bug report has been filed in the Gnome
 bugzilla: http://bugzilla.gnome.org/show_bug.cgi?id=357032
 
-*** Gnome: Emacs's xterm-mouse-mode doesn't work on the Gnome terminal.
-
-A symptom of this bug is that double-clicks insert a control sequence
-into the buffer.  The reason this happens is an apparent
-incompatibility of the Gnome terminal with Xterm, which also affects
-other programs using the Xterm mouse interface.  A problem report has
-been filed.
-
 *** Gnome: GPaste clipboard manager causes erratic behavior of 'yank'
 
 The symptom is that 'kill-line' followed by 'yank' often (but not
@@ -1492,22 +1484,6 @@ this, you can remove the X resource or put this in your 
init file:
 
   (xterm-remove-modify-other-keys)
 
-** Emacs's xterm-mouse doesn't work well in Evil mode.
-
-Specifically, clicking mouse-1 doesn't work as expected: instead of
-moving point where you click, it highlights the region between the
-line beginning and the click location, and displays error messages
-about unbound keys in the echo area.
-
-To work around this, put this in your .emacs file:
-
-  (with-eval-after-load 'evil-maps
-    (define-key evil-motion-state-map [down-mouse-1] nil))
-
-This appears to be a bug in Evil.
-See discussions in https://github.com/emacs-evil/evil/issues/960
-and https://debbugs.gnu.org/cgi/bugreport.cgi?bug=29143
-
 ** Emacs spontaneously displays "I-search: " at the bottom of the screen.
 
 This means that Control-S/Control-Q (XON/XOFF) "flow control" is being
diff --git a/lisp/mouse.el b/lisp/mouse.el
index 5eeee1e..17d1732 100644
--- a/lisp/mouse.el
+++ b/lisp/mouse.el
@@ -2380,7 +2380,9 @@ is copied instead of being cut."
       ;; When event was click instead of drag, skip loop
       (while (progn
                (setq event (read-event))
-               (mouse-movement-p event))
+               (or (mouse-movement-p event)
+                   ;; Handle `mouse-autoselect-window'.
+                   (eq (car-safe event) 'select-window)))
         (unless value-selection ; initialization
           (delete-overlay mouse-secondary-overlay)
           (setq value-selection (buffer-substring start end))
diff --git a/lisp/net/tramp-sh.el b/lisp/net/tramp-sh.el
index 52a6b8f..acb5a12 100644
--- a/lisp/net/tramp-sh.el
+++ b/lisp/net/tramp-sh.el
@@ -533,9 +533,7 @@ the list by the special value `tramp-own-remote-path'."
 
 ;;;###tramp-autoload
 (defcustom tramp-remote-process-environment
-  `("ENV=''" "TMOUT=0" "LC_CTYPE=''"
-    ,(format "TERM=%s" tramp-terminal-type)
-    ,(format "INSIDE_EMACS='%s,tramp:%s'" emacs-version tramp-version)
+  '("ENV=''" "TMOUT=0" "LC_CTYPE=''"
     "CDPATH=" "HISTORY=" "MAIL=" "MAILCHECK=" "MAILPATH=" "PAGER=cat"
     "autocorrect=" "correct=")
   "List of environment variables to be set on the remote host.
@@ -544,8 +542,15 @@ Each element should be a string of the form 
ENVVARNAME=VALUE.  An
 entry ENVVARNAME= disables the corresponding environment variable,
 which might have been set in the init files like ~/.profile.
 
-Special handling is applied to the PATH environment, which should
-not be set here. Instead, it should be set via `tramp-remote-path'."
+Special handling is applied to some environment variables,
+which should not be set here:
+
+The PATH environment variable should be set via `tramp-remote-path'.
+
+The TERM environment variable should be set via `tramp-terminal-type'.
+
+The INSIDE_EMACS environment variable will automatically be set
+based on the TRAMP and Emacs versions, and should not be set here."
   :group 'tramp
   :version "26.1"
   :type '(repeat string)
@@ -3948,9 +3953,17 @@ file exists and nonzero exit status otherwise."
       ;; file clobbering $PS1.  $PROMPT_COMMAND is another way to set
       ;; the prompt in /bin/bash, it must be discarded as well.
       ;; $HISTFILE is set according to `tramp-histfile-override'.
+      ;; $TERM and $INSIDE_EMACS set here to ensure they have the
+      ;; correct values when the shell starts, not just processes
+      ;; run within the shell.  (Which processes include our
+      ;; initial probes to ensure the remote shell is usable.)
       (tramp-send-command
        vec (format
-           "exec env ENV=%s %s PROMPT_COMMAND='' PS1=%s PS2='' PS3='' %s %s"
+           (concat
+            "exec env TERM='%s' INSIDE_EMACS='%s,tramp:%s' "
+            "ENV=%s %s PROMPT_COMMAND='' PS1=%s PS2='' PS3='' %s %s")
+            tramp-terminal-type
+            emacs-version tramp-version  ; INSIDE_EMACS
             (or (getenv-internal "ENV" tramp-remote-process-environment) "")
            (if (stringp tramp-histfile-override)
                (format "HISTFILE=%s"
diff --git a/lisp/url/url-cookie.el b/lisp/url/url-cookie.el
index 109d55a..8045050 100644
--- a/lisp/url/url-cookie.el
+++ b/lisp/url/url-cookie.el
@@ -290,7 +290,7 @@ i.e. 1970-1-1) are loaded as expiring one year from now 
instead."
 
 (defun url-cookie-handle-set-cookie (str)
   (setq url-cookies-changed-since-last-save t)
-  (let* ((args (url-parse-args str t))
+  (let* ((args (nreverse (url-parse-args str t)))
         (case-fold-search t)
         (secure (and (assoc-string "secure" args t) t))
         (domain (or (cdr-safe (assoc-string "domain" args t))
@@ -298,44 +298,16 @@ i.e. 1970-1-1) are loaded as expiring one year from now 
instead."
         (current-url (url-view-url t))
         (trusted url-cookie-trusted-urls)
         (untrusted url-cookie-untrusted-urls)
-        (expires (cdr-safe (assoc-string "expires" args t)))
+        (max-age (cdr-safe (assoc-string "max-age" args t)))
         (localpart (or (cdr-safe (assoc-string "path" args t))
                        (file-name-directory
                         (url-filename url-current-object))))
-        (rest nil))
-    (dolist (this args)
-      (or (member (downcase (car this)) '("secure" "domain" "expires" "path"))
-         (setq rest (cons this rest))))
-
-    ;; Sometimes we get dates that the timezone package cannot handle very
-    ;; gracefully - take care of this here, instead of in url-cookie-expired-p
-    ;; to speed things up.
-    (and expires
-        (string-match
-         (concat "^[^,]+, +\\(..\\)-\\(...\\)-\\(..\\) +"
-                 "\\(..:..:..\\) +\\[*\\([^]]+\\)\\]*$")
-         expires)
-        (setq expires (concat (match-string 1 expires) " "
-                              (match-string 2 expires) " "
-                              (match-string 3 expires) " "
-                              (match-string 4 expires) " ["
-                              (match-string 5 expires) "]")))
-
-    ;; This one is for older Emacs/XEmacs variants that don't
-    ;; understand this format without tenths of a second in it.
-    ;; Wednesday, 30-Dec-2037 16:00:00 GMT
-    ;;       - vs -
-    ;; Wednesday, 30-Dec-2037 16:00:00.00 GMT
-    (and expires
-        (string-match
-         "\\([0-9]+\\)-\\([A-Za-z]+\\)-\\([0-9]+\\)[ 
\t]+\\([0-9]+:[0-9]+:[0-9]+\\)\\(\\.[0-9]+\\)*[ \t]+\\([-+a-zA-Z0-9]+\\)"
-         expires)
-        (setq expires (concat (match-string 1 expires) "-"     ; day
-                              (match-string 2 expires) "-"     ; month
-                              (match-string 3 expires) " "     ; year
-                              (match-string 4 expires) ".00 " ; 
hour:minutes:seconds
-                              (match-string 6 expires)))) ":" ; timezone
-
+        (expires nil))
+    (if (and max-age (string-match "\\`-?[0-9]+\\'" max-age))
+       (setq expires (format-time-string "%a %b %d %H:%M:%S %Y GMT"
+                                         (time-add nil (read max-age))
+                                         t))
+      (setq expires (cdr-safe (assoc-string "expires" args t))))
     (while (consp trusted)
       (if (string-match (car trusted) current-url)
          (setq trusted (- (match-end 0) (match-beginning 0)))
@@ -359,8 +331,9 @@ i.e. 1970-1-1) are loaded as expiring one year from now 
instead."
           (not trusted)
           (save-window-excursion
             (with-output-to-temp-buffer "*Cookie Warning*"
-              (dolist (x rest)
-                 (princ (format "%s - %s" (car x) (cdr x)))))
+              (princ (format "%s=\"%s\"\n" (caar args) (cdar args)))
+              (dolist (x (cdr args))
+                (princ (format "  %s=\"%s\"\n" (car x) (cdr x)))))
             (prog1
                 (not (funcall url-confirmation-func
                               (format "Allow %s to set these cookies? "
@@ -371,8 +344,8 @@ i.e. 1970-1-1) are loaded as expiring one year from now 
instead."
       nil)
      ((url-cookie-host-can-set-p (url-host url-current-object) domain)
       ;; Cookie is accepted by the user, and passes our security checks.
-      (dolist (cur rest)
-       (url-cookie-store (car cur) (cdr cur) expires domain localpart secure)))
+      (url-cookie-store (caar args) (cdar args)
+                       expires domain localpart secure))
      (t
       (url-lazy-message "%s tried to set a cookie for domain %s - rejected."
                        (url-host url-current-object) domain)))))
diff --git a/test/lisp/net/tramp-tests.el b/test/lisp/net/tramp-tests.el
index 7a7cf93..68236da 100644
--- a/test/lisp/net/tramp-tests.el
+++ b/test/lisp/net/tramp-tests.el
@@ -2921,6 +2921,7 @@ This tests also `make-symbolic-link', `file-truename' and 
`add-name-to-file'."
        ;; Cleanup.
        (ignore-errors (delete-file tmp-name))))))
 
+;; This test is inspired by Bug#29149.
 (ert-deftest tramp-test24-file-acl ()
   "Check that `file-acl' and `set-file-acl' work proper."
   (skip-unless (tramp--test-enabled))
@@ -2939,7 +2940,7 @@ This tests also `make-symbolic-link', `file-truename' and 
`add-name-to-file'."
            (write-region "foo" nil tmp-name1)
            (should (file-exists-p tmp-name1))
            (should (file-acl tmp-name1))
-           (copy-file tmp-name1 tmp-name2)
+           (copy-file tmp-name1 tmp-name2 nil nil nil 'preserve-permissions)
            (should (file-acl tmp-name2))
            (should (string-equal (file-acl tmp-name1) (file-acl tmp-name2)))
            ;; Different permissions mean different ACLs.
@@ -2965,7 +2966,7 @@ This tests also `make-symbolic-link', `file-truename' and 
`add-name-to-file'."
            (write-region "foo" nil tmp-name1)
            (should (file-exists-p tmp-name1))
            (should (file-acl tmp-name1))
-           (copy-file tmp-name1 tmp-name3)
+           (copy-file tmp-name1 tmp-name3 nil nil nil 'preserve-permissions)
            (should (file-acl tmp-name3))
            (should (string-equal (file-acl tmp-name1) (file-acl tmp-name3)))
            ;; Different permissions mean different ACLs.
@@ -2979,7 +2980,7 @@ This tests also `make-symbolic-link', `file-truename' and 
`add-name-to-file'."
 
            ;; Two files with same ACLs.
            (delete-file tmp-name1)
-           (copy-file tmp-name3 tmp-name1)
+           (copy-file tmp-name3 tmp-name1 nil nil nil 'preserve-permissions)
            (should (file-acl tmp-name1))
            (should (string-equal (file-acl tmp-name1) (file-acl tmp-name3)))
            ;; Different permissions mean different ACLs.
@@ -2995,8 +2996,6 @@ This tests also `make-symbolic-link', `file-truename' and 
`add-name-to-file'."
        (ignore-errors (delete-file tmp-name1))
        (ignore-errors (delete-file tmp-name3))))))
 
-;; TODO: This test didn't run in reality yet.  Pls report if it
-;; doesn't work as expected.
 (ert-deftest tramp-test25-file-selinux ()
   "Check `file-selinux-context' and `set-file-selinux-context'."
   (skip-unless (tramp--test-enabled))
@@ -3013,7 +3012,7 @@ This tests also `make-symbolic-link', `file-truename' and 
`add-name-to-file'."
       ;; Both files are remote.
       (unwind-protect
          (progn
-           ;; Two files with same SELINUX context.
+           ;; Two files with same SELinux context.
            (write-region "foo" nil tmp-name1)
            (should (file-exists-p tmp-name1))
            (should (file-selinux-context tmp-name1))
@@ -3023,14 +3022,18 @@ This tests also `make-symbolic-link', `file-truename' 
and `add-name-to-file'."
             (equal
              (file-selinux-context tmp-name1)
              (file-selinux-context tmp-name2)))
-           ;; Different permissions mean different SELINUX context.
-           (set-file-modes tmp-name1 #o777)
-           (set-file-modes tmp-name2 #o444)
-           (should-not
-            (equal
-             (file-selinux-context tmp-name1)
-             (file-selinux-context tmp-name2)))
-           ;; Copy SELINUX context.
+           ;; Check different SELinux context.  We cannot support
+           ;; different ranges in this test; let's assume the most
+           ;; likely one.
+           (let ((context (file-selinux-context tmp-name1)))
+             (when (and (string-equal (nth 3 context) "s0")
+                        (setcar (nthcdr 3 context) "s0:c0")
+                        (set-file-selinux-context tmp-name1 context))
+               (should-not
+                (equal
+                 (file-selinux-context tmp-name1)
+                 (file-selinux-context tmp-name2)))))
+           ;; Copy SELinux context.
            (should
             (set-file-selinux-context
              tmp-name2 (file-selinux-context tmp-name1)))
@@ -3038,7 +3041,7 @@ This tests also `make-symbolic-link', `file-truename' and 
`add-name-to-file'."
             (equal
              (file-selinux-context tmp-name1)
              (file-selinux-context tmp-name2)))
-           ;; An invalid SELINUX context does not harm.
+           ;; An invalid SELinux context does not harm.
            (should-not (set-file-selinux-context tmp-name2 "foo")))
 
        ;; Cleanup.
@@ -3047,52 +3050,83 @@ This tests also `make-symbolic-link', `file-truename' 
and `add-name-to-file'."
 
       ;; Remote and local file.
       (unwind-protect
-         (when (not (or (equal (file-selinux-context temporary-file-directory)
-                               '(nil nil nil nil))
-                        (tramp--test-windows-nt-or-smb-p)))
-           ;; Two files with same SELINUX context.
+         (when (and (not
+                     (or (equal (file-selinux-context temporary-file-directory)
+                                '(nil nil nil nil))
+                         (tramp--test-windows-nt-or-smb-p)))
+                    ;; Both users shall use the same SELinux context.
+                    (string-equal
+                     (let ((default-directory temporary-file-directory))
+                       (shell-command-to-string "id -Z"))
+                     (let ((default-directory
+                             tramp-test-temporary-file-directory))
+                       (shell-command-to-string "id -Z"))))
+
+           ;; Two files with same SELinux context.
            (write-region "foo" nil tmp-name1)
            (should (file-exists-p tmp-name1))
            (should (file-selinux-context tmp-name1))
            (copy-file tmp-name1 tmp-name3)
            (should (file-selinux-context tmp-name3))
+           ;; We cannot expect that copying over file system
+           ;; boundaries keeps SELinux context.  So we copy it
+           ;; explicitely.
+           (should
+            (set-file-selinux-context
+             tmp-name3 (file-selinux-context tmp-name1)))
            (should
             (equal
              (file-selinux-context tmp-name1)
              (file-selinux-context tmp-name3)))
-           ;; Different permissions mean different SELINUX context.
-           (set-file-modes tmp-name1 #o777)
-           (set-file-modes tmp-name3 #o444)
-           (should-not
-            (equal
-             (file-selinux-context tmp-name1)
-             (file-selinux-context tmp-name3)))
-           ;; Copy SELINUX context.
-           (set-file-selinux-context
-            tmp-name3 (file-selinux-context tmp-name1))
+           ;; Check different SELinux context.  We cannot support
+           ;; different ranges in this test; let's assume the most
+           ;; likely one.
+           (let ((context (file-selinux-context tmp-name1)))
+             (when (and (string-equal (nth 3 context) "s0")
+                        (setcar (nthcdr 3 context) "s0:c0")
+                        (set-file-selinux-context tmp-name1 context))
+               (should-not
+                (equal
+                 (file-selinux-context tmp-name1)
+                 (file-selinux-context tmp-name3)))))
+           ;; Copy SELinux context.
+           (should
+            (set-file-selinux-context
+             tmp-name3 (file-selinux-context tmp-name1)))
            (should
             (equal
              (file-selinux-context tmp-name1)
              (file-selinux-context tmp-name3)))
 
-           ;; Two files with same SELINUX context.
+           ;; Two files with same SELinux context.
            (delete-file tmp-name1)
            (copy-file tmp-name3 tmp-name1)
            (should (file-selinux-context tmp-name1))
+           ;; We cannot expect that copying over file system
+           ;; boundaries keeps SELinux context.  So we copy it
+           ;; explicitely.
+           (should
+            (set-file-selinux-context
+             tmp-name1 (file-selinux-context tmp-name3)))
            (should
             (equal
              (file-selinux-context tmp-name1)
              (file-selinux-context tmp-name3)))
-           ;; Different permissions mean different SELINUX context.
-           (set-file-modes tmp-name1 #o777)
-           (set-file-modes tmp-name3 #o444)
-           (should-not
-            (equal
-             (file-selinux-context tmp-name1)
-             (file-selinux-context tmp-name3)))
-           ;; Copy SELINUX context.
-           (set-file-selinux-context
-            tmp-name1 (file-selinux-context tmp-name2))
+           ;; Check different SELinux context.  We cannot support
+           ;; different ranges in this test; let's assume the most
+           ;; likely one.
+           (let ((context (file-selinux-context tmp-name3)))
+             (when (and (string-equal (nth 3 context) "s0")
+                        (setcar (nthcdr 3 context) "s0:c0")
+                        (set-file-selinux-context tmp-name3 context))
+               (should-not
+                (equal
+                 (file-selinux-context tmp-name1)
+                 (file-selinux-context tmp-name3)))))
+           ;; Copy SELinux context.
+           (should
+            (set-file-selinux-context
+             tmp-name1 (file-selinux-context tmp-name3)))
            (should
             (equal
              (file-selinux-context tmp-name1)
@@ -3619,7 +3653,7 @@ This tests also `make-symbolic-link', `file-truename' and 
`add-name-to-file'."
                    (fboundp 'connection-local-set-profiles)))
 
   ;; `connection-local-set-profile-variables' and
-  ;; `connection-local-set-profiles' exist since Emacs 26.  We don't
+  ;; `connection-local-set-profiles' exist since Emacs 26.1.  We don't
   ;; want to see compiler warnings for older Emacsen.
   (let ((default-directory tramp-test-temporary-file-directory)
        explicit-shell-file-name kill-buffer-query-functions)
@@ -3923,8 +3957,8 @@ This tests also `make-symbolic-link', `file-truename' and 
`add-name-to-file'."
    (and (fboundp 'make-nearby-temp-file) (fboundp 'temporary-file-directory)))
 
   ;; `make-nearby-temp-file' and `temporary-file-directory' exists
-  ;; since Emacs 26.  We don't want to see compiler warnings for older
-  ;; Emacsen.
+  ;; since Emacs 26.1.  We don't want to see compiler warnings for
+  ;; older Emacsen.
   (let ((default-directory tramp-test-temporary-file-directory)
        tmp-file)
     ;; The remote host shall know a temporary file directory.
@@ -4622,7 +4656,8 @@ process sentinels.  They shall not disturb each other."
           (message \"Tramp loaded: %%s\" (featurep 'tramp)) \
           (file-name-all-completions \"/foo:\" \"/\") \
           (message \"Tramp loaded: %%s\" (featurep 'tramp)))"))
-    (dolist (tm '(t nil))
+    ;; Tramp doesn't load when `tramp-mode' is nil since Emacs 26.1.
+    (dolist (tm (if (tramp--test-emacs26-p) '(t nil) '(nil)))
       (should
        (string-match
        (format



reply via email to

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