From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED!not-for-mail From: Noam Postavsky Newsgroups: gmane.emacs.bugs Subject: bug#24427: 25.1.50; end-of-defun jumps too far Date: Sun, 17 Jun 2018 13:50:34 -0400 Message-ID: <87bmc9ti8l.fsf@gmail.com> References: <87fup4q7ut.fsf@mbork.pl> <87d1k7a6lo.fsf@cochranmail.com> <8760pza6g2.fsf@cochranmail.com> <871t0etod0.fsf@cochranmail.com> <87twd9vxaj.fsf@mbork.pl> <87r38cw7bp.fsf@mbork.pl> <8737kftjv5.fsf@cochranmail.com> NNTP-Posting-Host: blaine.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-Trace: blaine.gmane.org 1529257748 26615 195.159.176.226 (17 Jun 2018 17:49:08 GMT) X-Complaints-To: usenet@blaine.gmane.org NNTP-Posting-Date: Sun, 17 Jun 2018 17:49:08 +0000 (UTC) User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.1 (gnu/linux) Cc: Marcin Borkowski , 24427@debbugs.gnu.org To: Robert Cochran Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Sun Jun 17 19:49:04 2018 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by blaine.gmane.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fUbnT-0006lI-2z for geb-bug-gnu-emacs@m.gmane.org; Sun, 17 Jun 2018 19:49:03 +0200 Original-Received: from localhost ([::1]:55971 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fUbpZ-00050u-US for geb-bug-gnu-emacs@m.gmane.org; Sun, 17 Jun 2018 13:51:13 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:56554) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fUbpT-00050p-8v for bug-gnu-emacs@gnu.org; Sun, 17 Jun 2018 13:51:08 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fUbpO-00057b-Cx for bug-gnu-emacs@gnu.org; Sun, 17 Jun 2018 13:51:07 -0400 Original-Received: from debbugs.gnu.org ([208.118.235.43]:46163) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1fUbpO-00057Q-6w for bug-gnu-emacs@gnu.org; Sun, 17 Jun 2018 13:51:02 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1fUbpN-0007hf-Ov for bug-gnu-emacs@gnu.org; Sun, 17 Jun 2018 13:51:01 -0400 X-Loop: help-debbugs@gnu.org Resent-From: Noam Postavsky Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sun, 17 Jun 2018 17:51:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 24427 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: Original-Received: via spool by 24427-submit@debbugs.gnu.org id=B24427.152925784529584 (code B ref 24427); Sun, 17 Jun 2018 17:51:01 +0000 Original-Received: (at 24427) by debbugs.gnu.org; 17 Jun 2018 17:50:45 +0000 Original-Received: from localhost ([127.0.0.1]:54060 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fUbp6-0007h5-KH for submit@debbugs.gnu.org; Sun, 17 Jun 2018 13:50:44 -0400 Original-Received: from mail-it0-f43.google.com ([209.85.214.43]:36185) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fUbp4-0007gr-GP for 24427@debbugs.gnu.org; Sun, 17 Jun 2018 13:50:42 -0400 Original-Received: by mail-it0-f43.google.com with SMTP id j135-v6so9061082itj.1 for <24427@debbugs.gnu.org>; Sun, 17 Jun 2018 10:50:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:references:date:in-reply-to:message-id :user-agent:mime-version; bh=2KZcTvZ1hRUeAxfHGx0XACeTEubisjv1Apdv2JqUwWY=; b=HXbkay/D3SuVz1NcAbU9EWxX4ohJNinl7BYb34VlSLW5ZQ1j4/TfJo6W9MbgfSmfi0 7lGx5MJihpbp6kFn3Hra9aAcKJRT2W/uuF1yYirB/c0QC4ulk4MKv+TU0gGvYf8Yw62h 54vAzPUbgxRNM8Yxhvr/1K8uWcs6JgtaXj6jcyEJNnau34lI+X+xpVIlpRZceObJF215 ESU8Xo93poJ4Z92x0mFs8/F4oFYPFaxnd+Z3lwAtuL2ZOy5lupnQ/RoAH0JSrYP0SwVl CbIrUDxROvdr8o9qeA/TB9FSs76/HuW80/XzJ/BsiSxj15j9uObR+WyfOGaUuM89j/Hq xv6w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:references:date:in-reply-to :message-id:user-agent:mime-version; bh=2KZcTvZ1hRUeAxfHGx0XACeTEubisjv1Apdv2JqUwWY=; b=LQX6n26HXOH2eCt+5QssmU226gOXWqMCylcWbJr/PqPzG6GGZMVLSzRIEgzJSwnExW 7lsjAQ47j/iczOBSXlqk0NAZ8gug7ruLzDkfkmu0m8tgGWVvRj/51GsLob4BmAIaNBhn 7k54xWzzWpP9HdZomGbrND2sMeTdkpNH3FzyS+NbMv4IuPHAIIXzodjUZcCT47QVsoBC dPb0kGZmQssUnFCPbBwhFzPsRZmnJi33OZ37r4gDU1TuhMaE0ZLw1V0NLttUeVcoCbEM 9AsnfAEFKl4CNLHy0QB1Hp1xSJoRzkYLW11E9efp60JdUFhImpZnC1Y9QEPlwQulNxj5 7H6w== X-Gm-Message-State: APt69E1LbeW48UiPFV04lSzaE3xedA5Hym1sasg7Zhhyw+DA/3X81vVx oNX5yKQRH57OfIwpydjDRoEDjA== X-Google-Smtp-Source: ADUXVKLMc1iTfefCS2LBp5xEDDjfMM+WGeg4sITZ0zzWKStK7Jo4m4xKf9oP2Xrh4PbhMajsX5fwXw== X-Received: by 2002:a24:f502:: with SMTP id k2-v6mr7745951ith.1.1529257836790; Sun, 17 Jun 2018 10:50:36 -0700 (PDT) Original-Received: from zebian (cbl-45-2-119-34.yyz.frontiernetworks.ca. [45.2.119.34]) by smtp.googlemail.com with ESMTPSA id g6-v6sm2921411iti.0.2018.06.17.10.50.35 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Sun, 17 Jun 2018 10:50:35 -0700 (PDT) In-Reply-To: <8737kftjv5.fsf@cochranmail.com> (Robert Cochran's message of "Sat, 01 Oct 2016 22:12:14 -0700") X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 208.118.235.43 X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Original-Sender: "bug-gnu-emacs" Xref: news.gmane.org gmane.emacs.bugs:147583 Archived-At: --=-=-= Content-Type: text/plain Robert Cochran writes: > Nothing has come to mind for a method to fix it without breaking other > things. Perhaps the solution is obvious for someone else? Suggestions > would be nice if you have them. Not entirely sure if this is correct, but the patch below seems to fix it for me, without breaking any of the previously mentioned scenarios. I find the fact that end-of-defun goes to the line following the closing paren a bit dubious, though I guess since it's been that way so long, we can hardly change it now. --=-=-= Content-Type: text/x-diff Content-Disposition: inline; filename=v1-0001-Fix-end-of-defun-N-for-N-2-Bug-24427.patch Content-Description: patch >From 111ea54ce469d7e601c0e7c2b48d1748021e71a6 Mon Sep 17 00:00:00 2001 From: Noam Postavsky Date: Sun, 17 Jun 2018 13:29:37 -0400 Subject: [PATCH v1] Fix (end-of-defun N) for N >= 2 (Bug#24427) * lisp/emacs-lisp/lisp.el (end-of-defun): Only skip to next line when after end of defun when ARG is 1 or less. * test/lisp/emacs-lisp/lisp-tests.el (end-of-defun-twice): New test. --- lisp/emacs-lisp/lisp.el | 3 ++- test/lisp/emacs-lisp/lisp-tests.el | 55 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 57 insertions(+), 1 deletion(-) diff --git a/lisp/emacs-lisp/lisp.el b/lisp/emacs-lisp/lisp.el index 5a89923f8f..67e7b3ef7b 100644 --- a/lisp/emacs-lisp/lisp.el +++ b/lisp/emacs-lisp/lisp.el @@ -481,7 +481,8 @@ end-of-defun (if (looking-at "\\s<\\|\n") (forward-line 1)))))) (funcall end-of-defun-function) - (funcall skip) + (when (<= arg 1) + (funcall skip)) (cond ((> arg 0) ;; Moving forward. diff --git a/test/lisp/emacs-lisp/lisp-tests.el b/test/lisp/emacs-lisp/lisp-tests.el index 07eddb74d5..3c87879c3f 100644 --- a/test/lisp/emacs-lisp/lisp-tests.el +++ b/test/lisp/emacs-lisp/lisp-tests.el @@ -367,6 +367,61 @@ elisp-tests-with-temp-buffer " "Test buffer for `mark-defun'.")) +;;; end-of-defun + +(ert-deftest end-of-defun-twice () + "Test behavior of prefix arg for `end-of-defun' (Bug#24427). +Calling `end-of-defun' twice should be the same as a prefix arg +of two." + (setq last-command nil) + (cl-flet ((eod2 (lambda () + (goto-char (point-min)) + (end-of-defun) + (end-of-defun) + (let ((pt-eod2 (point))) + (goto-char (point-min)) + (end-of-defun 2) + (should (= (point) pt-eod2)))))) + (with-temp-buffer + (insert "\ +\(defun a ()) + +\(defun b ()) + +\(defun c ())") + (eod2)) + (with-temp-buffer + (insert "\ +\(defun a ()) +\(defun b ()) +\(defun c ())") + (eod2))) + (elisp-tests-with-temp-buffer ";; Comment header + +\(defun func-1 (arg) + \"docstring\" + body) +=!p1= +;; Comment before a defun +\(defun func-2 (arg) + \"docstring\" + body) + +\(defun func-3 (arg) + \"docstring\" + body) +=!p2=(defun func-4 (arg) + \"docstring\" + body) + +;; end +" + (goto-char p1) + (end-of-defun 2) + (should (= (point) p2)))) + +;;; mark-defun + (ert-deftest mark-defun-no-arg-region-inactive () "Test `mark-defun' with no prefix argument and inactive region." -- 2.11.0 --=-=-=--