mirror of
git://git.sv.gnu.org/emacs.git
synced 2026-02-17 10:27:41 +00:00
Fix more shy group regexps
These issues were caught by modified versions of the GNU ELPA packages xr and relint: - https://github.com/mattiase/xr/pull/6 - https://github.com/mattiase/relint/pull/14 * lisp/gnus/gnus-art.el (gnus-parse-news-url): Remove redundant numbered group and calls to match-string. * lisp/progmodes/c-ts-mode.el (c-ts-mode--c-or-c++-regexp): Fix shy group mistyped as optional colon (bug#64019#29). * lisp/vc/vc-git.el (vc-git-annotate-time): Ditto. Also fix timezone parsing by using iso8601-parse (bug#64069). * test/lisp/vc/vc-git-tests.el (vc-git-test-annotate-time): New test.
This commit is contained in:
parent
f47cf7110e
commit
fef27d28fa
4 changed files with 33 additions and 12 deletions
|
|
@ -8331,11 +8331,10 @@ url is put as the `gnus-button-url' overlay property on the button."
|
|||
(when (looking-at "\\([A-Za-z]+\\):")
|
||||
(setq scheme (match-string 1))
|
||||
(goto-char (match-end 0)))
|
||||
(when (looking-at "//\\([^:/]+\\)\\(:?\\)\\([0-9]+\\)?/")
|
||||
(when (looking-at "//\\([^:/]+\\):?\\([0-9]+\\)?/")
|
||||
(setq server (match-string 1))
|
||||
(setq port (if (stringp (match-string 3))
|
||||
(string-to-number (match-string 3))
|
||||
(match-string 3)))
|
||||
(setq port (and (match-beginning 2)
|
||||
(string-to-number (match-string 2))))
|
||||
(goto-char (match-end 0)))
|
||||
|
||||
(cond
|
||||
|
|
|
|||
|
|
@ -1355,7 +1355,7 @@ recommended to enable `electric-pair-mode' with this mode."
|
|||
"\\|" id "::"
|
||||
"\\|" id ws-maybe "=\\)"
|
||||
"\\|" "\\(?:inline" ws "\\)?namespace"
|
||||
"\\(:?" ws "\\(?:" id "::\\)*" id "\\)?" ws-maybe "{"
|
||||
"\\(?:" ws "\\(?:" id "::\\)*" id "\\)?" ws-maybe "{"
|
||||
"\\|" "class" ws id
|
||||
"\\(?:" ws "final" "\\)?" ws-maybe "[:{;\n]"
|
||||
"\\|" "struct" ws id "\\(?:" ws "final" ws-maybe "[:{\n]"
|
||||
|
|
|
|||
|
|
@ -1723,14 +1723,19 @@ This requires git 1.8.4 or later, for the \"-L\" option of \"git log\"."
|
|||
|
||||
(declare-function vc-annotate-convert-time "vc-annotate" (&optional time))
|
||||
|
||||
(autoload 'decoded-time-set-defaults "time-date")
|
||||
(autoload 'iso8601-parse "iso8601")
|
||||
|
||||
(defun vc-git-annotate-time ()
|
||||
(and (re-search-forward "^[0-9a-f^]+[^()]+(.*?\\([0-9]+\\)-\\([0-9]+\\)-\\([0-9]+\\) \\(:?\\([0-9]+\\):\\([0-9]+\\):\\([0-9]+\\) \\([-+0-9]+\\)\\)? *[0-9]+) " nil t)
|
||||
(vc-annotate-convert-time
|
||||
(apply #'encode-time (mapcar (lambda (match)
|
||||
(if (match-beginning match)
|
||||
(string-to-number (match-string match))
|
||||
0))
|
||||
'(6 5 4 3 2 1 7))))))
|
||||
(and (re-search-forward "^[0-9a-f^]+[^()]+(.*?\\([0-9]+-[0-9]+-[0-9]+\\)\\(?: \\([0-9]+:[0-9]+:[0-9]+\\) \\([-+0-9]+\\)\\)? +[0-9]+) " nil t)
|
||||
(let* ((dt (match-string 1))
|
||||
(dt (if (not (match-beginning 2)) dt
|
||||
;; Format as ISO 8601.
|
||||
(concat dt "T" (match-string 2) (match-string 3))))
|
||||
(decoded (ignore-errors (iso8601-parse dt))))
|
||||
(and decoded
|
||||
(vc-annotate-convert-time
|
||||
(encode-time (decoded-time-set-defaults decoded)))))))
|
||||
|
||||
(defun vc-git-annotate-extract-revision-at-line ()
|
||||
(save-excursion
|
||||
|
|
|
|||
|
|
@ -64,4 +64,21 @@
|
|||
(actual-output (vc-git--program-version)))
|
||||
(should (equal actual-output expected-output))))
|
||||
|
||||
(ert-deftest vc-git-test-annotate-time ()
|
||||
"Test `vc-git-annotate-time'."
|
||||
(require 'vc-annotate)
|
||||
(with-temp-buffer
|
||||
(insert "\
|
||||
00000000 (Foo Bar 2023-06-14 1) a
|
||||
00000001 (Foo Bar 2023-06-14 00:00:00 -0130 2) b
|
||||
00000002 (Foo Bar 2023-06-14 00:00:00 +0145 3) c
|
||||
00000003 (Foo Bar 2023-06-14 00:00:00 4) d
|
||||
00000004 (Foo Bar 0-0-0 5) \n")
|
||||
(goto-char (point-min))
|
||||
(should (floatp (vc-git-annotate-time)))
|
||||
(should (> (vc-git-annotate-time)
|
||||
(vc-git-annotate-time)))
|
||||
(should-not (vc-git-annotate-time))
|
||||
(should-not (vc-git-annotate-time))))
|
||||
|
||||
;;; vc-git-tests.el ends here
|
||||
|
|
|
|||
Loading…
Reference in a new issue