From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Uwe Brauer Newsgroups: gmane.emacs.bugs Subject: bug#51215: Add a navigation feature to vc and diff mode: diff-goto-line Date: Mon, 01 Nov 2021 08:24:04 +0100 Message-ID: <87bl34qqy3.fsf@mat.ucm.es> References: <87k0ifpcc2.fsf@mat.ucm.es> <9618968c-f3f4-da4f-4dba-e34a88036ced@yandex.ru> <87k0iag5vr.fsf@mat.ucm.es> <87ee8ig5ib.fsf@mat.ucm.es> <87lf2ple0n.fsf@mail.linkov.net> Mime-Version: 1.0 Content-Type: multipart/signed; boundary="=-=-="; micalg=sha256; protocol="application/pkcs7-signature" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="26539"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (gnu/linux) To: 51215@debbugs.gnu.org Cancel-Lock: sha1:+tfxgGht+Bqk749qbPrc8EI9heE= Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Mon Nov 01 08:25:15 2021 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1mhRgw-0006fh-Pz for geb-bug-gnu-emacs@m.gmane-mx.org; Mon, 01 Nov 2021 08:25:14 +0100 Original-Received: from localhost ([::1]:46964 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mhRgu-00053z-R3 for geb-bug-gnu-emacs@m.gmane-mx.org; Mon, 01 Nov 2021 03:25:12 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:54208) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mhRgk-0004xj-6c for bug-gnu-emacs@gnu.org; Mon, 01 Nov 2021 03:25:02 -0400 Original-Received: from debbugs.gnu.org ([209.51.188.43]:50291) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1mhRgj-0002D1-Sw for bug-gnu-emacs@gnu.org; Mon, 01 Nov 2021 03:25:01 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1mhRgj-000524-N1 for bug-gnu-emacs@gnu.org; Mon, 01 Nov 2021 03:25:01 -0400 X-Loop: help-debbugs@gnu.org In-Reply-To: <87k0ifpcc2.fsf@mat.ucm.es> Resent-From: Uwe Brauer Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Mon, 01 Nov 2021 07:25:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 51215 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch X-Debbugs-Original-To: bug-gnu-emacs@gnu.org Original-Received: via spool by submit@debbugs.gnu.org id=B.163575146519300 (code B ref -1); Mon, 01 Nov 2021 07:25:01 +0000 Original-Received: (at submit) by debbugs.gnu.org; 1 Nov 2021 07:24:25 +0000 Original-Received: from localhost ([127.0.0.1]:33604 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mhRg9-00051E-Ei for submit@debbugs.gnu.org; Mon, 01 Nov 2021 03:24:25 -0400 Original-Received: from lists.gnu.org ([209.51.188.17]:45154) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mhRg7-000516-9f for submit@debbugs.gnu.org; Mon, 01 Nov 2021 03:24:23 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:54090) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mhRg7-0002jS-4f for bug-gnu-emacs@gnu.org; Mon, 01 Nov 2021 03:24:23 -0400 Original-Received: from ciao.gmane.io ([116.202.254.214]:57494) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mhRg4-00028G-FQ for bug-gnu-emacs@gnu.org; Mon, 01 Nov 2021 03:24:22 -0400 Original-Received: from list by ciao.gmane.io with local (Exim 4.92) (envelope-from ) id 1mhRg2-0005bG-Dq for bug-gnu-emacs@gnu.org; Mon, 01 Nov 2021 08:24:18 +0100 X-Injected-Via-Gmane: http://gmane.org/ Mail-Followup-To: bug-gnu-emacs@gnu.org Mail-Copies-To: never Received-SPF: pass client-ip=116.202.254.214; envelope-from=geb-bug-gnu-emacs@m.gmane-mx.org; helo=ciao.gmane.io X-Spam_score_int: -16 X-Spam_score: -1.7 X-Spam_bar: - X-Spam_report: (-1.7 / 5.0 requ) BAYES_00=-1.9, HEADER_FROM_DIFFERENT_DOMAINS=0.248, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list 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-mx.org@gnu.org Original-Sender: "bug-gnu-emacs" Xref: news.gmane.io gmane.emacs.bugs:218744 Archived-At: --=-=-= Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable >>> "JL" =3D=3D Juri Linkov writes: Hi Juri I did not see your message, thanks very much for this detailed information >>> https://debbugs.gnu.org/cgi/bugreport.cgi?bug=3D36526 >>> Is a different patch than the one I committed. Mine (=3DDavis) does not >>> touch the vc-root-diff command it is on a strict one-file base and >>> therefore simpler. >>> Why not apply =C2=ABmine=C2=BB and if there is sufficient interest swit= ch to 36526? >>=20 >> Read further down, we've discussed (unfortunately briefly) Davis's patch >> closer to the end: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=3D36526= #53 >>=20 >> I don't object to applying it, but like I said, it needs someone to >> champion it, do a proper review. I don't have the time or interest at the >> moment. > I have been using Davis's patch for a long time > and collected a long list of its problems below. > Later I could try to help fixing all these issues: Great. > 1. diff-goto-line doesn't work with 'C-x v D' Right, that is the vc-root-diff command. As I said before in my understanding Davis patch is just suited for a one-file-analysis. So that could later be added > 2. 'C-c C-d' (log-edit-show-diff) leaves point at end, should leave at be= ginning Oh, I admit it is the first time I come across that command (or I have used= it in the past and forgot it). When I try it out I obtain=20 ,---- | Debugger entered--Lisp error: (error "Diff functionality has not been set= up") | signal(error ("Diff functionality has not been setup")) | error("Diff functionality has not been setup") | #f(compiled-function () #)() | log-edit-show-diff() | funcall-interactively(log-edit-show-diff) | apply(funcall-interactively log-edit-show-diff nil) | repeat-complex-command(1) | funcall-interactively(repeat-complex-command 1) | call-interactively(repeat-complex-command nil nil) | command-execute(repeat-complex-command) `---- The documentation of that function is sparse to say the least. Could that be a git only thing? That is getting a bit off topic but any advice would be appreciated. > 3. It should be customizable > 4. This feature is unusable with 'C-c C-d' (log-edit-show-diff): > 5. Often when committing a change 'C-c C-d' (log-edit-show-diff) > displays only the end of the diff buffer, so some parts of the diff > might be committed unnoticed. This is because 'diff-goto-line' > moves point to some random place in the diff output. It's difficult > to understand its logic, why it decides to move to the middle of the > multi-file diff. > Sometimes displaying the end of the diff buffer makes an impression > that it's a complete diff buffer, thus a danger to miss the > beginning of the partially hidden diff buffer. > 6. 'C-c C-d' (log-edit-show-diff) > read-file-name("Use file /dev/null: " "/dev/" "/dev/null" t "null") > diff-find-file-name() > diff-goto-line("Makefile" 33 0) I need to set this up to reproduce it > 7. on the last hunk it signals the error: "user-error: No next hunk" > 8. compilation warnings: > vc/diff-mode.el:706:1: Warning: Unused lexical variable `i' > vc/diff-mode.el:733:30: Warning: reference to free variable Well that was written in 2016 without lexical binding I suppose > 9. signals an error: > Debugger entered--Lisp error: (wrong-type-argument stringp nil) > string-to-number(nil) > (let ((start (string-to-number (match-string 3))) (len (string-to-numbe= r (match-string 4)))) > (cond ((eobp) nil) ((looking-at diff-hunk-header-re-unified > (progn (condition-case nil (diff-hunk-next) > (while (progn (condition-case nil (diff-hunk-next) > (if (eobp) (goto-char (point-min)) (forward-line -1) (while > diff-goto-line("manifest.js" 1 0) > apply(diff-goto-line ("manifest.js" 1 0)) > vc-diff-finish I can reproduce this. Can you give me a recipe Uwe=20 --=-=-= Content-Type: application/pkcs7-signature; name=smime.p7s Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=smime.p7s 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 zuQnycCAN4ldn23nkeGADprP9ZqptC0pK1osMJWBfVZ/Gqq/3gJ0/3fCnWAuWf/THNWs1h1je8ye jE3bmfT3FYzJu9Ir4h2qIYBFLve/W8tt2nMevau6iz4x5GKBoX9n7dbUKmJo7PYnIMD4a8y8stc8 12MtB6HhZ7OG4tjfjAU5qX/4vB2TiugctzEtlJQrI14R4c2psEcCAwEAAaOCAsgwggLEMBIGA1Ud EwEB/wQIMAYBAf8CAQAwDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBSx1E/EI3n6RAUJxus5z+g1 sLggZDCBmAYIKwYBBQUHAQEEgYswgYgwSQYIKwYBBQUHMAGGPWh0dHA6Ly9vY3NwZm5tdHJjbWNh LmNlcnQuZm5tdC5lcy9vY3NwZm5tdHJjbWNhL09jc3BSZXNwb25kZXIwOwYIKwYBBQUHMAKGL2h0 dHA6Ly93d3cuY2VydC5mbm10LmVzL2NlcnRzL0FDUkFJWkZOTVRSQ00uY3J0MB8GA1UdIwQYMBaA FPd9xf3E6Jobd2Sn9R2gzL+HYJptMIHrBgNVHSAEgeMwgeAwgd0GBFUdIAAwgdQwKQYIKwYBBQUH AgEWHWh0dHA6Ly93d3cuY2VydC5mbm10LmVzL2RwY3MvMIGmBggrBgEFBQcCAjCBmQyBllN1amV0 byBhIGxhcyBjb25kaWNpb25lcyBkZSB1c28gZXhwdWVzdGFzIGVuIGxhIERlY2xhcmFjacOzbiBk ZSBQcsOhY3RpY2FzIGRlIENlcnRpZmljYWNpw7NuIGRlIGxhIEZOTVQtUkNNICggQy8gSm9yZ2Ug SnVhbiwgMTA2LTI4MDA5LU1hZHJpZC1Fc3Bhw7FhKTCB1AYDVR0fBIHMMIHJMIHGoIHDoIHAhoGQ bGRhcDovL2xkYXBmbm10LmNlcnQuZm5tdC5lcy9DTj1DUkwsT1U9QUMlMjBSQUlaJTIwRk5NVC1S Q00sTz1GTk1ULVJDTSxDPUVTP2F1dGhvcml0eVJldm9jYXRpb25MaXN0O2JpbmFyeT9iYXNlP29i amVjdGNsYXNzPWNSTERpc3RyaWJ1dGlvblBvaW50hitodHRwOi8vd3d3LmNlcnQuZm5tdC5lcy9j cmxzL0FSTEZOTVRSQ00uY3JsMA0GCSqGSIb3DQEBCwUAA4ICAQCMPSi04H4N825c2lx3PYBkHk7p ErjJ5rL/K4CgeD2ETCxliy/c8WMr591SQduv/BcLjJqE8gnUXVainvmCZsCFXpxe6oPnfEaOfl/m Y+2rYu9GTidhlYG9TQI9qTQPmfnma1aVA599S/t84k4S76QLRLU8egExWyZhIJKUdQJ21s77rMMF CDFAbKUdNp4giM6giVZtrtlMvZB8PnYgSUbsFWKaQWWr4J+xAjTvryniACmZnvljHdGUE4ZA0WCM RRcGIVhaHNUxPi39J1WxGuY/7+qFXGrj/tnci4x/603VYYeC5yPwyjxih3bkPKl7oW8YGyIrvIwU /9J93VkDxQd6LvfrB5ZU/bklFRq7Sviso4Bix+aHvIuBjmx+xiVLYZFMBGMxoo4P1pir5vo4NIJ5 Vk+x4lNCuHxFpXSAZfZzWoddskj1Tet6v/JAl0tyUfHDPNmXrMy1Z7T7OuIrVdliq5KzQPi7buGf 1E2OJbh/iEXr6Pa3k+u/dDEL2KwsI0rLjQ+H1yPOv5hhEhr4W8BApqYXvC/41dLmdNciOZpoIXnQ a+Vqir+uBJiFzRVWdt/pofERQoKj2bGrVWlaAUKtRXrzoTzIxL8YjIMz173tgN4Epp4P1Cg3Chsx W8i/r3kmYXT/OeJj5NyDxAmGRDagGFl4wZbZvFA0ZlAbdcKYETCCB14wggZGoAMCAQICEHyPZdFE 3gS5WtRZrC7IKYIwDQYJKoZIhvcNAQELBQAwSzELMAkGA1UEBhMCRVMxETAPBgNVBAoMCEZOTVQt UkNNMQ4wDAYDVQQLDAVDZXJlczEZMBcGA1UEAwwQQUMgRk5NVCBVc3VhcmlvczAeFw0xODA0MTYw ODA3MDhaFw0yMjA0MTYwODA3MDhaMIGBMQswCQYDVQQGEwJFUzEYMBYGA1UEBRMPSURDRVMtWDIw NjQxMjNCMRkwFwYDVQQqDBBVV0UgUklDSEFSRCBPVFRPMQ8wDQYDVQQEDAZCUkFVRVIxLDAqBgNV BAMMI0JSQVVFUiBVV0UgUklDSEFSRCBPVFRPIC0gWDIwNjQxMjNCMIIBIjANBgkqhkiG9w0BAQEF AAOCAQ8AMIIBCgKCAQEAzS7yAm9gXjzxCrn15XBUuZz/gDM/KQi589qGkENYw7LiHtxKBOncld1o FohvckNdY7A8AJiHVVVoA6BXF7DI0BGFwaQ5qUDlzq7mW9+zL+OLXNSp52lfuERPd2y18LaHLp34 czgsvaCTzPl//lrDz6sa5Q//1DlNuzbjY/Afgd+jPPCI4wjOPcW3k1pvEf9Ed1nmAEiqAfyeHN/n RSfL83jACwvvkrJFg3gxTKrp7QJUdbTAomwPhQcsTWFxdA4FXPAZlYrhiM/qGRp/IKzRUCwIIebD qmkfLZIRl1gm9RFzzpps+dcw4qV7nRcA2KWQwjd36pVQxVF1e1BXq+BZjwIDAQABo4IEBTCCBAEw bwYDVR0RBGgwZoEOb3ViQG1hdC51Y20uZXOkVDBSMRgwFgYJKwYBBAGsZgEEDAlYMjA2NDEyM0Ix FTATBgkrBgEEAaxmAQIMBkJSQVVFUjEfMB0GCSsGAQQBrGYBAQwQVVdFIFJJQ0hBUkQgT1RUTzAM BgNVHRMBAf8EAjAAMA4GA1UdDwEB/wQEAwIF4DAdBgNVHSUEFjAUBggrBgEFBQcDBAYIKwYBBQUH AwIwHQYDVR0OBBYEFORUbZuzfTkfXyYfMh59Q0C0evYpMB8GA1UdIwQYMBaAFLHUT8QjefpEBQnG 6znP6DWwuCBkMIGCBggrBgEFBQcBAQR2MHQwPQYIKwYBBQUHMAGGMWh0dHA6Ly9vY3NwdXN1LmNl cnQuZm5tdC5lcy9vY3NwdXN1L09jc3BSZXNwb25kZXIwMwYIKwYBBQUHMAKGJ2h0dHA6Ly93d3cu Y2VydC5mbm10LmVzL2NlcnRzL0FDVVNVLmNydDCCARUGA1UdIASCAQwwggEIMIH6BgorBgEEAaxm AwoBMIHrMCkGCCsGAQUFBwIBFh1odHRwOi8vd3d3LmNlcnQuZm5tdC5lcy9kcGNzLzCBvQYIKwYB BQUHAgIwgbAMga1DZXJ0aWZpY2FkbyBjdWFsaWZpY2FkbyBkZSBmaXJtYSBlbGVjdHLDs25pY2Eu IFN1amV0byBhIGxhcyBjb25kaWNpb25lcyBkZSB1c28gZXhwdWVzdGFzIGVuIGxhIERQQyBkZSBs YSBGTk1ULVJDTSBjb24gTklGOiBRMjgyNjAwNC1KIChDL0pvcmdlIEp1YW4gMTA2LTI4MDA5LU1h ZHJpZC1Fc3Bhw7FhKTAJBgcEAIvsQAEAMIG6BggrBgEFBQcBAwSBrTCBqjAIBgYEAI5GAQEwCwYG BACORgEDAgEPMBMGBgQAjkYBBjAJBgcEAI5GAQYBMHwGBgQAjkYBBTByMDcWMWh0dHBzOi8vd3d3 LmNlcnQuZm5tdC5lcy9wZHMvUERTQUNVc3Vhcmlvc19lcy5wZGYTAmVzMDcWMWh0dHBzOi8vd3d3 LmNlcnQuZm5tdC5lcy9wZHMvUERTQUNVc3Vhcmlvc19lbi5wZGYTAmVuMIG1BgNVHR8Ega0wgaow gaeggaSggaGGgZ5sZGFwOi8vbGRhcHVzdS5jZXJ0LmZubXQuZXMvY249Q1JMMTgwNixjbj1BQyUy MEZOTVQlMjBVc3VhcmlvcyxvdT1DRVJFUyxvPUZOTVQtUkNNLGM9RVM/Y2VydGlmaWNhdGVSZXZv Y2F0aW9uTGlzdDtiaW5hcnk/YmFzZT9vYmplY3RjbGFzcz1jUkxEaXN0cmlidXRpb25Qb2ludDAN BgkqhkiG9w0BAQsFAAOCAQEAZvJUHMPzj+us0nNHF9NuVpoY1yQL9NzCMCBHYdHQPmc4ITA8zYwa jTXv9lj6P+JDAoa/kqFImCOLcy0ZL4VucSZgtTA8HDuU6mzM11Gf4VKeLnJk9T8EJr5/HQDw+okC r5YlPfyX3y14qdscFa1UJCASfH9PMk8NDF9sr7qHhz/SmapSF87Co8V8uCrCSODmdBHZCAfAIb35 ujfEUuXi0cVkW9PwHltpA1ahA8TXuIXWkk+Ot2NIy5M2SlLVnSUInArMkbc9meIQKpKHTl2oSFm6 PA272V54F5VoKfYLRk38PAZosWyAHiXDLMl3ZgN7ZZZsc17WPeu3kCICEkW1IzGCAiAwggIcAgEB MF8wSzELMAkGA1UEBhMCRVMxETAPBgNVBAoMCEZOTVQtUkNNMQ4wDAYDVQQLDAVDZXJlczEZMBcG A1UEAwwQQUMgRk5NVCBVc3VhcmlvcwIQfI9l0UTeBLla1FmsLsgpgjANBglghkgBZQMEAgEFAKCB kzAYBgkqhkiG9w0BCQMxCwYJKoZIhvcNAQcBMBwGCSqGSIb3DQEJBTEPFw0yMTExMDEwNzI0MDRa MCgGCSqGSIb3DQEJDzEbMBkwCwYJYIZIAWUDBAECMAoGCCqGSIb3DQMHMC8GCSqGSIb3DQEJBDEi BCB9g64RJ4zmNbnT/pIqOsDZEmJUAj4HtH6XAxfot7clnzANBgkqhkiG9w0BAQEFAASCAQA+Iuzj Lz8U9Pq/VoaeSocaNHluzBvbUryiPrElhvBZJIgOBguXZ6Xu7fNeEWmJ/lBQMvU/l0L5MtQkQ4os nJXu/oAK5TLI1yh4VD1sbPoAq7ofB4SZolKIz6WZYRoZtLOzoQ/hs9mLKVTRMo+bp0JLjenJRrem Ueax8Du6/RWCS5dWdPKGCHrdf386ZE87bsBi/sqLbBjUK4f8XQyMxBe+xEc36emEcAUYxkhz0tcX nnyLpciP6nBU9gnzF3z7p82ZQFJ7A3TUHByHLJqqb4xMblnLc6FscrgCy89FxuSbQJ6W44Ji/n/I PqwOcTHsxmK97WJMCFdrWGe0ykcXbsBkAAAAAAAA --=-=-=--