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 <alexep...@gmail.com></author> <license>GPL</license> <homepage>https://github.com/libpinyin/ibus-libpinyin</homepage>