Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package ibus-libpinyin for openSUSE:Factory 
checked in at 2023-02-27 12:55:04
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/ibus-libpinyin (Old)
 and      /work/SRC/openSUSE:Factory/.ibus-libpinyin.new.31432 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "ibus-libpinyin"

Mon Feb 27 12:55:04 2023 rev:33 rq:1067811 version:1.15.1

Changes:
--------
--- /work/SRC/openSUSE:Factory/ibus-libpinyin/ibus-libpinyin.changes    
2022-12-07 17:37:38.813420211 +0100
+++ /work/SRC/openSUSE:Factory/.ibus-libpinyin.new.31432/ibus-libpinyin.changes 
2023-02-27 12:55:06.827328756 +0100
@@ -1,0 +2,16 @@
+Sun Feb 26 13:40:30 UTC 2023 - Hillwood Yang <hillw...@opensuse.org>
+
+- Add fix-sqlite-3_41_0-support.patch, fix build on sqlite 3.41.0
+
+-------------------------------------------------------------------
+Tue Feb 21 12:17:14 UTC 2023 - Hillwood Yang <hillw...@opensuse.org>
+
+- Update version to 1.15.1
+  * Require libpinyin 2.7.91
+  * Improve suggestion candidates
+  * Improve English candidates
+  * Support longer candidates
+  * Support Legacy mode
+  * Fix bugs
+
+-------------------------------------------------------------------

Old:
----
  ibus-libpinyin-1.13.1.tar.gz

New:
----
  fix-sqlite-3_41_0-support.patch
  ibus-libpinyin-1.15.1.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ ibus-libpinyin.spec ++++++
--- /var/tmp/diff_new_pack.aWy1Wo/_old  2023-02-27 12:55:07.267331456 +0100
+++ /var/tmp/diff_new_pack.aWy1Wo/_new  2023-02-27 12:55:07.271331480 +0100
@@ -1,8 +1,8 @@
 #
 # spec file for package ibus-libpinyin
 #
-# Copyright (c) 2022 SUSE LLC
-# Copyright (c) 2022 Hillwood Yang <hillw...@opensuse.org>
+# Copyright (c) 2023 SUSE LLC
+# Copyright (c) 2023 Hillwood Yang <hillw...@opensuse.org>
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -20,13 +20,15 @@
 %define   with_cloud_input   1
 
 Name:           ibus-libpinyin
-Version:        1.13.1
+Version:        1.15.1
 Release:        0
 Summary:        Intelligent Pinyin engine based on libpinyin for IBus
 License:        GPL-3.0-or-later
 Group:          System/I18n/Chinese
 URL:            https://github.com/libpinyin/ibus-libpinyin
 Source0:        
https://github.com/libpinyin/ibus-libpinyin/releases/download/%{version}/%{name}-%{version}.tar.gz
+# https://github.com/libpinyin/ibus-libpinyin/pull/414
+Patch0:         fix-sqlite-3_41_0-support.patch
 BuildRequires:  fdupes
 BuildRequires:  gcc-c++
 BuildRequires:  gettext-devel
@@ -41,7 +43,7 @@
 BuildRequires:  sqlite3-devel
 BuildRequires:  update-desktop-files
 BuildRequires:  pkgconfig(gdk-3.0)
-BuildRequires:  pkgconfig(libpinyin) >= 2.2.1
+BuildRequires:  pkgconfig(libpinyin) >= 2.7.91
 %if %{with_cloud_input}
 BuildRequires:  pkgconfig(json-glib-1.0)
 BuildRequires:  pkgconfig(libsoup-2.4)
@@ -59,7 +61,7 @@
 method based on libpinyin for IBus.
 
 %prep
-%setup -q
+%autosetup -p1
 
 %build
 NOCONFIGURE=1 ./autogen.sh

++++++ fix-sqlite-3_41_0-support.patch ++++++
>From 2736cc66676b967c0961ca7802e3483b0d8434a0 Mon Sep 17 00:00:00 2001
From: Dominique Leuenberger <dims...@opensuse.org>
Date: Fri, 24 Feb 2023 13:38:56 +0100
Subject: [PATCH] build: fix awk scripts to work properly when used againts
 sqlite 3.41.0

 The SQL standard requires double-quotes around identifiers and single-quotes 
around string literals. For example:

    "this is a legal SQL column name"
    'this is an SQL string literal'

With sqlite 3.41.0, this is being enforced on the CLI
---
 data/english.awk | 8 ++++----
 data/table.awk   | 2 +-
 2 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/data/english.awk b/data/english.awk
index c5dc0aa2..8b32f3f2 100644
--- a/data/english.awk
+++ b/data/english.awk
@@ -5,9 +5,9 @@ BEGIN {
     print "BEGIN TRANSACTION;"
 
     # Create english table
-    print "CREATE TABLE IF NOT EXISTS \"english\" ( "   \
-        "\"word\" TEXT NOT NULL PRIMARY KEY,"           \
-        "\"freq\" FLOAT NOT NULL DEFAULT(0)"            \
+    print "CREATE TABLE IF NOT EXISTS 'english' ( "   \
+        "'word' TEXT NOT NULL PRIMARY KEY,"           \
+        "'freq' FLOAT NOT NULL DEFAULT(0)"            \
         ");";
 
     # Create desc table
@@ -16,7 +16,7 @@ BEGIN {
 }
 
     # Insert data into english table
-    {   printf "INSERT INTO english (word, freq) VALUES (\"%s\", %f);\n", $1, 
$2}
+    {   printf "INSERT INTO english (word, freq) VALUES ('%s', %f);\n", $1, $2}
 
     #quit sqlite3
 END {
diff --git a/data/table.awk b/data/table.awk
index 700529cf..c097ec26 100644
--- a/data/table.awk
+++ b/data/table.awk
@@ -21,7 +21,7 @@ BEGIN {
 
 # Insert data into phrases table
 NF == 4 {
-    printf "INSERT INTO phrases (id, tabkeys, phrase) VALUES (%d, \"%s\", 
\"%s\");\n", id, $3, $1;
+    printf "INSERT INTO phrases (id, tabkeys, phrase) VALUES (%d, '%s', 
'%s');\n", id, $3, $1;
     id++;
 }
 

++++++ ibus-libpinyin-1.13.1.tar.gz -> ibus-libpinyin-1.15.1.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ibus-libpinyin-1.13.1/ChangeLog 
new/ibus-libpinyin-1.15.1/ChangeLog
--- old/ibus-libpinyin-1.13.1/ChangeLog 2022-09-15 06:19:55.000000000 +0200
+++ new/ibus-libpinyin-1.15.1/ChangeLog 2023-02-21 02:36:20.000000000 +0100
@@ -1,3 +1,194 @@
+commit 80bab3368b692acc25957e2649568fda640c4356
+Author: Peng Wu <alexep...@gmail.com>
+Date:   2023-02-21 09:07:29 +0800
+
+    Update NEWS
+
+M      NEWS
+
+commit 015b17a0ad9eebfe5532c1031148c64dccd372b1
+Author: Peng Wu <alexep...@gmail.com>
+Date:   2023-02-21 09:06:49 +0800
+
+    Bump version 1.15.1
+
+M      configure.ac
+
+commit 7a7c547a312b00e8e28dde2b010e0db027637162
+Author: Peng Wu <alexep...@gmail.com>
+Date:   2023-01-31 09:55:23 +0800
+
+    Fix PinyinEditor::processNumber method
+
+M      src/PYPPinyinEditor.cc
+
+commit 95abb11ee598169fcc329c8055ea31fc57a047f7
+Author: Peng Wu <alexep...@gmail.com>
+Date:   2023-01-03 17:34:10 +0800
+
+    Update NEWS
+
+M      NEWS
+
+commit 485efb9522a377b9c0bfe93720c1f33e5e3f1685
+Author: Peng Wu <alexep...@gmail.com>
+Date:   2023-01-03 17:32:43 +0800
+
+    Bump version 1.15.0
+
+M      configure.ac
+
+commit d948bf58ddb39da8a6988962a73ba1f6dbf238fa
+Author: Peng Wu <alexep...@gmail.com>
+Date:   2022-11-24 18:23:46 +0800
+
+    Fix English symbols
+
+M      src/PYEnglishEditor.h
+M      src/PYPPinyinEngine.cc
+
+commit f7cdfd73867ad85f97eb87dced5ca32be4e99ab3
+Author: Peng Wu <alexep...@gmail.com>
+Date:   2022-11-18 15:04:22 +0800
+
+    Use Fedora rawhide container image
+
+M      .github/workflows/make-check.yml
+
+commit 56ba7839c3794f7ec22c38e5c3e78bd0443efc7a
+Author: Peng Wu <alexep...@gmail.com>
+Date:   2022-10-28 11:19:14 +0800
+
+    Bump version 1.14.92
+
+M      configure.ac
+
+commit ec4a563617272e2d1741069492dd3351618eaf9d
+Author: Peng Wu <alexep...@gmail.com>
+Date:   2022-10-26 15:20:44 +0800
+
+    Fix SuggestionEditor::candidateClicked method
+
+M      src/PYPSuggestionEditor.cc
+
+commit 6f90b44df7126506c2162bce3b58b1c8ff9851c7
+Author: Peng Wu <alexep...@gmail.com>
+Date:   2022-10-12 15:15:13 +0800
+
+    Update updatePreeditText method for Legacy mode
+
+M      src/PYPPinyinEditor.cc
+
+commit 0fe1edb310b9aaffbd7e02b3a57ecec89c955891
+Author: Peng Wu <alexep...@gmail.com>
+Date:   2022-10-12 15:02:48 +0800
+
+    Update NEWS
+
+M      NEWS
+
+commit 3d8d297a6fc427ff5f688ca3c5df6e5ce1c344db
+Author: Peng Wu <alexep...@gmail.com>
+Date:   2022-10-12 14:57:40 +0800
+
+    Update configure.ac
+
+M      configure.ac
+
+commit d7217bcfa7cf24dfda0ef5bc3c0c0fe000d2f806
+Author: Peng Wu <alexep...@gmail.com>
+Date:   2022-10-09 13:32:26 +0800
+
+    Add updateAll method to class Editor
+
+M      src/PYEditor.cc
+M      src/PYEditor.h
+M      src/PYEnglishEditor.cc
+M      src/PYEnglishEditor.h
+M      src/PYExtEditor.cc
+M      src/PYExtEditor.h
+M      src/PYPPhoneticEditor.cc
+M      src/PYPPhoneticEditor.h
+M      src/PYPPinyinEngine.cc
+M      src/PYTableEditor.cc
+M      src/PYTableEditor.h
+
+commit eb6b45f7a4cd52fdbe23e0539e5119b43f7a281a
+Author: Peng Wu <alexep...@gmail.com>
+Date:   2022-09-26 14:30:18 +0800
+
+    Bump version 1.14.91
+
+M      configure.ac
+
+commit 13181349a6a481bcf3898a4f41178dafe25a79f8
+Author: Peng Wu <alexep...@gmail.com>
+Date:   2022-09-26 14:25:43 +0800
+
+    Support Legacy mode
+
+M      src/PYPConfig.cc
+M      src/PYPLibPinyinCandidates.cc
+M      src/PYPPhoneticEditor.cc
+
+commit d88ecd60db2942ca05d21b65158d257568556d27
+Author: Peng Wu <alexep...@gmail.com>
+Date:   2022-09-26 14:24:09 +0800
+
+    Update setup dialog
+
+M      setup/ibus-libpinyin-preferences.ui
+
+commit b43c17a148e467e7177ee03f146269c7e8de6032
+Author: Peng Wu <alexep...@gmail.com>
+Date:   2022-09-26 12:21:15 +0800
+
+    Improve longer candidates
+
+M      src/PYPCloudCandidates.cc
+M      src/PYPEmojiCandidates.cc
+M      src/PYPEnglishCandidates.cc
+M      src/PYPLibPinyinCandidates.cc
+M      src/PYPLuaTriggerCandidates.cc
+
+commit e856577e1d77719d6001db79f3149e1f537d0aaf
+Author: Peng Wu <alexep...@gmail.com>
+Date:   2022-09-23 16:40:24 +0800
+
+    Update m_sort_option variable
+
+M      src/PYConfig.cc
+M      src/PYConfig.h
+M      src/PYPConfig.cc
+
+commit abd006be68be04509801ca5ff52d759f9d21c724
+Author: Peng Wu <alexep...@gmail.com>
+Date:   2022-09-23 16:33:49 +0800
+
+    Improve Suggestion candidates
+
+M      src/PYPEnhancedCandidates.h
+M      src/PYPSuggestionCandidates.cc
+M      src/PYPSuggestionEditor.cc
+
+commit 98f7e43b3bfe69f6cbcd2e7c2479c8cac503f580
+Author: Peng Wu <alexep...@gmail.com>
+Date:   2022-09-23 16:19:10 +0800
+
+    Support longer candidates
+
+M      src/PYPEnhancedCandidates.h
+M      src/PYPLibPinyinCandidates.cc
+M      src/PYPPhoneticEditor.cc
+
+commit 38e61f5b2164996244280a92d40b84ad6f54a457
+Author: Peng Wu <alexep...@gmail.com>
+Date:   2022-09-23 12:55:49 +0800
+
+    Improve English candidates
+
+M      src/PYPEnglishCandidates.cc
+
 commit b641bd0881edfc975f997dca5305326ac1fbf5f0
 Author: Peng Wu <alexep...@gmail.com>
 Date:   2022-09-15 12:12:03 +0800
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ibus-libpinyin-1.13.1/NEWS 
new/ibus-libpinyin-1.15.1/NEWS
--- old/ibus-libpinyin-1.13.1/NEWS      2022-09-15 05:35:09.000000000 +0200
+++ new/ibus-libpinyin-1.15.1/NEWS      2023-02-21 02:07:10.000000000 +0100
@@ -1,3 +1,16 @@
+version 1.15.1
+* bug fixes
+
+version 1.15.0
+* bug fixes
+
+version 1.14.91
+* require libpinyin 2.7.91
+* improve suggestion candidates
+* improve English candidates
+* support longer candidates
+* support Legacy mode
+
 version 1.13.1
 * fix setup dialog
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ibus-libpinyin-1.13.1/configure 
new/ibus-libpinyin-1.15.1/configure
--- old/ibus-libpinyin-1.13.1/configure 2022-09-15 06:18:53.000000000 +0200
+++ new/ibus-libpinyin-1.15.1/configure 2023-02-21 02:12:40.000000000 +0100
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.71 for ibus-libpinyin 1.13.1.
+# Generated by GNU Autoconf 2.71 for ibus-libpinyin 1.15.1.
 #
 # Report bugs to <https://github.com/libpinyin/ibus-libpinyin/issues/new>.
 #
@@ -622,8 +622,8 @@
 # Identity of this package.
 PACKAGE_NAME='ibus-libpinyin'
 PACKAGE_TARNAME='ibus-libpinyin'
-PACKAGE_VERSION='1.13.1'
-PACKAGE_STRING='ibus-libpinyin 1.13.1'
+PACKAGE_VERSION='1.15.1'
+PACKAGE_STRING='ibus-libpinyin 1.15.1'
 PACKAGE_BUGREPORT='https://github.com/libpinyin/ibus-libpinyin/issues/new'
 PACKAGE_URL=''
 
@@ -1479,7 +1479,7 @@
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures ibus-libpinyin 1.13.1 to adapt to many kinds of 
systems.
+\`configure' configures ibus-libpinyin 1.15.1 to adapt to many kinds of 
systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1550,7 +1550,7 @@
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of ibus-libpinyin 1.13.1:";;
+     short | recursive ) echo "Configuration of ibus-libpinyin 1.15.1:";;
    esac
   cat <<\_ACEOF
 
@@ -1725,7 +1725,7 @@
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-ibus-libpinyin configure 1.13.1
+ibus-libpinyin configure 1.15.1
 generated by GNU Autoconf 2.71
 
 Copyright (C) 2021 Free Software Foundation, Inc.
@@ -2181,7 +2181,7 @@
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by ibus-libpinyin $as_me 1.13.1, which was
+It was created by ibus-libpinyin $as_me 1.15.1, which was
 generated by GNU Autoconf 2.71.  Invocation command line was
 
   $ $0$ac_configure_args_raw
@@ -3669,7 +3669,7 @@
 
 # Define the identity of the package.
  PACKAGE='ibus-libpinyin'
- VERSION='1.13.1'
+ VERSION='1.15.1'
 
 
 printf "%s\n" "#define PACKAGE \"$PACKAGE\"" >>confdefs.h
@@ -5241,9 +5241,9 @@
 
 # define PACKAGE_VERSION_* variables
 
-  PACKAGE_VERSION_MAJOR=$(echo 1.13.1 | cut -d'.' -f1)
-  PACKAGE_VERSION_MINOR=$(echo 1.13.1 | cut -d'.' -f2)
-  PACKAGE_VERSION_MICRO=$(echo 1.13.1 | cut -d'.' -f3)
+  PACKAGE_VERSION_MAJOR=$(echo 1.15.1 | cut -d'.' -f1)
+  PACKAGE_VERSION_MINOR=$(echo 1.15.1 | cut -d'.' -f2)
+  PACKAGE_VERSION_MICRO=$(echo 1.15.1 | cut -d'.' -f3)
 
 
 
@@ -5253,7 +5253,7 @@
   { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking nano version" >&5
 printf %s "checking nano version... " >&6; }
 
-  NANO=$(echo 1.13.1 | cut -d'.' -f4)
+  NANO=$(echo 1.15.1 | cut -d'.' -f4)
 
   if test x"$NANO" = x || test "x$NANO" = "x0" ; then
     { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: 0 (release)" >&5
@@ -6595,11 +6595,11 @@
 then :
   { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CXX option to 
enable C++11 features" >&5
 printf %s "checking for $CXX option to enable C++11 features... " >&6; }
-if test ${ac_cv_prog_cxx_11+y}
+if test ${ac_cv_prog_cxx_cxx11+y}
 then :
   printf %s "(cached) " >&6
 else $as_nop
-  ac_cv_prog_cxx_11=no
+  ac_cv_prog_cxx_cxx11=no
 ac_save_CXX=$CXX
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
@@ -6641,11 +6641,11 @@
 then :
   { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CXX option to 
enable C++98 features" >&5
 printf %s "checking for $CXX option to enable C++98 features... " >&6; }
-if test ${ac_cv_prog_cxx_98+y}
+if test ${ac_cv_prog_cxx_cxx98+y}
 then :
   printf %s "(cached) " >&6
 else $as_nop
-  ac_cv_prog_cxx_98=no
+  ac_cv_prog_cxx_cxx98=no
 ac_save_CXX=$CXX
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
@@ -18807,16 +18807,16 @@
  elif test -n "$PKG_CONFIG"; then
     if test -n "$PKG_CONFIG" && \
     { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists 
--print-errors \"
-    libpinyin >= 2.2.1
+    libpinyin >= 2.7.91
 \""; } >&5
   ($PKG_CONFIG --exists --print-errors "
-    libpinyin >= 2.2.1
+    libpinyin >= 2.7.91
 ") 2>&5
   ac_status=$?
   printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
   test $ac_status = 0; }; then
   pkg_cv_LIBPINYIN_CFLAGS=`$PKG_CONFIG --cflags "
-    libpinyin >= 2.2.1
+    libpinyin >= 2.7.91
 " 2>/dev/null`
                      test "x$?" != "x0" && pkg_failed=yes
 else
@@ -18830,16 +18830,16 @@
  elif test -n "$PKG_CONFIG"; then
     if test -n "$PKG_CONFIG" && \
     { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists 
--print-errors \"
-    libpinyin >= 2.2.1
+    libpinyin >= 2.7.91
 \""; } >&5
   ($PKG_CONFIG --exists --print-errors "
-    libpinyin >= 2.2.1
+    libpinyin >= 2.7.91
 ") 2>&5
   ac_status=$?
   printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
   test $ac_status = 0; }; then
   pkg_cv_LIBPINYIN_LIBS=`$PKG_CONFIG --libs "
-    libpinyin >= 2.2.1
+    libpinyin >= 2.7.91
 " 2>/dev/null`
                      test "x$?" != "x0" && pkg_failed=yes
 else
@@ -18862,18 +18862,18 @@
 fi
         if test $_pkg_short_errors_supported = yes; then
                LIBPINYIN_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors 
--cflags --libs "
-    libpinyin >= 2.2.1
+    libpinyin >= 2.7.91
 " 2>&1`
         else
                LIBPINYIN_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags 
--libs "
-    libpinyin >= 2.2.1
+    libpinyin >= 2.7.91
 " 2>&1`
         fi
        # Put the nasty error message in config.log where it belongs
        echo "$LIBPINYIN_PKG_ERRORS" >&5
 
        as_fn_error $? "Package requirements (
-    libpinyin >= 2.2.1
+    libpinyin >= 2.7.91
 ) were not met:
 
 $LIBPINYIN_PKG_ERRORS
@@ -23426,7 +23426,7 @@
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by ibus-libpinyin $as_me 1.13.1, which was
+This file was extended by ibus-libpinyin $as_me 1.15.1, which was
 generated by GNU Autoconf 2.71.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -23494,7 +23494,7 @@
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_config='$ac_cs_config_escaped'
 ac_cs_version="\\
-ibus-libpinyin config.status 1.13.1
+ibus-libpinyin config.status 1.15.1
 configured by $0, generated by GNU Autoconf 2.71,
   with options \\"\$ac_cs_config\\"
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ibus-libpinyin-1.13.1/configure.ac 
new/ibus-libpinyin-1.15.1/configure.ac
--- old/ibus-libpinyin-1.13.1/configure.ac      2022-09-15 06:11:41.000000000 
+0200
+++ new/ibus-libpinyin-1.15.1/configure.ac      2023-02-21 02:06:26.000000000 
+0100
@@ -21,7 +21,7 @@
 # if not 1, append datestamp to the version number.
 m4_define([ibus_released], [1])
 m4_define([ibus_major_version], [1])
-m4_define([ibus_minor_version], [13])
+m4_define([ibus_minor_version], [15])
 m4_define([ibus_micro_version], [1])
 m4_define(ibus_maybe_datestamp,
     m4_esyscmd([if test x]ibus_released[ != x1; then date +.%Y%m%d | tr -d 
'\n\r'; fi]))
@@ -67,7 +67,7 @@
 fi
 
 PKG_CHECK_MODULES(LIBPINYIN, [
-    libpinyin >= 2.2.1
+    libpinyin >= 2.7.91
 ], [enable_libpinyin=yes])
 
 LIBPINYIN_DATADIR=`$PKG_CONFIG --variable=pkgdatadir libpinyin`
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ibus-libpinyin-1.13.1/setup/config.py 
new/ibus-libpinyin-1.15.1/setup/config.py
--- old/ibus-libpinyin-1.13.1/setup/config.py   2022-09-15 06:18:57.000000000 
+0200
+++ new/ibus-libpinyin-1.15.1/setup/config.py   2023-02-21 02:12:44.000000000 
+0100
@@ -24,7 +24,7 @@
 gettext.install("ibus-libpinyin")
 
 def get_version():
-    return "1.13.1"
+    return "1.15.1"
 
 def get_longname():
     return _("Intelligent Pinyin")
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/ibus-libpinyin-1.13.1/setup/ibus-libpinyin-preferences.ui 
new/ibus-libpinyin-1.15.1/setup/ibus-libpinyin-preferences.ui
--- old/ibus-libpinyin-1.13.1/setup/ibus-libpinyin-preferences.ui       
2022-04-12 06:20:15.000000000 +0200
+++ new/ibus-libpinyin-1.15.1/setup/ibus-libpinyin-preferences.ui       
2022-09-26 07:42:04.000000000 +0200
@@ -151,6 +151,9 @@
       <row>
         <col id="0" translatable="yes">Pinyin Length</col>
       </row>
+      <row>
+        <col id="0" translatable="yes">Legacy</col>
+      </row>
     </data>
   </object>
   <object class="GtkDialog" id="dialog">
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ibus-libpinyin-1.13.1/src/PYConfig.cc 
new/ibus-libpinyin-1.15.1/src/PYConfig.cc
--- old/ibus-libpinyin-1.13.1/src/PYConfig.cc   2022-04-12 05:42:00.000000000 
+0200
+++ new/ibus-libpinyin-1.15.1/src/PYConfig.cc   2022-09-23 10:34:57.000000000 
+0200
@@ -43,7 +43,7 @@
     m_page_size = 5;
     m_display_style = DISPLAY_STYLE_TRADITIONAL;
     m_remember_every_input = FALSE;
-    m_sort_option = SORT_BY_PHRASE_LENGTH_AND_PINYIN_LENGTH_AND_FREQUENCY;
+    m_sort_option = SORT_BY_PHRASE_LENGTH | SORT_BY_PINYIN_LENGTH | 
SORT_BY_FREQUENCY;
 
     m_shift_select_candidate = FALSE;
     m_minus_equal_page = TRUE;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ibus-libpinyin-1.13.1/src/PYConfig.h 
new/ibus-libpinyin-1.15.1/src/PYConfig.h
--- old/ibus-libpinyin-1.13.1/src/PYConfig.h    2022-04-12 05:41:25.000000000 
+0200
+++ new/ibus-libpinyin-1.15.1/src/PYConfig.h    2022-09-23 10:34:31.000000000 
+0200
@@ -58,7 +58,7 @@
     guint pageSize (void) const                 { return m_page_size; }
     DisplayStyle displayStyle (void) const      { return m_display_style; }
     gboolean rememberEveryInput (void) const    { return 
m_remember_every_input; }
-    sort_option_t sortOption (void) const       { return m_sort_option; }
+    guint sortOption (void) const               { return m_sort_option; }
     gboolean shiftSelectCandidate (void) const  { return 
m_shift_select_candidate; }
     gboolean minusEqualPage (void) const        { return m_minus_equal_page; }
     gboolean commaPeriodPage (void) const       { return m_comma_period_page; }
@@ -144,7 +144,7 @@
     guint m_page_size;
     DisplayStyle m_display_style;
     gboolean m_remember_every_input;
-    sort_option_t m_sort_option;
+    guint m_sort_option;
 
     gboolean m_shift_select_candidate;
     gboolean m_minus_equal_page;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ibus-libpinyin-1.13.1/src/PYEditor.cc 
new/ibus-libpinyin-1.15.1/src/PYEditor.cc
--- old/ibus-libpinyin-1.13.1/src/PYEditor.cc   2020-06-16 09:29:42.000000000 
+0200
+++ new/ibus-libpinyin-1.15.1/src/PYEditor.cc   2022-10-08 09:12:04.000000000 
+0200
@@ -152,6 +152,12 @@
     }
 }
 
+void
+Editor::updateAll (void)
+{
+    update ();
+}
+
 int
 Editor::selectCandidateInternal (EnhancedCandidate & candidate)
 {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ibus-libpinyin-1.13.1/src/PYEditor.h 
new/ibus-libpinyin-1.15.1/src/PYEditor.h
--- old/ibus-libpinyin-1.13.1/src/PYEditor.h    2022-02-15 03:49:28.000000000 
+0100
+++ new/ibus-libpinyin-1.15.1/src/PYEditor.h    2022-10-08 09:10:43.000000000 
+0200
@@ -63,6 +63,7 @@
     virtual void cursorUp (void);
     virtual void cursorDown (void);
     virtual void update (void);
+    virtual void updateAll (void);
     virtual void reset (void);
     virtual void candidateClicked (guint index, guint button, guint state);
 
@@ -71,6 +72,11 @@
         return m_text;
     }
 
+    const guint cursor (void) const
+    {
+        return m_cursor;
+    }
+
     void setText (const String & text, guint cursor)
     {
         m_text = text;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ibus-libpinyin-1.13.1/src/PYEnglishEditor.cc 
new/ibus-libpinyin-1.15.1/src/PYEnglishEditor.cc
--- old/ibus-libpinyin-1.13.1/src/PYEnglishEditor.cc    2022-03-25 
02:56:41.000000000 +0100
+++ new/ibus-libpinyin-1.15.1/src/PYEnglishEditor.cc    2022-10-08 
09:53:42.000000000 +0200
@@ -22,6 +22,7 @@
 #include <string.h>
 #include <string>
 #include <stdio.h>
+#include <limits>
 #include <libintl.h>
 #include "PYConfig.h"
 
@@ -80,11 +81,19 @@
         m_cursor ++;
     } else {
         g_return_val_if_fail ('v' == m_text[0] || 'V' == m_text[0], FALSE);
+
         if ((keyval >= 'a' && keyval <= 'z') ||
             (keyval >= 'A' && keyval <= 'Z')) {
             m_text.insert (m_cursor, keyval);
             m_cursor ++;
         }
+
+        if (keyval <= std::numeric_limits<char>::max() &&
+            g_unichar_ispunct (keyval) &&
+            EnglishSymbols.find(keyval) != std::string::npos) {
+            m_text.insert (m_cursor, keyval);
+            m_cursor ++;
+        }
     }
 
     /* Deal other staff with updateStateFromInput (). */
@@ -345,6 +354,13 @@
 }
 
 void
+EnglishEditor::updateAll (void)
+{
+    updateStateFromInput ();
+    update ();
+}
+
+void
 EnglishEditor::reset (void)
 {
     m_text = "";
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ibus-libpinyin-1.13.1/src/PYEnglishEditor.h 
new/ibus-libpinyin-1.15.1/src/PYEnglishEditor.h
--- old/ibus-libpinyin-1.13.1/src/PYEnglishEditor.h     2022-02-15 
03:49:28.000000000 +0100
+++ new/ibus-libpinyin-1.15.1/src/PYEnglishEditor.h     2022-11-24 
11:21:46.000000000 +0100
@@ -29,6 +29,8 @@
 
 class EnglishDatabase;
 
+static const std::string EnglishSymbols = "`~!@*()+[]{}\\|':\"/<>?";
+
 class EnglishEditor : public Editor {
 private:
     const float m_train_factor;
@@ -42,6 +44,7 @@
     virtual void cursorUp (void);
     virtual void cursorDown (void);
     virtual void update (void);
+    virtual void updateAll (void);
     virtual void reset (void);
     virtual void candidateClicked (guint index, guint button, guint state);
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ibus-libpinyin-1.13.1/src/PYExtEditor.cc 
new/ibus-libpinyin-1.15.1/src/PYExtEditor.cc
--- old/ibus-libpinyin-1.13.1/src/PYExtEditor.cc        2022-06-08 
04:14:06.000000000 +0200
+++ new/ibus-libpinyin-1.15.1/src/PYExtEditor.cc        2022-10-08 
12:15:48.000000000 +0200
@@ -461,6 +461,13 @@
 }
 
 void
+ExtEditor::updateAll (void)
+{
+    updateStateFromInput ();
+    update ();
+}
+
+void
 ExtEditor::reset (void)
 {
     m_text = "";
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ibus-libpinyin-1.13.1/src/PYExtEditor.h 
new/ibus-libpinyin-1.15.1/src/PYExtEditor.h
--- old/ibus-libpinyin-1.13.1/src/PYExtEditor.h 2020-06-16 09:29:42.000000000 
+0200
+++ new/ibus-libpinyin-1.15.1/src/PYExtEditor.h 2022-10-08 12:14:04.000000000 
+0200
@@ -34,6 +34,7 @@
     virtual void cursorUp (void);
     virtual void cursorDown (void);
     virtual void update (void);
+    virtual void updateAll (void);
     virtual void reset (void);
     virtual void candidateClicked (guint index, guint button, guint state);
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ibus-libpinyin-1.13.1/src/PYPCloudCandidates.cc 
new/ibus-libpinyin-1.15.1/src/PYPCloudCandidates.cc
--- old/ibus-libpinyin-1.13.1/src/PYPCloudCandidates.cc 2021-05-17 
09:21:49.000000000 +0200
+++ new/ibus-libpinyin-1.15.1/src/PYPCloudCandidates.cc 2023-02-03 
05:48:30.000000000 +0100
@@ -410,7 +410,9 @@
 
     /* search the first non-ngram candidate position */
     for (pos = candidates.begin (); pos != candidates.end (); ++pos) {
-        if (CANDIDATE_NBEST_MATCH != pos->m_candidate_type)
+        if (CANDIDATE_NBEST_MATCH != pos->m_candidate_type &&
+            CANDIDATE_LONGER != pos->m_candidate_type &&
+            CANDIDATE_LONGER_USER != pos->m_candidate_type)
             break;
         m_candidate_cache.insert (pos->m_display_string);
     }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ibus-libpinyin-1.13.1/src/PYPConfig.cc 
new/ibus-libpinyin-1.15.1/src/PYPConfig.cc
--- old/ibus-libpinyin-1.13.1/src/PYPConfig.cc  2022-04-12 05:47:57.000000000 
+0200
+++ new/ibus-libpinyin-1.15.1/src/PYPConfig.cc  2022-09-26 08:14:43.000000000 
+0200
@@ -132,7 +132,7 @@
     m_page_size = 5;
     m_display_style = DISPLAY_STYLE_TRADITIONAL;
     m_remember_every_input = FALSE;
-    m_sort_option = SORT_BY_PHRASE_LENGTH_AND_PINYIN_LENGTH_AND_FREQUENCY;
+    m_sort_option = SORT_BY_PHRASE_LENGTH | SORT_BY_PINYIN_LENGTH | 
SORT_BY_FREQUENCY;
 
     m_emoji_candidate = TRUE;
     m_english_candidate = TRUE;
@@ -202,10 +202,12 @@
 
 static const struct{
     gint sort_option_index;
-    sort_option_t sort_option;
+    guint sort_option;
 } sort_options [] = {
-    {0, SORT_BY_PHRASE_LENGTH_AND_FREQUENCY},
-    {1, SORT_BY_PHRASE_LENGTH_AND_PINYIN_LENGTH_AND_FREQUENCY}
+    {0, SORT_BY_PHRASE_LENGTH | SORT_BY_FREQUENCY},
+    {1, SORT_BY_PHRASE_LENGTH | SORT_BY_PINYIN_LENGTH | SORT_BY_FREQUENCY},
+    {2, SORT_WITHOUT_SENTENCE_CANDIDATE | SORT_WITHOUT_LONGER_CANDIDATE |
+     SORT_BY_PHRASE_LENGTH | SORT_BY_PINYIN_LENGTH | SORT_BY_FREQUENCY}
 };
 
 static const struct{
@@ -290,7 +292,7 @@
     m_remember_every_input = read (CONFIG_REMEMBER_EVERY_INPUT, false);
 
     index = read (CONFIG_SORT_OPTION, 0);
-    m_sort_option = SORT_BY_PHRASE_LENGTH_AND_PINYIN_LENGTH_AND_FREQUENCY;
+    m_sort_option = SORT_BY_PHRASE_LENGTH | SORT_BY_PINYIN_LENGTH | 
SORT_BY_FREQUENCY;
 
     for (guint i = 0; i < G_N_ELEMENTS (sort_options); i++) {
         if (index == sort_options[i].sort_option_index) {
@@ -393,7 +395,7 @@
         m_remember_every_input = normalizeGVariant (value, false);
     } else if (CONFIG_SORT_OPTION == name) {
         const gint index = normalizeGVariant (value, 0);
-        m_sort_option = SORT_BY_PHRASE_LENGTH_AND_PINYIN_LENGTH_AND_FREQUENCY;
+        m_sort_option = SORT_BY_PHRASE_LENGTH | SORT_BY_PINYIN_LENGTH | 
SORT_BY_FREQUENCY;
 
         for (guint i = 0; i < G_N_ELEMENTS (sort_options); i++) {
             if (index == sort_options[i].sort_option_index) {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ibus-libpinyin-1.13.1/src/PYPEmojiCandidates.cc 
new/ibus-libpinyin-1.15.1/src/PYPEmojiCandidates.cc
--- old/ibus-libpinyin-1.13.1/src/PYPEmojiCandidates.cc 2020-09-07 
07:52:58.000000000 +0200
+++ new/ibus-libpinyin-1.15.1/src/PYPEmojiCandidates.cc 2022-09-26 
06:18:28.000000000 +0200
@@ -71,7 +71,9 @@
 
     std::vector<EnhancedCandidate>::iterator pos;
     for (pos = candidates.begin (); pos != candidates.end (); ++pos) {
-        if (CANDIDATE_NBEST_MATCH != pos->m_candidate_type)
+        if (CANDIDATE_NBEST_MATCH != pos->m_candidate_type &&
+            CANDIDATE_LONGER != pos->m_candidate_type &&
+            CANDIDATE_LONGER_USER != pos->m_candidate_type)
             break;
     }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ibus-libpinyin-1.13.1/src/PYPEnglishCandidates.cc 
new/ibus-libpinyin-1.15.1/src/PYPEnglishCandidates.cc
--- old/ibus-libpinyin-1.13.1/src/PYPEnglishCandidates.cc       2022-03-29 
04:58:20.000000000 +0200
+++ new/ibus-libpinyin-1.15.1/src/PYPEnglishCandidates.cc       2022-09-26 
06:19:06.000000000 +0200
@@ -49,6 +49,14 @@
     const char *prefix = m_editor->m_text.c_str ();
     std::vector<std::string> words;
 
+    std::vector<EnhancedCandidate>::iterator pos;
+    for (pos = candidates.begin (); pos != candidates.end (); ++pos) {
+        if (CANDIDATE_NBEST_MATCH != pos->m_candidate_type &&
+            CANDIDATE_LONGER != pos->m_candidate_type &&
+            CANDIDATE_LONGER_USER != pos->m_candidate_type)
+            break;
+    }
+
     EnhancedCandidate enhanced;
     enhanced.m_candidate_type = CANDIDATE_ENGLISH;
 
@@ -64,7 +72,7 @@
 
             enhanced.m_candidate_id = count;
             enhanced.m_display_string = *iter;
-            candidates.insert (candidates.begin () + count, enhanced);
+            candidates.insert (pos + count, enhanced);
 
             ++count;
         }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ibus-libpinyin-1.13.1/src/PYPEnhancedCandidates.h 
new/ibus-libpinyin-1.15.1/src/PYPEnhancedCandidates.h
--- old/ibus-libpinyin-1.13.1/src/PYPEnhancedCandidates.h       2022-03-29 
04:59:03.000000000 +0200
+++ new/ibus-libpinyin-1.15.1/src/PYPEnhancedCandidates.h       2022-09-23 
10:20:35.000000000 +0200
@@ -29,14 +29,17 @@
 
 enum CandidateType {
     CANDIDATE_NBEST_MATCH = 1,
+    CANDIDATE_LONGER,
+    CANDIDATE_LONGER_USER,
     /* not included with user candidate */
     CANDIDATE_NORMAL,
     /* both normal candidate and user candidate */
     CANDIDATE_USER,
+    CANDIDATE_PREDICTED_BIGRAM,
+    CANDIDATE_PREDICTED_PREFIX,
     CANDIDATE_TRADITIONAL_CHINESE,
     CANDIDATE_LUA_TRIGGER,
     CANDIDATE_LUA_CONVERTER,
-    CANDIDATE_SUGGESTION,
     CANDIDATE_CLOUD_INPUT,
     CANDIDATE_EMOJI,
     CANDIDATE_ENGLISH
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ibus-libpinyin-1.13.1/src/PYPLibPinyinCandidates.cc 
new/ibus-libpinyin-1.15.1/src/PYPLibPinyinCandidates.cc
--- old/ibus-libpinyin-1.13.1/src/PYPLibPinyinCandidates.cc     2022-05-27 
05:44:30.000000000 +0200
+++ new/ibus-libpinyin-1.15.1/src/PYPLibPinyinCandidates.cc     2022-09-26 
08:25:00.000000000 +0200
@@ -53,6 +53,14 @@
             enhanced.m_candidate_type = CANDIDATE_NBEST_MATCH;
             break;
 
+        case LONGER_CANDIDATE:
+            enhanced.m_candidate_type = CANDIDATE_LONGER;
+
+            if (pinyin_is_user_candidate (instance, candidate))
+                enhanced.m_candidate_type = CANDIDATE_LONGER_USER;
+
+            break;
+
         case NORMAL_CANDIDATE:
         case ADDON_CANDIDATE:
             enhanced.m_candidate_type = CANDIDATE_NORMAL;
@@ -80,6 +88,8 @@
 {
     pinyin_instance_t * instance = m_editor->m_instance;
     assert (CANDIDATE_NBEST_MATCH == enhanced.m_candidate_type ||
+            CANDIDATE_LONGER == enhanced.m_candidate_type ||
+            CANDIDATE_LONGER_USER == enhanced.m_candidate_type ||
             CANDIDATE_NORMAL == enhanced.m_candidate_type ||
             CANDIDATE_USER == enhanced.m_candidate_type);
 
@@ -115,6 +125,25 @@
         return SELECT_CANDIDATE_COMMIT;
     }
 
+    if (CANDIDATE_LONGER == enhanced.m_candidate_type ||
+        CANDIDATE_LONGER_USER == enhanced.m_candidate_type) {
+        /* because longer candidate
+           starts from the beginning of user input. */
+        pinyin_choose_candidate (instance, 0, candidate);
+
+        LibPinyinBackEnd::instance ().modified ();
+
+        return SELECT_CANDIDATE_COMMIT;
+    }
+
+    if (m_editor->m_config.sortOption () & SORT_WITHOUT_SENTENCE_CANDIDATE) {
+        pinyin_choose_candidate (instance, 0, candidate);
+
+        LibPinyinBackEnd::instance ().modified ();
+
+        return SELECT_CANDIDATE_COMMIT;
+    }
+
     lookup_cursor = pinyin_choose_candidate
         (instance, lookup_cursor, candidate);
 
@@ -148,7 +177,8 @@
 {
     pinyin_instance_t * instance = m_editor->m_instance;
 
-    if (enhanced.m_candidate_type != CANDIDATE_USER)
+    if (enhanced.m_candidate_type != CANDIDATE_USER &&
+        enhanced.m_candidate_type != CANDIDATE_LONGER_USER)
         return FALSE;
 
     lookup_candidate_t * candidate = NULL;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ibus-libpinyin-1.13.1/src/PYPLuaTriggerCandidates.cc 
new/ibus-libpinyin-1.15.1/src/PYPLuaTriggerCandidates.cc
--- old/ibus-libpinyin-1.13.1/src/PYPLuaTriggerCandidates.cc    2021-01-28 
02:49:00.000000000 +0100
+++ new/ibus-libpinyin-1.15.1/src/PYPLuaTriggerCandidates.cc    2022-09-26 
06:19:31.000000000 +0200
@@ -50,7 +50,9 @@
 
     std::vector<EnhancedCandidate>::iterator pos;
     for (pos = candidates.begin (); pos != candidates.end (); ++pos) {
-        if (CANDIDATE_NBEST_MATCH != pos->m_candidate_type)
+        if (CANDIDATE_NBEST_MATCH != pos->m_candidate_type &&
+            CANDIDATE_LONGER != pos->m_candidate_type &&
+            CANDIDATE_LONGER_USER != pos->m_candidate_type)
             break;
     }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ibus-libpinyin-1.13.1/src/PYPPhoneticEditor.cc 
new/ibus-libpinyin-1.15.1/src/PYPPhoneticEditor.cc
--- old/ibus-libpinyin-1.13.1/src/PYPPhoneticEditor.cc  2022-04-11 
08:30:22.000000000 +0200
+++ new/ibus-libpinyin-1.15.1/src/PYPPhoneticEditor.cc  2022-10-08 
09:13:27.000000000 +0200
@@ -343,6 +343,11 @@
 PhoneticEditor::update (void)
 {
     guint lookup_cursor = getLookupCursor ();
+
+    /* The lookup cursor is not moved here. */
+    if (m_config.sortOption () & SORT_WITHOUT_SENTENCE_CANDIDATE)
+        lookup_cursor = 0;
+
     pinyin_guess_candidates (m_instance, lookup_cursor,
                              m_config.sortOption ());
 
@@ -351,6 +356,13 @@
     updateAuxiliaryText ();
 }
 
+void
+PhoneticEditor::updateAll (void)
+{
+    updatePinyin ();
+    update ();
+}
+
 guint
 PhoneticEditor::getPinyinCursor ()
 {
@@ -377,6 +389,8 @@
 {
     switch (candidate.m_candidate_type) {
     case CANDIDATE_NBEST_MATCH:
+    case CANDIDATE_LONGER:
+    case CANDIDATE_LONGER_USER:
     case CANDIDATE_NORMAL:
     case CANDIDATE_USER:
         return m_libpinyin_candidates.selectCandidate (candidate);
@@ -415,6 +429,8 @@
 {
     switch (candidate.m_candidate_type) {
     case CANDIDATE_NBEST_MATCH:
+    case CANDIDATE_LONGER:
+    case CANDIDATE_LONGER_USER:
     case CANDIDATE_NORMAL:
     case CANDIDATE_USER:
         return m_libpinyin_candidates.removeCandidate (candidate);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ibus-libpinyin-1.13.1/src/PYPPhoneticEditor.h 
new/ibus-libpinyin-1.15.1/src/PYPPhoneticEditor.h
--- old/ibus-libpinyin-1.13.1/src/PYPPhoneticEditor.h   2022-03-29 
04:55:54.000000000 +0200
+++ new/ibus-libpinyin-1.15.1/src/PYPPhoneticEditor.h   2022-10-08 
09:12:33.000000000 +0200
@@ -64,6 +64,7 @@
     virtual void cursorUp (void);
     virtual void cursorDown (void);
     virtual void update (void);
+    virtual void updateAll (void);
     virtual void reset (void);
     virtual void candidateClicked (guint index, guint button, guint state);
     virtual gboolean processKeyEvent (guint keyval, guint keycode, guint 
modifiers);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ibus-libpinyin-1.13.1/src/PYPPinyinEditor.cc 
new/ibus-libpinyin-1.15.1/src/PYPPinyinEditor.cc
--- old/ibus-libpinyin-1.13.1/src/PYPPinyinEditor.cc    2022-03-29 
04:53:08.000000000 +0200
+++ new/ibus-libpinyin-1.15.1/src/PYPPinyinEditor.cc    2023-01-31 
02:52:17.000000000 +0100
@@ -60,6 +60,8 @@
     if (m_text.empty ())
         return FALSE;
 
+    modifiers = cmshm_filter (modifiers);
+
     switch (keyval) {
     case IBUS_0:
     case IBUS_KP_0:
@@ -242,6 +244,12 @@
 
     m_buffer.clear ();
 
+    /* for Legacy mode */
+    if (m_config.sortOption () & SORT_WITHOUT_SENTENCE_CANDIDATE) {
+        hidePreeditText ();
+        return;
+    }
+
     /* probe nbest match candidate */
     lookup_candidate_type_t type;
     lookup_candidate_t * candidate = NULL;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ibus-libpinyin-1.13.1/src/PYPPinyinEngine.cc 
new/ibus-libpinyin-1.15.1/src/PYPPinyinEngine.cc
--- old/ibus-libpinyin-1.13.1/src/PYPPinyinEngine.cc    2022-04-11 
09:29:11.000000000 +0200
+++ new/ibus-libpinyin-1.15.1/src/PYPPinyinEngine.cc    2022-11-25 
08:43:02.000000000 +0100
@@ -21,6 +21,7 @@
 #include "PYPPinyinEngine.h"
 #include <string>
 #include <assert.h>
+#include <limits>
 #include "PYConfig.h"
 #include "PYPConfig.h"
 #include "PYPunctEditor.h"
@@ -364,6 +365,36 @@
 #endif
 
             } else {
+#ifdef IBUS_BUILD_ENGLISH_INPUT_MODE
+                // for english mode switch with symbol key
+                if (keyval <= std::numeric_limits<char>::max() &&
+                    g_unichar_ispunct (keyval) &&
+                    (EnglishSymbols.find(keyval) != std::string::npos ||
+                     /* For double pinyin, ";" is used. */
+                     (!PinyinConfig::instance ().doublePinyin () &&
+                      IBUS_semicolon == keyval)) &&
+                    m_input_mode == MODE_INIT &&
+                    PinyinConfig::instance ().englishInputMode ()) {
+                    String text;
+                    if (!PinyinConfig::instance ().doublePinyin ())
+                        text = "v"; // full pinyin
+                    else
+                        text = "V"; // double pinyin
+                    text += m_editors[m_input_mode]->text ();
+                    guint cursor = m_editors[m_input_mode]->cursor () + 1;
+
+                    /* insert the new symbol char here. */
+                    text.insert(cursor, keyval);
+                    cursor += 1;
+
+                    m_editors[m_input_mode]->setText ("", 0);
+                    m_input_mode = MODE_ENGLISH;
+                    m_editors[m_input_mode]->setText (text, cursor);
+                    Editor * editor = m_editors[m_input_mode].get ();
+                    m_editors[m_input_mode]->updateAll ();
+                    return TRUE;
+                }
+#endif
 #ifdef IBUS_BUILD_TABLE_INPUT_MODE
                 // for table mode switch with tab key
                 if (keyval == IBUS_Tab &&
@@ -375,14 +406,13 @@
                     else
                         text = "U"; // double pinyin
                     text += m_editors[m_input_mode]->text ();
-                    m_editors[m_input_mode]->setText ("", 0);
+                    guint cursor = m_editors[m_input_mode]->cursor () + 1;
 
+                    m_editors[m_input_mode]->setText ("", 0);
                     m_input_mode = MODE_TABLE;
-                    m_editors[m_input_mode]->setText (text, text.length ());
+                    m_editors[m_input_mode]->setText (text, cursor);
                     Editor * editor = m_editors[m_input_mode].get ();
-                    /* Note: consider to remove the updateStateFromInput 
method call here. */
-                    dynamic_cast<TableEditor *>(editor)->updateStateFromInput 
();
-                    m_editors[m_input_mode]->update ();
+                    m_editors[m_input_mode]->updateAll ();
                     return TRUE;
                 }
 #endif
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ibus-libpinyin-1.13.1/src/PYPSuggestionCandidates.cc 
new/ibus-libpinyin-1.15.1/src/PYPSuggestionCandidates.cc
--- old/ibus-libpinyin-1.13.1/src/PYPSuggestionCandidates.cc    2020-06-16 
09:29:42.000000000 +0200
+++ new/ibus-libpinyin-1.15.1/src/PYPSuggestionCandidates.cc    2022-09-23 
10:24:12.000000000 +0200
@@ -39,13 +39,23 @@
 
         lookup_candidate_type_t type;
         pinyin_get_candidate_type (instance, candidate, &type);
-        assert (PREDICTED_CANDIDATE == type);
+        CandidateType candidate_type;
+        switch (type) {
+        case PREDICTED_BIGRAM_CANDIDATE:
+            candidate_type = CANDIDATE_PREDICTED_BIGRAM;
+            break;
+        case PREDICTED_PREFIX_CANDIDATE:
+            candidate_type = CANDIDATE_PREDICTED_PREFIX;
+            break;
+        default:
+            assert(FALSE);
+        }
 
         const gchar * phrase_string = NULL;
         pinyin_get_candidate_string (instance, candidate, &phrase_string);
 
         EnhancedCandidate enhanced;
-        enhanced.m_candidate_type = CANDIDATE_SUGGESTION;
+        enhanced.m_candidate_type = candidate_type;
         enhanced.m_candidate_id = i;
         enhanced.m_display_string = phrase_string;
 
@@ -59,7 +69,8 @@
 SuggestionCandidates::selectCandidate (EnhancedCandidate & enhanced)
 {
     pinyin_instance_t * instance = m_editor->m_instance;
-    assert (CANDIDATE_SUGGESTION == enhanced.m_candidate_type);
+    assert (CANDIDATE_PREDICTED_BIGRAM == enhanced.m_candidate_type ||
+            CANDIDATE_PREDICTED_PREFIX == enhanced.m_candidate_type);
 
     guint len = 0;
     pinyin_get_n_candidate (instance, &len);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ibus-libpinyin-1.13.1/src/PYPSuggestionEditor.cc 
new/ibus-libpinyin-1.15.1/src/PYPSuggestionEditor.cc
--- old/ibus-libpinyin-1.13.1/src/PYPSuggestionEditor.cc        2020-06-16 
09:29:42.000000000 +0200
+++ new/ibus-libpinyin-1.15.1/src/PYPSuggestionEditor.cc        2022-10-26 
09:22:15.000000000 +0200
@@ -178,6 +178,7 @@
 SuggestionEditor::candidateClicked (guint index, guint button, guint state)
 {
     selectCandidateInPage (index);
+    reset ();
 }
 
 gboolean
@@ -341,7 +342,8 @@
 SuggestionEditor::selectCandidateInternal (EnhancedCandidate & candidate)
 {
     switch (candidate.m_candidate_type) {
-    case CANDIDATE_SUGGESTION:
+    case CANDIDATE_PREDICTED_BIGRAM:
+    case CANDIDATE_PREDICTED_PREFIX:
         return m_suggestion_candidates.selectCandidate (candidate);
 
     case CANDIDATE_TRADITIONAL_CHINESE:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ibus-libpinyin-1.13.1/src/PYTableEditor.cc 
new/ibus-libpinyin-1.15.1/src/PYTableEditor.cc
--- old/ibus-libpinyin-1.13.1/src/PYTableEditor.cc      2022-03-25 
02:56:41.000000000 +0100
+++ new/ibus-libpinyin-1.15.1/src/PYTableEditor.cc      2022-10-08 
09:15:06.000000000 +0200
@@ -365,6 +365,13 @@
 }
 
 void
+TableEditor::updateAll (void)
+{
+    updateStateFromInput ();
+    update ();
+}
+
+void
 TableEditor::reset (void)
 {
     m_text = "";
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ibus-libpinyin-1.13.1/src/PYTableEditor.h 
new/ibus-libpinyin-1.15.1/src/PYTableEditor.h
--- old/ibus-libpinyin-1.13.1/src/PYTableEditor.h       2022-03-25 
02:56:41.000000000 +0100
+++ new/ibus-libpinyin-1.15.1/src/PYTableEditor.h       2022-10-08 
09:14:27.000000000 +0200
@@ -31,7 +31,6 @@
 class PinyinEngine;
 
 class TableEditor : public Editor {
-    friend class PinyinEngine;
 public:
     TableEditor (PinyinProperties &props, Config & config);
     virtual ~TableEditor ();
@@ -42,6 +41,7 @@
     virtual void cursorUp (void);
     virtual void cursorDown (void);
     virtual void update (void);
+    virtual void updateAll (void);
     virtual void reset (void);
     virtual void candidateClicked (guint index, guint button, guint state);
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ibus-libpinyin-1.13.1/src/libpinyin.xml.in 
new/ibus-libpinyin-1.15.1/src/libpinyin.xml.in
--- old/ibus-libpinyin-1.13.1/src/libpinyin.xml.in      2022-09-15 
06:18:57.000000000 +0200
+++ new/ibus-libpinyin-1.15.1/src/libpinyin.xml.in      2023-02-21 
02:12:44.000000000 +0100
@@ -4,7 +4,7 @@
        <name>org.freedesktop.IBus.Libpinyin</name>
        <description>Libpinyin Component</description>
        <exec>${libexecdir}/ibus-engine-libpinyin --ibus</exec>
-       <version>1.13.1</version>
+       <version>1.15.1</version>
        <author>Peng Wu &lt;alexep...@gmail.com&gt;</author>
        <license>GPL</license>
        <homepage>https://github.com/libpinyin/ibus-libpinyin</homepage>

Reply via email to