Commit graph

86 commits

Author SHA1 Message Date
Paul Eggert
5c7dd8a783 Update copyright year to 2018
Run admin/update-copyright.
2018-01-01 00:57:59 -08:00
Glenn Morris
780407cff1 Small fixes prompted by make check-declare
* lisp/frame.el (x-focus-frame): Update declaration.
(ns-mouse-absolute-pixel-position): Fix declaration.
* lisp/vc/diff-mode.el (diff-refine-hunk):
Use smerge-refine-regions rather than obsolete alias.
(smerge-refine-subst): Remove declaration, no longer relevant.
2017-12-14 21:31:28 -05:00
Paul Eggert
a89f0b6f33 maint: shorten https://lists.gnu.org/archive/html/... links 2017-11-25 22:48:12 -08:00
Paul Eggert
5172fa02cc Prefer HTTPS to HTTP for gnu.org
This fixes some URLs I omitted from my previous pass,
notably those in lists.gnu.org.  Although lists.gnu.org
does not yet support TLS 1.1, TLS 1.0 is better than nothing.
* lisp/erc/erc.el (erc-official-location):
* lisp/mail/emacsbug.el (report-emacs-bug):
Use https:, not http:.
2017-10-01 19:59:01 -07:00
Paul Eggert
bc511a64f6 Prefer HTTPS to FTP and HTTP in documentation
Most of this change is to boilerplate commentary such as license URLs.
This change was prompted by ftp://ftp.gnu.org's going-away party,
planned for November.  Change these FTP URLs to https://ftp.gnu.org
instead.  Make similar changes for URLs to other organizations moving
away from FTP.  Also, change HTTP to HTTPS for URLs to gnu.org and
fsf.org when this works, as this will further help defend against
man-in-the-middle attacks (for this part I omitted the MS-DOS and
MS-Windows sources and the test tarballs to keep the workload down).
HTTPS is not fully working to lists.gnu.org so I left those URLs alone
for now.
2017-09-13 15:54:37 -07:00
Charles A. Roelli
208a3cb05f Fix 'diff-goto-source' when buffer is narrowed (Bug#21262)
* lisp/vc/diff-mode.el (diff-find-file-name): Save the current
narrowing, and widen the buffer before searching for the name of the
file corresponding to the diff.

With thanks to Noam Postavsky.
2017-08-27 14:14:46 +02:00
Tino Calancha
abe731eef0 epatch: Save right backups in Git multipatches
Multipatches on N Git files save wrong backups for
N-1 files; only the last one has a correct backup (Bug#26084).
* lisp/vc/diff-mode.el (diff-file-junk-re): Add 'Prereq: '
* lisp/vc/ediff-ptch.el (ediff-map-patch-buffer): Use 'diff-file-junk-re'.
* test/lisp/vc/ediff-ptch-tests.el (ediff-ptch-test-bug25010):
Rename from ibuffer-test-bug25010.
(ediff-ptch-test-bug26084): New test.
2017-03-21 17:25:55 +09:00
Tino Calancha
a362b56b51 Check if there are hunks before kill or refine a hunk
* lisp/vc/diff-mode.el (diff--some-hunks-p): New predicate.
(diff-hunk-kill, diff-file-kill, diff-refine-hunk): Use it (Bug#25571).
2017-02-02 22:27:33 +09:00
Tino Calancha
01d87bf846 Ignore error after kill last file or hunk
* lisp/vc/diff-mode.el (diff-hunk-kill): Go to beginning of hunk before kill.
Ignore error after kill last hunk (Bug#25570).
(diff-file-kill): Idem.
2017-02-02 22:27:18 +09:00
Dima Kogan
189df8262e Handle patch terminators produced by git and bzr patch export
Patch by Juri Linkov posted in the #9597 bug report

* lisp/vc/diff-mode.el (diff-sanity-check-hunk): Find and ignore
terminator (Bug #9597, #5302)
2017-01-31 07:50:26 -08:00
Tino Calancha
0073223c23 Fix Bug#25524
* lisp/vc/diff-mode.el (diff-beginning-of-hunk):
Return position at the beginning off the hunk.
(diff-file-junk-re): Add SVN keywords.
2017-01-29 18:49:10 +09:00
Tino Calancha
e5e42cefd7 diff-hunk-kill independent of point inside headers
Make diff-apply-hunk and diff-hunk-kill independent of the point
position in a diff header (Bug#17544).
This change allows to apply hunks in order.  It also makes possible to
press M-k repeatedly to kill hunks in the order they appear in the buffer.
See discussion on #Bug25105.
* lisp/vc/diff-mode.el (diff-file-junk-re):
Move definition before it's used.
(diff--at-diff-header-p): New predicate; return non-nil when point
is inside a hunk header, a file header, or within a line
matching diff-file-junk-re.
(diff-beginning-of-hunk): Use it.
Check if the point is inside a diff header, in the middle of a hunk,
or before the first hunk.
(diff-apply-hunk): Call diff-beginning-of-hunk with non-nil arg
before apply the hunk.
(diff-hunk-kill, diff-file-kill):
Call diff-beginning-of-hunk with non-nil arg after kill the hunks.
(diff-post-command-hook): Call diff-beginning-of-hunk with non-nil argument.
2017-01-21 11:54:55 +09:00
Tino Calancha
1508b538fd ; Revert "Improve diff-mode navigation/manipulation"
This reverts commit 2c8a7e50d2.
This change causes regressions:
https://lists.gnu.org/archive/html/emacs-devel/2016-11/msg00738.html
The following related commits are reverted as well:
61c6a10e31
a283d655db
6b6abe0dba
e5ef59b87d
73349822cb

Fixes: debbugs:25105, 25400.
2017-01-21 11:54:38 +09:00
Noam Postavsky
8c0fcaf667 Avoid inefficient regex in diff-refine-hunk (Bug#25410)
* lisp/vc/diff-mode.el (diff--forward-while-leading-char): New function.
(diff-refine-hunk): Use it instead of trying to match multiple lines
with a single lines.
2017-01-18 20:37:31 -05:00
Paul Eggert
bcf244ef9b Merge from origin/emacs-25
2e2a806 Fix copyright years by hand
5badc81 Update copyright year to 2017
2017-01-01 01:10:47 -08:00
Paul Eggert
5badc81c1c Update copyright year to 2017
Run admin/update-copyright.
2016-12-31 19:42:26 -08:00
Dima Kogan
e5ef59b87d diff-mode auto-refines only after a successful motion
Prior to this patch (if enabled) auto-refinement would kick in after all
hunk navigation commands, even if the motion failed.  This would result
in a situation where the hunk navigation would signal an error and beep,
but yet still accomplish potentially useful work, by auto-refining.
This patch moves the auto-refinement code to only run when a motion was
successful

* lisp/vc/diff-mode.el (diff--internal-hunk-next,
  diff--internal-hunk-prev): Removed auto-refinement-triggering code
* lisp/vc/diff-mode.el (diff--wrap-navigation): Added
  auto-refinement-triggering code
2016-12-24 21:42:02 -08:00
Dima Kogan
6b6abe0dba diff-mode is able to better handle file headers
This fixes a regression introduced in

  http://git.savannah.gnu.org/gitweb/?p=emacs.git;a=commit;h=2c8a7e50d24daf19ea7d86f1cfeaa98a41c56085

This bug was filed in

  https://debbugs.gnu.org/cgi/bugreport.cgi?bug=25105

Patches generated from a VCS such as git contain a patch message at the
start, and diff-mode is now once-again able to properly able to ignore
this message when issuing navigation commands around the message.

* lisp/vc/diff-mode.el (diff-beginning-of-file-and-junk): More
  thoroughly ignore the header when looking for a beginning of file
  diffs.
2016-12-24 21:32:34 -08:00
Paul Eggert
73349822cb ; Spelling fixes 2016-12-22 10:14:11 -08:00
Noam Postavsky
a283d655db Fix previous commit
* lisp/vc/diff-mode.el (diff-refine-hunk): Make sure to go to beginning
of hunk before calling `diff-hunk-style'.
2016-11-29 18:59:02 -05:00
Noam Postavsky
61c6a10e31 * lisp/vc/diff-mode.el (diff-refine-hunk): Remove redundant variable. 2016-11-29 18:52:41 -05:00
Dima Kogan
2c8a7e50d2 Improve diff-mode navigation/manipulation
This is Bug #17544.

Navigation and use of diff buffers had several annoying corner cases
that this patch fixes.  These corner cases were largely due to
inconsistent treatment of file headers.  Say you have a diff such as
this:

 --- aaa
 +++ bbb
 @@ -52,7 +52,7 @@
 hunk1
 @@ -74,7 +74,7 @@
 hunk2
 --- ccc
 +++ ddd
 @@ -608,6 +608,6 @@
 hunk3
 @@ -654,7 +654,7 @@
 hunk4

The file headers here are the '---' and '+++' lines.  With the point on
such a line, hunk operations would sometimes refer to the next hunk and
sometimes to the previous hunk.  Most of the time it would be the
previous hunk, which is not what the user would expect.  This patch
consistently treats such headers as the next hunk.  So with this patch,
if the point is on the '--- ccc' line, the point is seen as referring to
hunk3.

Specific behaviors this fixes are:

1. It should be possible to place the point in the middle of a diff
buffer, and press M-k repeatedly to kill hunks in the order they appear
in the buffer.  With the point on hunk1, M-k M-k would kill hunk1 then
hunk2.  With the point on hunk3, it would kill hunk3 then hunk4; this is
fine.  However, with the point on hunk2, it'd kill hunk2 then hunk1.
This is fixed by this patch.

2. Similarly, it should be possible to apply hunks in order.  Previously
with the point at the start, C-c C-a would apply the hunk1, then move
the point to the first @@ header, and thus C-c C-a would try to apply
the same hunk again.

* lisp/vc/diff-mode.el (diff--wrap-navigation): New function to add better
navigation logic to diff-{hunk,file}-{next,prev}.
(diff-hunk-next, diff-hunk-prev):
(diff-file-next, diff-file-prev): Better navigation logic if
skip-hunk-start is true, which happens when called interactively.
(diff-bounds-of-hunk, diff-find-source-location):
(diff-apply-hunk, diff-current-defun, diff-refine-hunk): Small tweaks to
improve hunk navigation.
2016-11-28 22:40:03 -05:00
Stephen Berman
1f55925728 ; Fix breakage from previous commit 2016-06-27 16:50:09 -04:00
Mark Oteiza
c430f7e23f Remove some face aliases obsoleted in 22.1
* lisp/faces.el (modeline-inactive, modeline-highlight, modeline-buffer-id):
* lisp/hilit-chg.el (highlight-changes-face, highlight-changes-delete-face):
* lisp/info.el (Info-title-1-face, Info-title-2-face, Info-title-3-face,
Info-title-4-face, info-menu-5):
* lisp/obsolete/old-whitespace.el (whitespace-highlight-face):
* lisp/paren.el (show-paren-match-face, show-paren-mismatch-face):
* lisp/progmodes/make-mode.el (makefile-space-face):
* lisp/textmodes/texinfo.el (texinfo-heading-face): Remove.
(texinfo-font-lock-keywords): Use texinfo-heading face.
* lisp/vc/add-log.el (change-log-date-face, change-log-name-face,
change-log-email-face, change-log-file-face, change-log-list-face,
change-log-conditionals-face, change-log-function-face,
change-log-acknowledgement-face):
* lisp/vc/diff-mode.el (diff-header-face, diff-file-header-face,
diff-index-face, diff-hunk-header-face, diff-removed-face, diff-added-face,
diff-changed-face, diff-function-face, diff-context-face,
diff-nonexistent-face): Remove.
(diff-use-changed-face, diff-font-lock-keywords): Use non-obsolete face
symbols.
(diff-hunk-file-names): Fix comment.
(diff-refine-change): Remove.
(diff-refine-removed, diff-refine-added, diff-refine-hunk): Use
non-obsolete face.
* lisp/vc/log-view.el (log-view-file-face, log-view-message-face): Remove.
(log-view-font-lock-keywords): Use non-obsolete face names.
* lisp/vc/pcvs-info.el (cvs-header-face, cvs-filename-face, cvs-unknown-face,
cvs-handled-face, cvs-need-action-face, cvs-marked-face, cvs-msg-face):
* lisp/wid-edit.el (widget-documentation-face, widget-button-face,
widget-field-face, widget-single-line-field-face, widget-inactive-face,
widget-button-pressed-face):
* lisp/woman.el (woman-italic-face, woman-bold-face, woman-unknown-face,
woman-addition-face): Remove.
2016-06-23 17:13:11 -04:00
Paul Eggert
0e963201d0 Update copyright year to 2016
Run admin/update-copyright.
2016-01-01 01:34:24 -08:00
Dmitry Gutov
138ad3d93b ; Fix warnings
* lisp/vc/diff-mode.el (diff-kill-applied-hunks):
Fix unused variable warnings.
2015-11-14 03:03:58 +02:00
Paul Eggert
284c470ef7 Backslash cleanup in Elisp source files
This patch should not change behavior.  It typically omits backslashes
where they are redundant (e.g., in the string literal "^\$").
In a few places, insert backslashes where they make regular
expressions clearer: e.g., replace "^\*" (equivalent to "^*") with
"^\\*", which has the same effect as a regular expression.
Also, use ‘\ %’ instead of ‘\%’ when avoiding confusion with SCCS IDs,
and similarly use ‘\ $’ instead of ‘\$’ when avoiding confusion with
RCS IDs, as that makes it clearer that the backslash is intended.
2015-09-17 16:09:39 -07:00
Paul Eggert
5e63c84200 Fix minor text quoting in calc, calendar, vc
* lisp/calc/calc-ext.el (calc-shift-Z-prefix-help):
* lisp/calc/calc-help.el (calc-j-prefix-help):
* lisp/calc/calc-misc.el (calc-help):
* lisp/calc/calc.el (calc-algebraic-mode, calc-mode):
Escape an apostrophe in a docstring.
* lisp/calc/calc-forms.el (calc-hms-notation):
* lisp/calc/calc-mode.el (calc-display-raw, calc-algebraic-mode):
Escape an apostrophe in a diagnostic.
* lisp/calc/calc-misc.el (calc-help):
* lisp/calendar/diary-lib.el (diary-include-files):
* lisp/calendar/todo-mode.el (todo-prefix, todo-item-mark):
* lisp/vc/diff-mode.el (diff-delete-trailing-whitespace):
* lisp/vc/ediff-diff.el (ediff-same-contents):
* lisp/vc/ediff-merg.el (ediff-re-merge):
* lisp/vc/ediff-ptch.el (ediff-patch-file-internal):
* lisp/vc/ediff-util.el (ediff-test-save-region)
(ediff-status-info):
* lisp/vc/ediff.el (ediff-merge-revisions)
(ediff-merge-revisions-with-ancestor):
* lisp/vc/pcvs.el (cvs-mode-checkout, cvs-vc-command-advice):
* lisp/vc/vc-cvs.el (vc-cvs-mode-line-string):
Respect text quoting style in doc string or diagnostic.
* lisp/calc/calc-prog.el (calc-kbd-push, calc-kbd-pop):
* lisp/vc/add-log.el (change-log-goto-source):
Avoid double-formatting.
* lisp/vc/ediff-init.el (format-message):
New backward-compatibility alias.
2015-08-28 22:25:09 -07:00
Gustav Hållberg
3d78c5578c (diff-hunk-file-names): Don't require a TAB after the file name
Fixes: debbugs:20276
2015-04-08 21:47:50 -04:00
Paul Eggert
7e09ef09a4 Update copyright year to 2015
Run admin/update-copyright.
2015-01-01 14:26:41 -08:00
Stefan Monnier
8dac9c34d8 * lisp/vc/diff-mode.el (diff-kill-applied-hunks): New command.
* lisp/vc/smerge-mode.el (smerge-swap): New command.
2014-12-01 13:16:53 -05:00
Stefan Monnier
cbdc06f3be Rename 24.5 to 25.1
Except where we expect to backport the corresponding change.
2014-09-29 14:14:08 -04:00
Andreas Schwab
52e7a5b99f Handle missing space marker in unified diff during header fixup
* vc/diff-mode.el (diff-fixup-modifs): Handle empty line in
context of unified diff.
2014-08-16 21:51:27 +02:00
Juri Linkov
1a63945352 * lisp/vc/diff-mode.el (diff-changed): Empty face definition
to use `diff-removed' and `diff-added' on tty as well. 
(diff-context): Use darker color on light background and
lighter color on dark background.

Fixes: debbugs:10181
2014-06-18 11:48:49 +03:00
Juri Linkov
7c6fc37fa9 * lisp/vc/diff-mode.el (diff-refine-changed): Rename from
`diff-refine-change' for consistency with `diff-changed'.
(diff-refine-change): Add obsolete face alias. 

* lisp/vc/smerge-mode.el (smerge-refined-changed): Rename from
`smerge-refined-change'.
(smerge-refined-change): Add obsolete face alias.

Fixes: debbugs:10181
2014-06-18 11:33:57 +03:00
Paul Eggert
ba3189039a Update copyright year to 2014 by running admin/update-copyright. 2014-01-01 07:43:34 +00:00
Ivan Shmakov
e1b01c7fed * vc/diff-mode.el (diff-mode): Tiny change re diff-default-read-only
Only allow diff-default-read-only to set buffer-read-only to t, never to nil.

Fixes: debbugs:15938
2013-11-22 18:55:17 -08:00
Dmitry Gutov
b3082f497c * lisp/vc/diff-mode.el (diff-mode-shared-map): Unbind "/".
Fixes: debbugs:14034
2013-03-23 21:43:18 +04:00
Sam Steingold
3602ccebf6 * lisp/vc/diff-mode.el (diff-hunk-file-names): Handle filenames with spaces.
See <http://stackoverflow.com/questions/14720205>.
2013-02-28 11:34:51 -05:00
Paul Eggert
0877d0dc24 Merge from emacs-24; up to 2012-12-06T01:39:03Z!monnier@iro.umontreal.ca 2013-01-02 08:13:04 -08:00
Paul Eggert
ab422c4d68 Update copyright notices for 2013. 2013-01-01 09:11:05 +00:00
Stefan Monnier
f4d79bd021 * lisp/vc/diff-mode.el (diff-post-command-hook): Don't ignore changes at the
very beginning of a hunk (e.g. killing the first line).
2012-12-19 14:41:43 -05:00
Stefan Monnier
1000d89524 * lisp/vc/diff-mode.el (diff-hunk): Don't make useless timers. 2012-11-19 13:40:18 -05:00
Chong Yidong
9d9e48d904 Rewrite and rename diff-delete-trailing-whitespace.
* lisp/vc/diff-mode.el (diff-delete-trailing-whitespace): Rewrite, and
rename from diff-remove-trailing-whitespace (Bug#12831).

* files.texi (Diff Mode): Doc fixes for
diff-delete-trailing-whitespace.
2012-11-09 01:31:53 +08:00
Glenn Morris
26f596760d Document diff-remove-trailing-whitespace
* doc/emacs/files.texi (Diff Mode): Trailing whitespace updates.

* lisp/vc/diff-mode.el (diff-remove-trailing-whitespace): Doc fix.

* etc/NEWS: Related markup.
2012-11-08 00:14:23 -08:00
Stefan Monnier
d7f9cc8528 * lisp/vc/diff-mode.el (diff-context->unified): Don't get confused by "hunk
header comments".
(diff-unified->context, diff-context->unified)
(diff-reverse-direction, diff-fixup-modifs): Use `use-region-p'.
2012-10-29 11:14:10 -04:00
Stefan Monnier
a2be03575f * lisp/vc/diff-mode.el (diff-end-of-hunk): Also skip potential "no LF at eol".
(diff-refine-hunk): Similarly, handle the "no LF at eol".

Fixes: debbugs:12584
2012-10-26 11:51:42 -04:00
Stefan Monnier
9c3e39f3ff * lisp/vc/diff-mode.el (diff-hunk): `save-excursion' while refining.
Fixes: debbugs:12671
2012-10-23 14:40:23 -04:00
Stefan Monnier
6be9197e60 * lisp/vc/diff-mode.el (diff--auto-refine-data): New var.
(diff-hunk): Use it to delay refinement.
(diff-mode): Remove overlays when we turn off font-lock.
2012-10-01 23:49:28 -04:00
Juri Linkov
d80d54b289 * lisp/facemenu.el (list-colors-sort): Add option "Luminance".
(list-colors-sort-key): Implement it.

* lisp/vc/diff-mode.el (diff-refine-removed):
* lisp/vc/ediff-init.el (ediff-fine-diff-A):
* lisp/vc/smerge-mode.el (smerge-refined-removed):
Change background color "#ffaaaa" to "#ffbbbb".

Fixes: debbugs:10181
2012-09-30 19:36:42 +03:00