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.devel Subject: Re: count all spelling typos in a given buffer. Date: Thu, 30 Nov 2023 10:28:06 +0100 Message-ID: <87il5j615l.fsf@mat.ucm.es> References: <87jzq08yw3.fsf@mat.ucm.es> <87leagb7rp.fsf@dataswamp.org> 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="40573"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/29.0.50 (gnu/linux) To: emacs-devel@gnu.org Cancel-Lock: sha1:hXqUvApPxMpjYVHi2hcvLzwtWL0= Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Thu Nov 30 12:27:38 2023 Return-path: Envelope-to: ged-emacs-devel@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 1r8fCk-000AKn-F4 for ged-emacs-devel@m.gmane-mx.org; Thu, 30 Nov 2023 12:27:38 +0100 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1r8fBZ-00020J-Jy; Thu, 30 Nov 2023 06:26:26 -0500 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1r8dLN-0005nq-FN for emacs-devel@gnu.org; Thu, 30 Nov 2023 04:28:26 -0500 Original-Received: from ciao.gmane.io ([116.202.254.214]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1r8dLJ-0001P4-A1 for emacs-devel@gnu.org; Thu, 30 Nov 2023 04:28:23 -0500 Original-Received: from list by ciao.gmane.io with local (Exim 4.92) (envelope-from ) id 1r8dLG-0003rr-87 for emacs-devel@gnu.org; Thu, 30 Nov 2023 10:28:18 +0100 X-Injected-Via-Gmane: http://gmane.org/ Mail-Followup-To: emacs-devel@gnu.org Mail-Copies-To: never Received-SPF: pass client-ip=116.202.254.214; envelope-from=ged-emacs-devel@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.249, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=no autolearn_force=no X-Spam_action: no action X-Mailman-Approved-At: Thu, 30 Nov 2023 06:26:23 -0500 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Original-Sender: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Xref: news.gmane.io gmane.emacs.devel:313392 Archived-At: --==-=-= Content-Type: multipart/mixed; boundary="=-=-=" --=-=-= Content-Type: text/plain Content-Transfer-Encoding: quoted-printable >>> "EB" =3D=3D Emanuel Berg writes: > Uwe Brauer wrote: >> I asked this already on the emacs help list, but maybe >> somebody here, knows about the following feature, namely: >> Count all the typos, ispell (flyspell) finds in >> given buffer. > I posted this solution on gnu.emacs.help several days ago but > it hasn't appeared, anyway here you go. Thanks very much > ;;; -*- lexical-binding: t -*- > ;; > ;; this file: > ;; https://dataswamp.org/~incal/emacs-init/spell.el I also tried to download spell.el but that file needs dwim.el which I don't have and can't find in the emacs git tree (just pulled) However I tried your code, and I also downloaded some of your packages, inc= luding your misc.el=20 Be it as it may., when I execute ispell-count, I receive Starting "look" process... let: Autoloading file /home/oub/emacs/site-lisp/packages/berg-code/misc.el = failed to define function forward-to-word Quit When I rename your misc.el, restart emacs. I try it again and then I obtain another error which I attach Maybe I need a actualised version of your misc.el? Thanks=20 > (require 'cl-lib) > (defun ispell-count (&optional beg end) > (interactive > (if (use-region-p) > (list (region-beginning) (region-end)) )) > (or beg (setq beg (point-min))) > (or end (setq end (point-max))) > (save-mark-and-excursion > (goto-char beg) > (forward-word) > (backward-word) > (cl-loop > with words =3D 0 > with errors =3D 0 > while (< (point) end) > do (let ((word (thing-at-point 'word t))) > (unless (ispell-lookup-words word) > (cl-incf errors) ) > (cl-incf words) > (forward-to-word) ) > finally (message "%s words checked, %s errors" words errors) ))) > ;; this is a region wiht two > ;; worsd spelled incorrectly =2D-=20 I strongly condemn Hamas heinous atrocities on Israel, especially the despi= cable pogroms. I strongly condemn Putin's war of aggression against Ukraine. I support to deliver weapons to Ukraine's military.=20 I support the EU and NATO membership of Ukraine.=20 --=-=-= Content-Type: text/plain Content-Disposition: attachment; filename=ispell-count-bug.txt Debugger entered--Lisp error: (wrong-number-of-arguments (1 . 1) 0) forward-to-word() (let ((word (thing-at-point 'word t))) (if (ispell-lookup-words word) nil (setq errors (1+ errors))) (setq words (1+ words)) (forward-to-word)) (while (< (point) end) (let ((word (thing-at-point 'word t))) (if (ispell-lookup-words word) nil (setq errors (1+ errors))) (setq words (1+ words)) (forward-to-word))) (let* ((words 0) (errors 0)) (while (< (point) end) (let ((word (thing-at-point 'word t))) (if (ispell-lookup-words word) nil (setq errors (1+ errors))) (setq words (1+ words)) (forward-to-word))) (message "%s words checked, %s errors" words errors) nil) (save-excursion (goto-char beg) (forward-word) (backward-word) (let* ((words 0) (errors 0)) (while (< (point) end) (let ((word (thing-at-point 'word t))) (if (ispell-lookup-words word) nil (setq errors (1+ errors))) (setq words (1+ words)) (forward-to-word))) (message "%s words checked, %s errors" words errors) nil)) (unwind-protect (save-excursion (goto-char beg) (forward-word) (backward-word) (let* ((words 0) (errors 0)) (while (< (point) end) (let ((word (thing-at-point ... t))) (if (ispell-lookup-words word) nil (setq errors (1+ errors))) (setq words (1+ words)) (forward-to-word))) (message "%s words checked, %s errors" words errors) nil)) (save-mark-and-excursion--restore saved-marker)) (let ((saved-marker (save-mark-and-excursion--save))) (unwind-protect (save-excursion (goto-char beg) (forward-word) (backward-word) (let* ((words 0) (errors 0)) (while (< (point) end) (let ((word ...)) (if (ispell-lookup-words word) nil (setq errors ...)) (setq words (1+ words)) (forward-to-word))) (message "%s words checked, %s errors" words errors) nil)) (save-mark-and-excursion--restore saved-marker))) ispell-count(1779 1837) funcall-interactively(ispell-count 1779 1837) call-interactively(ispell-count record nil) command-execute(ispell-count record) execute-extended-command(nil "ispell-count" "ispell-cou") funcall-interactively(execute-extended-command nil "ispell-count" "ispell-cou") call-interactively(execute-extended-command nil nil) command-execute(execute-extended-command) --=-=-=-- --==-=-= 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/OeJj5NyDxAmGRDagGFl4wZbZvFA0ZlAbdcKYETCCB14wggZGoAMCAQICEE7jGLDR L7reYiUcckKTal4wDQYJKoZIhvcNAQELBQAwSzELMAkGA1UEBhMCRVMxETAPBgNVBAoMCEZOTVQt UkNNMQ4wDAYDVQQLDAVDZXJlczEZMBcGA1UEAwwQQUMgRk5NVCBVc3VhcmlvczAeFw0yMjAzMDYy MDQxMjJaFw0yNjAzMDYyMDQxMjJaMIGBMQswCQYDVQQGEwJFUzEYMBYGA1UEBRMPSURDRVMtWDIw NjQxMjNCMRkwFwYDVQQqDBBVV0UgUklDSEFSRCBPVFRPMQ8wDQYDVQQEDAZCUkFVRVIxLDAqBgNV BAMMI0JSQVVFUiBVV0UgUklDSEFSRCBPVFRPIC0gWDIwNjQxMjNCMIIBIjANBgkqhkiG9w0BAQEF AAOCAQ8AMIIBCgKCAQEAoJVE/sbo1m+uKynMrhlC2uwucKui15DqfQf8185jc8VjjJyuMoV+JG0T cb9HhpVodL2WCW83Gb2OKq1pr90ZCscCYR0XOOy6ZclnNhMaPvf9dZrogt9SR7XUI03UJsaWg7xK upApj+zaAMFGmzYNzPH1h/rWVxvK12NoURkmSF31t+sdnJXsCiciUL1qdl5X0AtL85WjAnR2bMmf Jw17jPkq+sXSBGL73Y2GwoZyrP8jM5acfjyDW6vYc4Ia9f0znfOD9yuneJi0UeDBHgJ42oYT83DP gGiTow6uxUNj0t2lJGsEKnBrBTYlkDq49XUOTOcdv5TDUpDk1Awacl/6gQIDAQABo4IEBTCCBAEw bwYDVR0RBGgwZoEOT1VCQE1BVC5VQ00uRVOkVDBSMRgwFgYJKwYBBAGsZgEEDAlYMjA2NDEyM0Ix FTATBgkrBgEEAaxmAQIMBkJSQVVFUjEfMB0GCSsGAQQBrGYBAQwQVVdFIFJJQ0hBUkQgT1RUTzAM BgNVHRMBAf8EAjAAMA4GA1UdDwEB/wQEAwIF4DAdBgNVHSUEFjAUBggrBgEFBQcDBAYIKwYBBQUH AwIwHQYDVR0OBBYEFGVctturectaj2GUB3MWVsUmJHlRMB8GA1UdIwQYMBaAFLHUT8QjefpEBQnG 6znP6DWwuCBkMIGCBggrBgEFBQcBAQR2MHQwPQYIKwYBBQUHMAGGMWh0dHA6Ly9vY3NwdXN1LmNl cnQuZm5tdC5lcy9vY3NwdXN1L09jc3BSZXNwb25kZXIwMwYIKwYBBQUHMAKGJ2h0dHA6Ly93d3cu Y2VydC5mbm10LmVzL2NlcnRzL0FDVVNVLmNydDCCARUGA1UdIASCAQwwggEIMIH6BgorBgEEAaxm AwoBMIHrMCkGCCsGAQUFBwIBFh1odHRwOi8vd3d3LmNlcnQuZm5tdC5lcy9kcGNzLzCBvQYIKwYB BQUHAgIwgbAMga1DZXJ0aWZpY2FkbyBjdWFsaWZpY2FkbyBkZSBmaXJtYSBlbGVjdHLDs25pY2Eu IFN1amV0byBhIGxhcyBjb25kaWNpb25lcyBkZSB1c28gZXhwdWVzdGFzIGVuIGxhIERQQyBkZSBs YSBGTk1ULVJDTSBjb24gTklGOiBRMjgyNjAwNC1KIChDL0pvcmdlIEp1YW4gMTA2LTI4MDA5LU1h ZHJpZC1Fc3Bhw7FhKTAJBgcEAIvsQAEAMIG6BggrBgEFBQcBAwSBrTCBqjAIBgYEAI5GAQEwCwYG BACORgEDAgEPMBMGBgQAjkYBBjAJBgcEAI5GAQYBMHwGBgQAjkYBBTByMDcWMWh0dHBzOi8vd3d3 LmNlcnQuZm5tdC5lcy9wZHMvUERTQUNVc3Vhcmlvc19lcy5wZGYTAmVzMDcWMWh0dHBzOi8vd3d3 LmNlcnQuZm5tdC5lcy9wZHMvUERTQUNVc3Vhcmlvc19lbi5wZGYTAmVuMIG1BgNVHR8Ega0wgaow gaeggaSggaGGgZ5sZGFwOi8vbGRhcHVzdS5jZXJ0LmZubXQuZXMvY249Q1JMNTQxOSxjbj1BQyUy MEZOTVQlMjBVc3VhcmlvcyxvdT1DRVJFUyxvPUZOTVQtUkNNLGM9RVM/Y2VydGlmaWNhdGVSZXZv Y2F0aW9uTGlzdDtiaW5hcnk/YmFzZT9vYmplY3RjbGFzcz1jUkxEaXN0cmlidXRpb25Qb2ludDAN BgkqhkiG9w0BAQsFAAOCAQEAQfp9/80Z3s4+aMrO9sGDDmjPpZF5P9neOg6DiWyamKRhTiNwU1Ho VXIXEU3lzb5tHmqwb/TmZmCJINYDGflzeNxR4OIEDbqUKrdLJ8nRQ2G6X8w7LmvImUGI+WRxizPZ nTBxh+12akO7XEiq2JNW5JOV2z5e3jO0C4Y9fXj0E30O5N3JpDbWfH8JcpTSJdNAetfON1pa7ZLK N0NAMuJc5OUAKzlJsvE6D8L8eRooM/unrqygLOmu3e0f37Gtf7fE0IDIJwh101twvs3ArNMmRFhn 5GBChF6+ubXqyQyZrY6DDV8X9rGkki1n8JIOxpNOexgYgbmav0oekc+3LTUHATGCAiAwggIcAgEB MF8wSzELMAkGA1UEBhMCRVMxETAPBgNVBAoMCEZOTVQtUkNNMQ4wDAYDVQQLDAVDZXJlczEZMBcG A1UEAwwQQUMgRk5NVCBVc3VhcmlvcwIQTuMYsNEvut5iJRxyQpNqXjANBglghkgBZQMEAgEFAKCB kzAYBgkqhkiG9w0BCQMxCwYJKoZIhvcNAQcBMBwGCSqGSIb3DQEJBTEPFw0yMzExMzAwOTI4MDZa MCgGCSqGSIb3DQEJDzEbMBkwCwYJYIZIAWUDBAECMAoGCCqGSIb3DQMHMC8GCSqGSIb3DQEJBDEi BCBYWgdboEVgvhsF6Bf3QKCd5NdL+FaYpveJJB3X6IuFLzANBgkqhkiG9w0BAQEFAASCAQBU3uTT z/b8DZB+yU5+YBr0hS7pJ3tS463Yd9giOhXotPfxCZntjbyWDF1/UYqa5cPNSi/CjM1mO2TBdXIA SPEMtNVkc3Wv0W4K7loWl7qKIQsbXE6bquduiRf9B+zhVvfyxKUR9dSaRVH3EEc253dTiTRCgFOg j157+2zdmWfkZokiAVzW3QpfYW+rkrhnGT0ShCLAzQbNroL45/GuqFOW00HKdLympX5VMl4W2XWk s3Il66Y2GOUzJlkj2I4qxZyoI0peNIxQpbMNmYyrJRtvh0GnrSxdnCPKRISYPeeVD4IfvLceZ2tx IClQYNm2YSQzgpoOhGn64OPux2myWlU2AAAAAAAA --==-=-=--