Commit 6f11030b authored by Yuanle Song's avatar Yuanle Song
Browse files

v1.3.1 zero-pinyin now supports fuzzy pinyin.

requires zero-pinyin-service v0.9.0 or later to use this feature.
see `zero-pinyin-fuzzy-flag' variable.
parent 1e3a14ff
Loading
Loading
Loading
Loading
+60 −23
Original line number Diff line number Diff line
@@ -12,9 +12,9 @@
;; See the License for the specific language governing permissions and
;; limitations under the License.

;; Version: 1.2.6
;; Version: 1.3.1
;; URL: https://gitlab.emacsos.com/sylecn/zero-el
;; Package-Version: 1.2.6
;; Package-Version: 1.3.1
;; Package-Requires: ((emacs "24.3") (s "1.2.0"))

;;; Commentary:
@@ -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.1")

;; 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))

;;============
@@ -1165,6 +1172,18 @@ DELETE-CANDIDATE-COMPLETE the async handler function."
  "Quit panel application."
  (zero-pinyin-service-async-call "Quit" nil))

(defun zero-pinyin-service-set-fuzzy-flag (fuzzy-flag)
  "Set FuzzyFlag property.

FUZZY-FLAG should be a natural number.  See service interface XML
for flag value and meaning"
  (interactive)
  (dbus-set-property
   :session zero-pinyin-service-service-name
   zero-pinyin-service-path
   zero-pinyin-service-interface
   "FuzzyFlag" fuzzy-flag))

(provide 'zero-pinyin-service)

;; body of zero-pinyin.el
@@ -1178,6 +1197,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 FuzzyFlag.
see zero-pinyin-service dbus interface xml for flag value and meaning.

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)

@@ -1199,7 +1233,10 @@ DELETE-CANDIDATE-COMPLETE the async handler function."
  (setq zero-pinyin-state nil)
  (setq zero-pinyin-used-preedit-str-lengths nil)
  (setq zero-pinyin-pending-str "")
  (setq zero-pinyin-pending-preedit-str ""))
  (setq zero-pinyin-pending-preedit-str "")
  (when (null (zero-pinyin-service-set-fuzzy-flag zero-pinyin-fuzzy-flag))
    (unless (zerop zero-pinyin-fuzzy-flag)
      (display-warning 'zero-pinyin "Requires zero-pinyin-service v0.9.0 or later to support `zero-pinyin-fuzzy-flag'." :warning))))

(defun zero-pinyin-init ()
  "Called when this im is turned on."