Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Keep compatibility since Emacs has removed typo. #46

Open
wants to merge 2 commits into
base: master
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 17 additions & 10 deletions pangu-spacing.el
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

IMO, define an alias for chinse-two-byte to keep compatibility would be better.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You're right ,I think.

Emacs's compatibility advantage is a significant benefit of the ecosystem. Therefore, keeping compatibility is a more reasonable solution when dealing with outdated code

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Emacs 24.3, released in 2013, has already been around for 10 years, and given the modern features introduced after Emacs 28, it's reasonable to expect correct spellings.

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

But rx--categories is a constant variable, create an alias is hard.

I don't know how to hack rx, rx--translate-form, rx--translate-category for use the modified rx--categories to provide chinse-two-byte.

May be directly drop typo is better.

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Emacs 24.3, released in 2013, has already been around for 10 years, and given the modern features introduced after Emacs 28, it's reasonable to expect correct spellings.

I mean keep compatibility for pangu-spacing, not the GNU Emacs. As I know, most of user used this package did not use the latest Emacs.

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't have machine installed Emacs 24.3.

I have checked Emacs 28.2/29.4 in Nixpkgs, it seems work and no side effects.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

;; NOTE:
;; We use `chinse-two-byte' instead of `chinese-two-byte', since there
;; are some typo in emacs version 21.1-24.3. For more information,
;; see:
;;
;; [Emacs-diffs] trunk r115873: Fix misspelling of 'chinese' in rx.
;;
;; Url: http://lists.gnu.org/archive/html/emacs-diffs/2014-01/msg00049.html

Emacs versions 21.1 to 24.3 have incorrect spellings, later versions ( above 24.3 ) may include both correct and incorrect spellings (not sure).

Latest versions keep the correct spellings and remove the incorrect ones.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It doesn't seem like a good idea to hardcode the version number, but I couldn't find a way to detect the current available rx--categories, maybe it's just something I've missed?

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

but I couldn't find a way to detect the current available rx--categories

Have you try assq?

(assq 'chinese-two-byte rx--categories)

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I will combine the above content into a single commit. 😄

Original file line number Diff line number Diff line change
Expand Up @@ -167,19 +167,26 @@ When you set t here, the space will be insert when you save file."
;; [Emacs-diffs] trunk r115873: Fix misspelling of 'chinese' in rx.
;;
;; Url: http://lists.gnu.org/archive/html/emacs-diffs/2014-01/msg00049.html
;;
(eval-when-compile (require 'rx))
(defun pangu-spacing-chinese-two-byte-category ()
"Return the correct category name for Chinese two-byte characters."
(if (assq 'chinese-two-byte rx--categories)
nailuoGG marked this conversation as resolved.
Show resolved Hide resolved
"chinese-two-byte"
"chinse-two-byte"))

(defvar pangu-spacing-include-regexp
;; we didn't add korean because korean-hangul-two-byte is not implemented
(rx (or (and (or (group-n 3 (any "。,!?;:「」()、"))
(group-n 1 (or (category chinse-two-byte)
(category japanese-hiragana-two-byte)
(category japanese-katakana-two-byte))))
(group-n 2 (in "a-zA-Z0-9")))
(and (group-n 1 (in "a-zA-Z0-9"))
(or (group-n 3 (any "。,!?;:「」()、"))
(group-n 2 (or (category chinse-two-byte)
(category japanese-hiragana-two-byte)
(category japanese-katakana-two-byte)))))))
(eval `(rx (or (and (or (group-n 3 (any "。,!?;:「」()、"))
(group-n 1 (or (category ,(intern (pangu-spacing-chinese-two-byte-category)))
(category japanese-hiragana-two-byte)
(category japanese-katakana-two-byte))))
(group-n 2 (in "a-zA-Z0-9")))
(and (group-n 1 (in "a-zA-Z0-9"))
(or (group-n 3 (any "。,!?;:「」()、"))
(group-n 2 (or (category ,(intern (pangu-spacing-chinese-two-byte-category)))
(category japanese-hiragana-two-byte)
(category japanese-katakana-two-byte))))))))
"Regexp to find Chinese character before English character.

Group 1 contains the character before the potential pangu
Expand Down