diff --git a/zero.el b/zero.el index 7bd35a0aea0ed501bcf21ee46b22041d082047ed..65e2333f4616ec1f2a5bdd01a2452a127d563c65 100644 --- a/zero.el +++ b/zero.el @@ -12,15 +12,15 @@ ;; See the License for the specific language governing permissions and ;; limitations under the License. -;; Version: 1.2.6 +;; Version: 1.3.3 ;; URL: https://gitlab.emacsos.com/sylecn/zero-el -;; Package-Version: 1.2.6 +;; Package-Version: 1.3.3 ;; Package-Requires: ((emacs "24.3") (s "1.2.0")) ;;; Commentary: -;; zero.el is auto-generated from multiple other files. see zero.el.in and -;; build.py for details. It's created because package-lint doesn't support +;; zero.el is auto-generated from multiple other files. see zero.el.in and +;; build.py for details. It's created because package-lint doesn't support ;; multi-file package yet (issue #111). ;; ;; zero is a Chinese input method framework for Emacs, implemented @@ -35,14 +35,14 @@ ;; ;; switch on/off the input method. ;; (global-set-key (kbd "<f5>") 'zero-toggle) ;; -;; zero supports Chinese punctuation mapping. There are three modes, none, -;; basic, and full. The default is basic mode, which only map most essential -;; punctuations. You can cycle zero-punctuation-level in current buffer by +;; zero supports Chinese punctuation mapping. There are three modes, none, +;; basic, and full. The default is basic mode, which only map most essential +;; punctuations. You can cycle zero-punctuation-level in current buffer by ;; C-c , , You can change default Chinese punctuation level: ;; ;; (setq-default zero-punctuation-level *zero-punctuation-level-full*) ;; -;; zero supports full-width mode. You can toggle full-width mode in current +;; zero supports full-width mode. You can toggle full-width mode in current ;; buffer by C-c , . You can enable full-width mode by default: ;; ;; (setq-default zero-full-width-mode t) @@ -243,7 +243,7 @@ If item is not in lst, return nil." ;; zero-el version (defvar zero-version nil "Zero package version.") -(setq zero-version "1.2.6") +(setq zero-version "1.3.3") ;; FSM state (defconst zero--state-im-off 'IM-OFF) @@ -278,9 +278,9 @@ independent from punctuation map. You can change this via "Punctuation level. Should be one of -zero-punctuation-level-basic -zero-punctuation-level-full -zero-punctuation-level-none") +`zero-punctuation-level-basic' +`zero-punctuation-level-full' +`zero-punctuation-level-none'") (defvar zero-punctuation-levels (list zero-punctuation-level-basic zero-punctuation-level-full zero-punctuation-level-none) @@ -485,7 +485,7 @@ If there is no full-width char for CH, return it unchanged." full-width-ch))) (defun zero-convert-punctuation-basic (ch) - "Convert punctuation for zero-punctuation-level-basic. + "Convert punctuation for `zero-punctuation-level-basic'. Return CH's Chinese punctuation if CH is converted. Return nil otherwise." (cl-case ch @@ -498,7 +498,7 @@ Return CH's Chinese punctuation if CH is converted. Return nil otherwise." (otherwise nil))) (defun zero-convert-punctuation-full (ch) - "Convert punctuation for zero-punctuation-level-full. + "Convert punctuation for `zero-punctuation-level-full'. Return CH's Chinese punctuation if CH is converted. Return nil otherwise" (cl-case ch @@ -1080,13 +1080,20 @@ e.g. ;;================ +(defvar zero-pinyin-service-service-name + "com.emacsos.zero.ZeroPinyinService1") +(defvar zero-pinyin-service-path + "/com/emacsos/zero/ZeroPinyinService1") +(defvar zero-pinyin-service-interface + "com.emacsos.zero.ZeroPinyinService1.ZeroPinyinServiceInterface") + (defun zero-pinyin-service-error-handler (event error) "Handle dbus errors. EVENT, ERROR are arguments passed to the handler." - (when (or (string-equal "com.emacsos.zero.ZeroPinyinService1" + (when (or (string-equal zero-pinyin-service-service-name (dbus-event-interface-name event)) - (s-contains-p "com.emacsos.zero.ZeroPinyinService1" (cadr error))) + (s-contains-p zero-pinyin-service-service-name (cadr error))) (error "`zero-pinyin-service' dbus failed: %S" (cadr error)))) (add-hook 'dbus-event-error-functions 'zero-pinyin-service-error-handler) @@ -1097,9 +1104,9 @@ This is a wrapper around `dbus-call-method-asynchronously'. Argument HANDLER the handler function. Optional argument ARGS extra arguments to pass to the wrapped function." (apply 'dbus-call-method-asynchronously - :session "com.emacsos.zero.ZeroPinyinService1" - "/com/emacsos/zero/ZeroPinyinService1" - "com.emacsos.zero.ZeroPinyinService1.ZeroPinyinServiceInterface" + :session zero-pinyin-service-service-name + zero-pinyin-service-path + zero-pinyin-service-interface method handler :timeout 1000 args)) (defun zero-pinyin-service-call (method &rest args) @@ -1107,9 +1114,9 @@ Optional argument ARGS extra arguments to pass to the wrapped function." This is a wrapper around `dbus-call-method'. Optional argument ARGS extra arguments to pass to the wrapped function." (apply 'dbus-call-method - :session "com.emacsos.zero.ZeroPinyinService1" - "/com/emacsos/zero/ZeroPinyinService1" - "com.emacsos.zero.ZeroPinyinService1.ZeroPinyinServiceInterface" + :session zero-pinyin-service-service-name + zero-pinyin-service-path + zero-pinyin-service-interface method :timeout 1000 args)) ;;============ @@ -1121,7 +1128,7 @@ Optional argument ARGS extra arguments to pass to the wrapped function." preedit-str the preedit-str, should be pure pinyin string FETCH-SIZE try to fetch this many candidates or more" - (zero-pinyin-service-call "GetCandidates" :string preedit-str :uint32 fetch-size)) + (zero-pinyin-service-call "GetCandidatesV2" :string preedit-str :uint32 fetch-size :uint32 zero-pinyin-fuzzy-flag)) (defun zero-pinyin-service-get-candidates-async (preedit-str fetch-size get-candidates-complete) "Get candidates for pinyin in PREEDIT-STR asynchronously. @@ -1130,7 +1137,7 @@ PREEDIT-STR the preedit string, should be pure pinyin string. FETCH-SIZE try to fetch this many candidates or more. GET-CANDIDATES-COMPLETE the async handler function." (zero-pinyin-service-async-call - "GetCandidates" get-candidates-complete :string preedit-str :uint32 fetch-size)) + "GetCandidatesV2" get-candidates-complete :string preedit-str :uint32 fetch-size :uint32 zero-pinyin-fuzzy-flag)) (defun zero-pinyin-candidate-pinyin-indices-to-dbus-format (candidate_pinyin_indices) "Convert CANDIDATE_PINYIN_INDICES to Emacs dbus format." @@ -1178,6 +1185,21 @@ DELETE-CANDIDATE-COMPLETE the async handler function." ;; basic data and emacs facility ;;=============================== +;; these two var is only used in docstring to avoid checkdoc line-too-long +;; error. +(defvar zero-pinyin-service-interface-xml-file + "/usr/share/dbus-1/interfaces/com.emacsos.zero.ZeroPinyinService1.ZeroPinyinServiceInterface.xml") +(defvar zero-pinyin-service-interface-xml-url + "https://gitlab.emacsos.com/sylecn/zero-pinyin-service/blob/master/com.emacsos.zero.ZeroPinyinService1.ZeroPinyinServiceInterface.xml") +(defcustom zero-pinyin-fuzzy-flag 0 + "Non-nil means use this value as GetCandidatesV2 fuzzy_flag param. +see zero-pinyin-service dbus interface xml for document. + +You can find the xml file locally at `zero-pinyin-service-interface-xml-file' +or online at `zero-pinyin-service-interface-xml-url'." + :type 'integer + :group 'zero-pinyin) + (defvar zero-pinyin-state nil "Zero-pinyin internal state. could be nil or `*zero-pinyin-state-im-partial-commit*'.") (defconst zero-pinyin--state-im-partial-commit 'IM-PARTIAL-COMMIT)