bug#42064: 28.0.50; German "Sharp S" is capitalized inconsistenly

classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|

bug#42064: 28.0.50; German "Sharp S" is capitalized inconsistenly

Philip K.

The german "Sharp S" (ß), seems to be capitalized inconsistenly,
depending on the system:

- The german postfix input method, typing "SZ" inserts "ẞ"
- If a buffer already contains a "ß", running upcase-dwim generates
  "SS". Lowercasing this results in "ss" unsurprisingly, while "ẞ"
  generates "ß".

Both behaviours are fine in their own right, but don't seem to make a
lot of sense together.



In GNU Emacs 28.0.50 (build 5, x86_64-pc-linux-gnu, GTK+ Version 3.24.5, cairo version 1.16.0)
 of 2020-06-24 built on bulbul
Repository revision: 9bff3127d70a220e8b63aaf89dce2d5e9e66b0f6
Repository branch: master
Windowing system distributor 'The X.Org Foundation', version 11.0.12004000
System Description: Debian GNU/Linux 10 (buster)

Recent messages:
Type C-c C-c to finish, or C-c C-k to cancel
Saving file /home/phi/code/elisp/dumb-jump/.git/COMMIT_EDITMSG...
Wrote /home/phi/code/elisp/dumb-jump/.git/COMMIT_EDITMSG
Git finished
Running git push -v origin master:refs/heads/master
Quit
Git finished
Quit
Mark set
View mode: type C-h for help, h for commands, q to quit.

Configured using:
 'configure 'CFLAGS=-Wall -Wextra -Wformat -Wformat-security''

Configured features:
XPM JPEG TIFF GIF PNG RSVG CAIRO SOUND GPM DBUS GSETTINGS GLIB NOTIFY
INOTIFY ACL LIBSELINUX GNUTLS LIBXML2 FREETYPE HARFBUZZ M17N_FLT LIBOTF
ZLIB TOOLKIT_SCROLL_BARS GTK3 X11 XDBE XIM MODULES THREADS LIBSYSTEMD
PDUMPER LCMS2 GMP

Important settings:
  value of $LANG: en_GB.UTF-8
  locale-coding-system: utf-8-unix

Major mode: Markdown

Minor modes in effect:
  global-magit-file-mode: t
  magit-file-mode: t
  magit-auto-revert-mode: t
  auto-revert-mode: t
  global-git-commit-mode: t
  async-bytecomp-package-mode: t
  flyspell-mode: t
  TeX-PDF-mode: t
  shell-dirtrack-mode: t
  erc-list-mode: t
  erc-menu-mode: t
  erc-autojoin-mode: t
  erc-ring-mode: t
  erc-networks-mode: t
  erc-pcomplete-mode: t
  erc-track-mode: t
  erc-track-minor-mode: t
  erc-match-mode: t
  erc-button-mode: t
  erc-fill-mode: t
  erc-stamp-mode: t
  erc-netsplit-mode: t
  ivy-mode: t
  erc-irccontrols-mode: t
  erc-noncommands-mode: t
  erc-move-to-prompt-mode: t
  erc-readonly-mode: t
  display-time-mode: t
  electric-pair-mode: t
  recentf-mode: t
  save-place-mode: t
  savehist-mode: t
  show-paren-mode: t
  winner-mode: t
  tooltip-mode: t
  global-eldoc-mode: t
  eldoc-mode: t
  electric-indent-mode: t
  mouse-wheel-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  blink-cursor-mode: [## 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t
  line-number-mode: t
  auto-fill-function: do-auto-fill
  transient-mark-mode: t

Load-path shadows:
/home/phi/.emacs.d/elpa/swiper-0.13.0/swiper hides /home/phi/.emacs.d/elpa/ivy-0.13.0/swiper

Features:
(shadow emacsbug markdown-mode geiser-mode geiser-xref geiser-compile
geiser-debug geiser-gambit geiser-chibi geiser-mit geiser-chez
geiser-chicken geiser-racket geiser-guile info-look geiser geiser-repl
geiser-image geiser-company geiser-doc geiser-menu geiser-edit
geiser-completion geiser-autodoc geiser-eval geiser-connection
geiser-syntax geiser-log geiser-popup geiser-impl geiser-custom
geiser-base scheme lisp-mnt timezone org-attach org-id calc-prog
cal-china lunar solar cal-dst cal-bahai cal-islam cal-hebrew diary-lib
diary-loaddefs cal-iso org-agenda org-duration org-clock debug backtrace
flow-fill git-rebase man calc-cplx calc-math calc-frac calc-vec calcalg2
calc-comb calc-poly calccomp calc-arith calc-misc calc-aent
slime-cl-indent cl-indent slime-hyperdoc slime-asdf grep slime-quicklisp
slime-fancy slime-trace-dialog slime-fontifying-fu slime-package-fu
slime-references slime-compiler-notes-tree slime-scratch
slime-presentations bridge slime-macrostep slime-mdot-fu
slime-enclosing-context slime-fuzzy slime-fancy-trace
slime-fancy-inspector slime-c-p-c slime-editing-commands slime-autodoc
slime-repl slime-parse rmailsum tabify whitespace magit-extras
magit-bookmark magit-submodule magit-obsolete magit-blame magit-stash
magit-bisect magit-push magit-pull magit-fetch magit-clone magit-remote
magit-commit magit-sequence magit-notes magit-worktree magit-tag
magit-merge magit-branch magit-reset magit-collab ghub-graphql treepy
gsexp ghub url-http url-gw url-auth let-alist magit-files magit-refs
magit-status magit magit-repos magit-apply magit-wip magit-log
which-func magit-diff magit-core magit-autorevert autorevert filenotify
magit-process magit-margin magit-mode git-commit magit-git magit-section
log-edit with-editor async-bytecomp async server calc-alg calc-ext
calc-menu calc calc-loaddefs calc-macs artist picture reporter rect
reposition rng-xsd xsd-regexp rng-cmpct rng-nxml rng-valid nxml-mode
nxml-outln nxml-rap ox-odt rng-loc rng-uri rng-parse rng-match rng-dt
rng-util rng-pttrn nxml-parse nxml-ns nxml-enc xmltok nxml-util ox-latex
ox-icalendar ox-html table ox-ascii ox-publish ox cdlatex misc
find-dired smerge-mode diff add-log log-view pcvs-util cl-print
help-at-pt ibuf-ext ibuffer ibuffer-loaddefs pulse bug-reference
flyspell vc-mtn vc-src vc-sccs vc-svn vc-cvs vc-rcs vc vc-dispatcher
quail ispell em-unix em-term term ehelp em-script em-prompt em-ls
em-hist em-pred em-glob em-dirs esh-var em-cmpl em-basic em-banner
em-alias esh-mode eshell esh-cmd esh-ext esh-opt esh-proc esh-io esh-arg
esh-module esh-groups esh-util tramp-cmds vc-hg vc-bzr mhtml-mode
css-mode smie eww mm-url js imenu sgml-mode wdired magit-utils
magit-popup dash tramp-cache elfeed-link latexenc eieio-opt speedbar
ezimage dframe help-fns radix-tree two-column iso-transl pdf-view
pdf-cache pdf-info tq pdf-util tar-mode dired-aux rmailmm mm-archive
sort smiley gnus-cite mail-extr gnus-async gnus-bcklg qp gnus-ml
disp-table windmove nndraft nnmh gnus-agent gnus-srvr gnus-score
score-mode nnvirtual gnus-msg gnus-art mm-uu mml2015 mm-view mml-smime
smime dig nntp gnus-cache bang macrostep-c cmacexp macrostep nroff-mode
slime arc-mode archive-mode hyperspec cc-awk cc-mode cc-fonts cc-guess
cc-menus cc-cmds cc-styles cc-align cc-engine cc-vars cc-defs preview
prv-emacs tex-buf font-latex texmathp latex latex-flymake flymake-proc
flymake warnings tex-ispell tex-style tex dbus crm tex-mode org-element
ol-eww ol-rmail ol-mhe ol-irc ol-info ol-gnus nnir gnus-sum gnus-group
gnus-undo gnus-start gnus-cloud nnimap nnmail mail-source utf7 netrc
nnoo gnus-spec gnus-int gnus-range gnus-win ol-docview doc-view
jka-compr image-mode exif ol-bibtex bibtex ol-bbdb ol-w3m org ob
ob-tangle ob-ref ob-lob ob-table ob-exp org-macro org-footnote org-src
ob-comint org-pcomplete org-list org-faces org-entities noutline outline
org-version ob-emacs-lisp ob-core ob-eval org-table ol org-keys
org-compat advice org-macs org-loaddefs find-func goto-addr view avy
hl-line elfeed-show elfeed-search message rfc822 mml mml-sec mm-decode
mm-bodies mm-encode mail-parse rfc2231 mailabbrev gmm-utils mailheader
shr svg dom elfeed-csv elfeed elfeed-curl url url-proxy url-privacy
url-expand url-methods url-history url-cookie url-domsuf mailcap
elfeed-log elfeed-db elfeed-lib url-util avl-tree url-queue xml-query
xml misearch multi-isearch mule-util time-stamp ffap etags fileloop
generator xref project char-fold swiper vc-fossil python tramp-sh tramp
tramp-loaddefs trampver tramp-integration files-x tramp-compat shell
parse-time iso8601 ls-lisp bookmark vc-git diff-mode easy-mmode gnutls
network-stream puny nsm rmc erc-list erc-menu erc-join erc-ring
erc-networks erc-pcomplete pcomplete erc-track erc-match erc-button
erc-fill erc-stamp erc-netsplit epa-file epa derived epg epg-config
auth-source-pass cl-extra help-mode paredit init ivy delsel colir color
ivy-overlay edmacro kmacro rx pcase dired-x dired dired-loaddefs
holidays hol-loaddefs cal-menu calendar cal-loaddefs erc-goodies erc
thingatpt pp erc-loaddefs erc-backend erc-compat format-spec gnus
nnheader gnus-util text-property-search time-date time sendmail rmail
rmail-loaddefs rfc2047 rfc2045 ietf-drums mm-util mail-prsvr mail-utils
compile hippie-exp comint ansi-color elec-pair recentf tree-widget
saveplace savehist paren winner ring cus-edit cus-start cus-load
wid-edit finder-inf tex-site slime-autoloads info package easymenu
browse-url url-handlers url-parse auth-source cl-seq eieio eieio-core
cl-macs eieio-loaddefs password-cache json subr-x map url-vars seq
byte-opt gv bytecomp byte-compile cconv cl-loaddefs cl-lib tooltip eldoc
electric uniquify ediff-hook vc-hooks lisp-float-type mwheel term/x-win
x-win term/common-win x-dnd tool-bar dnd fontset image regexp-opt fringe
tabulated-list replace newcomment text-mode elisp-mode lisp-mode
prog-mode register page tab-bar menu-bar rfn-eshadow isearch timer
select scroll-bar mouse jit-lock font-lock syntax facemenu font-core
term/tty-colors frame minibuffer cl-generic cham georgian utf-8-lang
misc-lang vietnamese tibetan thai tai-viet lao korean japanese eucjp-ms
cp51932 hebrew greek romanian slovak czech european ethiopic indian
cyrillic chinese composite charscript charprop case-table epa-hook
jka-cmpr-hook help simple abbrev obarray cl-preloaded nadvice loaddefs
button faces cus-face macroexp files text-properties overlay sha1 md5
base64 format env code-pages mule custom widget hashtable-print-readable
backquote threads dbusbind inotify lcms2 dynamic-setting
system-font-setting font-render-setting cairo move-toolbar gtk x-toolkit
x multi-tty make-network-process emacs)

Memory information:
((conses 16 1004119 173255)
 (symbols 48 78455 1)
 (strings 32 340391 34833)
 (string-bytes 1 11933058)
 (vectors 16 123417)
 (vector-slots 8 2642525 213470)
 (floats 8 3839 1827)
 (intervals 56 37213 1474)
 (buffers 992 144))

--
        Philip K.



Reply | Threaded
Open this post in threaded view
|

bug#42064: 28.0.50; German "Sharp S" is capitalized inconsistenly

Philip K.
Eli Zaretskii <[hidden email]> writes:

>> From: "Philip K." <[hidden email]>
>> Date: Fri, 26 Jun 2020 20:44:55 +0200
>>
>> The german "Sharp S" (ß), seems to be capitalized inconsistenly,
>> depending on the system:
>>
>> - The german postfix input method, typing "SZ" inserts "ẞ"
>> - If a buffer already contains a "ß", running upcase-dwim generates
>>   "SS". Lowercasing this results in "ss" unsurprisingly, while "ẞ"
>>   generates "ß".
>>
>> Both behaviours are fine in their own right, but don't seem to make a
>> lot of sense together.
>
> Do you have a proposal for how to improve this?  The problem, AFAIU,
> is that there are different preference, each one of which is
> legitimate, so the only way forward, it seems, is to introduce some
> user options to select the desired behavior.

First off, I'm not a german native speaker, so there might be things I
don't know of. Otherwise, I think a user option would be a good idea. If
it turns out to not be practical, for whatever reason, I would instead
say that (upcase "ß") should evaluate to "ẞ", as it appears to the "more
correct" of the two options ("ss" or "SS" is usually written when the
"ß" cannot be used), at least according to some[0]:

> In 2016, the Council for German Orthography proposed the introduction
> of optional use of ẞ in its ruleset (i.e. variants STRASSE vs. STRAẞE
> would be accepted as equally valid).[19] The rule was officially
> adopted in 2017.[20]

[0] https://en.wikipedia.org/wiki/%C3%9F#Capital_form

--
        Philip K.



Reply | Threaded
Open this post in threaded view
|

bug#42064: 28.0.50; German "Sharp S" is capitalized inconsistenly

Eli Zaretskii
> From: "Philip K." <[hidden email]>
> Cc: [hidden email]
> Date: Fri, 26 Jun 2020 21:08:55 +0200
>
> > In 2016, the Council for German Orthography proposed the introduction
> > of optional use of ẞ in its ruleset (i.e. variants STRASSE vs. STRAẞE
> > would be accepted as equally valid).[19] The rule was officially
> > adopted in 2017.[20]
>
> [0] https://en.wikipedia.org/wiki/%C3%9F#Capital_form

I know, but German input methods are not only for Germany, and AFAIR
other German-speaking countries didn't follow suit.