From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED!not-for-mail From: Alex Branham Newsgroups: gmane.emacs.bugs Subject: bug#32378: [PATCH] bibtex-next/previous-entry Date: Tue, 07 Aug 2018 08:03:31 -0500 Message-ID: <87mutytjks.fsf@gmail.com> References: <87lg9jcin1.fsf@gmail.com> <87d0uuylah.fsf@gmail.com> NNTP-Posting-Host: blaine.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-Trace: blaine.gmane.org 1533646941 16533 195.159.176.226 (7 Aug 2018 13:02:21 GMT) X-Complaints-To: usenet@blaine.gmane.org NNTP-Posting-Date: Tue, 7 Aug 2018 13:02:21 +0000 (UTC) User-Agent: mu4e 1.0; emacs 26.1 Cc: 32378@debbugs.gnu.org To: Noam Postavsky Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Tue Aug 07 15:02:17 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 1fn1cu-0004BU-Ny for geb-bug-gnu-emacs@m.gmane.org; Tue, 07 Aug 2018 15:02:17 +0200 Original-Received: from localhost ([::1]:38994 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fn1f0-000101-Vs for geb-bug-gnu-emacs@m.gmane.org; Tue, 07 Aug 2018 09:04:27 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:48098) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fn1ei-0000va-0o for bug-gnu-emacs@gnu.org; Tue, 07 Aug 2018 09:04:14 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fn1ee-0006Bl-1G for bug-gnu-emacs@gnu.org; Tue, 07 Aug 2018 09:04:08 -0400 Original-Received: from debbugs.gnu.org ([208.118.235.43]:38212) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1fn1ed-0006BV-QE for bug-gnu-emacs@gnu.org; Tue, 07 Aug 2018 09:04:03 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1fn1ec-0004GV-DT for bug-gnu-emacs@gnu.org; Tue, 07 Aug 2018 09:04:03 -0400 X-Loop: help-debbugs@gnu.org Resent-From: Alex Branham Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 07 Aug 2018 13:04:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 32378 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch Original-Received: via spool by 32378-submit@debbugs.gnu.org id=B32378.153364702216361 (code B ref 32378); Tue, 07 Aug 2018 13:04:02 +0000 Original-Received: (at 32378) by debbugs.gnu.org; 7 Aug 2018 13:03:42 +0000 Original-Received: from localhost ([127.0.0.1]:43230 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fn1eH-0004Fp-Qx for submit@debbugs.gnu.org; Tue, 07 Aug 2018 09:03:42 -0400 Original-Received: from mail-oi0-f66.google.com ([209.85.218.66]:41215) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fn1eG-0004Fa-2g for 32378@debbugs.gnu.org; Tue, 07 Aug 2018 09:03:40 -0400 Original-Received: by mail-oi0-f66.google.com with SMTP id k12-v6so28206045oiw.8 for <32378@debbugs.gnu.org>; Tue, 07 Aug 2018 06:03:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=references:user-agent:from:to:cc:subject:in-reply-to:date :message-id:mime-version; bh=KKPxKuh6c5uKRsIv6mZXfVQbZ81GW7Q/gspk/B9E+Es=; b=Up8jA5rgdbKNcu/dufJzXRt040WVJ2paBBJvm5xrAJwi7BgzPxoD9NNBUOnt3CBL04 fyEtsm6yuLUl+eSrD2B4rFE2uZjsnyiB9N+D5Hfmq8NpYDMJplvn0w5J+7ucAhGnS1vA 0xXyOUJuo93C6EHNoCyt16br5Zxpy0wry4jH64QEfLYQQaqueIQ3rA+YVGLRqY5y+CHI A3Xn2f97GYapvKqzffKsTpOv8x7M11uDpAtVhoDg61rUpUFnGc3BidYbVdUk9AMYu7pl E3sQ80Dn+M5EmUndryrpdzWopZfrZJSTbJV8M0OEVwsoj6TJuFY1R/dVaI9lNywUD7e7 xcwQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:references:user-agent:from:to:cc:subject :in-reply-to:date:message-id:mime-version; bh=KKPxKuh6c5uKRsIv6mZXfVQbZ81GW7Q/gspk/B9E+Es=; b=Ru94avxzRPP/iuk+08kBcSItjIzEjVvuMqjq0EMnC1isFJrDiyLAv3ljw2hLZugkhT XkH3EtMQJb3Qra4FfeSD/xQcvrb4vt8TzwS9+3Lo10zNHYR72+dxaRqCY8Uv8sUMRAik xlxZ8uuciFnN6bD0N+EiEe8LAFqus36WJKzwfaU8ll+jPLQv1PdmvifRVu1emrU8L7f1 q+49G2mL5pNQsBSQcZs0dLYXuEyJrC2cPRRpki+wMlU3lotGlr6VnO1YoOgKlXNBJjc7 6UFfgm/Z01IYwBRf5lk5tkVL+7XVTCu4LGgWy8NvQwRPLz/xgp1A7yeoNq+20Aggnhxr 1MHg== X-Gm-Message-State: AOUpUlEu3ELRhJjqQVrqXI7aV5SfOPxNIZMeRxrZxYXqGSd+rmCPNuag DB8B++4vz/C8sqhNLcG6r+GgZthMDYA= X-Google-Smtp-Source: AA+uWPwbKYN+ObIJFwviIwDcGwhFuImuGn8tg6YFOiwc0lq/hKOgkYNNBr33s+CVw4/Kzd11yXL6LQ== X-Received: by 2002:aca:cf97:: with SMTP id f145-v6mr19835306oig.131.1533647014004; Tue, 07 Aug 2018 06:03:34 -0700 (PDT) Original-Received: from earth (cpe-70-114-192-208.austin.res.rr.com. [70.114.192.208]) by smtp.gmail.com with ESMTPSA id m203-v6sm1110977oig.42.2018.08.07.06.03.32 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Tue, 07 Aug 2018 06:03:33 -0700 (PDT) In-reply-to: <87d0uuylah.fsf@gmail.com> 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:149310 Archived-At: --=-=-= Content-Type: text/plain On Mon 06 Aug 2018 at 21:15, Noam Postavsky wrote: > You forgot to check the return value of re-search-forward/backward, if > there is no match then (match-beginning 0) might return something > unexpected. Yes, totally forgot that. Updated with new patch which just wraps that in a call to when. > Alternatively, if you don't expect the match to fail, pass nil for > NOERROR. The match can fail if point is at the beginning/end of the buffer, so I think NOERROR needs to be non-nil. --- >From 3720b4a53bece9ddfde526093e3a537a1dace5e5 Mon Sep 17 00:00:00 2001 From: Alex Branham Date: Mon, 6 Aug 2018 15:47:12 -0500 Subject: [PATCH] * lisp/textmodes/bibtex.el: New functions bibtex-next/previous-entry (bibtex-next-entry, bibtex-previous-entry): new functions. (bibtex-mode-map): Bind to M-{/}, overriding forward/backward paragraph, which only move single lines in bibtex-mode --- etc/NEWS | 5 +++++ lisp/textmodes/bibtex.el | 18 ++++++++++++++++++ 2 files changed, 23 insertions(+) diff --git a/etc/NEWS b/etc/NEWS index 21887f5bfd..a3c06a3cb5 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -232,6 +232,11 @@ navigation and editing of large files. * Changes in Specialized Modes and Packages in Emacs 27.1 ++++ +** bibtex +*** New commands bibtex-next-entry and bibtex-previous-entry +They are bound to M-{ and M-} in bibtex-mode-map. + +++ ** Dired diff --git a/lisp/textmodes/bibtex.el b/lisp/textmodes/bibtex.el index 50a30cf6c3..56352bd20e 100644 --- a/lisp/textmodes/bibtex.el +++ b/lisp/textmodes/bibtex.el @@ -1356,6 +1356,8 @@ bibtex-mode-map ;; The Key `C-c&' is reserved for reftex.el (define-key km "\t" 'bibtex-find-text) (define-key km "\n" 'bibtex-next-field) + (define-key km "\M-\}" 'bibtex-next-entry) + (define-key km "\M-\{" 'bibtex-previous-entry) (define-key km "\M-\t" 'completion-at-point) (define-key km "\C-c\"" 'bibtex-remove-delimiters) (define-key km "\C-c{" 'bibtex-remove-delimiters) @@ -1415,6 +1417,8 @@ bibtex-mode-map ("Moving inside an Entry" ["End of Field" bibtex-find-text t] ["Next Field" bibtex-next-field t] + ["Next entry" bibtex-next-entry t] + ["Previous entry" bibtex-previous-entry t] ["Beginning of Entry" bibtex-beginning-of-entry t] ["End of Entry" bibtex-end-of-entry t] "--" @@ -4452,6 +4456,20 @@ bibtex-next-field (goto-char (match-beginning 0))) (bibtex-find-text begin nil bibtex-help-message))) +(defun bibtex-next-entry (&optional arg) + "Move point ARG entries forward." + (interactive "p") + (bibtex-end-of-entry) + (when (re-search-forward bibtex-entry-maybe-empty-head nil t (or arg 1)) + (goto-char (match-beginning 0)))) + +(defun bibtex-previous-entry (&optional arg) + "Move point ARG entries backward." + (interactive "p") + (bibtex-beginning-of-entry) + (when (re-search-backward bibtex-entry-maybe-empty-head nil t (or arg 1)) + (goto-char (match-beginning 0)))) + (defun bibtex-find-text (&optional begin noerror help comma) "Move point to end of text of current BibTeX field or entry head. With optional prefix BEGIN non-nil, move point to its beginning. -- 2.18.0 --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=0001-lisp-textmodes-bibtex.el-New-functions-bibtex-next-p.patch >From 3720b4a53bece9ddfde526093e3a537a1dace5e5 Mon Sep 17 00:00:00 2001 From: Alex Branham Date: Mon, 6 Aug 2018 15:47:12 -0500 Subject: [PATCH] * lisp/textmodes/bibtex.el: New functions bibtex-next/previous-entry (bibtex-next-entry, bibtex-previous-entry): new functions. (bibtex-mode-map): Bind to M-{/}, overriding forward/backward paragraph, which only move single lines in bibtex-mode --- etc/NEWS | 5 +++++ lisp/textmodes/bibtex.el | 18 ++++++++++++++++++ 2 files changed, 23 insertions(+) diff --git a/etc/NEWS b/etc/NEWS index 21887f5bfd..a3c06a3cb5 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -232,6 +232,11 @@ navigation and editing of large files. * Changes in Specialized Modes and Packages in Emacs 27.1 ++++ +** bibtex +*** New commands bibtex-next-entry and bibtex-previous-entry +They are bound to M-{ and M-} in bibtex-mode-map. + +++ ** Dired diff --git a/lisp/textmodes/bibtex.el b/lisp/textmodes/bibtex.el index 50a30cf6c3..56352bd20e 100644 --- a/lisp/textmodes/bibtex.el +++ b/lisp/textmodes/bibtex.el @@ -1356,6 +1356,8 @@ bibtex-mode-map ;; The Key `C-c&' is reserved for reftex.el (define-key km "\t" 'bibtex-find-text) (define-key km "\n" 'bibtex-next-field) + (define-key km "\M-\}" 'bibtex-next-entry) + (define-key km "\M-\{" 'bibtex-previous-entry) (define-key km "\M-\t" 'completion-at-point) (define-key km "\C-c\"" 'bibtex-remove-delimiters) (define-key km "\C-c{" 'bibtex-remove-delimiters) @@ -1415,6 +1417,8 @@ bibtex-mode-map ("Moving inside an Entry" ["End of Field" bibtex-find-text t] ["Next Field" bibtex-next-field t] + ["Next entry" bibtex-next-entry t] + ["Previous entry" bibtex-previous-entry t] ["Beginning of Entry" bibtex-beginning-of-entry t] ["End of Entry" bibtex-end-of-entry t] "--" @@ -4452,6 +4456,20 @@ bibtex-next-field (goto-char (match-beginning 0))) (bibtex-find-text begin nil bibtex-help-message))) +(defun bibtex-next-entry (&optional arg) + "Move point ARG entries forward." + (interactive "p") + (bibtex-end-of-entry) + (when (re-search-forward bibtex-entry-maybe-empty-head nil t (or arg 1)) + (goto-char (match-beginning 0)))) + +(defun bibtex-previous-entry (&optional arg) + "Move point ARG entries backward." + (interactive "p") + (bibtex-beginning-of-entry) + (when (re-search-backward bibtex-entry-maybe-empty-head nil t (or arg 1)) + (goto-char (match-beginning 0)))) + (defun bibtex-find-text (&optional begin noerror help comma) "Move point to end of text of current BibTeX field or entry head. With optional prefix BEGIN non-nil, move point to its beginning. -- 2.18.0 --=-=-=--