Commit graph

293 commits

Author SHA1 Message Date
Philip Kaludercic
01e45efcd4
Merge branch 'master' into feature/package+vc 2022-10-15 17:38:30 +02:00
Philip Kaludercic
5933055a3e
* lisp/vc/vc-git.el (vc-git-symbolic-commit): Use --no-undefined 2022-10-15 17:22:49 +02:00
Philip Kaludercic
1f4b234a5c
* lisp/vc/vc-git.el (vc-git-symbolic-commit): Add argument FORCE
(Bug#57400)
2022-10-15 17:22:49 +02:00
Philip Kaludercic
307ad21004
* lisp/vc/vc-git.el (vc-git--rev-parse): Allow abbreviating commits
* lisp/vc/vc-git.el (vc-git-working-revision): Use abbreviated comment
references.  (Bug#57400)
2022-10-15 17:22:49 +02:00
Visuwesh
e3fac2be04 Fix misleading prompt in vc-git-create-tag
* lisp/vc/vc-git.el (vc-git-create-tag): Actually pass the DEFAULT
argument to vc-read-revision (bug#58378).
2022-10-08 15:13:48 +02:00
Philip Kaludercic
8cfeb8a9e0
Merge branch 'master' into feature/package+vc 2022-10-08 11:56:23 +02:00
Philip Kaludercic
59df0a7bd9
Add a VC command to prepare patches
* doc/emacs/vc1-xtra.texi (Miscellaneous VC):  Add new node.
(Editing VC Commands):  Document new feature.
* etc/NEWS:  Mention 'vc-prepare-patch'.
* lisp/vc/log-view.el: Autoload 'log-view-get-marked'.
* lisp/vc/vc-git.el (vc-git-prepare-patch):  Add Git implementation.
* lisp/vc/vc-hg.el (vc-git-prepare-patch):  Add Mercurial implementation.
* lisp/vc/vc-bzr.el (vc-git-prepare-patch):  Add Bazaar implementation.
* lisp/vc/vc.el (vc-read-revision):  Add a MULTIPLE argument.
(vc-read-multiple-revisions):  Add an auxiliary function that always
calls 'vc-read-revision' with a non-nil value for MULTIPLE.
(vc-prepare-patches-separately):  Add user option.
(message-goto-body):  Declare function.
(message--name-table):  Declare function.
(vc-default-prepare-patch): Add a default implementation.
(vc-prepare-patch):  Add command.  (Bug#57400)
2022-10-08 11:51:38 +02:00
Juri Linkov
5e37b27ce9 * lisp/vc/vc-git.el (vc-git-checkin): Add more checks for vc-git-patch-string
Check that vc-git-patch-string contains the same changes that already exists
in the staged area when files were added/removed by vc commands (bug#52349).
2022-10-02 21:50:08 +03:00
Juri Linkov
c37fda9e31 In vc-git-log-incoming use the repository in the command "fetch" (bug#50340)
* lisp/vc/vc-git.el (vc-git-log-incoming): Use repository part
from non-nil remote-location in the command "fetch".

* lisp/vc/vc.el (vc-log-incoming, vc-log-outgoing): Mention in
docstrings and prompts that REMOTE-LOCATION can be a remote branch name.

* doc/emacs/maintaining.texi (VC Change Log): For commands
vc-log-incoming and vc-log-outgoing, use the term "remote location"
instead of "repository".
2022-10-02 21:34:57 +03:00
Lars Ingebrigtsen
e50a3b5792 Make "git pull" output slightly prettier
* lisp/vc/vc-git.el (vc-git--pushpull): Translate ^M in output
(bug#58199).
2022-10-01 16:06:37 +02:00
Lars Ingebrigtsen
d98ee76776 Tweak window handling in vc-pull-and-push
* lisp/vc/vc-dispatcher.el (vc--inhibit-async-window): Rename
variable.
(vc-do-async-command): Allow inhibiting all window changes.

* lisp/vc/vc-git.el (vc-git-pull-and-push): Don't pop up the
window asynchronously on the "pull" because that gets in the way
of doing other things.
2022-09-24 22:43:26 +02:00
Sean Whitton
be9e51f61f ; Drop two obsolete defvars
* lisp/vc/vc-git.el (vc-want-edit-command-p)
* lisp/vc/vc.el (vc-want-edit-command-p): Drop obsolete defvar.
2022-09-24 12:06:47 -07:00
Sean Whitton
9a5176aec0 Generalize & simplify implementation of user edits to VC commands
* lisp/vc/vc-dispatcher.el (vc-pre-command-functions)
(vc-want-edit-command-p): Delete.
(vc-filter-command-function): New variable.
(vc-user-edit-command): Factor out of vc-do-command.
(vc-do-command, vc-do-async-command)
* lisp/vc/vc-git.el (vc-git--pushpull)
* lisp/vc/vc.el (vc-print-branch-log): Use vc-filter-command-function
in place of vc-pre-command-functions and vc-want-edit-command-p.
2022-09-24 11:00:07 -07:00
Lars Ingebrigtsen
8dacd8cd91 Add a new command vc-pull-and-push
* lisp/vc/vc-svn.el (vc-exec-after):
* lisp/vc/vc-hg.el (vc-exec-after):
* lisp/vc/vc-git.el (vc-exec-after):
* lisp/vc/vc-cvs.el (vc-exec-after):
* lisp/vc/vc-bzr.el (vc-exec-after):
* lisp/org/org-macro.el (vc-exec-after):
* lisp/obsolete/vc-mtn.el (vc-exec-after):
* lisp/obsolete/vc-arch.el (vc-exec-after): Update declaration.
* lisp/vc/vc-dispatcher.el (vc--process-sentinel): Allow running
code only on success.
(vc-exec-after): Ditto.
(vc--inhibit-change-window-start): New variable.
(vc-do-async-command): Use it to allow chaining commands without
moving window point.  Return the process instead of the buffer,
since the process may have exited already, and then we can't get
at the process.

* lisp/vc/vc-git.el (vc-git--pushpull): Return the process object.
(vc-git-pull-and-push): New function.

* lisp/vc/vc.el (vc-pull-and-push): New command (bug#51964).
2022-09-24 15:19:03 +02:00
Sean Whitton
77fb8a1612 vc-git--pushpull: Restore handling of vc-git-program
* lisp/vc/vc-git.el (vc-git--pushpull): Restore handling of
vc-git-program before recent change: respect a buffer-local value of
vc-git-program, and don't ignore user edits to the git program name
when PROMPT.
2022-09-23 14:55:02 -07:00
Sean Whitton
101f3cf5b9 Add support for user edits to VC command arguments
* lisp/vc/vc-dispatcher.el (vc-pre-command-functions): New hook.
(vc-want-edit-command-p): New variable.
(vc-do-command): If vc-want-edit-command-p is non-nil, prompt the user
to edit the VC command & arguments before execution.  Run the new hook.
(vc-do-async-command): Use the new hook to insert into BUFFER the
command that's next to be run.
* lisp/vc/vc-git.el (vc-git--pushpull): Drop prompting code.  Bind
vc-want-edit-command-p so that vc-do-command handles the prompting.
Use the new hook to update compile-command with the edited command.
* lisp/vc/vc.el (vc-print-branch-log): A non-nil prefix argument now
means vc-want-edit-command-p is bound to a non-nil value (bug#57807).
2022-09-21 12:31:05 -07:00
Lars Ingebrigtsen
7be7ad279e Don't use autoloaded functions for safe-local-variable
* doc/lispref/symbols.texi (Standard Properties): Clarify how
safe-local-variable should look.

* lisp/emacs-lisp/checkdoc.el (checkdoc-ispell-lisp-words)
(checkdoc-symbol-words): Use list-of-strings-p.
(checkdoc-list-of-strings-p): Obsolete.

* lisp/vc/vc-git.el (vc-git-annotate-switches): Remove.
(vc-git-annotate-switches): Open-code the check.
2022-09-16 12:36:15 +02:00
Lars Ingebrigtsen
a5e1565815 Speed up Emacs build by autoloading vc-git-annotate-switches-safe-p
* lisp/vc/vc-git.el (vc-git-annotate-switches-safe-p): Put the
definition into the loaddefs file.
2022-09-14 17:53:41 +02:00
Juri Linkov
71302884dd 'C-x v b' prefix key is used for branch commands to create/switch/print branch
* lisp/vc/vc.el (vc-create-branch): New command.
(vc-retrieve-tag): Add new optional arg 'branchp'.
(vc-switch-branch): New command (bug#50344).

* lisp/vc/vc-hooks.el (vc-prefix-map): Bind "b c" to vc-create-branch,
"b l" to vc-print-branch-log, "b s" to vc-switch-branch.  Remove obsolete
and suppressed "b" from vc-switch-backend.

* lisp/vc/vc-dir.el (vc-dir-mode-map): Rebind 'branch-map' from "B" to "b"
for consistency with 'vc-prefix-map'.

* lisp/vc/vc-git.el (vc-git-create-tag): For a new branch read
its start-point.  Ask a confirmation if modified files exist.
2022-09-12 21:07:05 +03:00
Stefan Kangas
1c1ff3bfd1 Accept "-w" as safe value for vc-git-annotate-switches
* lisp/vc/vc-git.el
(vc-git-annotate-switches-safe-p): New predicate function.
(vc-git-annotate-switches): Use above new predicate function to
check if it's :safe.
2022-09-10 01:12:29 +02:00
Sean Whitton
9219e83b3c ; Document that a value of any other type means no highlighting
* lisp/vc/vc-git.el (vc-git-log-edit-summary-target-len)
(vc-git-log-edit-summary-max-len): Document that a value of any other
type means no highlighting.
2022-09-05 17:39:21 -07:00
Sean Whitton
21c725dfe0 Font lock long Git commit summary lines
* lisp/vc/vc-git.el (vc-git-log-edit-summary-target-len)
(vc-git-log-edit-summary-max-len): New defcustoms.
(vc-git-log-edit-summary-target-warning)
(vc-git-log-edit-summary-max-warning): New faces.
(vc-git--log-edit-summary-check): New function.
(vc-git-log-edit-mode): Add vc-git--log-edit-summary-check to
log-edit-font-lock-keywords to font lock long Git commit summary
lines.
* etc/NEWS (VC): Document the change.
* .dir-locals.el: Set vc-git-log-edit-summary-target-len.
2022-09-05 11:12:23 -07:00
Juri Linkov
4803fba487 'C-x v v' on a diff buffer commits it as a patch (bug#52349)
* lisp/vc/diff-mode.el (diff-vc-deduce-fileset): New function.

* lisp/vc/log-edit.el (log-edit-diff-patch): New function.

* lisp/vc/vc-dispatcher.el (vc-log-edit): Set log-edit-diff-function
to log-edit-diff-patch when vc-patch-string is non-nil.
(vc-start-logentry): New optional arg 'patch-string'.
Set buffer-local 'vc-patch-string' to 'patch-string'.
(vc-dispatcher-browsing): Add (derived-mode-p 'diff-mode).

* lisp/vc/vc-git.el (vc-git-checkin-patch): New function.
(vc-git-checkin): When vc-git-patch-string is non-nil,
use `git apply --cached` to add the patch to the index,
then commit the staged changes.

* lisp/vc/vc.el: New backend function 'checkin-patch'.
(vc-deduce-fileset-1): Call diff-vc-deduce-fileset in diff-mode.
(vc-next-action): For model 'patch' call vc-checkin with the
diff buffer string.
(vc-checkin): New optional arg 'patch-string'.
Call backend function 'checkin-patch' when 'patch-string' is non-nil.
Call vc-start-logentry with 'patch-string'.
(vc-diff-patch-string): New function.
2022-08-28 22:38:51 +03:00
Philip Kaludercic
1823349e6a
Merge remote-tracking branch 'origin/master' into feature/package+vc 2022-08-12 16:05:05 +02:00
Stefan Kangas
8b31c18fc8 Prefer defvar-keymap in vc/*.el
* lisp/vc/add-log.el (change-log-mode-map):
* lisp/vc/ediff-mult.el (ediff-dir-diffs-buffer-map):
* lisp/vc/vc-annotate.el (vc-annotate-mode-map):
* lisp/vc/vc-bzr.el (vc-bzr-shelve-map):
* lisp/vc/vc-dir.el (vc-dir-status-mouse-map)
(vc-dir-filename-mouse-map):
* lisp/vc/vc-git.el (vc-git-stash-shared-map, vc-git-stash-map)
(vc-git-stash-button-map, vc-git-log-edit-mode-map):
* lisp/vc/vc-hg.el (vc-hg-log-edit-mode-map)
(vc-hg-extra-menu-map):
* lisp/vc/vc-hooks.el (vc-prefix-map): Prefer defvar-keymap.
2022-08-10 11:53:27 +02:00
Philip Kaludercic
1180332941 Merge remote-tracking branch 'origin/master' into feature/package+vc 2022-07-31 14:27:28 +02:00
Eli Zaretskii
640e52d8fa ; Fix mistakes in 'declare function' forms
* lisp/progmodes/gdb-mi.el (tooltip-show):
* lisp/vc/vc-git.el (grep-expand-template):
* lisp/cedet/semantic/imenu.el (pulse-momentary-highlight-one-line):
* lisp/mail/feedmail.el (smtpmail-via-smtp):
* lisp/mail/rmail.el (rmail-mime-entity-truncated):
* lisp/mail/rmailsum.el (rmail-cease-edit):
* lisp/progmodes/gud.el (speedbar-toggle-line-expansion)
(speedbar-edit-line):
* lisp/autoinsert.el (sgml-tag):
* lisp/comint.el (url-host, url-type, url-filename):
* lisp/progmodes/elisp-mode.el (xref-make, xref-item-location):
* lisp/vc/vc-hooks.el (vc-responsible-backend):
* lisp/cedet/semantic/complete.el (tooltip-show):
* lisp/doc-view.el (tooltip-show):
* lisp/follow.el (mwheel-scroll):
* lisp/term/pgtk-win.el (pgtk-set-resource):
* lisp/progmodes/cperl-mode.el (Info-find-node):
* lisp/lpr.el (print-region-function):
* lisp/w32-fns.el (w32-version, w32-read-registry):
* lisp/emacs-lisp/checkdoc.el (ispell-correct-p, checkdoc-dired):
* lisp/progmodes/xref.el (apropos-parse-pattern):
* lisp/cus-edit.el (apropos-parse-pattern):
* lisp/obsolete/gs.el (x-change-window-property):
* lisp/x-dnd.el (x-change-window-property):
* lisp/xwidget.el (make-xwidget):
* lisp/transient.el (info, Man-find-section, Man-next-section)
(Man-getpage-in-background):
* lisp/frame.el (x-device-class, pgtk-device-class):
* lisp/textmodes/texinfo.el (flymake--log-1):
* lisp/term/x-win.el (x-internal-focus-input-context): Fix
'declare function' errors uncovered by 'check-declare'.
2022-05-14 16:19:12 +03:00
Philip Kaludercic
ccecc87d58 Implement vc-clone for git
* vc-git.el (vc-git-clone): Add Git implementation
2022-02-14 14:59:04 +01:00
Juri Linkov
97806bc7de Add diff-mode-read-only to enable shorter keys in diff-mode
To be able to use outline-minor-mode-cycle keys in diff-mode,
outline-minor-mode should be higher in minor-mode-map-alist,
and a new variable diff-mode-read-only should be set
when the diff-mode buffer is read-only.
https://lists.gnu.org/archive/html/emacs-devel/2022-01/msg00740.html

* lisp/vc/diff-mode.el: Add diff-mode-read-only to minor-mode-map-alist.
(diff-mode-read-only): New buffer-local variable.
(diff-mode): Set diff-mode-read-only to t when buffer-read-only is non-nil.
Update diff-mode-read-only in read-only-mode-hook.
Remove buffer-read-only from minor-mode-overriding-map-alist.
Remove view-mode-hook because now view-mode is higher than
diff-mode-read-only in minor-mode-map-alist.

* lisp/vc/vc-git.el (vc-git-stash-show):
* lisp/vc/vc.el (vc-diff-internal): Set buffer-read-only to t
before calling diff-mode that will set diff-mode-read-only.
2022-01-10 20:29:53 +02:00
Stefan Kangas
d763c12796 Merge from origin/emacs-28
e7aa3ece52 Fix vc-git with old Git over Tramp and cygwin-mount.el
c0cfbca311 * lisp/emacs-lisp/checkdoc.el (bytecomp): Add missing require

# Conflicts:
#	etc/NEWS
2022-01-05 06:30:39 +01:00
Dmitry Gutov
e7aa3ece52 Fix vc-git with old Git over Tramp and cygwin-mount.el
* lisp/vc/vc-git.el (vc-git-use-literal-pathspecs): New variable.
(vc-git-command, vc-git--call): Use it to determine whether to set
GIT_LITERAL_PATHSPECS=1 (bug#51497).
(vc-git--literal-pathspec, vc-git--literal-pathspecs): Remove.
Update all callers.  This reverts the previous solution for bug#39452.

* lisp/progmodes/project.el (project--vc-list-files):
Use the new variable.
2022-01-05 04:08:10 +02:00
Eli Zaretskii
dcd76bd48d Merge from origin/emacs-28
836be7a112 ; * etc/refcards/ru-refcard.tex: Update Copyright year.
86cbc6ee4a * lisp/net/tramp-sh.el: Adapt copyright year
ebe8772f65 ; Minor fixes related to copyright years
23c1ee6989 ; * test/manual/etags/ETAGS.good_N: Adjust to copyright ye...
8d3fc7ec89 * src/xfaces.c (face_for_font): Make 'hash' be uintptr_t.
19dcb237b5 ; Add 2022 to copyright years.

# Conflicts:
#	etc/NEWS
#	etc/refcards/ru-refcard.tex
#	lib/cdefs.h
#	lisp/erc/erc-dcc.el
#	lisp/erc/erc-imenu.el
#	lisp/erc/erc-replace.el
#	lisp/image-dired.el
#	lisp/progmodes/xref.el
#	m4/alloca.m4
#	m4/byteswap.m4
#	m4/errno_h.m4
#	m4/getopt.m4
#	m4/gnulib-common.m4
#	m4/inttypes.m4
#	m4/stddef_h.m4
#	m4/stdint.m4
#	m4/sys_socket_h.m4
2022-01-01 07:03:03 -05:00
Eli Zaretskii
19dcb237b5 ; Add 2022 to copyright years. 2022-01-01 02:45:51 -05:00
Lars Ingebrigtsen
9a1e87ba44 Add vc-git-stash-pop to vc-dir-git-mode
* lisp/vc/vc-git.el (vc-dir-git-mode-map): Add vc-git-stash-pop
(bug#52158).
2021-12-07 08:06:16 +01:00
Lars Ingebrigtsen
0dca455d14 Make the Git stash commands available in vc-dir Git buffers
* lisp/vc/vc-dir.el (vc-dir): Call the backend-specific minor mode
if it exists.
* lisp/vc/vc-git.el (vc-dir-git-mode-map): New map.
(vc-dir-git-mode): New minor mode.
2021-12-06 06:41:25 +01:00
Justin Schell
e6a0cfaad5 vc-git--program-version to support Git for macOS version string
`git version` on macOS returns e.g., "git version 2.30.1 (Apple
Git-130)" and `vc-git--program-version` currently returns "0" instead
of "2.30.1".

* lisp/vc/vc-git.el (vc-git--program-version): Ignore text after
the version number when parsing git versions (bug#52172).

Copyright-paperwork-exempt: yes
2021-12-06 02:27:52 +01:00
Dmitry Gutov
824d31e3bf Remove empty lines from stash read prompt
* lisp/vc/vc-git.el (vc-git-stash-read): Pass OMIT-NULLS (bug#52119).
(vc-git-stash-list): Simplify.
2021-11-26 16:03:30 +03:00
Juri Linkov
2963de6540 * lisp/vc/vc-git.el (vc-git-mergebase): More meaningful error message.
Display a readable error message instead of signaling an error on nil value.
2021-11-10 20:41:19 +02:00
Jan Synacek
5c1a575ef4 Don't use color escape sequences in vc-git-expanded-log-entry
* lisp/vc/vc-git.el (vc-git-expanded-log-entry): Use '--no-color' flag
in git invocation.  (Bug#51262)

Copyright-paperwork-exempt: yes
2021-10-19 19:45:25 +02:00
Dmitry Gutov
4afff515c8 Expand the full file name
* lisp/vc/vc-git.el (vc-git--literal-pathspec):
Expand the full file name, not just the local part (bug#51112).
2021-10-11 16:43:55 +03:00
Dmitry Gutov
46a2c191f2 Fix vc-annotate-show-log-revision-at-line
* lisp/vc/vc-annotate.el (vc-annotate-show-log-revision-at-line):
Stop from being affected by 'vc-git-print-log-follow'.

* lisp/vc/vc-git.el (vc-git-print-log-follow):
Mention caveats in a comment.
2021-09-23 14:53:46 +03:00
Stefan Kangas
b2164df86b ; More stylistic docfixes in vc/*.el found by checkdoc 2021-09-18 09:35:29 +02:00
Stefan Kangas
25ebb9374b ; More minor docfixes found by checkdoc 2021-09-14 07:57:14 +02:00
Dmitry Gutov
108dbed4c0 Re-fix bug#16897
* lisp/vc/vc-git.el (vc-git--file-list-is-rootdir):
Extract from 'vc-git-command'.
(vc-git--literal-pathspecs): Use it here as well.
2021-09-12 03:29:04 +03:00
Dmitry Gutov
ff2c4a8353 Have Git backend actions accept nil filenames again
* lisp/vc/vc-git.el (vc-git--literal-pathspec):
Move the nil check to the beginning (bug#50422).
2021-09-08 02:33:24 +03:00
Dmitry Gutov
0a18899f06 Fix recently broken vc-delete-file with Git
* lisp/vc/vc-git.el (vc-git-delete-file):
Treat FILE as string, not list (bug#50334).
2021-09-03 03:34:18 +03:00
Dmitry Gutov
d2ad64b7a5 Move the expansion of abbreviated names to vc-git.el
* lisp/vc/vc-git.el (vc-git--literal-pathspec):
Perform the expansion of abbreviated file names here instead
(bug#39452).

* lisp/vc/vc.el (vc-root-diff, vc-print-root-log):
Undo the recent change.
2021-08-31 02:47:31 +03:00
Juri Linkov
3360f03926 Revert part of 3572613550 (bug#39452)
* lisp/vc/vc-git.el (vc-git-rename-file): Don't use vc-git--literal-pathspecs.
2021-08-27 20:12:30 +03:00
Dmitry Gutov
4ac29b943b Rename arguments for clarity
* lisp/vc/vc-git.el (vc-git--literal-pathspecs)
(vc-git--literal-pathspecs):
Rename arguments for clarity (bug#39452).
2021-08-26 04:48:05 +03:00
Dmitry Gutov
2b62b2a019 Make sure to remove the remote specification before adding :(literal)
* lisp/vc/vc-git.el (vc-git--literal-pathspec):
Make sure to remove the remote specification from the file name
(bug#50175, bug#39452).
2021-08-26 04:44:21 +03:00