From unknown Mon Jun 23 06:01:24 2025 X-Loop: help-debbugs@gnu.org Subject: bug#32280: 26.1; FLYSPELL-BUFFER sometimes misbehaves for some input in a large enough buffer Resent-From: Artem Boldarev Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Thu, 26 Jul 2018 12:39:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 32280 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: 32280@debbugs.gnu.org X-Debbugs-Original-To: bug-gnu-emacs@gnu.org Received: via spool by submit@debbugs.gnu.org id=B.153260872714248 (code B ref -1); Thu, 26 Jul 2018 12:39:01 +0000 Received: (at submit) by debbugs.gnu.org; 26 Jul 2018 12:38:47 +0000 Received: from localhost ([127.0.0.1]:58472 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fifXa-0003hj-8J for submit@debbugs.gnu.org; Thu, 26 Jul 2018 08:38:47 -0400 Received: from eggs.gnu.org ([208.118.235.92]:45112) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ficpF-0005WD-8H for submit@debbugs.gnu.org; Thu, 26 Jul 2018 05:44:50 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ficp6-0001gS-St for submit@debbugs.gnu.org; Thu, 26 Jul 2018 05:44:43 -0400 Received: from lists.gnu.org ([2001:4830:134:3::11]:35593) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1ficp6-0001gO-Ox for submit@debbugs.gnu.org; Thu, 26 Jul 2018 05:44:40 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:36061) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ficp3-0003Ac-GE for bug-gnu-emacs@gnu.org; Thu, 26 Jul 2018 05:44:40 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ficp0-0001aX-Hl for bug-gnu-emacs@gnu.org; Thu, 26 Jul 2018 05:44:37 -0400 Received: from mail-lf1-x143.google.com ([2a00:1450:4864:20::143]:46341) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1ficp0-0001Zk-1X for bug-gnu-emacs@gnu.org; Thu, 26 Jul 2018 05:44:34 -0400 Received: by mail-lf1-x143.google.com with SMTP id l16-v6so749287lfc.13 for ; Thu, 26 Jul 2018 02:44:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=to:from:subject:message-id:date:user-agent:mime-version :content-transfer-encoding:content-language; bh=mN6o0YEn9ealGjKby/X5WmaXRBAyCRIvZlRsMG+PCSI=; b=bFGtLggdyBCkoCAs4pKQQ1+Y33+8dAQL1eA035N44Zf35mqJP5Sdfr4vKru6/EaJ9o x045FFLzqNzBCufFeOblsIH+8LjNHMoDzpNbZO6fmHYRp3uG6nbVYe9pdKNxaV6pwEtF ZF4X13BONjX2txlPMCT4x8A2o2MA2frRuIbMXOzGIjXBEkwza8Mg4xVXvQV2eKbRFNte R2O2VIHVfuKrwA3bNJ0FYmfzVBYvLuWR9tKREvO49R8s/9mgFGDtdl0njltuNDZZfECk CiUTnet0Ex2ity/l0bxYXhiwjTLEMpF4gj5kEZ1CMHdA9sWi1UbK73SVGv/zoypDBdG8 nKuQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:to:from:subject:message-id:date:user-agent :mime-version:content-transfer-encoding:content-language; bh=mN6o0YEn9ealGjKby/X5WmaXRBAyCRIvZlRsMG+PCSI=; b=n0aibEvstneIh9r+Hza7hCzg99sJP4JPFO2USmLU9i8ewwWjk8WDPNpefNvAdewfZz KkGP9tpZ1x3ByE/L0SCPf+b+qPOfTZAxsYabbBUv5KMS6U2Vwptpz1rOnYcLLBH8bej1 qhA6/FArlM0D0FdQJy7jV/Ezqw+65aOhtQxQNGp/GLlcYInnkRkI2dKvnld0/MB7umOA CaM9et7u9EKqQGB9gf+j42HOZlF+FQd2nqVHi8/k8qEkTK+rg2CCWkoTAkwwB7OJLP0b U/KJb5uDiqHdWBxrJPoWnp6nC11xLvrHpCyf6Wi1C5F6muzLvepqc4q/7n1j21AhCOP9 cn8g== X-Gm-Message-State: AOUpUlFLI3CTpZXcyoGyEIJGa8E6ofeVlZsOlF4/lLIYlZUXttcHChEO vhAnt9UbSQKt1EIKPuUWu3UEwT/L X-Google-Smtp-Source: AAOMgpflG0JAP6Zu3eRNgeCOV1Zr4vDX+kc09/1HxR4LgTSEkM/XIV47UpAaNcWW18x7HLmYQANkIg== X-Received: by 2002:a19:6b03:: with SMTP id d3-v6mr874159lfa.81.1532598271476; Thu, 26 Jul 2018 02:44:31 -0700 (PDT) Received: from [192.168.8.8] ([178.165.7.18]) by smtp.gmail.com with ESMTPSA id h24-v6sm144797ljg.55.2018.07.26.02.44.30 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 26 Jul 2018 02:44:30 -0700 (PDT) From: Artem Boldarev Message-ID: <992503e5-5f88-30c7-e9b9-fe0a884d2e52@gmail.com> Date: Thu, 26 Jul 2018 12:44:26 +0300 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Thunderbird/52.9.1 MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 8bit Content-Language: ru X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6.x X-Received-From: 2001:4830:134:3::11 X-Spam-Score: -4.0 (----) X-Mailman-Approved-At: Thu, 26 Jul 2018 08:38:45 -0400 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -5.0 (-----) Checking large enough buffer with FlySpell leads to the unexpected results (at least, when spell checking Russian, but I believe that it is possible to reproduce the bug for other languages, at least Ukrainian). For example, when checking large enough buffer (large enough to trigger flyspell-large-region) I got the following messages in the *Messages* buffer: Local Ispell dictionary set to ru_RU Starting new Ispell process hunspell with ru_RU dictionary... Checking region... Spell Checking...100% [посимвольно] Spell Checking completed.  -> смом - 346: word not found  -> стостояния - 319: word not found  -> рекрсивного - 308: word not found  -> универсальнее - 266: word not found  -> генериует - 222: word not found It was not able to find the misspelt words to highlight them in the buffer which I tried to spell check. On the other hand, some not misspelt words were highlighted (именно, бесконечный, усложняет).  Under other circumstances, these words are not highlighted as misspelt (which is as it should be). The problem turned out to be in the flyspell-external-point-words: It makes some heuristic checks before calling (flyspell-word nil t). It seems that these checks are OK for English, as I never encountered any problems when spell-checking English texts. Here is the version of the function which seems to be correct: (defun flyspell-external-point-words ()   "Mark words from a buffer listing incorrect words in order of appearance. The list of incorrect words should be in `flyspell-external-ispell-buffer'. \(We finish by killing that buffer and setting the variable to nil.) The buffer to mark them in is `flyspell-large-region-buffer'."   (let (words-not-found     (ispell-otherchars (ispell-get-otherchars))     (buffer-scan-pos flyspell-large-region-beg)     case-fold-search)     (with-current-buffer flyspell-external-ispell-buffer       (goto-char (point-min))       ;; Loop over incorrect words, in the order they were reported,       ;; which is also the order they appear in the buffer being checked.       (while (re-search-forward "\\([^\n]+\\)\n" nil t)     ;; Bind WORD to the next one.     (let ((word (match-string 1)) (wordpos (point)))       ;; Here there used to be code to see if WORD is the same       ;; as the previous iteration, and count the number of consecutive       ;; identical words, and the loop below would search for that many.       ;; That code seemed to be incorrect, and on principle, should       ;; be unnecessary too. -- rms.       (if flyspell-issue-message-flag           (message "Spell Checking...%d%% [%s]"                (floor (* 100.0 (point)) (point-max))                word))       (with-current-buffer flyspell-large-region-buffer         (goto-char buffer-scan-pos)         (let ((keep t))           ;; Iterate on string search until string is found as word,           ;; not as substring.           (while keep         (if (search-forward word                     flyspell-large-region-end t)             (let* ((found-list                 (save-excursion                   ;; Move back into the match                   ;; so flyspell-get-word will find it.                   (forward-char -1)                   (flyspell-get-word)))                (found (car found-list))                (found-length (length found))                (misspell-length (length word)))               (when (or                  ;; Size and content matches, we really found it.                  (and (= found-length misspell-length)                       (string= found word))                  ;; Matches as part of a boundary-char separated                  ;; word.                  (member word                          (split-string found ispell-otherchars))                  ;; ispell treats beginning of some TeX                  ;; commands as nroff control sequences                  ;; and strips them in the list of                  ;; misspelled words thus giving a                  ;; non-existent word.  Skip if ispell                  ;; is used, string is a TeX command                  ;; (char before beginning of word is                  ;; backslash) and none of the previous                  ;; conditions match.                  (and (not ispell-really-aspell)                   (save-excursion                     (goto-char (- (nth 1 found-list) 1))                     (if (looking-at "[\\]" )                     t                       nil))))             (setq keep nil)             (flyspell-word nil t)             ;; Search for next misspelled word will begin from             ;; end of last validated match.             (setq buffer-scan-pos (point))))           ;; Record if misspelling is not found and try new one           (cl-pushnew (concat " -> " word " - "                        (int-to-string wordpos))                               words-not-found :test #'equal)           (setq keep nil)))))))       ;; we are done       (if flyspell-issue-message-flag (message "Spell Checking completed.")))     ;; Warn about not found misspellings     (dolist (word words-not-found)       (message "%s: word not found" word))     ;; Kill and forget the buffer with the list of incorrect words.     (kill-buffer flyspell-external-ispell-buffer)     (setq flyspell-external-ispell-buffer nil))) The important lines are the following:                  ;; Size and content matches, we really found it.                  (and (= found-length misspell-length)                       (string= found word))                  ;; Matches as part of a boundary-char separated                  ;; word.                  (member word                          (split-string found ispell-otherchars))                  ;; ispell treats beginning of some TeX                  ;; commands as nroff control sequences                  ;; and strips them in the list of                  ;; misspelled words thus giving a                  ;; non-existent word.  Skip if ispell                  ;; is used, string is a TeX command                  ;; (char before beginning of word is                  ;; backslash) and none of the previous                  ;; conditions match.                  (and (not ispell-really-aspell)                   (save-excursion                     (goto-char (- (nth 1 found-list) 1))                     (if (looking-at "[\\]" )                     t                       nil)))) The important parts of my configuration:     (setq ispell-program-name "hunspell")     ;; set dictionaries     (setq ispell-dictionary-alist           '(("en_GB"              "[A-Za-z]" "[^A-Za-z]"              "[']" nil ("-d en_GB") nil iso-8859-1)             ("ru_RU"  "[АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЬЫЪЭЮЯабвгдеёжзийклмнопрстуфхцчшщьыъэюя]"  "[^АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЬЫЪЭЮЯабвгдеёжзийклмнопрстуфхцчшщьыъэюя]"              "[-]" nil ("-d ru_RU") nil utf-8)             ("uk_UA"  "[АБВГДЕЄЖЗИІЇЙКЛМНОПРСТУФХЦЧШЩЬЮЯАабвгдеєжзиіїйклмнопрстуфхцчшщьюя]"  "[^АБВГДЕЄЖЗИІЇЙКЛМНОПРСТУФХЦЧШЩЬЮЯАабвгдеєжзиіїйклмнопрстуфхцчшщьюя]"              "[-']" nil ("-d uk_UA") nil utf-8)             )) I hope you will investigate the problem. In GNU Emacs 26.1 (build 1, x86_64-pc-linux-gnu, GTK+ Version 3.22.30)  of 2018-07-05 built on juergen Windowing system distributor 'HC-Consult', version 11.0.12000000 Recent messages: Omitted 3 lines. Omitting... (Nothing to omit) Wrote /home/artem/.emacs.data/desktop/emacs.desktop-lock Desktop: 1 frame, 19 buffers restored, 1 failed to restore. Turning on magit-auto-revert-mode...done (0.427s, 27 buffers checked) For information about GNU Emacs and the GNU system, type C-h C-a. Making completion list... user-error: Beginning of history; no preceding item user-error: End of history; no default available Configured using:  'configure --prefix=/usr --sysconfdir=/etc --libexecdir=/usr/lib  --localstatedir=/var --with-x-toolkit=gtk3 --with-xft --with-modules  'CFLAGS=-march=x86-64 -mtune=generic -O2 -pipe -fstack-protector-strong  -fno-plt' CPPFLAGS=-D_FORTIFY_SOURCE=2  LDFLAGS=-Wl,-O1,--sort-common,--as-needed,-z,relro,-z,now' Configured features: XPM JPEG TIFF GIF PNG RSVG IMAGEMAGICK SOUND GPM DBUS GSETTINGS NOTIFY ACL GNUTLS LIBXML2 FREETYPE M17N_FLT LIBOTF XFT ZLIB TOOLKIT_SCROLL_BARS GTK3 X11 MODULES THREADS LIBSYSTEMD LCMS2 Important settings:   value of $LANG: en_US.UTF-8   locale-coding-system: utf-8-unix Major mode: Text Minor modes in effect:   display-line-numbers-mode: t   desktop-save-mode: t   global-magit-file-mode: t   diff-auto-refine-mode: t   magit-auto-revert-mode: t   global-git-commit-mode: t   async-bytecomp-package-mode: t   gud-tooltip-mode: t   flyspell-mode: t   shell-dirtrack-mode: t   winner-mode: t   global-auto-complete-mode: t   ido-everywhere: t   show-paren-mode: t   global-auto-revert-mode: t   cl-old-struct-compat-mode: t   tooltip-mode: t   global-eldoc-mode: t   electric-indent-mode: t   mouse-wheel-mode: t   menu-bar-mode: t   file-name-shadow-mode: t   global-font-lock-mode: t   font-lock-mode: t   blink-cursor-mode: t   auto-composition-mode: t   auto-encryption-mode: t   auto-compression-mode: t   column-number-mode: t   line-number-mode: t   transient-mark-mode: t Load-path shadows: /home/artem/.emacs.data/elpa/xcscope-20180426.12/xcscope hides /usr/share/emacs/site-lisp/xcscope /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/ox hides /usr/share/emacs/26.1/lisp/org/ox /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/ox-texinfo hides /usr/share/emacs/26.1/lisp/org/ox-texinfo /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/ox-publish hides /usr/share/emacs/26.1/lisp/org/ox-publish /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/ox-org hides /usr/share/emacs/26.1/lisp/org/ox-org /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/ox-odt hides /usr/share/emacs/26.1/lisp/org/ox-odt /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/ox-md hides /usr/share/emacs/26.1/lisp/org/ox-md /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/ox-man hides /usr/share/emacs/26.1/lisp/org/ox-man /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/ox-latex hides /usr/share/emacs/26.1/lisp/org/ox-latex /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/ox-icalendar hides /usr/share/emacs/26.1/lisp/org/ox-icalendar /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/ox-html hides /usr/share/emacs/26.1/lisp/org/ox-html /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/ox-beamer hides /usr/share/emacs/26.1/lisp/org/ox-beamer /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/ox-ascii hides /usr/share/emacs/26.1/lisp/org/ox-ascii /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/org hides /usr/share/emacs/26.1/lisp/org/org /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/org-w3m hides /usr/share/emacs/26.1/lisp/org/org-w3m /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/org-version hides /usr/share/emacs/26.1/lisp/org/org-version /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/org-timer hides /usr/share/emacs/26.1/lisp/org/org-timer /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/org-table hides /usr/share/emacs/26.1/lisp/org/org-table /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/org-src hides /usr/share/emacs/26.1/lisp/org/org-src /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/org-rmail hides /usr/share/emacs/26.1/lisp/org/org-rmail /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/org-protocol hides /usr/share/emacs/26.1/lisp/org/org-protocol /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/org-plot hides /usr/share/emacs/26.1/lisp/org/org-plot /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/org-pcomplete hides /usr/share/emacs/26.1/lisp/org/org-pcomplete /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/org-mouse hides /usr/share/emacs/26.1/lisp/org/org-mouse /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/org-mobile hides /usr/share/emacs/26.1/lisp/org/org-mobile /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/org-mhe hides /usr/share/emacs/26.1/lisp/org/org-mhe /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/org-macs hides /usr/share/emacs/26.1/lisp/org/org-macs /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/org-macro hides /usr/share/emacs/26.1/lisp/org/org-macro /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/org-loaddefs hides /usr/share/emacs/26.1/lisp/org/org-loaddefs /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/org-list hides /usr/share/emacs/26.1/lisp/org/org-list /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/org-lint hides /usr/share/emacs/26.1/lisp/org/org-lint /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/org-irc hides /usr/share/emacs/26.1/lisp/org/org-irc /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/org-install hides /usr/share/emacs/26.1/lisp/org/org-install /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/org-inlinetask hides /usr/share/emacs/26.1/lisp/org/org-inlinetask /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/org-info hides /usr/share/emacs/26.1/lisp/org/org-info /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/org-indent hides /usr/share/emacs/26.1/lisp/org/org-indent /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/org-id hides /usr/share/emacs/26.1/lisp/org/org-id /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/org-habit hides /usr/share/emacs/26.1/lisp/org/org-habit /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/org-gnus hides /usr/share/emacs/26.1/lisp/org/org-gnus /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/org-footnote hides /usr/share/emacs/26.1/lisp/org/org-footnote /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/org-feed hides /usr/share/emacs/26.1/lisp/org/org-feed /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/org-faces hides /usr/share/emacs/26.1/lisp/org/org-faces /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/org-eww hides /usr/share/emacs/26.1/lisp/org/org-eww /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/org-eshell hides /usr/share/emacs/26.1/lisp/org/org-eshell /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/org-entities hides /usr/share/emacs/26.1/lisp/org/org-entities /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/org-element hides /usr/share/emacs/26.1/lisp/org/org-element /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/org-duration hides /usr/share/emacs/26.1/lisp/org/org-duration /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/org-docview hides /usr/share/emacs/26.1/lisp/org/org-docview /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/org-datetree hides /usr/share/emacs/26.1/lisp/org/org-datetree /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/org-ctags hides /usr/share/emacs/26.1/lisp/org/org-ctags /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/org-crypt hides /usr/share/emacs/26.1/lisp/org/org-crypt /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/org-compat hides /usr/share/emacs/26.1/lisp/org/org-compat /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/org-colview hides /usr/share/emacs/26.1/lisp/org/org-colview /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/org-clock hides /usr/share/emacs/26.1/lisp/org/org-clock /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/org-capture hides /usr/share/emacs/26.1/lisp/org/org-capture /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/org-bibtex hides /usr/share/emacs/26.1/lisp/org/org-bibtex /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/org-bbdb hides /usr/share/emacs/26.1/lisp/org/org-bbdb /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/org-attach hides /usr/share/emacs/26.1/lisp/org/org-attach /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/org-archive hides /usr/share/emacs/26.1/lisp/org/org-archive /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/org-agenda hides /usr/share/emacs/26.1/lisp/org/org-agenda /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/ob hides /usr/share/emacs/26.1/lisp/org/ob /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/ob-vala hides /usr/share/emacs/26.1/lisp/org/ob-vala /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/ob-tangle hides /usr/share/emacs/26.1/lisp/org/ob-tangle /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/ob-table hides /usr/share/emacs/26.1/lisp/org/ob-table /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/ob-stan hides /usr/share/emacs/26.1/lisp/org/ob-stan /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/ob-sqlite hides /usr/share/emacs/26.1/lisp/org/ob-sqlite /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/ob-sql hides /usr/share/emacs/26.1/lisp/org/ob-sql /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/ob-shen hides /usr/share/emacs/26.1/lisp/org/ob-shen /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/ob-shell hides /usr/share/emacs/26.1/lisp/org/ob-shell /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/ob-sed hides /usr/share/emacs/26.1/lisp/org/ob-sed /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/ob-screen hides /usr/share/emacs/26.1/lisp/org/ob-screen /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/ob-scheme hides /usr/share/emacs/26.1/lisp/org/ob-scheme /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/ob-sass hides /usr/share/emacs/26.1/lisp/org/ob-sass /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/ob-ruby hides /usr/share/emacs/26.1/lisp/org/ob-ruby /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/ob-ref hides /usr/share/emacs/26.1/lisp/org/ob-ref /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/ob-python hides /usr/share/emacs/26.1/lisp/org/ob-python /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/ob-processing hides /usr/share/emacs/26.1/lisp/org/ob-processing /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/ob-plantuml hides /usr/share/emacs/26.1/lisp/org/ob-plantuml /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/ob-picolisp hides /usr/share/emacs/26.1/lisp/org/ob-picolisp /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/ob-perl hides /usr/share/emacs/26.1/lisp/org/ob-perl /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/ob-org hides /usr/share/emacs/26.1/lisp/org/ob-org /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/ob-octave hides /usr/share/emacs/26.1/lisp/org/ob-octave /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/ob-ocaml hides /usr/share/emacs/26.1/lisp/org/ob-ocaml /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/ob-mscgen hides /usr/share/emacs/26.1/lisp/org/ob-mscgen /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/ob-maxima hides /usr/share/emacs/26.1/lisp/org/ob-maxima /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/ob-matlab hides /usr/share/emacs/26.1/lisp/org/ob-matlab /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/ob-makefile hides /usr/share/emacs/26.1/lisp/org/ob-makefile /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/ob-lua hides /usr/share/emacs/26.1/lisp/org/ob-lua /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/ob-lob hides /usr/share/emacs/26.1/lisp/org/ob-lob /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/ob-lisp hides /usr/share/emacs/26.1/lisp/org/ob-lisp /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/ob-lilypond hides /usr/share/emacs/26.1/lisp/org/ob-lilypond /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/ob-ledger hides /usr/share/emacs/26.1/lisp/org/ob-ledger /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/ob-latex hides /usr/share/emacs/26.1/lisp/org/ob-latex /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/ob-keys hides /usr/share/emacs/26.1/lisp/org/ob-keys /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/ob-js hides /usr/share/emacs/26.1/lisp/org/ob-js /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/ob-java hides /usr/share/emacs/26.1/lisp/org/ob-java /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/ob-io hides /usr/share/emacs/26.1/lisp/org/ob-io /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/ob-hledger hides /usr/share/emacs/26.1/lisp/org/ob-hledger /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/ob-haskell hides /usr/share/emacs/26.1/lisp/org/ob-haskell /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/ob-groovy hides /usr/share/emacs/26.1/lisp/org/ob-groovy /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/ob-gnuplot hides /usr/share/emacs/26.1/lisp/org/ob-gnuplot /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/ob-fortran hides /usr/share/emacs/26.1/lisp/org/ob-fortran /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/ob-forth hides /usr/share/emacs/26.1/lisp/org/ob-forth /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/ob-exp hides /usr/share/emacs/26.1/lisp/org/ob-exp /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/ob-eval hides /usr/share/emacs/26.1/lisp/org/ob-eval /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/ob-emacs-lisp hides /usr/share/emacs/26.1/lisp/org/ob-emacs-lisp /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/ob-ebnf hides /usr/share/emacs/26.1/lisp/org/ob-ebnf /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/ob-dot hides /usr/share/emacs/26.1/lisp/org/ob-dot /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/ob-ditaa hides /usr/share/emacs/26.1/lisp/org/ob-ditaa /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/ob-css hides /usr/share/emacs/26.1/lisp/org/ob-css /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/ob-core hides /usr/share/emacs/26.1/lisp/org/ob-core /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/ob-coq hides /usr/share/emacs/26.1/lisp/org/ob-coq /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/ob-comint hides /usr/share/emacs/26.1/lisp/org/ob-comint /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/ob-clojure hides /usr/share/emacs/26.1/lisp/org/ob-clojure /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/ob-calc hides /usr/share/emacs/26.1/lisp/org/ob-calc /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/ob-awk hides /usr/share/emacs/26.1/lisp/org/ob-awk /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/ob-asymptote hides /usr/share/emacs/26.1/lisp/org/ob-asymptote /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/ob-abc hides /usr/share/emacs/26.1/lisp/org/ob-abc /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/ob-R hides /usr/share/emacs/26.1/lisp/org/ob-R /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/ob-J hides /usr/share/emacs/26.1/lisp/org/ob-J /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/ob-C hides /usr/share/emacs/26.1/lisp/org/ob-C Features: (shadow mail-extr emacsbug sendmail linum lisp-mnt macrostep-c cmacexp macrostep irony-cdb-libclang irony-cdb-json irony-cdb-clang-complete irony-cdb company-oddmuse company-keywords company-etags company-gtags company-dabbrev-code company-dabbrev company-files company-capf company-cmake company-xcode company-clang company-semantic company-eclim company-bbdb company-irony company-template irony-eldoc flycheck-irony irony-diagnostics irony-completion irony-snippet ac-slime sort dired-aux jka-compr display-line-numbers hl-line plan9-theme basic-theme desktop frameset magit-bookmark magit-obsolete magit-blame magit-stash magit-bisect magit-remote magit-commit magit-sequence magit-notes magit-worktree magit-tag magit-merge magit-branch magit-reset magit-collab ghub let-alist magit-files magit-refs magit-status magit magit-repos magit-apply magit-wip magit-log which-func imenu magit-diff smerge-mode diff-mode magit-core magit-autorevert magit-process magit-margin magit-mode git-commit magit-git magit-section magit-utils crm magit-popup log-edit message rfc822 mml mml-sec epa derived epg mm-decode mm-bodies mm-encode mailabbrev gmm-utils mailheader pcvs-util add-log with-editor async-bytecomp async irony irony-iotask ggtags ewoc xcscope cc-mode cc-fonts cc-guess cc-menus cc-cmds cc-styles cc-align cc-engine cc-vars cc-defs deft cl ox-bibtex ox-odt rng-loc rng-uri rng-parse rng-match rng-dt rng-util rng-pttrn nxml-parse nxml-ns nxml-enc xmltok nxml-util ox-latex ox-icalendar ox-html table ox-ascii ox-publish ox org-element avl-tree generator org org-macro org-footnote org-pcomplete org-list org-faces org-entities org-version ob-emacs-lisp ob ob-tangle org-src ob-ref ob-lob ob-table ob-keys ob-exp ob-comint ob-core ob-eval org-compat org-macs org-loaddefs cal-menu calendar cal-loaddefs robe url-http tls gnutls url-auth mail-parse rfc2231 url-gw nsm rmc inf-ruby ruby-mode smie flymake-lua company-lua lua-mode rcirc cargo cargo-process markdown-mode color company-racer deferred company pcase racer pos-tip f s rust-mode gud flyspell ispell eww puny mm-url gnus nnheader gnus-util rmail rmail-loaddefs rfc2047 rfc2045 ietf-drums mail-utils url-queue shr svg xml dom slime-trace-dialog slime-xref-browser tree-widget wid-edit slime-fancy-inspector slime-fuzzy slime-c-p-c slime-editing-commands slime-asdf grep slime-references slime-compiler-notes-tree slime-autodoc slime-repl slime-parse slime arc-mode archive-mode noutline outline easy-mmode hyperspec browse-url elec-pair dired-x dired dired-loaddefs esh-var esh-io esh-cmd esh-opt esh-ext esh-proc esh-arg esh-groups eshell esh-module esh-mode esh-util bookmark pp url url-proxy url-privacy url-expand url-methods url-history url-cookie url-domsuf url-util mailcap tramp tramp-compat tramp-loaddefs trampver ucs-normalize shell pcomplete parse-time format-spec elisp-slime-nav etags xref project winner flycheck json map find-func subr-x dash advice flymake-proc flymake warnings thingatpt auto-complete-config auto-complete edmacro kmacro popup ido windmove paren autorevert filenotify mm-util mail-prsvr cl-extra help-mode finder-inf tex-site rx slime-autoloads info package easymenu epg-config url-handlers url-parse auth-source cl-seq eieio eieio-core cl-macs eieio-loaddefs password-cache url-vars seq byte-opt gv compile comint ansi-color ring bytecomp byte-compile cconv server cl-loaddefs cl-lib time-date mule-util tooltip eldoc electric uniquify ediff-hook vc-hooks lisp-float-type mwheel term/x-win x-win term/common-win x-dnd tool-bar dnd fontset image regexp-opt fringe tabulated-list replace newcomment text-mode elisp-mode lisp-mode prog-mode register page menu-bar rfn-eshadow isearch timer select scroll-bar mouse jit-lock font-lock syntax facemenu font-core term/tty-colors frame cl-generic cham georgian utf-8-lang misc-lang vietnamese tibetan thai tai-viet lao korean japanese eucjp-ms cp51932 hebrew greek romanian slovak czech european ethiopic indian cyrillic chinese composite charscript charprop case-table epa-hook jka-cmpr-hook help simple abbrev obarray minibuffer cl-preloaded nadvice loaddefs button faces cus-face macroexp files text-properties overlay sha1 md5 base64 format env code-pages mule custom widget hashtable-print-readable backquote dbusbind inotify lcms2 dynamic-setting system-font-setting font-render-setting move-toolbar gtk x-toolkit x multi-tty make-network-process emacs) Memory information: ((conses 16 589646 60784)  (symbols 48 55348 4)  (miscs 40 871 2775)  (strings 32 161266 15744)  (string-bytes 1 4916243)  (vectors 16 85794)  (vector-slots 8 1289279 103516)  (floats 8 429 500)  (intervals 56 2676 0)  (buffers 992 34)) From unknown Mon Jun 23 06:01:24 2025 X-Loop: help-debbugs@gnu.org Subject: bug#32280: 26.1; FLYSPELL-BUFFER sometimes misbehaves for some input in a large enough buffer Resent-From: Eli Zaretskii Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Fri, 27 Jul 2018 12:46:03 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 32280 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Artem Boldarev Cc: 32280@debbugs.gnu.org Received: via spool by 32280-submit@debbugs.gnu.org id=B32280.153269553817131 (code B ref 32280); Fri, 27 Jul 2018 12:46:03 +0000 Received: (at 32280) by debbugs.gnu.org; 27 Jul 2018 12:45:38 +0000 Received: from localhost ([127.0.0.1]:59708 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fj27l-0004SF-PT for submit@debbugs.gnu.org; Fri, 27 Jul 2018 08:45:37 -0400 Received: from eggs.gnu.org ([208.118.235.92]:46764) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fj27k-0004S3-8e for 32280@debbugs.gnu.org; Fri, 27 Jul 2018 08:45:36 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fj27b-0002Qm-Sp for 32280@debbugs.gnu.org; Fri, 27 Jul 2018 08:45:30 -0400 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=0.8 required=5.0 tests=BAYES_50 autolearn=disabled version=3.3.2 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:58838) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fj27b-0002Qb-JN; Fri, 27 Jul 2018 08:45:27 -0400 Received: from [176.228.60.248] (port=3846 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1fj27a-0005RW-VG; Fri, 27 Jul 2018 08:45:27 -0400 Date: Fri, 27 Jul 2018 15:45:27 +0300 Message-Id: <83bmassv88.fsf@gnu.org> From: Eli Zaretskii In-reply-to: <992503e5-5f88-30c7-e9b9-fe0a884d2e52@gmail.com> (message from Artem Boldarev on Thu, 26 Jul 2018 12:44:26 +0300) References: <992503e5-5f88-30c7-e9b9-fe0a884d2e52@gmail.com> MIME-version: 1.0 Content-type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-Spam-Score: -5.0 (-----) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -6.0 (------) > From: Artem Boldarev > Date: Thu, 26 Jul 2018 12:44:26 +0300 > > Checking large enough buffer with FlySpell leads to the unexpected > results (at least, when spell checking Russian, but I believe that it is > possible to reproduce the bug for other languages, at least Ukrainian). > > For example, when checking large enough buffer (large enough to trigger > flyspell-large-region) I got the following messages in the *Messages* > buffer: > > Local Ispell dictionary set to ru_RU > Starting new Ispell process hunspell with ru_RU dictionary... > Checking region... > Spell Checking...100% [посимвольно] > Spell Checking completed. >  -> смом - 346: word not found >  -> стостояния - 319: word not found >  -> рекрсивного - 308: word not found >  -> универсальнее - 266: word not found >  -> генериует - 222: word not found > > It was not able to find the misspelt words to highlight them in the > buffer which I tried > to spell check. On the other hand, some not misspelt words were > highlighted (именно, > бесконечный, усложняет).  Under other circumstances, these words are not > highlighted as misspelt (which is as it should be). Can you post the text where this happens? > The problem turned out to be in the flyspell-external-point-words: It > makes some heuristic checks before calling (flyspell-word nil t). It > seems that these checks are OK for English, as I never encountered any > problems when spell-checking English texts. > > Here is the version of the function which seems to be correct: AFAICT, you have removed a single line: (< found-length misspell-length) Can you take me through your reasoning why this line is incorrect, and what assumptions it made that are correct for English, but not for Russian? Thanks. From unknown Mon Jun 23 06:01:24 2025 X-Loop: help-debbugs@gnu.org Subject: bug#32280: 26.1; FLYSPELL-BUFFER sometimes misbehaves for some input in a large enough buffer Resent-From: Agustin Martin Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Fri, 27 Jul 2018 16:02:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 32280 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: 32280@debbugs.gnu.org, Artem Boldarev Received: via spool by 32280-submit@debbugs.gnu.org id=B32280.15327072674059 (code B ref 32280); Fri, 27 Jul 2018 16:02:01 +0000 Received: (at 32280) by debbugs.gnu.org; 27 Jul 2018 16:01:07 +0000 Received: from localhost ([127.0.0.1]:60553 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fj5Ax-00013P-AX for submit@debbugs.gnu.org; Fri, 27 Jul 2018 12:01:07 -0400 Received: from neon-v1.ccupm.upm.es ([138.100.198.71]:49866) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fj5Av-00013F-1L for 32280@debbugs.gnu.org; Fri, 27 Jul 2018 12:01:05 -0400 Received: from agmartin.aq.upm.es (Agmartin.aq.upm.es [138.100.41.131]) (user=agustin.martin@upm.es mech=LOGIN bits=0) by neon-v1.ccupm.upm.es (8.14.4/8.14.4/neon-v1-002) with ESMTP id w6RG0maM019744 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Fri, 27 Jul 2018 18:00:48 +0200 Received: by agmartin.aq.upm.es (Postfix, from userid 1000) id 592104456D; Fri, 27 Jul 2018 18:00:48 +0200 (CEST) Date: Fri, 27 Jul 2018 18:00:48 +0200 From: Agustin Martin Message-ID: <20180727160048.GA30487@agmartin.aq.upm.es> References: <992503e5-5f88-30c7-e9b9-fe0a884d2e52@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <992503e5-5f88-30c7-e9b9-fe0a884d2e52@gmail.com> User-Agent: Mutt/1.10.1 (2018-07-13) X-Spam-Score: -1.8 (-) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -2.8 (--) On Thu, Jul 26, 2018 at 12:44:26PM +0300, Artem Boldarev wrote: > > Checking large enough buffer with FlySpell leads to the unexpected > results (at least, when spell checking Russian, but I believe that it is > possible to reproduce the bug for other languages, at least Ukrainian). > > For example, when checking large enough buffer (large enough to trigger > flyspell-large-region) I got the following messages in the *Messages* > buffer: > > Local Ispell dictionary set to ru_RU > Starting new Ispell process hunspell with ru_RU dictionary... > Checking region... > Spell Checking...100% [посимвольно] > Spell Checking completed. >  -> смом - 346: word not found >  -> стостояния - 319: word not found >  -> рекрсивного - 308: word not found >  -> универсальнее - 266: word not found >  -> генериует - 222: word not found [...] Hi, >     (setq ispell-dictionary-alist You should not set `ispell-dictionary-alist' yourself. If you really need an entry with special features, add it to `ispell-local-dictionary-alist', better with an ad-hoc name. >           '(("en_GB" >              "[A-Za-z]" "[^A-Za-z]" >              "[']" nil ("-d en_GB") nil iso-8859-1) > >             ("ru_RU" >  "[АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЬЫЪЭЮЯабвгдеёжзийклмнопрстуфхцчшщьыъэюя]" >  "[^АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЬЫЪЭЮЯабвгдеёжзийклмнопрстуфхцчшщьыъэюя]" >              "[-]" nil ("-d ru_RU") nil utf-8) As far as I know hunspell-ru is encoded in koi8-r (at least in Debian lo-dicts), but you declare it as utf-8. Unless your dict is indeed in utf-8 and declared as such, this may be the problem. ¿What happens if you comment all your "(setq ispell-dictionary-alist ... )" stuff and just trust the list of available dictionaries provided by Emacs (Tools/Spellchecking/Change dictionary), selecting ru_RU from it? Regards, -- Agustin From unknown Mon Jun 23 06:01:24 2025 X-Loop: help-debbugs@gnu.org Subject: bug#32280: 26.1; FLYSPELL-BUFFER sometimes misbehaves for some input in a large enough buffer Resent-From: Artem Boldarev Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sat, 28 Jul 2018 00:01:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 32280 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Eli Zaretskii Cc: 32280@debbugs.gnu.org Received: via spool by 32280-submit@debbugs.gnu.org id=B32280.153273603214599 (code B ref 32280); Sat, 28 Jul 2018 00:01:02 +0000 Received: (at 32280) by debbugs.gnu.org; 28 Jul 2018 00:00:32 +0000 Received: from localhost ([127.0.0.1]:60643 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fjCeu-0003nP-In for submit@debbugs.gnu.org; Fri, 27 Jul 2018 20:00:32 -0400 Received: from mail-lf1-f50.google.com ([209.85.167.50]:46472) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fjCes-0003nD-Qj for 32280@debbugs.gnu.org; Fri, 27 Jul 2018 20:00:31 -0400 Received: by mail-lf1-f50.google.com with SMTP id l16-v6so4594557lfc.13 for <32280@debbugs.gnu.org>; Fri, 27 Jul 2018 17:00:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=subject:to:cc:references:from:message-id:date:user-agent :mime-version:in-reply-to:content-transfer-encoding:content-language; bh=tPcG/3zGO27Ufpp1vto5MyXzIKAV3ISVgN1r+/Gu9yk=; b=jC4DYY1klXDOVDFqAV01MwdssKOEOdmtMSoNlhOGf2opAYBMvN98PUX5eofeQ34bXc DfXI3aWkKCkipWdY8tOa7iIzTHGQGgQ6M+phTVIjW9UAMh9+ScrrUcIZlKvm5jD8Q8C6 nDB3HelxEUprzFlZ4Sa3AXUodKKpWjofJTAhjSYTp32Tj7pWsmIttWO45DhsIaOMfPXV oJYh32Zkb3zg13/+umfA8ZF36j+SR2yhNli93LMYmVcu9YnYKWqlb4xi4hkMXpw0Q6qM PlDaTz1nkX3NrtYdRb8VlD8bDo/INGITeSzP4YCr0UEH+UoKgny8PLK9EmNCCuFVI8kq QYiw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:to:cc:references:from:message-id:date :user-agent:mime-version:in-reply-to:content-transfer-encoding :content-language; bh=tPcG/3zGO27Ufpp1vto5MyXzIKAV3ISVgN1r+/Gu9yk=; b=uRSTPbmmQCW4oD6prwhUxZsqX5Y7HCK/XRo9gWdzOpWTebvjXNvDHcJwwuyydcwD1E Ozc3fpTFf5yWxSOoUbBUuQdo2Z36M/T2hewgqFeaFnODXJ2CQwQL0Gy3ZJ+dyPPGPpQg TjFqJBoDooKqTTokjBU8duRArvrq8CmVMtHGiEedrHxxkio4+gRTSKkp0wntxkbXOHtj JTY/f7pRDdquLCD/sfavMj/JXmeLm+oysIHjH13kIiC5RUUnJtlnask7lCy15J7wOg3f ZXYjhSBBxAc0xLTwtCiAgerP7Mv7UoUev+ASEAaoTQDrd2zJE9TosuIyMO/2JHZdrpEK 9gvg== X-Gm-Message-State: AOUpUlF07BEHtbsSIlBZS8c1MOj3++EW+urz5lZWDZrdETdpDGhFJV5J AmCwahjGfjnv9BMvyuAGSzNxCPfk X-Google-Smtp-Source: AAOMgpeMyD9M5mdih58R1kh5AVPIvfgRmTajLFFpJh+9TudWxwqtniS0FT4QPjmR6TgMtn7Y0VeWVQ== X-Received: by 2002:a19:9e8c:: with SMTP id h134-v6mr5012234lfe.63.1532736024513; Fri, 27 Jul 2018 17:00:24 -0700 (PDT) Received: from [192.168.8.8] ([178.165.7.18]) by smtp.gmail.com with ESMTPSA id h3-v6sm714819lfl.49.2018.07.27.17.00.23 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 27 Jul 2018 17:00:23 -0700 (PDT) References: <992503e5-5f88-30c7-e9b9-fe0a884d2e52@gmail.com> <83bmassv88.fsf@gnu.org> From: Artem Boldarev Message-ID: <29a7677b-47ad-a42b-17af-01ff4c06105e@gmail.com> Date: Sat, 28 Jul 2018 03:00:20 +0300 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Thunderbird/52.9.1 MIME-Version: 1.0 In-Reply-To: <83bmassv88.fsf@gnu.org> Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 8bit Content-Language: ru X-Spam-Score: 0.0 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Hello Eli, > Can you post the text where this happens? The text where I encountered the problem is a personal e-mail, so I can not share it as it is. I will try to craft a sample text and describe the steps for bug reproduction using emacs -Q. > AFAICT, you have removed a single line: > > (< found-length misspell-length) I am also replaced: ;; Size matches, we really found it. (= found-length misspell-length) with ;; Size and content matches, we really found it.  (and (= found-length misspell-length)           (string= found word)) I believe, in this case there is no need in  (< found-length misspell-length) anymore. > Can you take me through your reasoning why this line is incorrect, and > what assumptions it made that are correct for English, but not for > Russian? As about my reasoning behind the changes: I felt that it is not right to mark the word as misspelt without actually checking the content. Moreover, look at the original comment right behind the (< found-length misspell-length) line:                  ;; Misspelling has higher length than                  ;; what flyspell considers the word.                              ;; Caused by boundary-chars mismatch.                              ;; Validating seems safe. I am not sure that comparing length of found word and misspelt word is enough to make an assumption that validating is safe (even considering the preceding checks). The keyword here, I think, is 'seems'. For some reason, it really works most of the time. I believe that the bug should be possible to reproduce for texts in English too. For some reason, I have not encountered this problem while spell checking English. I should note that flyspell-buffer works fine for *most* of the texts in Russian and Ukrainian which I have checked and the discussed issue is rarely encountered. I did not know that It exists until  I started using flyspell-buffer regularly. Kind regards, Artem From unknown Mon Jun 23 06:01:24 2025 X-Loop: help-debbugs@gnu.org Subject: bug#32280: 26.1; FLYSPELL-BUFFER sometimes misbehaves for some input in a large enough buffer Resent-From: Artem Boldarev Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sat, 28 Jul 2018 00:01:03 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 32280 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Agustin Martin Cc: 32280@debbugs.gnu.org Received: via spool by 32280-submit@debbugs.gnu.org id=B32280.153273605114637 (code B ref 32280); Sat, 28 Jul 2018 00:01:03 +0000 Received: (at 32280) by debbugs.gnu.org; 28 Jul 2018 00:00:51 +0000 Received: from localhost ([127.0.0.1]:60646 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fjCfC-0003o0-RN for submit@debbugs.gnu.org; Fri, 27 Jul 2018 20:00:51 -0400 Received: from mail-lj1-f175.google.com ([209.85.208.175]:42028) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fjCfB-0003nl-6g for 32280@debbugs.gnu.org; Fri, 27 Jul 2018 20:00:49 -0400 Received: by mail-lj1-f175.google.com with SMTP id f1-v6so5784487ljc.9 for <32280@debbugs.gnu.org>; Fri, 27 Jul 2018 17:00:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:subject:to:cc:references:message-id:date:user-agent :mime-version:in-reply-to:content-transfer-encoding:content-language; bh=qBNDrAk/3/i8odre6NGso6H0Qy2U7hC17CxIyT15Qq4=; b=k+Q6JqvDTnVr5vzykOV3hsC/NSdDJowr7QFBsr10R3TV66hlK+XfNc+SR+/ytkjapT M4uMam2Gsg8xVPfHSRnulPc5zb4f2uzHXVLaXe9DCB58rPqsuzDavll0VKYx4XopSZDn enQWSh8lT3+grMAdQxmjB92p/McP43tm2uvOfB+DACrDmWTbh9KaIhgCpgvMgZm8FCzL tCp/GflQGJvhjUf2gJQ0XMsYHBwlg14sjCoWZfISN26ReUlZVu2M4UGK09aH4INcF0+A jwP2IdIyZEzpzQoQiEH8pTQoK/fZGFl1wYxiGdoGlnqnqd7XVpDRUD0n2Cl+UAAsC6Ad Jufw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:subject:to:cc:references:message-id:date :user-agent:mime-version:in-reply-to:content-transfer-encoding :content-language; bh=qBNDrAk/3/i8odre6NGso6H0Qy2U7hC17CxIyT15Qq4=; b=hwk4gTvcFbUaHmVP+lPUbuWGwW8rXE4pEMah5CX/iVUExa13P1LpedAgauhgpkRvpi eGwDXH/QrZFz7Q8Er9grI1c7i2YkVsMfZJ0aRrdYrHT+GtmiWXIW6OMzgJFHZPekZ/aB LgUtMLPYmyEIYP4wtOoUSLdtCaUaSGRISyRhrLaR6DnAWOB+ChcGO44Koru8NMMnPCub pqV3XMpxpGWYOsCkTG8veVftgO+kjJi8kbKpkkJaKUkDVoeNSXJKcCUEXOOvjHQ93aHh O8or3R8tl1Fk9P3iEzUsgqErn5Ux39xVz5RXghaeY5jvq4sdN0SrcK/WeVE/0SpbqLcd lhdA== X-Gm-Message-State: AOUpUlG7jjbXLPCeallaNScTBaDXonUfU8Hw3Yjq8Tp1i7udyTcMnQsn R1IvZMkAfYGVdP2emSD0xStc5x4N X-Google-Smtp-Source: AAOMgpd4IwoSD+kR2w93Iuq47a26p0wggnn/xq7kO7Le1KFUQEepFkIoFUJeL1SboDK441snZFHepA== X-Received: by 2002:a2e:5b4a:: with SMTP id p71-v6mr6114054ljb.91.1532736042833; Fri, 27 Jul 2018 17:00:42 -0700 (PDT) Received: from [192.168.8.8] ([178.165.7.18]) by smtp.gmail.com with ESMTPSA id y68-v6sm710583lfd.66.2018.07.27.17.00.41 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 27 Jul 2018 17:00:42 -0700 (PDT) From: Artem Boldarev References: <992503e5-5f88-30c7-e9b9-fe0a884d2e52@gmail.com> <20180727160048.GA30487@agmartin.aq.upm.es> Message-ID: Date: Sat, 28 Jul 2018 03:00:40 +0300 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Thunderbird/52.9.1 MIME-Version: 1.0 In-Reply-To: <20180727160048.GA30487@agmartin.aq.upm.es> Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 8bit Content-Language: ru X-Spam-Score: 0.0 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Hello Agustin, Thanks for your suggestion! Unfortunately, it does not work on my system with 'emacs -Q'. So, somehow I need to manually configure my dictionaries anyway. I will consider replacing 'ispell-dictionary-alist'with 'ispell-local-dictionary-alist' in my configuration. Thank you for pointing out. The codepage I specified in the configuration, as it seems, is not the problem as spell checking works fine *most* of the time. I could spellcheck large amounts of text without any issues. It seems that hunspell always uses utf-8 internally, but I am not sure: I will try to investigate this. By the way, I was able to reproduce the problem on the official Windows build of the Emacs with a different version of Hunspell and dictionaries from LibreOffice. > You should not set `ispell-dictionary-alist' yourself. If you really need an > entry with special features, add it to `ispell-local-dictionary-alist', > better with an ad-hoc name. > >>           '(("en_GB" >>              "[A-Za-z]" "[^A-Za-z]" >>              "[']" nil ("-d en_GB") nil iso-8859-1) >> >>             ("ru_RU" >>  "[АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЬЫЪЭЮЯабвгдеёжзийклмнопрстуфхцчшщьыъэюя]" >>  "[^АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЬЫЪЭЮЯабвгдеёжзийклмнопрстуфхцчшщьыъэюя]" >>              "[-]" nil ("-d ru_RU") nil utf-8) > As far as I know hunspell-ru is encoded in koi8-r (at least in Debian > lo-dicts), but you declare it as utf-8. Unless your dict is indeed in utf-8 > and declared as such, this may be the problem. > > ¿What happens if you comment all your "(setq ispell-dictionary-alist ... )" > stuff and just trust the list of available dictionaries provided by Emacs > (Tools/Spellchecking/Change dictionary), selecting ru_RU from it? > > Regards, > From unknown Mon Jun 23 06:01:24 2025 X-Loop: help-debbugs@gnu.org Subject: bug#32280: 26.1; FLYSPELL-BUFFER sometimes misbehaves for some input in a large enough buffer Resent-From: Artem Boldarev Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sat, 28 Jul 2018 00:24:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 32280 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Agustin Martin , 32280@debbugs.gnu.org Received: via spool by 32280-submit@debbugs.gnu.org id=B32280.153273743116827 (code B ref 32280); Sat, 28 Jul 2018 00:24:01 +0000 Received: (at 32280) by debbugs.gnu.org; 28 Jul 2018 00:23:51 +0000 Received: from localhost ([127.0.0.1]:60658 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fjD1T-0004NL-4S for submit@debbugs.gnu.org; Fri, 27 Jul 2018 20:23:51 -0400 Received: from mail-lf1-f44.google.com ([209.85.167.44]:33418) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fjD1S-0004N7-2Z for 32280@debbugs.gnu.org; Fri, 27 Jul 2018 20:23:50 -0400 Received: by mail-lf1-f44.google.com with SMTP id u14-v6so4618598lfu.0 for <32280@debbugs.gnu.org>; Fri, 27 Jul 2018 17:23:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=subject:to:references:from:message-id:date:user-agent:mime-version :in-reply-to:content-transfer-encoding:content-language; bh=Bn6VX88pgM7fP1+37E3ai59JnF7+8N0JSf3SnCI6zgE=; b=YnNSu5KLsUOAStoWYZ8TE0lpjpeUtTaM8hyKLgLGb3xRdoNdyIY6eKYRQmRp/Ir0Xm gpnsIfG7QH5yE5dG8a06zMvy9aHxBzZVVXcdYSfVi2zbSP7/mOQWUNdWCnULIRFhKet2 2Dqa4y0pxPBkeeq1RfW29NJjK9oDRFLgcYCmqIFB/xlT8Ox+eoUhtocn7mPzc9go2xZ0 h6Ncza7sKglOovTEvdMn7hHDJOVf5VNuSteyngmC2oL0jgOroJKg/dhCfdYKcdILoQBn vPjxbN4M4nHk2wZnGoVFfw1GKorL6hcMk9jLml+9ont9/MO1JG+0LQBFCkIegbzHymhi INPA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:to:references:from:message-id:date :user-agent:mime-version:in-reply-to:content-transfer-encoding :content-language; bh=Bn6VX88pgM7fP1+37E3ai59JnF7+8N0JSf3SnCI6zgE=; b=WJvcrnJze9aECulMG1HtMsPspgSvK+0FpJ5PzLuXffKzSLWaxZyqHLZf1mRvBkUSxk YRng5Eg1f9jxGBq54i5Rjpl3RpVChsFXo75FUkNG4KG7JHmI04Nj++0TipeG1EO2LPaR 9tdd5QK6CE3Qqq99CKmrBW4BGNqbZlICnpXt2AblEAHoCcL+zy3dHrINxMA0/+o+lgYP KbZsZj+l+kMIM7rt8JUkppX2igQcF49wgacwRo751ZR03N2xZBnv1uiiKaxEXjkXtuc8 tpLIOb8ULSWWfx3PLE1kVQWsJphktQwNof/pSU23HBpV/Uq+56+bS+JeDODcnilKfqz3 xP3w== X-Gm-Message-State: AOUpUlFpUm5BB6SbOMaXUvwVtVrMsp1PqRa1zBNi92WtuHOQk03kIwGo S/BEcdTd7PmEj3qWSM0jMAsUX55h X-Google-Smtp-Source: AAOMgpeRXyAfFSG5F+Prw+RctzG6Q628bTG6bc55kLlwnaA/rjD92dwF1HYeSsXWV3wmjrwd6Oqn0A== X-Received: by 2002:a19:e40d:: with SMTP id b13-v6mr5491007lfh.141.1532737423995; Fri, 27 Jul 2018 17:23:43 -0700 (PDT) Received: from [192.168.8.8] ([178.165.7.18]) by smtp.gmail.com with ESMTPSA id m9-v6sm720295lfg.0.2018.07.27.17.23.42 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 27 Jul 2018 17:23:43 -0700 (PDT) References: <992503e5-5f88-30c7-e9b9-fe0a884d2e52@gmail.com> <20180727160048.GA30487@agmartin.aq.upm.es> From: Artem Boldarev Message-ID: <2aa9f738-48a8-8c8c-4840-8a34bc6709dd@gmail.com> Date: Sat, 28 Jul 2018 03:23:40 +0300 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Thunderbird/52.9.1 MIME-Version: 1.0 In-Reply-To: <20180727160048.GA30487@agmartin.aq.upm.es> Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 8bit Content-Language: ru X-Spam-Score: 0.0 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Just a quick addition. When doing as you suggested I am getting the following message: Wrong type argument: stringp, nil It is probably because both 'ispell-dictionary-alist' and 'ispell-local-dictionary-alist' are NIL, but I have not investigated it. > ¿What happens if you comment all your "(setq ispell-dictionary-alist ... )" > stuff and just trust the list of available dictionaries provided by Emacs > (Tools/Spellchecking/Change dictionary), selecting ru_RU from it? > > Regards, > From unknown Mon Jun 23 06:01:24 2025 X-Loop: help-debbugs@gnu.org Subject: bug#32280: 26.1; FLYSPELL-BUFFER sometimes misbehaves for some input in a large enough buffer Resent-From: Eli Zaretskii Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sat, 28 Jul 2018 07:03:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 32280 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Artem Boldarev Cc: 32280@debbugs.gnu.org, agustin6martin@gmail.com Received: via spool by 32280-submit@debbugs.gnu.org id=B32280.153276137821507 (code B ref 32280); Sat, 28 Jul 2018 07:03:01 +0000 Received: (at 32280) by debbugs.gnu.org; 28 Jul 2018 07:02:58 +0000 Received: from localhost ([127.0.0.1]:60712 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fjJFi-0005ap-Dg for submit@debbugs.gnu.org; Sat, 28 Jul 2018 03:02:58 -0400 Received: from eggs.gnu.org ([208.118.235.92]:52502) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fjJFg-0005aY-Ip for 32280@debbugs.gnu.org; Sat, 28 Jul 2018 03:02:56 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fjJFa-0005FX-E9 for 32280@debbugs.gnu.org; Sat, 28 Jul 2018 03:02:51 -0400 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=disabled version=3.3.2 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:46974) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fjJFa-0005FQ-AE; Sat, 28 Jul 2018 03:02:50 -0400 Received: from [176.228.60.248] (port=3532 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1fjJFZ-0000v3-Dh; Sat, 28 Jul 2018 03:02:49 -0400 Date: Sat, 28 Jul 2018 10:02:51 +0300 Message-Id: <83o9errgf8.fsf@gnu.org> From: Eli Zaretskii In-reply-to: <2aa9f738-48a8-8c8c-4840-8a34bc6709dd@gmail.com> (message from Artem Boldarev on Sat, 28 Jul 2018 03:23:40 +0300) References: <992503e5-5f88-30c7-e9b9-fe0a884d2e52@gmail.com> <20180727160048.GA30487@agmartin.aq.upm.es> <2aa9f738-48a8-8c8c-4840-8a34bc6709dd@gmail.com> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-Spam-Score: -5.0 (-----) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -6.0 (------) > From: Artem Boldarev > Date: Sat, 28 Jul 2018 03:23:40 +0300 > > Just a quick addition. When doing as you suggested I am getting the > following message: > > Wrong type argument: stringp, nil > > It is probably because both 'ispell-dictionary-alist' and > 'ispell-local-dictionary-alist' are NIL, but I have not investigated it. What is your version of hunspell? And what does it produce if you invoke "hunspell -D" from the shell prompt? From unknown Mon Jun 23 06:01:24 2025 X-Loop: help-debbugs@gnu.org Subject: bug#32280: 26.1; FLYSPELL-BUFFER sometimes misbehaves for some input in a large enough buffer Resent-From: Artem Boldarev Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sun, 29 Jul 2018 14:11:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 32280 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Eli Zaretskii Cc: 32280@debbugs.gnu.org Received: via spool by 32280-submit@debbugs.gnu.org id=B32280.153287340523240 (code B ref 32280); Sun, 29 Jul 2018 14:11:02 +0000 Received: (at 32280) by debbugs.gnu.org; 29 Jul 2018 14:10:05 +0000 Received: from localhost ([127.0.0.1]:33964 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fjmOb-00062l-2L for submit@debbugs.gnu.org; Sun, 29 Jul 2018 10:10:05 -0400 Received: from mail-lf1-f67.google.com ([209.85.167.67]:35437) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fjmOZ-000629-GH for 32280@debbugs.gnu.org; Sun, 29 Jul 2018 10:10:03 -0400 Received: by mail-lf1-f67.google.com with SMTP id f18-v6so6419072lfc.2 for <32280@debbugs.gnu.org>; Sun, 29 Jul 2018 07:10:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=subject:from:to:cc:references:message-id:date:user-agent :mime-version:in-reply-to:content-transfer-encoding:content-language; bh=vF5bKXfSZbqp76vH0ND+h3DR0BMZeV5BhKaH62iu5s4=; b=cryGZk4xe1CAxW8Krkb42jyAHhH3B+9+Boc1JaR2mDF5ihRTskZTv9w0WIJ6wLnXJp PYyK8p6nRWWEaPgSZsrhYWp/54VYbQCy//Hwvr7ze/RCkz7NtEatIFJaWUS+PsSlsODj pZq5wJROtFyzFoDZEnUCs2pO054S57vM/L+BWc7t1exctBtzMvE9ox23lu563zfGN+b2 CWMTwrHKgV/v8I0KsNsohN0ZJ0xBxtJi0dm/Q4zwVyFJYOi7TKlp6cTj/YJnzukY2RJW kEqvd0yS5MlrS7WJAl5icvzVXYTKkFVtSy04f2yaoTIvo35GubWeEuKyhxDbxlwIPvYS bA5A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:from:to:cc:references:message-id:date :user-agent:mime-version:in-reply-to:content-transfer-encoding :content-language; bh=vF5bKXfSZbqp76vH0ND+h3DR0BMZeV5BhKaH62iu5s4=; b=jSznqqklQj9ffagOcxo4MAs8pHeY3kKPuJZD3QIaW83L6mSc7DfqYA04ryoRznSmBy JZXxpoe3JMbZXcRow3jlbAz24lDniVz+GyCxecNUSQAQX+p+U9gjV8oX5OOC2kMu4Gch YKmKSv4bD1EMF7HC5y5C0ldpfiWvoGZhTu7+mN3Wx4sH0LlkoVfXESVN+f2GxZPUt0nY nHsdP0/qqqkOd4Tw5EyZxlNd34AsmrriUFUJ8dNLSBKg1WPe3rNVJad4w5bhNqGLIo/8 LhKQCFwK+2TDOMOLTbEO+2ZyXtn+dxdE7RDSfnwCB6xV/ajESsDGlwh2Dws2YbbJ+KHw d7og== X-Gm-Message-State: AOUpUlEE7fZuXrSl8wfJyHHM8aCXa3EtFxLVh1nKb0kXg84v6fHgVfqR ERO2Fdm1E/8DfA+6hrum7jQUuk/m X-Google-Smtp-Source: AAOMgpdHJAtJ8LXFe79pvRlkJVEeCbQbLvv2YgVolxbDqPaaKhg90XnDTfePCMJ1olvpDZCWlX5wRQ== X-Received: by 2002:a19:db44:: with SMTP id s65-v6mr7838221lfg.109.1532873397057; Sun, 29 Jul 2018 07:09:57 -0700 (PDT) Received: from ?IPv6:2a01:d0:dec0:0:1d18:8e73:1956:539e? ([2a01:d0:dec0:0:1d18:8e73:1956:539e]) by smtp.gmail.com with ESMTPSA id k65-v6sm1590913lje.3.2018.07.29.07.09.55 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sun, 29 Jul 2018 07:09:56 -0700 (PDT) From: Artem Boldarev References: <992503e5-5f88-30c7-e9b9-fe0a884d2e52@gmail.com> <83bmassv88.fsf@gnu.org> <29a7677b-47ad-a42b-17af-01ff4c06105e@gmail.com> Message-ID: Date: Sun, 29 Jul 2018 17:09:54 +0300 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Thunderbird/52.9.1 MIME-Version: 1.0 In-Reply-To: <29a7677b-47ad-a42b-17af-01ff4c06105e@gmail.com> Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 8bit Content-Language: ru X-Spam-Score: 0.0 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Hello, I have crafted some sample data as well as wrote instruction how to reproduce the bug. The sample file can be found by following this link: https://chaoticlab.io/pub/flyspell-bug/flyspell-sample.txt The instruction alongside with the required code can be downloaded from here: https://chaoticlab.io/pub/flyspell-bug/flyspell-bug-reproduction.el I made some screenshots which demonstrate the bug: https://chaoticlab.io/pub/flyspell-bug/flyspell-bug-linux.png https://chaoticlab.io/pub/flyspell-bug/flyspell-bug-windows.png I haven't been able to demonstrate the case when a misspelt word is not highlighted though. I will send an update should I craft the required data. I hope this is helpful. Regards, Artem > Hello Eli, >> Can you post the text where this happens? > The text where I encountered the problem is a personal e-mail, so I > can not share it as it is. I will try to craft a sample text and > describe the steps for bug reproduction using emacs -Q. >> AFAICT, you have removed a single line: >> >>                  (< found-length misspell-length) > > I am also replaced: > ;; Size matches, we really found it. > (= found-length misspell-length) > > with > > ;; Size and content matches, we really found it. >  (and (= found-length misspell-length) >           (string= found word)) > > I believe, in this case there is no need in  (< found-length > misspell-length) anymore. >> Can you take me through your reasoning why this line is incorrect, and >> what assumptions it made that are correct for English, but not for >> Russian? > As about my reasoning behind the changes: I felt that it is not right > to mark the word as misspelt without actually checking the content. > Moreover, look at the original comment right behind the (< > found-length misspell-length) line: >                  ;; Misspelling has higher length than >                  ;; what flyspell considers the word. >                              ;; Caused by boundary-chars mismatch. >                              ;; Validating seems safe. > I am not sure that comparing length of found word and misspelt word is > enough to make an assumption that validating is safe (even considering > the preceding checks). The keyword here, I think, is 'seems'. For some > reason, it really works most of the time. > > I believe that the bug should be possible to reproduce for texts in > English too. For some reason, I have not encountered this problem > while spell checking English. I should note that flyspell-buffer works > fine for *most* of the texts in Russian and Ukrainian which I have > checked and the discussed issue is rarely encountered. I did not know > that It exists until  I started using flyspell-buffer regularly. > > Kind regards, > Artem > From unknown Mon Jun 23 06:01:24 2025 X-Loop: help-debbugs@gnu.org Subject: bug#32280: 26.1; FLYSPELL-BUFFER sometimes misbehaves for some input in a large enough buffer Resent-From: Artem Boldarev Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sun, 29 Jul 2018 14:16:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 32280 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Eli Zaretskii Cc: 32280@debbugs.gnu.org, agustin6martin@gmail.com Received: via spool by 32280-submit@debbugs.gnu.org id=B32280.153287374723735 (code B ref 32280); Sun, 29 Jul 2018 14:16:01 +0000 Received: (at 32280) by debbugs.gnu.org; 29 Jul 2018 14:15:47 +0000 Received: from localhost ([127.0.0.1]:33968 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fjmU7-0006Al-15 for submit@debbugs.gnu.org; Sun, 29 Jul 2018 10:15:47 -0400 Received: from mail-lf1-f67.google.com ([209.85.167.67]:32985) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fjmU5-0006AV-6b for 32280@debbugs.gnu.org; Sun, 29 Jul 2018 10:15:45 -0400 Received: by mail-lf1-f67.google.com with SMTP id u14-v6so6412245lfu.0 for <32280@debbugs.gnu.org>; Sun, 29 Jul 2018 07:15:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=subject:to:cc:references:from:message-id:date:user-agent :mime-version:in-reply-to:content-transfer-encoding:content-language; bh=UU6r1tp3Pfim9LrShq14tu3iReI3h1UGmDZMSXgVCbg=; b=ITpMIL12HX2y+TMPI/6oJedGaybK4k+oTnDr0Qs34IMcNSFbhSt+18x5TTad5wDzIp Cb9PbIs0dgL2t+BEajGf+dxrICA/tV2Yx6tGBqE/PpqSiKxW9TaFW/7KM3c0nvfwaFGu zEIdJUrHvBXiJwem+uSghZtBilev6P5BLklD/SLID4NH47JdB0YKCYJeprUXXPc2leb5 LI58pZeyPQmli2zD9YZ4Hl32SuLUNj622iaUx01E18+viQHA8WzAOHkVStbdVATHSzq6 MB/f4a7CMJD+TiRsoluuYnetlK8VpyLCIPW5NLFYToagLtuQDl6JmmCKE/8pUkJsp0TQ ITIQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:to:cc:references:from:message-id:date :user-agent:mime-version:in-reply-to:content-transfer-encoding :content-language; bh=UU6r1tp3Pfim9LrShq14tu3iReI3h1UGmDZMSXgVCbg=; b=uKKBWff3dg969a9qN8Xo45iJEuRJuV8oo83461oC0gHRSVmB57a9UTjLTzMvGtM2oQ Alq58mIQASeRVMqaf62TEPHEDkwdMkYrqZejUNa9F8T9REaOJn5bwUPXPOMwbjC05efl MBjLOO/8xtoA9t9ma4T3HVK7Ih+v0ZzvtzN3aBrfMkOuendeiCbjZnSwT0nPmRC3hQGV D5+jhHiNkVlpvXF9eAThQADkxepX1QD36GARBS+4u8yxV0P0S+iPyHs3Q8DN+nRBLDJL 5EUTvfY18i0jiNDrjN7AAPH8UY8IoJUygtkt6Wy8eb++THrt6uNTfoJxdW3wVUeS1hb1 Ktew== X-Gm-Message-State: AOUpUlGBK0vke+KHjWycorkejs5juFTO2Lg44St4ubFDApx5q2JiPQzJ DIwZJvRyH0rWtyhLFCJQdJx2ddiP1s8= X-Google-Smtp-Source: AAOMgpcZwHb9jFBaAjwilqFiZ4UPgn4DEyMnSVNrcRprg4HQNRrbbYk3R4AKILSLQPF0P2Qru1pi5w== X-Received: by 2002:a19:5309:: with SMTP id h9-v6mr8634600lfb.86.1532873739137; Sun, 29 Jul 2018 07:15:39 -0700 (PDT) Received: from ?IPv6:2a01:d0:dec0:0:1d18:8e73:1956:539e? ([2a01:d0:dec0:0:1d18:8e73:1956:539e]) by smtp.gmail.com with ESMTPSA id m66-v6sm1222139lfi.17.2018.07.29.07.15.38 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sun, 29 Jul 2018 07:15:38 -0700 (PDT) References: <992503e5-5f88-30c7-e9b9-fe0a884d2e52@gmail.com> <20180727160048.GA30487@agmartin.aq.upm.es> <2aa9f738-48a8-8c8c-4840-8a34bc6709dd@gmail.com> <83o9errgf8.fsf@gnu.org> From: Artem Boldarev Message-ID: <6fdd5b33-5e91-0b1d-6499-827c1de6fd6c@gmail.com> Date: Sun, 29 Jul 2018 17:15:36 +0300 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Thunderbird/52.9.1 MIME-Version: 1.0 In-Reply-To: <83o9errgf8.fsf@gnu.org> Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 8bit Content-Language: ru X-Spam-Score: 0.0 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Just a quick addition. As about hunspell version: *On Linux:* $ hunspell --version @(#) International Ispell Version 3.2.06 (but really Hunspell 1.6.2) $ hunspell -D SEARCH PATH: .::/usr/share/hunspell:/usr/share/myspell:/usr/share/myspell/dicts:/Library/Spelling:/home/artem//.openoffice.org/3/user/wordbook:/home/artem//.openoffice.org2/user/wordbook:/home/artem//.openoffice.org2.0/user/wordbook:/home/artem//Library/Spelling:/opt/openoffice.org/basis3.0/share/dict/ooo:/usr/lib/openoffice.org/basis3.0/share/dict/ooo:/opt/openoffice.org2.4/share/dict/ooo:/usr/lib/openoffice.org2.4/share/dict/ooo:/opt/openoffice.org2.3/share/dict/ooo:/usr/lib/openoffice.org2.3/share/dict/ooo:/opt/openoffice.org2.2/share/dict/ooo:/usr/lib/openoffice.org2.2/share/dict/ooo:/opt/openoffice.org2.1/share/dict/ooo:/usr/lib/openoffice.org2.1/share/dict/ooo:/opt/openoffice.org2.0/share/dict/ooo:/usr/lib/openoffice.org2.0/share/dict/ooo AVAILABLE DICTIONARIES (path is not mandatory for -d option): /usr/share/hunspell/en_GB-large /usr/share/hunspell/en_GB /usr/share/hunspell/en_US-large /usr/share/hunspell/ru_RU /usr/share/hunspell/uk_UA /usr/share/myspell/dicts/en_GB-large /usr/share/myspell/dicts/en_US-large Can't open affix or dictionary files for dictionary named "en_US". *On Windows:* > hunspell --version @(#) International Ispell Version 3.2.06 (but really Hunspell 1.3.2)  > hunspell -D SEARCH PATH: .;;C:\Hunspell\;D:\Users\Artem\Application Data\OpenOffice.org 2\user\wordbook;C:\Tools\Hunspell\bin\..\share\hunspell;C:\Program files\OpenOffice.org 2.4\share\dict\ooo\;C:\Program files\OpenOffice.org 2.3\share\dict\ooo\;C:\Program files\OpenOffice.org 2.2\share\dict\ooo\;C:\Program files\OpenOffice.org 2.1\share\dict\ooo\;C:\Program files\OpenOffice.org 2.0\share\dict\ooo\ AVAILABLE DICTIONARIES (path is not mandatory for -d option): C:\Tools\Hunspell\bin\..\share\hunspell\default C:\Tools\Hunspell\bin\..\share\hunspell\de_AT_frami C:\Tools\Hunspell\bin\..\share\hunspell\de_CH_frami C:\Tools\Hunspell\bin\..\share\hunspell\de_DE_frami C:\Tools\Hunspell\bin\..\share\hunspell\en_AU C:\Tools\Hunspell\bin\..\share\hunspell\en_CA C:\Tools\Hunspell\bin\..\share\hunspell\en_GB C:\Tools\Hunspell\bin\..\share\hunspell\en_US C:\Tools\Hunspell\bin\..\share\hunspell\en_ZA C:\Tools\Hunspell\bin\..\share\hunspell\nb_NO C:\Tools\Hunspell\bin\..\share\hunspell\nn_NO C:\Tools\Hunspell\bin\..\share\hunspell\ru_RU C:\Tools\Hunspell\bin\..\share\hunspell\sv_FI C:\Tools\Hunspell\bin\..\share\hunspell\sv_SE C:\Tools\Hunspell\bin\..\share\hunspell\uk_UA Can't open affix or dictionary files for dictionary named "RU". >> From: Artem Boldarev >> Date: Sat, 28 Jul 2018 03:23:40 +0300 >> >> Just a quick addition. When doing as you suggested I am getting the >> following message: >> >> Wrong type argument: stringp, nil >> >> It is probably because both 'ispell-dictionary-alist' and >> 'ispell-local-dictionary-alist' are NIL, but I have not investigated it. > What is your version of hunspell? And what does it produce if you > invoke "hunspell -D" from the shell prompt? From unknown Mon Jun 23 06:01:24 2025 X-Loop: help-debbugs@gnu.org Subject: bug#32280: 26.1; FLYSPELL-BUFFER sometimes misbehaves for some input in a large enough buffer Resent-From: Eli Zaretskii Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sun, 29 Jul 2018 17:34:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 32280 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Artem Boldarev Cc: 32280@debbugs.gnu.org Received: via spool by 32280-submit@debbugs.gnu.org id=B32280.153288560110017 (code B ref 32280); Sun, 29 Jul 2018 17:34:02 +0000 Received: (at 32280) by debbugs.gnu.org; 29 Jul 2018 17:33:21 +0000 Received: from localhost ([127.0.0.1]:34073 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fjpZJ-0002bV-51 for submit@debbugs.gnu.org; Sun, 29 Jul 2018 13:33:21 -0400 Received: from eggs.gnu.org ([208.118.235.92]:45817) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fjpZI-0002bI-Gk for 32280@debbugs.gnu.org; Sun, 29 Jul 2018 13:33:20 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fjpZA-0007dw-VV for 32280@debbugs.gnu.org; Sun, 29 Jul 2018 13:33:15 -0400 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=disabled version=3.3.2 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:42881) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fjpZA-0007do-Rk; Sun, 29 Jul 2018 13:33:12 -0400 Received: from [176.228.60.248] (port=4319 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1fjpZA-00084b-A0; Sun, 29 Jul 2018 13:33:12 -0400 Date: Sun, 29 Jul 2018 20:33:18 +0300 Message-Id: <83d0v6q74x.fsf@gnu.org> From: Eli Zaretskii In-reply-to: (message from Artem Boldarev on Sun, 29 Jul 2018 17:09:54 +0300) References: <992503e5-5f88-30c7-e9b9-fe0a884d2e52@gmail.com> <83bmassv88.fsf@gnu.org> <29a7677b-47ad-a42b-17af-01ff4c06105e@gmail.com> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-Spam-Score: -5.0 (-----) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -6.0 (------) > From: Artem Boldarev > Cc: 32280@debbugs.gnu.org > Date: Sun, 29 Jul 2018 17:09:54 +0300 > > I have crafted some sample data as well as wrote instruction how to > reproduce the bug. Thanks, I will look into this within the next few days, if no one beats me to it. From unknown Mon Jun 23 06:01:24 2025 X-Loop: help-debbugs@gnu.org Subject: bug#32280: 26.1; FLYSPELL-BUFFER sometimes misbehaves for some input in a large enough buffer Resent-From: martin rudalics Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Mon, 30 Jul 2018 06:23:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 32280 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Artem Boldarev , Eli Zaretskii Cc: 32280@debbugs.gnu.org Received: via spool by 32280-submit@debbugs.gnu.org id=B32280.153293178023386 (code B ref 32280); Mon, 30 Jul 2018 06:23:01 +0000 Received: (at 32280) by debbugs.gnu.org; 30 Jul 2018 06:23:00 +0000 Received: from localhost ([127.0.0.1]:34305 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fk1a7-000657-Rj for submit@debbugs.gnu.org; Mon, 30 Jul 2018 02:23:00 -0400 Received: from mout.gmx.net ([212.227.17.22]:47951) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fk1a6-00064u-9H for 32280@debbugs.gnu.org; Mon, 30 Jul 2018 02:22:58 -0400 Received: from [192.168.1.101] ([213.162.73.123]) by mail.gmx.com (mrgmx102 [212.227.17.168]) with ESMTPSA (Nemesis) id 0Lyj4F-1g4YYf1kkZ-0164Mr; Mon, 30 Jul 2018 08:22:50 +0200 Message-ID: <5B5EAEB5.4020005@gmx.at> Date: Mon, 30 Jul 2018 08:22:45 +0200 From: martin rudalics MIME-Version: 1.0 References: <992503e5-5f88-30c7-e9b9-fe0a884d2e52@gmail.com> <83bmassv88.fsf@gnu.org> <29a7677b-47ad-a42b-17af-01ff4c06105e@gmail.com> In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: quoted-printable X-Provags-ID: V03:K1:yJyUO95VrWy2YD48oB3G7SgNeYUWW729r5VaxxFQSRAi3TTCk60 KRIdtBKqsqHmJkkMMbWsAMeBZTAlsVOpOHGpglWhZcw/o6gwLmgK9bBGvlJcI82YtwXcJ6L m0C9J785Xn6O7HaKSB1qgDoKFKXEMHzix52zQdNGBZ6bcispYOwTl/71SXqIAnOf2WQ6bbN FaCuo/NxWLYt5KhnUORZg== X-UI-Out-Filterresults: notjunk:1;V01:K0:z9qtl3zGGmA=:V8qI+TT9ho7dkhWdnMnvGA 8JO57f4bs9vQgsfiXju64Qt9IQLcb512VGKSxmrVCMy2qrST1PUnPzxOj54jG+6p8EPx5ikSv sHc6ODgIEa1KbLWNOpGwVYcYFC3WXPRAJTv0Xkqlcq9X/K3HqQwz5lqdJsLVA+as98N0zOVgG sxvs9K3HQTH7wjizJwM4Eo4Mcd8Zdn/RTw0fWbJw6utVrbQUyY64WZz/aUAPmkMtjbFPMFW+j huTqzdoZnmKoNc0/mIp6zS/uvbwDSGG1T7ZSZkNtbbosGVTYyg+bGCqtXzaxsbVrbrVS8s83V aloTUU4hER4jKhOYQFt3VF7LSi/kaRkduwzjLeuTrcAmIki6CAb0hBLGMYv5jpOWkZhDKOP4h yaTB4hc9tXqALVXz1wgGIoguDMdEHszW+gTXqpxTR1DyBUWz0e4JjKCCcGxOnTCu+vQ041lI7 3YrPX14lw85f6XnxwZtaSnr/SUQOujFEdpflnc8f9CxXOs2pIXUJlfgsewupiP4Dbcjd1cETU 0Rreq2KcMY403h4ileJZ5m2ytdWJiYtGmeWZz8X+WpDM8PGM0FARUUDYcfH2EPNXBN2F5yD3O I2k3tzzwMokugOQf4UO991Hvcxuw8Z4thKQG20wcdK5vabsyFt2tXDJtkhv3AXqQOqwYIF7vg rFZbFHdt5Y+mCAKsnP5moTy3+XNhialUT4fcXRoFMHQ+UIvKgOUgoqb5LDHMV1rUsAyyM9pEz sOPwtgthWRayNrqBsHrV7VyLxooMlSvZauKFGXx7rFMnf4/VQDO84XD/Vk0Q07hrTG5uBH7SF UcpX+/C X-Spam-Score: -0.7 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.7 (-) > https://chaoticlab.io/pub/flyspell-bug/flyspell-bug-linux.png > https://chaoticlab.io/pub/flyspell-bug/flyspell-bug-windows.png From these images it seems immediately evident that flyspell wrongly marks =D0=B8, =D0=B8=D0=BC=D0=B5=D0=BD=D0=BD=D0=BE, =D0=B1=D0=B5=D1=81=D0= =BA=D0=BE=D0=BD=D0=B5=D1=87=D0=BD=D1=8B=D0=B9 and =D1=83=D1=81=D0=BB=D0=BE= =D0=B6=D0=BD=D1=8F=D0=B5=D1=82 as misspelled only when a non-cyrillic word follows it. However, as paragraph 4 in these examples also demonstrates, such condition is not sufficient since there the words preceding 'HTML' and 'Lorem Ipsum' are not marked. Could you try to play around with the seqeuencing of words in that example? Maybe a clearer pattern emerges. Thanks, martin From unknown Mon Jun 23 06:01:24 2025 X-Loop: help-debbugs@gnu.org Subject: bug#32280: 26.1; FLYSPELL-BUFFER sometimes misbehaves for some input in a large enough buffer Resent-From: Artem Boldarev Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Mon, 30 Jul 2018 10:01:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 32280 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: martin rudalics , Eli Zaretskii Cc: 32280@debbugs.gnu.org Received: via spool by 32280-submit@debbugs.gnu.org id=B32280.153294485010374 (code B ref 32280); Mon, 30 Jul 2018 10:01:02 +0000 Received: (at 32280) by debbugs.gnu.org; 30 Jul 2018 10:00:50 +0000 Received: from localhost ([127.0.0.1]:34379 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fk4yw-0002hF-9U for submit@debbugs.gnu.org; Mon, 30 Jul 2018 06:00:50 -0400 Received: from mail-lj1-f172.google.com ([209.85.208.172]:43787) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fk4yt-0002h0-5V for 32280@debbugs.gnu.org; Mon, 30 Jul 2018 06:00:49 -0400 Received: by mail-lj1-f172.google.com with SMTP id r13-v6so9929376ljg.10 for <32280@debbugs.gnu.org>; Mon, 30 Jul 2018 03:00:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=subject:to:cc:references:from:message-id:date:user-agent :mime-version:in-reply-to:content-transfer-encoding:content-language; bh=cm3d1PTT3cDio/mdR5LKNgHJdSBnm0ORq+KId/2n12c=; b=DQkOfhHqMQXkyHiqLZ04lwQPD3X/yXyucory76ptE1MpblVv0TvkkfdiYoMIqVfiHj ZcchZ7gPDLgMo3sazMHghktshNWFiN/uHDdzS4P7QWnTMgTLOumUCyNEc6FLGCqgPmtO fvpig8TFMLpPxIWSo/7cg+pHbcgR/Ejduz06SSIdtZBeL36t01BBeSq/3NQMRn/dOExh qp1oDW+pI3vpGxwToQQlwXOYlealCGc05jRbYzpKxwrQB+sFrlDL3Z+qBnfWhgOtZL0o 7mFjaWrqDs2BpW+S7Y2Jvg/j7QR1L+YenKEySJkdlv8bDatjkv6A4IxYCyLWKyDn8MUH WvCg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:to:cc:references:from:message-id:date :user-agent:mime-version:in-reply-to:content-transfer-encoding :content-language; bh=cm3d1PTT3cDio/mdR5LKNgHJdSBnm0ORq+KId/2n12c=; b=AQa5AiwPC+XogbttAyKVhcNOwUxLvvuj61BqnHj+v6HJnX+Aq18lmwcoYyZOQ2jo50 Mlmqw4BwO7zbi1BX0ydy8ZbwmVHIivaDOaPkBX5FMww2CcMrQ95MxRIfVLz5sYSaqe2H i6QCacYE0lDLu1bsvI6MHV+phAQvQ/G5dX9O5AY4FKytXxv47O62FCXXhclIXJyc6apW IUwZfdHD9LKdkgURPmB9hgLb6eyvHaeVa4s2A1glpSCK7pJ/QnITlSuc8ANJG4ElF4wM 8kKl9W9w5O3Q25GedTcI6Z/399mgc2nNorCkZregdNACIOyMhKsz62ftGDthtKil11ai 0fpQ== X-Gm-Message-State: AOUpUlFmYVgJrzyrHMPJkg6iksdsO/BocLYzLBSVLaYvU7J8Cnin6ItD jgUQ7yRNu7MbAKjyXwgXq1psaTZARss= X-Google-Smtp-Source: AAOMgpdwblbqPI2rCfnkLWbScbNWzaL4CV3gH2D0/eIL4O2a3WgTBoMF/aHsUDvB7HSYaLi/GWZEOQ== X-Received: by 2002:a2e:8457:: with SMTP id u23-v6mr11700990ljh.95.1532944840890; Mon, 30 Jul 2018 03:00:40 -0700 (PDT) Received: from ?IPv6:2a01:d0:dec0:0:ad62:f262:eb45:d80a? ([2a01:d0:dec0:0:ad62:f262:eb45:d80a]) by smtp.gmail.com with ESMTPSA id u10-v6sm2006958ljk.83.2018.07.30.03.00.39 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 30 Jul 2018 03:00:40 -0700 (PDT) References: <992503e5-5f88-30c7-e9b9-fe0a884d2e52@gmail.com> <83bmassv88.fsf@gnu.org> <29a7677b-47ad-a42b-17af-01ff4c06105e@gmail.com> <5B5EAEB5.4020005@gmx.at> From: Artem Boldarev Message-ID: <02f036ab-dcce-cc43-c0cc-33f0dae1884e@gmail.com> Date: Mon, 30 Jul 2018 13:00:38 +0300 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Thunderbird/52.9.1 MIME-Version: 1.0 In-Reply-To: <5B5EAEB5.4020005@gmx.at> Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 8bit Content-Language: ru X-Spam-Score: 0.0 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Hi, Yes, there is a clear pattern. The wrong behaviour appears only when the word in Latin, which follows the Cyrillic one, has the length more or equal to the length of a preceding word. Here is  the sample text: https://chaoticlab.io/pub/flyspell-bug/sample2/flyspell-sample2.txt Instructions for the bug reproduction are the same: https://chaoticlab.io/pub/flyspell-bug/flyspell-bug-reproduction.el Screenshot without the provided fix: https://chaoticlab.io/pub/flyspell-bug/sample2/flyspell-bug-sample2.png Screenshot with the provided fix: https://chaoticlab.io/pub/flyspell-bug/sample2/flyspell-bug-sample2-fixed.png It seems logical to me that the provided fix is sufficient for this case considering what was changed in the problematic function. Regards, Artem > > https://chaoticlab.io/pub/flyspell-bug/flyspell-bug-linux.png > > https://chaoticlab.io/pub/flyspell-bug/flyspell-bug-windows.png > > From these images it seems immediately evident that flyspell wrongly > marks и, именно, бесконечный and усложняет as misspelled only when a > non-cyrillic word follows it.  However, as paragraph 4 in these > examples also demonstrates, such condition is not sufficient since > there the words preceding 'HTML' and 'Lorem Ipsum' are not marked. > > Could you try to play around with the seqeuencing of words in that > example?  Maybe a clearer pattern emerges. > > Thanks, martin > From unknown Mon Jun 23 06:01:24 2025 X-Loop: help-debbugs@gnu.org Subject: bug#32280: 26.1; FLYSPELL-BUFFER sometimes misbehaves for some input in a large enough buffer Resent-From: Agustin Martin Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Mon, 30 Jul 2018 13:21:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 32280 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: 32280@debbugs.gnu.org, Artem Boldarev Received: via spool by 32280-submit@debbugs.gnu.org id=B32280.15329568544385 (code B ref 32280); Mon, 30 Jul 2018 13:21:02 +0000 Received: (at 32280) by debbugs.gnu.org; 30 Jul 2018 13:20:54 +0000 Received: from localhost ([127.0.0.1]:34474 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fk86X-00018e-UT for submit@debbugs.gnu.org; Mon, 30 Jul 2018 09:20:54 -0400 Received: from neon-v2.ccupm.upm.es ([138.100.198.70]:43407) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fk86W-00018U-1A for 32280@debbugs.gnu.org; Mon, 30 Jul 2018 09:20:52 -0400 Received: from agmartin.aq.upm.es (Agmartin.aq.upm.es [138.100.41.131]) (user=agustin.martin@upm.es mech=LOGIN bits=0) by neon-v2.ccupm.upm.es (8.14.4/8.14.4/neon-v2-001) with ESMTP id w6UDKXSn002676 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 30 Jul 2018 15:20:33 +0200 Received: by agmartin.aq.upm.es (Postfix, from userid 1000) id 5774B41CE9; Mon, 30 Jul 2018 15:20:33 +0200 (CEST) Date: Mon, 30 Jul 2018 15:20:33 +0200 From: Agustin Martin Message-ID: <20180730132033.GA1182@agmartin.aq.upm.es> References: <992503e5-5f88-30c7-e9b9-fe0a884d2e52@gmail.com> <20180727160048.GA30487@agmartin.aq.upm.es> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: User-Agent: Mutt/1.10.1 (2018-07-13) X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) On Sat, Jul 28, 2018 at 03:00:40AM +0300, Artem Boldarev wrote: > Hello Agustin, > > Thanks for your suggestion! > > Unfortunately, it does not work on my system with 'emacs -Q'. So, somehow I > need to manually configure my dictionaries anyway. I will consider replacing > 'ispell-dictionary-alist'with 'ispell-local-dictionary-alist' in my > configuration. Thank you for pointing out. Hi, I am using your example file with emacs -Q (Emacs 25) and had no problems, flyspell-buffer works as expected after setting ispell-program-name to hunspell and set ru_RU as dict (hunspell 1.6.2 here). Local Ispell dictionary set to ru_RU Starting new Ispell process hunspell with ru_RU dictionary... Checking region... Spell Checking...100% [laborum] Spell Checking completed. The auto-detected values for hunspell ru_RU are (ru_RU [[:alpha:]] [^[:alpha:]] t (-d ru_RU) nil utf-8) Wonder why otherchars is not shown. > The codepage I specified in the configuration, as it seems, is not the > problem as spell checking works fine *most* of the time. I could spellcheck > large amounts of text without any issues. It seems that hunspell always uses > utf-8 internally, but I am not sure: I will try to investigate this. Seems I was wrong, it is a long time since I digged there. ¿What happens if you use "[[:alpha:]]" and "[^[:alpha:]]" instead if the explicit character strings "[АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЬЫЪЭЮЯабвгдеёжзийклмнопрстуфхцчшщьыъэюя]" and "[^АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЬЫЪЭЮЯабвгдеёжзийклмнопрстуфхцчшщьыъэюя]"? Regards, -- Agustin From unknown Mon Jun 23 06:01:24 2025 X-Loop: help-debbugs@gnu.org Subject: bug#32280: 26.1; FLYSPELL-BUFFER sometimes misbehaves for some input in a large enough buffer Resent-From: Artem Boldarev Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Mon, 30 Jul 2018 16:30:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 32280 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Agustin Martin , 32280@debbugs.gnu.org Received: via spool by 32280-submit@debbugs.gnu.org id=B32280.153296816027074 (code B ref 32280); Mon, 30 Jul 2018 16:30:02 +0000 Received: (at 32280) by debbugs.gnu.org; 30 Jul 2018 16:29:20 +0000 Received: from localhost ([127.0.0.1]:35245 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fkB2t-00072c-Mm for submit@debbugs.gnu.org; Mon, 30 Jul 2018 12:29:19 -0400 Received: from mail-lj1-f182.google.com ([209.85.208.182]:36097) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fkB2p-00072J-VC for 32280@debbugs.gnu.org; Mon, 30 Jul 2018 12:29:16 -0400 Received: by mail-lj1-f182.google.com with SMTP id u7-v6so11069344lji.3 for <32280@debbugs.gnu.org>; Mon, 30 Jul 2018 09:29:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=subject:to:references:from:message-id:date:user-agent:mime-version :in-reply-to:content-transfer-encoding:content-language; bh=nlIiu6eHD6ZI4AKZithZLxFWQl3jbMcaziLpkEItDcE=; b=QvRTxNip9IXHKOnMLXqSMWHzfQH7jDJMAcyHL3ZtjYttSUVPb9q2iiGt4d1o9hd2Ef ilP4Wey7pjhzsiQZm/UVTzYEYNQpxbUscZ3OAT4ON6uABvWZLu29ak3AbY9gmEb21pMQ pr2v8Q0dW9JflumNqH6tZ345YRUI6aqCjbbMaBn3vhdfNideHf+boUdRluKXC+iGxTgz 2mrykeoE8cHZMyesDqQ3fvjO3Ojmwr9Kk96AYh2Mz3WejGyorYjdH5PkQEr+p6jI+Syh LASQcxx27RpzwcvSWWSkZsp0DnCKUyqOun5KkB/q2Zt45qSfA571RJ7krSAlCP8TcQ/O zAfg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:to:references:from:message-id:date :user-agent:mime-version:in-reply-to:content-transfer-encoding :content-language; bh=nlIiu6eHD6ZI4AKZithZLxFWQl3jbMcaziLpkEItDcE=; b=r5HQmH5Uap4dsBX/uf4C4BqVuvGWEuajoWssPCLHUFLp2JwBF4LOh8fXaPxMcma07E 3uREij755bfULHQf1Mk/WyfuAcRXvmksfWfGYahD/4aPWeHUeD38x0yTTngXmHOT94L6 Vlwm2H1x0APBRyQby2MI2OO4omYRb/Tcd9LZuroxFY+KNZwsj0e+wQ31ul5L+aQBdRtE kVZcQ6XuwZiuSOjDfPPqZqUDWDFg4XVLc/7Ocn3kf18qlDkz3ykR4N97z442u8ZZ4ZgJ oiZH6vKffreaNCye5wMGLzikJd/si0/8yAk/dsOiiUTMKhjvTeqKVW9aXZQiVNrO9AYJ a0sA== X-Gm-Message-State: AOUpUlGzMu/qmkdfxax1ugY5Vkw4Yxy7QddLA1lOpXWp3TMLhGM4j2H7 SEGr3YuFZUWrGfoaOI6glZdSOyy4FNI= X-Google-Smtp-Source: AAOMgpfIVeTogmo00FNSNLbRxxk9Ff4fn+51t4WFj4js5H76AlFA5TZmCQlkv9ZY9h/2+c2AIP8sQQ== X-Received: by 2002:a2e:8147:: with SMTP id t7-v6mr14291513ljg.32.1532968149723; Mon, 30 Jul 2018 09:29:09 -0700 (PDT) Received: from ?IPv6:2a01:d0:dec0:0:ad62:f262:eb45:d80a? ([2a01:d0:dec0:0:ad62:f262:eb45:d80a]) by smtp.gmail.com with ESMTPSA id o74-v6sm1599150lfg.31.2018.07.30.09.29.08 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 30 Jul 2018 09:29:09 -0700 (PDT) References: <992503e5-5f88-30c7-e9b9-fe0a884d2e52@gmail.com> <20180727160048.GA30487@agmartin.aq.upm.es> <20180730132033.GA1182@agmartin.aq.upm.es> From: Artem Boldarev Message-ID: <3d036b32-01df-6595-a023-3fc243613813@gmail.com> Date: Mon, 30 Jul 2018 19:29:06 +0300 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Thunderbird/52.9.1 MIME-Version: 1.0 In-Reply-To: <20180730132033.GA1182@agmartin.aq.upm.es> Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 8bit Content-Language: ru X-Spam-Score: 0.0 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Hi, Thanks, Agustin, this is an interesting find! I have altered my configuration as you suggested, and indeed I wasn't able to trigger the bug any more. https://chaoticlab.io/pub/flyspell-bug/flyspell-bug-no-explicit-chars.png Anyway, I am pretty confident that altering the configuration does not resolve the bug, but rather hides it. I think so because of the following reasons: 1. I do not see why my previous configuration, which uses explicitly specified characters, is wrong. It works fine when spell checking as you type and for smaller buffers and regions (when flyspell-large-region does not get called). 2. Without the fix, the above-discussed inconsistency exists between how flyspell works when you use it for: a) spell checking as you type and checking smaller regions of text (when flyspell-small-region gets called). b) spell checking large regions of text. It should be noted, that putting the cursor on a wrongly highlighted word when the flyspell mode is active, gets the word rechecked and un-highlighted. This behaviour demonstrates this inconsistency one more time. In fact, this inconsistency is the bug which I reported. Regards, Artem > Hi, > > I am using your example file with emacs -Q (Emacs 25) and had no problems, > flyspell-buffer works as expected after setting ispell-program-name to > hunspell and set ru_RU as dict (hunspell 1.6.2 here). > > Local Ispell dictionary set to ru_RU > Starting new Ispell process hunspell with ru_RU dictionary... > Checking region... > Spell Checking...100% [laborum] > Spell Checking completed. > > The auto-detected values for hunspell ru_RU are > > (ru_RU [[:alpha:]] [^[:alpha:]] t (-d ru_RU) nil utf-8) > > Wonder why otherchars is not shown. > >> The codepage I specified in the configuration, as it seems, is not the >> problem as spell checking works fine *most* of the time. I could spellcheck >> large amounts of text without any issues. It seems that hunspell always uses >> utf-8 internally, but I am not sure: I will try to investigate this. > Seems I was wrong, it is a long time since I digged there. > > ¿What happens if you use "[[:alpha:]]" and "[^[:alpha:]]" instead if the > explicit character strings "[АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЬЫЪЭЮЯабвгдеёжзийклмнопрстуфхцчшщьыъэюя]" > and "[^АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЬЫЪЭЮЯабвгдеёжзийклмнопрстуфхцчшщьыъэюя]"? > > Regards, > From unknown Mon Jun 23 06:01:24 2025 X-Loop: help-debbugs@gnu.org Subject: bug#32280: 26.1; FLYSPELL-BUFFER sometimes misbehaves for some input in a large enough buffer Resent-From: Agustin Martin Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Mon, 30 Jul 2018 16:44:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 32280 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: 32280@debbugs.gnu.org, Artem Boldarev Received: via spool by 32280-submit@debbugs.gnu.org id=B32280.153296900128505 (code B ref 32280); Mon, 30 Jul 2018 16:44:01 +0000 Received: (at 32280) by debbugs.gnu.org; 30 Jul 2018 16:43:21 +0000 Received: from localhost ([127.0.0.1]:35250 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fkBGT-0007Ph-2A for submit@debbugs.gnu.org; Mon, 30 Jul 2018 12:43:21 -0400 Received: from neon-v2.ccupm.upm.es ([138.100.198.70]:46157) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fkBGR-0007PY-0I for 32280@debbugs.gnu.org; Mon, 30 Jul 2018 12:43:19 -0400 Received: from agmartin.aq.upm.es (Agmartin.aq.upm.es [138.100.41.131]) (user=agustin.martin@upm.es mech=LOGIN bits=0) by neon-v2.ccupm.upm.es (8.14.4/8.14.4/neon-v2-001) with ESMTP id w6UGh396012656 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 30 Jul 2018 18:43:03 +0200 Received: by agmartin.aq.upm.es (Postfix, from userid 1000) id CF5DA436E9; Mon, 30 Jul 2018 18:43:03 +0200 (CEST) Date: Mon, 30 Jul 2018 18:43:03 +0200 From: Agustin Martin Message-ID: <20180730164303.GA12241@agmartin.aq.upm.es> References: <992503e5-5f88-30c7-e9b9-fe0a884d2e52@gmail.com> <20180727160048.GA30487@agmartin.aq.upm.es> <20180730132033.GA1182@agmartin.aq.upm.es> <3d036b32-01df-6595-a023-3fc243613813@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <3d036b32-01df-6595-a023-3fc243613813@gmail.com> User-Agent: Mutt/1.10.1 (2018-07-13) X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) On Mon, Jul 30, 2018 at 07:29:06PM +0300, Artem Boldarev wrote: > Hi, > > Thanks, Agustin, this is an interesting find! I have altered my > configuration as you suggested, and indeed I wasn't able to trigger the bug > any more. > > https://chaoticlab.io/pub/flyspell-bug/flyspell-bug-no-explicit-chars.png > > Anyway, I am pretty confident that altering the configuration does not > resolve the bug, but rather hides it. I think so because of the following > reasons: > > 1. I do not see why my previous configuration, which uses explicitly > specified characters, is wrong. It works fine when spell checking as you > type and for smaller buffers and regions (when flyspell-large-region does > not get called). Hi, I'd suggest you to try lines below [A-Za-zАБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЬЫЪЭЮЯабвгдеёжзийклмнопрстуфхцчшщьыъэюя] [^A-Za-zАБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЬЫЪЭЮЯабвгдеёжзийклмнопрстуфхцчшщьыъэюя] with the latin chars A-Za-z added. ¿Does it work? > 2. Without the fix, the above-discussed inconsistency exists between how > flyspell works when you use it for: > > a) spell checking as you type and checking smaller regions of text (when > flyspell-small-region gets called). > b) spell checking large regions of text. AFAIK `flyspell-small-region' is very inefficient in terms of time for large buffers, so `flyspell-large-region' uses a completely different approach for those large buffers. It first looks for a list of possible misspellings and then searches for them sequentially in the text, running flyspell-word on each one. Regards, -- Agustin From unknown Mon Jun 23 06:01:24 2025 X-Loop: help-debbugs@gnu.org Subject: bug#32280: 26.1; FLYSPELL-BUFFER sometimes misbehaves for some input in a large enough buffer Resent-From: Artem Boldarev Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Mon, 30 Jul 2018 18:13:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 32280 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Agustin Martin , 32280@debbugs.gnu.org Received: via spool by 32280-submit@debbugs.gnu.org id=B32280.15329743684979 (code B ref 32280); Mon, 30 Jul 2018 18:13:01 +0000 Received: (at 32280) by debbugs.gnu.org; 30 Jul 2018 18:12:48 +0000 Received: from localhost ([127.0.0.1]:35359 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fkCf2-0001IF-Jx for submit@debbugs.gnu.org; Mon, 30 Jul 2018 14:12:48 -0400 Received: from mail-lj1-f175.google.com ([209.85.208.175]:45395) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fkCf1-0001I2-0P for 32280@debbugs.gnu.org; Mon, 30 Jul 2018 14:12:47 -0400 Received: by mail-lj1-f175.google.com with SMTP id w16-v6so7743874ljh.12 for <32280@debbugs.gnu.org>; Mon, 30 Jul 2018 11:12:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=subject:to:references:from:message-id:date:user-agent:mime-version :in-reply-to:content-transfer-encoding:content-language; bh=90ybxMpHoINCeaVLDLIcoIYWzd0ktltqMuuu4lkjSjU=; b=LKr5ODdC/y6o/K+/TcdxE+ugrDrbWEzz0wfUTHtI76PrpLObiTrtCu1Giz11otgFfc ETo4tIeoOIAVX459FVTKcCnnqaXMbsYz9nWBAP2RjC97SjHJqNtJ2lS3SKBh+ta0iSU3 OlEGBvdgKKApsyWDIMwmZ74fCCvIJCypXgEe78Jxfr8mCFk8szggT1908G1L+PbQYgce +2IzkLqjrKiVmZ/8BTzgw13d635lYzypJR1N7r0CJK6P0kGzjbHOTj8EFIMzj0+zbxZb knVEYscXkfoYrskWCZGQE51RWKDgoEN4ndHCquAi1QOuQ3DYO4EjlvK04zCkI2rzqFbB 8YEA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:to:references:from:message-id:date :user-agent:mime-version:in-reply-to:content-transfer-encoding :content-language; bh=90ybxMpHoINCeaVLDLIcoIYWzd0ktltqMuuu4lkjSjU=; b=dYsg7l5M6VKKwOQUVaUMgt+2QUc92eq0hI5mlSXDc15kHnWX90NoO8P1P7s8+SiWHR GinPDnSk0GlNi/FcNBTPQFfb80sM82xN+3robOAEwgvtQ1CWRJba9yx6XSuz7xMNKX0Z g+gdAFscB5jNYWfBgRz57YzypQiWTMu+YsoXEqvN5m1V5DgANK8f05Cg6knCtiu5elIB +CBX9NqhxXix0uEHpJPcKa1t+ssw325haeCkYZ/6d61fX3HDl+7DR/YFYtbOCeNe/X83 zxtu1yro2BA97Re3ZhkUPkyBCwBjI7TUeV6sllkQUGP8s8eqrue82qUx7t6Saj00KlyT ZTEw== X-Gm-Message-State: AOUpUlHpIUlhL48FjGIOPCnSVmpdC78rTpDyh+vy1FWr53RZRocDyES5 m5bbwM8FMQWrCjN5OGzmZ4aAwrCLehs= X-Google-Smtp-Source: AAOMgpdqhiFXDgBOaeMlokFafRH36lNihjLqPObkbC+4h3YmThzJMGkBnW8GWs+18gszKYnbJ750Fw== X-Received: by 2002:a2e:9883:: with SMTP id b3-v6mr13273608ljj.80.1532974360702; Mon, 30 Jul 2018 11:12:40 -0700 (PDT) Received: from ?IPv6:2a01:d0:dec0:0:ad62:f262:eb45:d80a? ([2a01:d0:dec0:0:ad62:f262:eb45:d80a]) by smtp.gmail.com with ESMTPSA id y72-v6sm1659129lfg.74.2018.07.30.11.12.39 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 30 Jul 2018 11:12:39 -0700 (PDT) References: <992503e5-5f88-30c7-e9b9-fe0a884d2e52@gmail.com> <20180727160048.GA30487@agmartin.aq.upm.es> <20180730132033.GA1182@agmartin.aq.upm.es> <3d036b32-01df-6595-a023-3fc243613813@gmail.com> <20180730164303.GA12241@agmartin.aq.upm.es> From: Artem Boldarev Message-ID: <41d68d6b-a687-30c1-818f-57659d7ec6c5@gmail.com> Date: Mon, 30 Jul 2018 21:12:36 +0300 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Thunderbird/52.9.1 MIME-Version: 1.0 In-Reply-To: <20180730164303.GA12241@agmartin.aq.upm.es> Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 8bit Content-Language: ru X-Spam-Score: 0.0 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) I have tried to do as you suggested. The result is the same as in my previous letter. > Hi, > > I'd suggest you to try lines below > > [A-Za-zАБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЬЫЪЭЮЯабвгдеёжзийклмнопрстуфхцчшщьыъэюя] > [^A-Za-zАБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЬЫЪЭЮЯабвгдеёжзийклмнопрстуфхцчшщьыъэюя] > > with the latin chars A-Za-z added. ¿Does it work? > >> 2. Without the fix, the above-discussed inconsistency exists between how >> flyspell works when you use it for: >> >> a) spell checking as you type and checking smaller regions of text (when >> flyspell-small-region gets called). >> b) spell checking large regions of text. Yes indeed, it is so inefficient that checking a small region of text is more efficient with the flyspell-large-region most of the time (you can alter this behaviour by changing the flyspell-large-region variable). It checks spelling word by word - this is the source of its inefficiency. > AFAIK `flyspell-small-region' is very inefficient in terms of time for large > buffers, so `flyspell-large-region' uses a completely different approach for > those large buffers. It first looks for a list of possible misspellings and > then searches for them sequentially in the text, running flyspell-word on > each one. > > Regards, > From unknown Mon Jun 23 06:01:24 2025 X-Loop: help-debbugs@gnu.org Subject: bug#32280: 26.1; FLYSPELL-BUFFER sometimes misbehaves for some input in a large enough buffer Resent-From: Eli Zaretskii Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sat, 04 Aug 2018 10:44:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 32280 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Artem Boldarev Cc: 32280@debbugs.gnu.org, agustin6martin@gmail.com Received: via spool by 32280-submit@debbugs.gnu.org id=B32280.15333794029750 (code B ref 32280); Sat, 04 Aug 2018 10:44:02 +0000 Received: (at 32280) by debbugs.gnu.org; 4 Aug 2018 10:43:22 +0000 Received: from localhost ([127.0.0.1]:40439 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1flu1o-0002XA-Hz for submit@debbugs.gnu.org; Sat, 04 Aug 2018 06:43:21 -0400 Received: from eggs.gnu.org ([208.118.235.92]:58436) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1flu1m-0002Wt-JF for 32280@debbugs.gnu.org; Sat, 04 Aug 2018 06:43:18 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1flu1e-0007iI-2H for 32280@debbugs.gnu.org; Sat, 04 Aug 2018 06:43:13 -0400 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=0.8 required=5.0 tests=BAYES_50 autolearn=disabled version=3.3.2 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:42153) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1flu1d-0007iD-Tv; Sat, 04 Aug 2018 06:43:09 -0400 Received: from [176.228.60.248] (port=3131 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1flu1d-00040W-8X; Sat, 04 Aug 2018 06:43:09 -0400 Date: Sat, 04 Aug 2018 13:43:00 +0300 Message-Id: <83h8katnt7.fsf@gnu.org> From: Eli Zaretskii In-reply-to: <41d68d6b-a687-30c1-818f-57659d7ec6c5@gmail.com> (message from Artem Boldarev on Mon, 30 Jul 2018 21:12:36 +0300) References: <992503e5-5f88-30c7-e9b9-fe0a884d2e52@gmail.com> <20180727160048.GA30487@agmartin.aq.upm.es> <20180730132033.GA1182@agmartin.aq.upm.es> <3d036b32-01df-6595-a023-3fc243613813@gmail.com> <20180730164303.GA12241@agmartin.aq.upm.es> <41d68d6b-a687-30c1-818f-57659d7ec6c5@gmail.com> MIME-version: 1.0 Content-type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-Spam-Score: -5.0 (-----) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -6.0 (------) > From: Artem Boldarev > Date: Mon, 30 Jul 2018 21:12:36 +0300 > > > I'd suggest you to try lines below > > > > [A-Za-zАБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЬЫЪЭЮЯабвгдеёжзийклмнопрстуфхцчшщьыъэюя] > > [^A-Za-zАБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЬЫЪЭЮЯабвгдеёжзийклмнопрстуфхцчшщьыъэюя] > > > > with the latin chars A-Za-z added. ¿Does it work? > > I have tried to do as you suggested. The result is the same as in my > previous letter. And now I understand why. The problem is not with comparing the length of the misspelled word, the problem is with this part of flyspell-external-point-words: ;; Iterate on string search until string is found as word, ;; not as substring. (while keep (if (search-forward word flyspell-large-region-end t) (let* ((found-list (save-excursion ;; Move back into the match ;; so flyspell-get-word will find it. (forward-char -1) (flyspell-get-word))) <<<<<<<<<<<<<<<<<<<<<< (found (car found-list)) (found-length (length found)) (misspell-length (length word))) When the misspelled word doesn't match CASECHARS, the call to flyspell-get-word will find an entirely different word than the one which was originally found as misspelled: it will find the first word before point that matches CASECHARS. In your case, since the misspelled words were in English, flyspell-get-word will find the first Cyrillic word before point. From there on, the logic of the code in flyspell-external-point-words completely breaks down, and yields results that are more-or-less random. IOW, the assumption of the current logic in flyspell-external-point-words is that the misspelled word is from the same language that is supported by the current dictionary, and in your case this assumption is false. This is why the problem disappeared as soon as you added Latin alphabetic characters to CASECHARS. So please try this patch for flyspell.el, it should fix your problem with the original setup of ru_RU (it also fixes an unrelated wrong assumption which goes back to the days when the spell-checking program could only be either Ispell or Aspell): diff --git a/lisp/textmodes/flyspell.el b/lisp/textmodes/flyspell.el index 5726bd8..4d7a189 100644 --- a/lisp/textmodes/flyspell.el +++ b/lisp/textmodes/flyspell.el @@ -1420,10 +1420,20 @@ flyspell-external-point-words The list of incorrect words should be in `flyspell-external-ispell-buffer'. \(We finish by killing that buffer and setting the variable to nil.) The buffer to mark them in is `flyspell-large-region-buffer'." - (let (words-not-found - (ispell-otherchars (ispell-get-otherchars)) - (buffer-scan-pos flyspell-large-region-beg) - case-fold-search) + (let* (words-not-found + (flyspell-casechars (flyspell-get-casechars)) + (ispell-otherchars (ispell-get-otherchars)) + (ispell-many-otherchars-p (ispell-get-many-otherchars-p)) + (word-chars (concat flyspell-casechars + "+\\(" + (if (not (string= "" ispell-otherchars)) + (concat ispell-otherchars "?")) + flyspell-casechars + "+\\)" + (if ispell-many-otherchars-p + "*" "?"))) + (buffer-scan-pos flyspell-large-region-beg) + case-fold-search) (with-current-buffer flyspell-external-ispell-buffer (goto-char (point-min)) ;; Loop over incorrect words, in the order they were reported, @@ -1453,11 +1463,18 @@ flyspell-external-point-words ;; Move back into the match ;; so flyspell-get-word will find it. (forward-char -1) - (flyspell-get-word))) + ;; Is this a word that matches the + ;; current dictionary? + (if (looking-at word-chars) + (flyspell-get-word)))) (found (car found-list)) (found-length (length found)) (misspell-length (length word))) (when (or + ;; Misspelled word is not from the + ;; language supported by the current + ;; dictionary. + (null found) ;; Size matches, we really found it. (= found-length misspell-length) ;; Matches as part of a boundary-char separated @@ -1479,13 +1496,21 @@ flyspell-external-point-words ;; backslash) and none of the previous ;; conditions match. (and (not ispell-really-aspell) + (not ispell-really-hunspell) + (not ispell-really-enchant) (save-excursion (goto-char (- (nth 1 found-list) 1)) (if (looking-at "[\\]" ) t nil)))) (setq keep nil) - (flyspell-word nil t) + ;; Don't try spell-checking words whose + ;; characters don't match CASECHARS, because + ;; flyspell-word will then consider as + ;; misspelling the preceding word that matches + ;; CASECHARS. + (or (null found) + (flyspell-word nil t)) ;; Search for next misspelled word will begin from ;; end of last validated match. (setq buffer-scan-pos (point)))) From unknown Mon Jun 23 06:01:24 2025 X-Loop: help-debbugs@gnu.org Subject: bug#32280: 26.1; FLYSPELL-BUFFER sometimes misbehaves for some input in a large enough buffer Resent-From: Artem Boldarev Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 07 Aug 2018 10:58:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 32280 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Eli Zaretskii Cc: 32280@debbugs.gnu.org, agustin6martin@gmail.com Received: via spool by 32280-submit@debbugs.gnu.org id=B32280.153363943429259 (code B ref 32280); Tue, 07 Aug 2018 10:58:02 +0000 Received: (at 32280) by debbugs.gnu.org; 7 Aug 2018 10:57:14 +0000 Received: from localhost ([127.0.0.1]:43195 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fmzfu-0007bq-6f for submit@debbugs.gnu.org; Tue, 07 Aug 2018 06:57:14 -0400 Received: from mail-lj1-f196.google.com ([209.85.208.196]:38639) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fmzfs-0007ba-9B for 32280@debbugs.gnu.org; Tue, 07 Aug 2018 06:57:12 -0400 Received: by mail-lj1-f196.google.com with SMTP id p6-v6so13079189ljc.5 for <32280@debbugs.gnu.org>; Tue, 07 Aug 2018 03:57:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=subject:to:cc:references:from:message-id:date:user-agent :mime-version:in-reply-to:content-transfer-encoding:content-language; bh=sMFONIC6TIXBoX/q6X0EseeJcINKnJpwlUp8v2FEIXs=; b=a/QkNanVkIQq5etOTmLcpPZ/UQvXLNSX4W17qdbVRo6piA/pthobYRjiOSFQXZlmC4 D/6A8eOk8hcVzv2l4NvO2yRGnNXqJLyTQg38Q0BsqQpTwFgFTffcU0xcv1HhHDiWs+ck 0KbwRdw75y4PC4855sC0wmn16lTHuikiNUdL9km8cJfmsbd9m107krTQGX45w+qWrc7r C/LKo8HMyYd55X5Ig9RDFrtGqwlZ3ZWsnBOfYXLKpvqVLOaT6vADVuSXHNUbaWuWgqqX S9T43EoGFIHaXKq0hhnuw+jLmaq9oZ2J6wCE/pmuL+a3d75BDXvZjAYy0JpXm6h4OCkB wk/Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:to:cc:references:from:message-id:date :user-agent:mime-version:in-reply-to:content-transfer-encoding :content-language; bh=sMFONIC6TIXBoX/q6X0EseeJcINKnJpwlUp8v2FEIXs=; b=anXijv0xYkYhWHfs6WzysijwVBYRhLxzcidLM1fZ1IakV7LDzfFlyOqQHo3N513Akj hQEIz4xMZs+6pNffQslfDyX1i1fc49bZjNfLZKZxvH9/E+O4KEMdvFDigKOZkGpA/xC0 M2PP4MUizhLMKGAwuLFLR41F3/RZJRjWQUQxdhttjXpJgPhJGt46MSsgDj4rhTnW5oqy D8eMTUC4bDkd2tM9UT3m71o6Zk/XpRTFeDtnG6nCoAUlglU17+7RTbT2yqL5EPAJfPs7 nEeLxtPZ8TuaNW/+o6wG1M8IPTLlsUgMtW5VuZKV89iubSkZTm9cHKqtw/UhRde5YJYF DW/A== X-Gm-Message-State: AOUpUlEIW5Ly1MlkglRSBiPUTj8KRYNXdddrHFwER++RqyXWQZn4SPSt WKU7iL9yX1wk0bUlBslW8xuKM7Ze X-Google-Smtp-Source: AAOMgpcpo2x4PDcSDoJzjExaEdFZafsA2TNlkFXwpBa/X3NOaHes25TjOYQGvry+RL23JyePxJkb8A== X-Received: by 2002:a2e:40ca:: with SMTP id r71-v6mr14895107lje.41.1533639425979; Tue, 07 Aug 2018 03:57:05 -0700 (PDT) Received: from ?IPv6:2a01:d0:dec0:0:9411:9497:48c0:1f49? ([2a01:d0:dec0:0:9411:9497:48c0:1f49]) by smtp.gmail.com with ESMTPSA id b22-v6sm186476ljj.93.2018.08.07.03.57.00 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 07 Aug 2018 03:57:00 -0700 (PDT) References: <992503e5-5f88-30c7-e9b9-fe0a884d2e52@gmail.com> <20180727160048.GA30487@agmartin.aq.upm.es> <20180730132033.GA1182@agmartin.aq.upm.es> <3d036b32-01df-6595-a023-3fc243613813@gmail.com> <20180730164303.GA12241@agmartin.aq.upm.es> <41d68d6b-a687-30c1-818f-57659d7ec6c5@gmail.com> <83h8katnt7.fsf@gnu.org> From: Artem Boldarev Message-ID: <678a1017-47c5-f74f-3b1b-2a15485b6a2d@gmail.com> Date: Tue, 7 Aug 2018 13:56:58 +0300 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Thunderbird/52.9.1 MIME-Version: 1.0 In-Reply-To: <83h8katnt7.fsf@gnu.org> Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit Content-Language: ru X-Spam-Score: 0.0 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Hi, Thanks, Eli! I have tried the proposed patch, and it seems to solve the problem. Thanks to everyone who have helped to track down the problem. By the way, are there any chances to see these changes incorporated into Emacs 26.2? Kind regards, Artem >> I have tried to do as you suggested. The result is the same as in my >> previous letter. > And now I understand why. The problem is not with comparing the > length of the misspelled word, the problem is with this part of > flyspell-external-point-words: > > ;; Iterate on string search until string is found as word, > ;; not as substring. > (while keep > (if (search-forward word > flyspell-large-region-end t) > (let* ((found-list > (save-excursion > ;; Move back into the match > ;; so flyspell-get-word will find it. > (forward-char -1) > (flyspell-get-word))) <<<<<<<<<<<<<<<<<<<<<< > (found (car found-list)) > (found-length (length found)) > (misspell-length (length word))) > > When the misspelled word doesn't match CASECHARS, the call to > flyspell-get-word will find an entirely different word than the one > which was originally found as misspelled: it will find the first word > before point that matches CASECHARS. In your case, since the > misspelled words were in English, flyspell-get-word will find the > first Cyrillic word before point. From there on, the logic of the > code in flyspell-external-point-words completely breaks down, and > yields results that are more-or-less random. > > IOW, the assumption of the current logic in > flyspell-external-point-words is that the misspelled word is from the > same language that is supported by the current dictionary, and in your > case this assumption is false. This is why the problem disappeared as > soon as you added Latin alphabetic characters to CASECHARS. > > So please try this patch for flyspell.el, it should fix your problem > with the original setup of ru_RU (it also fixes an unrelated wrong > assumption which goes back to the days when the spell-checking program > could only be either Ispell or Aspell): > > diff --git a/lisp/textmodes/flyspell.el b/lisp/textmodes/flyspell.el > index 5726bd8..4d7a189 100644 > --- a/lisp/textmodes/flyspell.el > +++ b/lisp/textmodes/flyspell.el > @@ -1420,10 +1420,20 @@ flyspell-external-point-words > The list of incorrect words should be in `flyspell-external-ispell-buffer'. > \(We finish by killing that buffer and setting the variable to nil.) > The buffer to mark them in is `flyspell-large-region-buffer'." > - (let (words-not-found > - (ispell-otherchars (ispell-get-otherchars)) > - (buffer-scan-pos flyspell-large-region-beg) > - case-fold-search) > + (let* (words-not-found > + (flyspell-casechars (flyspell-get-casechars)) > + (ispell-otherchars (ispell-get-otherchars)) > + (ispell-many-otherchars-p (ispell-get-many-otherchars-p)) > + (word-chars (concat flyspell-casechars > + "+\\(" > + (if (not (string= "" ispell-otherchars)) > + (concat ispell-otherchars "?")) > + flyspell-casechars > + "+\\)" > + (if ispell-many-otherchars-p > + "*" "?"))) > + (buffer-scan-pos flyspell-large-region-beg) > + case-fold-search) > (with-current-buffer flyspell-external-ispell-buffer > (goto-char (point-min)) > ;; Loop over incorrect words, in the order they were reported, > @@ -1453,11 +1463,18 @@ flyspell-external-point-words > ;; Move back into the match > ;; so flyspell-get-word will find it. > (forward-char -1) > - (flyspell-get-word))) > + ;; Is this a word that matches the > + ;; current dictionary? > + (if (looking-at word-chars) > + (flyspell-get-word)))) > (found (car found-list)) > (found-length (length found)) > (misspell-length (length word))) > (when (or > + ;; Misspelled word is not from the > + ;; language supported by the current > + ;; dictionary. > + (null found) > ;; Size matches, we really found it. > (= found-length misspell-length) > ;; Matches as part of a boundary-char separated > @@ -1479,13 +1496,21 @@ flyspell-external-point-words > ;; backslash) and none of the previous > ;; conditions match. > (and (not ispell-really-aspell) > + (not ispell-really-hunspell) > + (not ispell-really-enchant) > (save-excursion > (goto-char (- (nth 1 found-list) 1)) > (if (looking-at "[\\]" ) > t > nil)))) > (setq keep nil) > - (flyspell-word nil t) > + ;; Don't try spell-checking words whose > + ;; characters don't match CASECHARS, because > + ;; flyspell-word will then consider as > + ;; misspelling the preceding word that matches > + ;; CASECHARS. > + (or (null found) > + (flyspell-word nil t)) > ;; Search for next misspelled word will begin from > ;; end of last validated match. > (setq buffer-scan-pos (point)))) From unknown Mon Jun 23 06:01:24 2025 MIME-Version: 1.0 X-Mailer: MIME-tools 5.505 (Entity 5.505) X-Loop: help-debbugs@gnu.org From: help-debbugs@gnu.org (GNU bug Tracking System) To: Artem Boldarev Subject: bug#32280: closed (Re: bug#32280: 26.1; FLYSPELL-BUFFER sometimes misbehaves for some input in a large enough buffer) Message-ID: References: <837el2qjba.fsf@gnu.org> <992503e5-5f88-30c7-e9b9-fe0a884d2e52@gmail.com> X-Gnu-PR-Message: they-closed 32280 X-Gnu-PR-Package: emacs Reply-To: 32280@debbugs.gnu.org Date: Tue, 07 Aug 2018 15:38:01 +0000 Content-Type: multipart/mixed; boundary="----------=_1533656281-31876-1" This is a multi-part message in MIME format... ------------=_1533656281-31876-1 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Your bug report #32280: 26.1; FLYSPELL-BUFFER sometimes misbehaves for some input in a larg= e enough buffer which was filed against the emacs package, has been closed. The explanation is attached below, along with your original report. If you require more details, please reply to 32280@debbugs.gnu.org. --=20 32280: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=3D32280 GNU Bug Tracking System Contact help-debbugs@gnu.org with problems ------------=_1533656281-31876-1 Content-Type: message/rfc822 Content-Disposition: inline Content-Transfer-Encoding: 7bit Received: (at 32280-done) by debbugs.gnu.org; 7 Aug 2018 15:37:44 +0000 Received: from localhost ([127.0.0.1]:43822 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fn43M-0008Hd-4p for submit@debbugs.gnu.org; Tue, 07 Aug 2018 11:37:44 -0400 Received: from eggs.gnu.org ([208.118.235.92]:47584) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fn43K-0008HP-PZ for 32280-done@debbugs.gnu.org; Tue, 07 Aug 2018 11:37:43 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fn43A-0005DS-Gu for 32280-done@debbugs.gnu.org; Tue, 07 Aug 2018 11:37:37 -0400 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=disabled version=3.3.2 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:53418) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fn43A-0005DK-DO; Tue, 07 Aug 2018 11:37:32 -0400 Received: from [176.228.60.248] (port=4335 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1fn439-0000GW-RO; Tue, 07 Aug 2018 11:37:32 -0400 Date: Tue, 07 Aug 2018 18:37:29 +0300 Message-Id: <837el2qjba.fsf@gnu.org> From: Eli Zaretskii To: Artem Boldarev In-reply-to: <678a1017-47c5-f74f-3b1b-2a15485b6a2d@gmail.com> (message from Artem Boldarev on Tue, 7 Aug 2018 13:56:58 +0300) Subject: Re: bug#32280: 26.1; FLYSPELL-BUFFER sometimes misbehaves for some input in a large enough buffer References: <992503e5-5f88-30c7-e9b9-fe0a884d2e52@gmail.com> <20180727160048.GA30487@agmartin.aq.upm.es> <20180730132033.GA1182@agmartin.aq.upm.es> <3d036b32-01df-6595-a023-3fc243613813@gmail.com> <20180730164303.GA12241@agmartin.aq.upm.es> <41d68d6b-a687-30c1-818f-57659d7ec6c5@gmail.com> <83h8katnt7.fsf@gnu.org> <678a1017-47c5-f74f-3b1b-2a15485b6a2d@gmail.com> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-Spam-Score: -5.0 (-----) X-Debbugs-Envelope-To: 32280-done Cc: 32280-done@debbugs.gnu.org, agustin6martin@gmail.com X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -6.0 (------) > Cc: agustin6martin@gmail.com, 32280@debbugs.gnu.org > From: Artem Boldarev > Date: Tue, 7 Aug 2018 13:56:58 +0300 > > Thanks, Eli! I have tried the proposed patch, and it seems to solve the > problem. > > Thanks to everyone who have helped to track down the problem. > > By the way, are there any chances to see these changes incorporated into > Emacs 26.2? Thanks for testing, I pushed the fix to the emacs-26 branch, and I'm closing the bug. ------------=_1533656281-31876-1 Content-Type: message/rfc822 Content-Disposition: inline Content-Transfer-Encoding: 7bit Received: (at submit) by debbugs.gnu.org; 26 Jul 2018 12:38:47 +0000 Received: from localhost ([127.0.0.1]:58472 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fifXa-0003hj-8J for submit@debbugs.gnu.org; Thu, 26 Jul 2018 08:38:47 -0400 Received: from eggs.gnu.org ([208.118.235.92]:45112) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ficpF-0005WD-8H for submit@debbugs.gnu.org; Thu, 26 Jul 2018 05:44:50 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ficp6-0001gS-St for submit@debbugs.gnu.org; Thu, 26 Jul 2018 05:44:43 -0400 Received: from lists.gnu.org ([2001:4830:134:3::11]:35593) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1ficp6-0001gO-Ox for submit@debbugs.gnu.org; Thu, 26 Jul 2018 05:44:40 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:36061) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ficp3-0003Ac-GE for bug-gnu-emacs@gnu.org; Thu, 26 Jul 2018 05:44:40 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ficp0-0001aX-Hl for bug-gnu-emacs@gnu.org; Thu, 26 Jul 2018 05:44:37 -0400 Received: from mail-lf1-x143.google.com ([2a00:1450:4864:20::143]:46341) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1ficp0-0001Zk-1X for bug-gnu-emacs@gnu.org; Thu, 26 Jul 2018 05:44:34 -0400 Received: by mail-lf1-x143.google.com with SMTP id l16-v6so749287lfc.13 for ; Thu, 26 Jul 2018 02:44:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=to:from:subject:message-id:date:user-agent:mime-version :content-transfer-encoding:content-language; bh=mN6o0YEn9ealGjKby/X5WmaXRBAyCRIvZlRsMG+PCSI=; b=bFGtLggdyBCkoCAs4pKQQ1+Y33+8dAQL1eA035N44Zf35mqJP5Sdfr4vKru6/EaJ9o x045FFLzqNzBCufFeOblsIH+8LjNHMoDzpNbZO6fmHYRp3uG6nbVYe9pdKNxaV6pwEtF ZF4X13BONjX2txlPMCT4x8A2o2MA2frRuIbMXOzGIjXBEkwza8Mg4xVXvQV2eKbRFNte R2O2VIHVfuKrwA3bNJ0FYmfzVBYvLuWR9tKREvO49R8s/9mgFGDtdl0njltuNDZZfECk CiUTnet0Ex2ity/l0bxYXhiwjTLEMpF4gj5kEZ1CMHdA9sWi1UbK73SVGv/zoypDBdG8 nKuQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:to:from:subject:message-id:date:user-agent :mime-version:content-transfer-encoding:content-language; bh=mN6o0YEn9ealGjKby/X5WmaXRBAyCRIvZlRsMG+PCSI=; b=n0aibEvstneIh9r+Hza7hCzg99sJP4JPFO2USmLU9i8ewwWjk8WDPNpefNvAdewfZz KkGP9tpZ1x3ByE/L0SCPf+b+qPOfTZAxsYabbBUv5KMS6U2Vwptpz1rOnYcLLBH8bej1 qhA6/FArlM0D0FdQJy7jV/Ezqw+65aOhtQxQNGp/GLlcYInnkRkI2dKvnld0/MB7umOA CaM9et7u9EKqQGB9gf+j42HOZlF+FQd2nqVHi8/k8qEkTK+rg2CCWkoTAkwwB7OJLP0b U/KJb5uDiqHdWBxrJPoWnp6nC11xLvrHpCyf6Wi1C5F6muzLvepqc4q/7n1j21AhCOP9 cn8g== X-Gm-Message-State: AOUpUlFLI3CTpZXcyoGyEIJGa8E6ofeVlZsOlF4/lLIYlZUXttcHChEO vhAnt9UbSQKt1EIKPuUWu3UEwT/L X-Google-Smtp-Source: AAOMgpflG0JAP6Zu3eRNgeCOV1Zr4vDX+kc09/1HxR4LgTSEkM/XIV47UpAaNcWW18x7HLmYQANkIg== X-Received: by 2002:a19:6b03:: with SMTP id d3-v6mr874159lfa.81.1532598271476; Thu, 26 Jul 2018 02:44:31 -0700 (PDT) Received: from [192.168.8.8] ([178.165.7.18]) by smtp.gmail.com with ESMTPSA id h24-v6sm144797ljg.55.2018.07.26.02.44.30 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 26 Jul 2018 02:44:30 -0700 (PDT) To: bug-gnu-emacs@gnu.org From: Artem Boldarev Subject: 26.1; FLYSPELL-BUFFER sometimes misbehaves for some input in a large enough buffer Message-ID: <992503e5-5f88-30c7-e9b9-fe0a884d2e52@gmail.com> Date: Thu, 26 Jul 2018 12:44:26 +0300 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Thunderbird/52.9.1 MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 8bit Content-Language: ru X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6.x X-Received-From: 2001:4830:134:3::11 X-Spam-Score: -4.0 (----) X-Debbugs-Envelope-To: submit X-Mailman-Approved-At: Thu, 26 Jul 2018 08:38:45 -0400 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -5.0 (-----) Checking large enough buffer with FlySpell leads to the unexpected results (at least, when spell checking Russian, but I believe that it is possible to reproduce the bug for other languages, at least Ukrainian). For example, when checking large enough buffer (large enough to trigger flyspell-large-region) I got the following messages in the *Messages* buffer: Local Ispell dictionary set to ru_RU Starting new Ispell process hunspell with ru_RU dictionary... Checking region... Spell Checking...100% [посимвольно] Spell Checking completed.  -> смом - 346: word not found  -> стостояния - 319: word not found  -> рекрсивного - 308: word not found  -> универсальнее - 266: word not found  -> генериует - 222: word not found It was not able to find the misspelt words to highlight them in the buffer which I tried to spell check. On the other hand, some not misspelt words were highlighted (именно, бесконечный, усложняет).  Under other circumstances, these words are not highlighted as misspelt (which is as it should be). The problem turned out to be in the flyspell-external-point-words: It makes some heuristic checks before calling (flyspell-word nil t). It seems that these checks are OK for English, as I never encountered any problems when spell-checking English texts. Here is the version of the function which seems to be correct: (defun flyspell-external-point-words ()   "Mark words from a buffer listing incorrect words in order of appearance. The list of incorrect words should be in `flyspell-external-ispell-buffer'. \(We finish by killing that buffer and setting the variable to nil.) The buffer to mark them in is `flyspell-large-region-buffer'."   (let (words-not-found     (ispell-otherchars (ispell-get-otherchars))     (buffer-scan-pos flyspell-large-region-beg)     case-fold-search)     (with-current-buffer flyspell-external-ispell-buffer       (goto-char (point-min))       ;; Loop over incorrect words, in the order they were reported,       ;; which is also the order they appear in the buffer being checked.       (while (re-search-forward "\\([^\n]+\\)\n" nil t)     ;; Bind WORD to the next one.     (let ((word (match-string 1)) (wordpos (point)))       ;; Here there used to be code to see if WORD is the same       ;; as the previous iteration, and count the number of consecutive       ;; identical words, and the loop below would search for that many.       ;; That code seemed to be incorrect, and on principle, should       ;; be unnecessary too. -- rms.       (if flyspell-issue-message-flag           (message "Spell Checking...%d%% [%s]"                (floor (* 100.0 (point)) (point-max))                word))       (with-current-buffer flyspell-large-region-buffer         (goto-char buffer-scan-pos)         (let ((keep t))           ;; Iterate on string search until string is found as word,           ;; not as substring.           (while keep         (if (search-forward word                     flyspell-large-region-end t)             (let* ((found-list                 (save-excursion                   ;; Move back into the match                   ;; so flyspell-get-word will find it.                   (forward-char -1)                   (flyspell-get-word)))                (found (car found-list))                (found-length (length found))                (misspell-length (length word)))               (when (or                  ;; Size and content matches, we really found it.                  (and (= found-length misspell-length)                       (string= found word))                  ;; Matches as part of a boundary-char separated                  ;; word.                  (member word                          (split-string found ispell-otherchars))                  ;; ispell treats beginning of some TeX                  ;; commands as nroff control sequences                  ;; and strips them in the list of                  ;; misspelled words thus giving a                  ;; non-existent word.  Skip if ispell                  ;; is used, string is a TeX command                  ;; (char before beginning of word is                  ;; backslash) and none of the previous                  ;; conditions match.                  (and (not ispell-really-aspell)                   (save-excursion                     (goto-char (- (nth 1 found-list) 1))                     (if (looking-at "[\\]" )                     t                       nil))))             (setq keep nil)             (flyspell-word nil t)             ;; Search for next misspelled word will begin from             ;; end of last validated match.             (setq buffer-scan-pos (point))))           ;; Record if misspelling is not found and try new one           (cl-pushnew (concat " -> " word " - "                        (int-to-string wordpos))                               words-not-found :test #'equal)           (setq keep nil)))))))       ;; we are done       (if flyspell-issue-message-flag (message "Spell Checking completed.")))     ;; Warn about not found misspellings     (dolist (word words-not-found)       (message "%s: word not found" word))     ;; Kill and forget the buffer with the list of incorrect words.     (kill-buffer flyspell-external-ispell-buffer)     (setq flyspell-external-ispell-buffer nil))) The important lines are the following:                  ;; Size and content matches, we really found it.                  (and (= found-length misspell-length)                       (string= found word))                  ;; Matches as part of a boundary-char separated                  ;; word.                  (member word                          (split-string found ispell-otherchars))                  ;; ispell treats beginning of some TeX                  ;; commands as nroff control sequences                  ;; and strips them in the list of                  ;; misspelled words thus giving a                  ;; non-existent word.  Skip if ispell                  ;; is used, string is a TeX command                  ;; (char before beginning of word is                  ;; backslash) and none of the previous                  ;; conditions match.                  (and (not ispell-really-aspell)                   (save-excursion                     (goto-char (- (nth 1 found-list) 1))                     (if (looking-at "[\\]" )                     t                       nil)))) The important parts of my configuration:     (setq ispell-program-name "hunspell")     ;; set dictionaries     (setq ispell-dictionary-alist           '(("en_GB"              "[A-Za-z]" "[^A-Za-z]"              "[']" nil ("-d en_GB") nil iso-8859-1)             ("ru_RU"  "[АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЬЫЪЭЮЯабвгдеёжзийклмнопрстуфхцчшщьыъэюя]"  "[^АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЬЫЪЭЮЯабвгдеёжзийклмнопрстуфхцчшщьыъэюя]"              "[-]" nil ("-d ru_RU") nil utf-8)             ("uk_UA"  "[АБВГДЕЄЖЗИІЇЙКЛМНОПРСТУФХЦЧШЩЬЮЯАабвгдеєжзиіїйклмнопрстуфхцчшщьюя]"  "[^АБВГДЕЄЖЗИІЇЙКЛМНОПРСТУФХЦЧШЩЬЮЯАабвгдеєжзиіїйклмнопрстуфхцчшщьюя]"              "[-']" nil ("-d uk_UA") nil utf-8)             )) I hope you will investigate the problem. In GNU Emacs 26.1 (build 1, x86_64-pc-linux-gnu, GTK+ Version 3.22.30)  of 2018-07-05 built on juergen Windowing system distributor 'HC-Consult', version 11.0.12000000 Recent messages: Omitted 3 lines. Omitting... (Nothing to omit) Wrote /home/artem/.emacs.data/desktop/emacs.desktop-lock Desktop: 1 frame, 19 buffers restored, 1 failed to restore. Turning on magit-auto-revert-mode...done (0.427s, 27 buffers checked) For information about GNU Emacs and the GNU system, type C-h C-a. Making completion list... user-error: Beginning of history; no preceding item user-error: End of history; no default available Configured using:  'configure --prefix=/usr --sysconfdir=/etc --libexecdir=/usr/lib  --localstatedir=/var --with-x-toolkit=gtk3 --with-xft --with-modules  'CFLAGS=-march=x86-64 -mtune=generic -O2 -pipe -fstack-protector-strong  -fno-plt' CPPFLAGS=-D_FORTIFY_SOURCE=2  LDFLAGS=-Wl,-O1,--sort-common,--as-needed,-z,relro,-z,now' Configured features: XPM JPEG TIFF GIF PNG RSVG IMAGEMAGICK SOUND GPM DBUS GSETTINGS NOTIFY ACL GNUTLS LIBXML2 FREETYPE M17N_FLT LIBOTF XFT ZLIB TOOLKIT_SCROLL_BARS GTK3 X11 MODULES THREADS LIBSYSTEMD LCMS2 Important settings:   value of $LANG: en_US.UTF-8   locale-coding-system: utf-8-unix Major mode: Text Minor modes in effect:   display-line-numbers-mode: t   desktop-save-mode: t   global-magit-file-mode: t   diff-auto-refine-mode: t   magit-auto-revert-mode: t   global-git-commit-mode: t   async-bytecomp-package-mode: t   gud-tooltip-mode: t   flyspell-mode: t   shell-dirtrack-mode: t   winner-mode: t   global-auto-complete-mode: t   ido-everywhere: t   show-paren-mode: t   global-auto-revert-mode: t   cl-old-struct-compat-mode: t   tooltip-mode: t   global-eldoc-mode: t   electric-indent-mode: t   mouse-wheel-mode: t   menu-bar-mode: t   file-name-shadow-mode: t   global-font-lock-mode: t   font-lock-mode: t   blink-cursor-mode: t   auto-composition-mode: t   auto-encryption-mode: t   auto-compression-mode: t   column-number-mode: t   line-number-mode: t   transient-mark-mode: t Load-path shadows: /home/artem/.emacs.data/elpa/xcscope-20180426.12/xcscope hides /usr/share/emacs/site-lisp/xcscope /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/ox hides /usr/share/emacs/26.1/lisp/org/ox /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/ox-texinfo hides /usr/share/emacs/26.1/lisp/org/ox-texinfo /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/ox-publish hides /usr/share/emacs/26.1/lisp/org/ox-publish /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/ox-org hides /usr/share/emacs/26.1/lisp/org/ox-org /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/ox-odt hides /usr/share/emacs/26.1/lisp/org/ox-odt /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/ox-md hides /usr/share/emacs/26.1/lisp/org/ox-md /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/ox-man hides /usr/share/emacs/26.1/lisp/org/ox-man /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/ox-latex hides /usr/share/emacs/26.1/lisp/org/ox-latex /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/ox-icalendar hides /usr/share/emacs/26.1/lisp/org/ox-icalendar /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/ox-html hides /usr/share/emacs/26.1/lisp/org/ox-html /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/ox-beamer hides /usr/share/emacs/26.1/lisp/org/ox-beamer /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/ox-ascii hides /usr/share/emacs/26.1/lisp/org/ox-ascii /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/org hides /usr/share/emacs/26.1/lisp/org/org /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/org-w3m hides /usr/share/emacs/26.1/lisp/org/org-w3m /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/org-version hides /usr/share/emacs/26.1/lisp/org/org-version /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/org-timer hides /usr/share/emacs/26.1/lisp/org/org-timer /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/org-table hides /usr/share/emacs/26.1/lisp/org/org-table /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/org-src hides /usr/share/emacs/26.1/lisp/org/org-src /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/org-rmail hides /usr/share/emacs/26.1/lisp/org/org-rmail /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/org-protocol hides /usr/share/emacs/26.1/lisp/org/org-protocol /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/org-plot hides /usr/share/emacs/26.1/lisp/org/org-plot /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/org-pcomplete hides /usr/share/emacs/26.1/lisp/org/org-pcomplete /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/org-mouse hides /usr/share/emacs/26.1/lisp/org/org-mouse /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/org-mobile hides /usr/share/emacs/26.1/lisp/org/org-mobile /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/org-mhe hides /usr/share/emacs/26.1/lisp/org/org-mhe /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/org-macs hides /usr/share/emacs/26.1/lisp/org/org-macs /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/org-macro hides /usr/share/emacs/26.1/lisp/org/org-macro /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/org-loaddefs hides /usr/share/emacs/26.1/lisp/org/org-loaddefs /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/org-list hides /usr/share/emacs/26.1/lisp/org/org-list /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/org-lint hides /usr/share/emacs/26.1/lisp/org/org-lint /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/org-irc hides /usr/share/emacs/26.1/lisp/org/org-irc /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/org-install hides /usr/share/emacs/26.1/lisp/org/org-install /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/org-inlinetask hides /usr/share/emacs/26.1/lisp/org/org-inlinetask /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/org-info hides /usr/share/emacs/26.1/lisp/org/org-info /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/org-indent hides /usr/share/emacs/26.1/lisp/org/org-indent /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/org-id hides /usr/share/emacs/26.1/lisp/org/org-id /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/org-habit hides /usr/share/emacs/26.1/lisp/org/org-habit /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/org-gnus hides /usr/share/emacs/26.1/lisp/org/org-gnus /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/org-footnote hides /usr/share/emacs/26.1/lisp/org/org-footnote /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/org-feed hides /usr/share/emacs/26.1/lisp/org/org-feed /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/org-faces hides /usr/share/emacs/26.1/lisp/org/org-faces /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/org-eww hides /usr/share/emacs/26.1/lisp/org/org-eww /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/org-eshell hides /usr/share/emacs/26.1/lisp/org/org-eshell /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/org-entities hides /usr/share/emacs/26.1/lisp/org/org-entities /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/org-element hides /usr/share/emacs/26.1/lisp/org/org-element /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/org-duration hides /usr/share/emacs/26.1/lisp/org/org-duration /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/org-docview hides /usr/share/emacs/26.1/lisp/org/org-docview /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/org-datetree hides /usr/share/emacs/26.1/lisp/org/org-datetree /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/org-ctags hides /usr/share/emacs/26.1/lisp/org/org-ctags /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/org-crypt hides /usr/share/emacs/26.1/lisp/org/org-crypt /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/org-compat hides /usr/share/emacs/26.1/lisp/org/org-compat /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/org-colview hides /usr/share/emacs/26.1/lisp/org/org-colview /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/org-clock hides /usr/share/emacs/26.1/lisp/org/org-clock /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/org-capture hides /usr/share/emacs/26.1/lisp/org/org-capture /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/org-bibtex hides /usr/share/emacs/26.1/lisp/org/org-bibtex /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/org-bbdb hides /usr/share/emacs/26.1/lisp/org/org-bbdb /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/org-attach hides /usr/share/emacs/26.1/lisp/org/org-attach /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/org-archive hides /usr/share/emacs/26.1/lisp/org/org-archive /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/org-agenda hides /usr/share/emacs/26.1/lisp/org/org-agenda /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/ob hides /usr/share/emacs/26.1/lisp/org/ob /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/ob-vala hides /usr/share/emacs/26.1/lisp/org/ob-vala /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/ob-tangle hides /usr/share/emacs/26.1/lisp/org/ob-tangle /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/ob-table hides /usr/share/emacs/26.1/lisp/org/ob-table /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/ob-stan hides /usr/share/emacs/26.1/lisp/org/ob-stan /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/ob-sqlite hides /usr/share/emacs/26.1/lisp/org/ob-sqlite /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/ob-sql hides /usr/share/emacs/26.1/lisp/org/ob-sql /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/ob-shen hides /usr/share/emacs/26.1/lisp/org/ob-shen /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/ob-shell hides /usr/share/emacs/26.1/lisp/org/ob-shell /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/ob-sed hides /usr/share/emacs/26.1/lisp/org/ob-sed /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/ob-screen hides /usr/share/emacs/26.1/lisp/org/ob-screen /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/ob-scheme hides /usr/share/emacs/26.1/lisp/org/ob-scheme /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/ob-sass hides /usr/share/emacs/26.1/lisp/org/ob-sass /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/ob-ruby hides /usr/share/emacs/26.1/lisp/org/ob-ruby /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/ob-ref hides /usr/share/emacs/26.1/lisp/org/ob-ref /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/ob-python hides /usr/share/emacs/26.1/lisp/org/ob-python /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/ob-processing hides /usr/share/emacs/26.1/lisp/org/ob-processing /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/ob-plantuml hides /usr/share/emacs/26.1/lisp/org/ob-plantuml /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/ob-picolisp hides /usr/share/emacs/26.1/lisp/org/ob-picolisp /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/ob-perl hides /usr/share/emacs/26.1/lisp/org/ob-perl /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/ob-org hides /usr/share/emacs/26.1/lisp/org/ob-org /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/ob-octave hides /usr/share/emacs/26.1/lisp/org/ob-octave /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/ob-ocaml hides /usr/share/emacs/26.1/lisp/org/ob-ocaml /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/ob-mscgen hides /usr/share/emacs/26.1/lisp/org/ob-mscgen /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/ob-maxima hides /usr/share/emacs/26.1/lisp/org/ob-maxima /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/ob-matlab hides /usr/share/emacs/26.1/lisp/org/ob-matlab /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/ob-makefile hides /usr/share/emacs/26.1/lisp/org/ob-makefile /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/ob-lua hides /usr/share/emacs/26.1/lisp/org/ob-lua /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/ob-lob hides /usr/share/emacs/26.1/lisp/org/ob-lob /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/ob-lisp hides /usr/share/emacs/26.1/lisp/org/ob-lisp /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/ob-lilypond hides /usr/share/emacs/26.1/lisp/org/ob-lilypond /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/ob-ledger hides /usr/share/emacs/26.1/lisp/org/ob-ledger /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/ob-latex hides /usr/share/emacs/26.1/lisp/org/ob-latex /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/ob-keys hides /usr/share/emacs/26.1/lisp/org/ob-keys /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/ob-js hides /usr/share/emacs/26.1/lisp/org/ob-js /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/ob-java hides /usr/share/emacs/26.1/lisp/org/ob-java /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/ob-io hides /usr/share/emacs/26.1/lisp/org/ob-io /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/ob-hledger hides /usr/share/emacs/26.1/lisp/org/ob-hledger /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/ob-haskell hides /usr/share/emacs/26.1/lisp/org/ob-haskell /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/ob-groovy hides /usr/share/emacs/26.1/lisp/org/ob-groovy /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/ob-gnuplot hides /usr/share/emacs/26.1/lisp/org/ob-gnuplot /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/ob-fortran hides /usr/share/emacs/26.1/lisp/org/ob-fortran /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/ob-forth hides /usr/share/emacs/26.1/lisp/org/ob-forth /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/ob-exp hides /usr/share/emacs/26.1/lisp/org/ob-exp /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/ob-eval hides /usr/share/emacs/26.1/lisp/org/ob-eval /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/ob-emacs-lisp hides /usr/share/emacs/26.1/lisp/org/ob-emacs-lisp /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/ob-ebnf hides /usr/share/emacs/26.1/lisp/org/ob-ebnf /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/ob-dot hides /usr/share/emacs/26.1/lisp/org/ob-dot /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/ob-ditaa hides /usr/share/emacs/26.1/lisp/org/ob-ditaa /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/ob-css hides /usr/share/emacs/26.1/lisp/org/ob-css /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/ob-core hides /usr/share/emacs/26.1/lisp/org/ob-core /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/ob-coq hides /usr/share/emacs/26.1/lisp/org/ob-coq /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/ob-comint hides /usr/share/emacs/26.1/lisp/org/ob-comint /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/ob-clojure hides /usr/share/emacs/26.1/lisp/org/ob-clojure /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/ob-calc hides /usr/share/emacs/26.1/lisp/org/ob-calc /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/ob-awk hides /usr/share/emacs/26.1/lisp/org/ob-awk /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/ob-asymptote hides /usr/share/emacs/26.1/lisp/org/ob-asymptote /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/ob-abc hides /usr/share/emacs/26.1/lisp/org/ob-abc /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/ob-R hides /usr/share/emacs/26.1/lisp/org/ob-R /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/ob-J hides /usr/share/emacs/26.1/lisp/org/ob-J /home/artem/.emacs.data/elpa/org-plus-contrib-20180709/ob-C hides /usr/share/emacs/26.1/lisp/org/ob-C Features: (shadow mail-extr emacsbug sendmail linum lisp-mnt macrostep-c cmacexp macrostep irony-cdb-libclang irony-cdb-json irony-cdb-clang-complete irony-cdb company-oddmuse company-keywords company-etags company-gtags company-dabbrev-code company-dabbrev company-files company-capf company-cmake company-xcode company-clang company-semantic company-eclim company-bbdb company-irony company-template irony-eldoc flycheck-irony irony-diagnostics irony-completion irony-snippet ac-slime sort dired-aux jka-compr display-line-numbers hl-line plan9-theme basic-theme desktop frameset magit-bookmark magit-obsolete magit-blame magit-stash magit-bisect magit-remote magit-commit magit-sequence magit-notes magit-worktree magit-tag magit-merge magit-branch magit-reset magit-collab ghub let-alist magit-files magit-refs magit-status magit magit-repos magit-apply magit-wip magit-log which-func imenu magit-diff smerge-mode diff-mode magit-core magit-autorevert magit-process magit-margin magit-mode git-commit magit-git magit-section magit-utils crm magit-popup log-edit message rfc822 mml mml-sec epa derived epg mm-decode mm-bodies mm-encode mailabbrev gmm-utils mailheader pcvs-util add-log with-editor async-bytecomp async irony irony-iotask ggtags ewoc xcscope cc-mode cc-fonts cc-guess cc-menus cc-cmds cc-styles cc-align cc-engine cc-vars cc-defs deft cl ox-bibtex ox-odt rng-loc rng-uri rng-parse rng-match rng-dt rng-util rng-pttrn nxml-parse nxml-ns nxml-enc xmltok nxml-util ox-latex ox-icalendar ox-html table ox-ascii ox-publish ox org-element avl-tree generator org org-macro org-footnote org-pcomplete org-list org-faces org-entities org-version ob-emacs-lisp ob ob-tangle org-src ob-ref ob-lob ob-table ob-keys ob-exp ob-comint ob-core ob-eval org-compat org-macs org-loaddefs cal-menu calendar cal-loaddefs robe url-http tls gnutls url-auth mail-parse rfc2231 url-gw nsm rmc inf-ruby ruby-mode smie flymake-lua company-lua lua-mode rcirc cargo cargo-process markdown-mode color company-racer deferred company pcase racer pos-tip f s rust-mode gud flyspell ispell eww puny mm-url gnus nnheader gnus-util rmail rmail-loaddefs rfc2047 rfc2045 ietf-drums mail-utils url-queue shr svg xml dom slime-trace-dialog slime-xref-browser tree-widget wid-edit slime-fancy-inspector slime-fuzzy slime-c-p-c slime-editing-commands slime-asdf grep slime-references slime-compiler-notes-tree slime-autodoc slime-repl slime-parse slime arc-mode archive-mode noutline outline easy-mmode hyperspec browse-url elec-pair dired-x dired dired-loaddefs esh-var esh-io esh-cmd esh-opt esh-ext esh-proc esh-arg esh-groups eshell esh-module esh-mode esh-util bookmark pp url url-proxy url-privacy url-expand url-methods url-history url-cookie url-domsuf url-util mailcap tramp tramp-compat tramp-loaddefs trampver ucs-normalize shell pcomplete parse-time format-spec elisp-slime-nav etags xref project winner flycheck json map find-func subr-x dash advice flymake-proc flymake warnings thingatpt auto-complete-config auto-complete edmacro kmacro popup ido windmove paren autorevert filenotify mm-util mail-prsvr cl-extra help-mode finder-inf tex-site rx slime-autoloads info package easymenu epg-config url-handlers url-parse auth-source cl-seq eieio eieio-core cl-macs eieio-loaddefs password-cache url-vars seq byte-opt gv compile comint ansi-color ring bytecomp byte-compile cconv server cl-loaddefs cl-lib time-date mule-util tooltip eldoc electric uniquify ediff-hook vc-hooks lisp-float-type mwheel term/x-win x-win term/common-win x-dnd tool-bar dnd fontset image regexp-opt fringe tabulated-list replace newcomment text-mode elisp-mode lisp-mode prog-mode register page menu-bar rfn-eshadow isearch timer select scroll-bar mouse jit-lock font-lock syntax facemenu font-core term/tty-colors frame cl-generic cham georgian utf-8-lang misc-lang vietnamese tibetan thai tai-viet lao korean japanese eucjp-ms cp51932 hebrew greek romanian slovak czech european ethiopic indian cyrillic chinese composite charscript charprop case-table epa-hook jka-cmpr-hook help simple abbrev obarray minibuffer cl-preloaded nadvice loaddefs button faces cus-face macroexp files text-properties overlay sha1 md5 base64 format env code-pages mule custom widget hashtable-print-readable backquote dbusbind inotify lcms2 dynamic-setting system-font-setting font-render-setting move-toolbar gtk x-toolkit x multi-tty make-network-process emacs) Memory information: ((conses 16 589646 60784)  (symbols 48 55348 4)  (miscs 40 871 2775)  (strings 32 161266 15744)  (string-bytes 1 4916243)  (vectors 16 85794)  (vector-slots 8 1289279 103516)  (floats 8 429 500)  (intervals 56 2676 0)  (buffers 992 34)) ------------=_1533656281-31876-1--