texinfo-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[5936] multi-byte backspace in incremental search


From: Gavin D. Smith
Subject: [5936] multi-byte backspace in incremental search
Date: Wed, 19 Nov 2014 12:41:48 +0000

Revision: 5936
          http://svn.sv.gnu.org/viewvc/?view=rev&root=texinfo&revision=5936
Author:   gavin
Date:     2014-11-19 12:41:45 +0000 (Wed, 19 Nov 2014)
Log Message:
-----------
multi-byte backspace in incremental search

Modified Paths:
--------------
    trunk/ChangeLog
    trunk/info/session.c

Modified: trunk/ChangeLog
===================================================================
--- trunk/ChangeLog     2014-11-19 12:07:16 UTC (rev 5935)
+++ trunk/ChangeLog     2014-11-19 12:41:45 UTC (rev 5936)
@@ -1,5 +1,10 @@
 2014-11-19  Gavin Smith  <address@hidden>
 
+       * info/session.c (incremental_search) <backspace>: Remove a 
+       complete multi-byte character.
+
+2014-11-19  Gavin Smith  <address@hidden>
+
        * info/info.c (get_initial_file) <inexact dir lookup>: Check if 
        file referred to exists.
        * info/t/dir-dangling-entry.sh: New test.

Modified: trunk/info/session.c
===================================================================
--- trunk/info/session.c        2014-11-19 12:07:16 UTC (rev 5935)
+++ trunk/info/session.c        2014-11-19 12:41:45 UTC (rev 5936)
@@ -4607,10 +4607,20 @@
             }
           else
             {
-              /* TODO: Erase mulit-byte characters correctly. */
-              pop_isearch (window, &isearch_string_index,
-                           &dir, &search_result, &start_off);
+              int end = isearch_string_index;
+              /* Remove a complete multi-byte character from the end of the
+                 search string. */
+              do
+                {
+                  pop_isearch (window, &isearch_string_index,
+                               &dir, &search_result, &start_off);
+                }
+              while (isearch_string_index > 0
+                && (long) mbrlen (isearch_string + isearch_string_index,
+                                  end - isearch_string_index, NULL) <= 0);
+               
               isearch_string[isearch_string_index] = '\0';
+
               if (isearch_string_index == 0)
                 {
                   /* Don't search for an empty string.  Clear the search. */




reply via email to

[Prev in Thread] Current Thread [Next in Thread]