unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
* bug#72422: 31.0.50; Bug: Rime input candidates always appear in the bottom-left corner on Emacs 31
@ 2024-08-02 15:18 Lucius Chen
  2024-08-02 16:20 ` Gerd Möllmann
  0 siblings, 1 reply; 7+ messages in thread
From: Lucius Chen @ 2024-08-02 15:18 UTC (permalink / raw)
  To: 72422

[-- Attachment #1: Type: text/plain, Size: 40985 bytes --]

X-Debbugs-Cc:
Date: Fri, 02 Aug 2024 23:15:44 +0800
Message-ID: <m21q37q7kv.fsf@192.168.2.31>

--text follows this line--

*Description:*
After updating to Emacs 31 (master branch), I found that the candidate
window for Rime input always appears in the bottom-left corner of the
screen. This issue seems to be related to the NSTextInputClient
implementation.

*Steps to Reproduce:*
1. Open Emacs 31 with the latest changes applied.
2. Use Rime input to input text.
3. Observe the position of the candidate window.

*Expected Behavior:*
The candidate window should appear near the text insertion point, not in
the bottom-left corner of the screen.

*Actual Behavior:*
The candidate window consistently appears in the bottom-left corner of the
screen.

*Analysis:*
The issue seems to be caused by the following method in the
NSTextInputClient implementation always returning NSZeroRect:
#+begin_src objc
- (NSRect) firstRectForCharacterRange: (NSRange) range actualRange:
(nullable NSRangePointer) actualRange
{
  return NSZeroRect;
}
#+end_src
This likely causes the candidate window to default to the (0, 0) position
on the screen.

*Environment:*
- Emacs version: GNU Emacs 31.0.50 (build 1, aarch64-apple-darwin23.6.0, NS
appkit-2487.70 Version 14.6 (Build 23G80)) of 2024-08-02
- Operating System: macOS Sonoma 14.6
- Input Method: Rime

*Additional Information:*
Please let me know if you need any further information to help resolve this
issue.


In GNU Emacs 31.0.50 (build 1, aarch64-apple-darwin23.6.0, NS
 appkit-2487.70 Version 14.6 (Build 23G80)) of 2024-08-02 built on
 Luciuss-MacBook-Pro.local
Windowing system distributor 'Apple', version 10.3.2487
System Description:  macOS 14.6

Configured using:
 'configure --disable-dependency-tracking --disable-silent-rules
 --enable-locallisppath=/opt/homebrew/share/emacs/site-lisp
 --infodir=/opt/homebrew/Cellar/emacs-plus@31/31.0.50/share/info/emacs
 --prefix=/opt/homebrew/Cellar/emacs-plus@31/31.0.50 --with-xml2
 --with-gnutls --without-compress-install --without-dbus
 --without-imagemagick --with-modules --with-rsvg --with-webp
 --with-xwidgets --with-ns --disable-ns-self-contained 'CFLAGS=-Os -w
 -pipe -mmacosx-version-min=14
 -isysroot/Library/Developer/CommandLineTools/SDKs/MacOSX14.sdk -O2
 -DFD_SETSIZE=10000 -DDARWIN_UNLIMITED_SELECT'
 'CPPFLAGS=-I/opt/homebrew/opt/icu4c/include
 -I/opt/homebrew/opt/sqlite/include -I/opt/homebrew/opt/readline/include
 -isystem/opt/homebrew/include -F/opt/homebrew/Frameworks
 -isysroot/Library/Developer/CommandLineTools/SDKs/MacOSX14.sdk'
 'LDFLAGS=-L/opt/homebrew/opt/icu4c/lib -L/opt/homebrew/opt/sqlite/lib
 -L/opt/homebrew/opt/readline/lib -L/opt/homebrew/lib
 -F/opt/homebrew/Frameworks -Wl,-headerpad_max_install_names
 -isysroot/Library/Developer/CommandLineTools/SDKs/MacOSX14.sdk''

Configured features:
ACL GIF GLIB GMP GNUTLS JPEG LCMS2 LIBXML2 MODULES NOTIFY KQUEUE NS
PDUMPER PNG RSVG SQLITE3 THREADS TIFF TOOLKIT_SCROLL_BARS TREE_SITTER
WEBP XIM XWIDGETS ZLIB

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

Major mode: Org

Minor modes in effect:
  org-indent-mode: t
  global-telega-mnz-mode: t
  global-telega-url-shorten-mode: t
  telega-root-auto-fill-mode: t
  telega-contact-birthdays-mode: t
  telega-active-video-chats-mode: t
  telega-active-locations-mode: t
  telega-patrons-mode: t
  telega-autoplay-mode: t
  telega-notifications-mode: t
  telega-active-stories-mode: t
  dimmer-mode: t
  popper-tab-line-mode: t
  popper-mode: t
  yas-global-mode: t
  yas-minor-mode: t
  ace-pinyin-global-mode: t
  ace-pinyin-mode: t
  gptel-mode: t
  global-git-commit-mode: t
  magit-auto-revert-mode: t
  global-auto-revert-mode: t
  doom-modeline-mode: t
  nerd-icons-completion-mode: t
  marginalia-mode: t
  vertico-mode: t
  global-corfu-mode: t
  eglot-booster-mode: t
  server-mode: t
  org-modern-mode: t
  diredfl-global-mode: t
  goggles-mode: t
  savehist-mode: t
  default-text-scale-mode: t
  emt-mode: t
  mode-line-bell-mode: t
  buffer-face-mode: t
  auto-space-mode: t
  global-whitespace-cleanup-mode: t
  whitespace-cleanup-mode: t
  sis-global-context-mode: t
  sis-context-mode: t
  sis-global-respect-mode: t
  sis-global-cursor-color-mode: t
  sis-auto-refresh-mode: t
  meow-global-mode: t
  meow-mode: t
  meow-normal-mode: t
  delete-selection-mode: t
  meow-esc-mode: t
  recentf-mode: t
  apheleia-global-mode: t
  apheleia-mode: t
  straight-use-package-mode: t
  straight-package-neutering-mode: t
  straight-live-modifications-mode: t
  tooltip-mode: t
  global-eldoc-mode: t
  show-paren-mode: t
  electric-indent-mode: t
  mouse-wheel-mode: t
  prettify-symbols-mode: t
  tab-bar-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  blink-cursor-mode: t
  minibuffer-regexp-mode: t
  line-number-mode: t
  transient-mark-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t

Load-path shadows:
/Users/luciuschen/.emacs.d/straight/build/emacsql-sqlite-builtin/emacsql-sqlite-builtin
hides
/Users/luciuschen/.emacs.d/straight/build/emacsql/emacsql-sqlite-builtin
/Users/luciuschen/.emacs.d/straight/build/benchmark-init/benchmark-init
hides ~/.emacs.d/straight/repos/benchmark-init-el/benchmark-init
/Users/luciuschen/.emacs.d/straight/build/benchmark-init/benchmark-init-modes
hides ~/.emacs.d/straight/repos/benchmark-init-el/benchmark-init-modes
/Users/luciuschen/.emacs.d/straight/build/password-store/password-store
hides /opt/homebrew/share/emacs/site-lisp/pass/password-store
/Users/luciuschen/.emacs.d/straight/build/mu/mu4e-modeline hides
/opt/homebrew/share/emacs/site-lisp/mu/mu4e/mu4e-modeline
/Users/luciuschen/.emacs.d/straight/build/mu/mu4e-search hides
/opt/homebrew/share/emacs/site-lisp/mu/mu4e/mu4e-search
/Users/luciuschen/.emacs.d/straight/build/mu/mu4e-lists hides
/opt/homebrew/share/emacs/site-lisp/mu/mu4e/mu4e-lists
/Users/luciuschen/.emacs.d/straight/build/mu/mu4e-draft hides
/opt/homebrew/share/emacs/site-lisp/mu/mu4e/mu4e-draft
/Users/luciuschen/.emacs.d/straight/build/mu/mu4e-icalendar hides
/opt/homebrew/share/emacs/site-lisp/mu/mu4e/mu4e-icalendar
/Users/luciuschen/.emacs.d/straight/build/mu/mu4e-helpers hides
/opt/homebrew/share/emacs/site-lisp/mu/mu4e/mu4e-helpers
/Users/luciuschen/.emacs.d/straight/build/mu/mu4e-actions hides
/opt/homebrew/share/emacs/site-lisp/mu/mu4e/mu4e-actions
/Users/luciuschen/.emacs.d/straight/build/mu/mu4e-compose hides
/opt/homebrew/share/emacs/site-lisp/mu/mu4e/mu4e-compose
/Users/luciuschen/.emacs.d/straight/build/mu/mu4e-headers hides
/opt/homebrew/share/emacs/site-lisp/mu/mu4e/mu4e-headers
/Users/luciuschen/.emacs.d/straight/build/mu/mu4e-folders hides
/opt/homebrew/share/emacs/site-lisp/mu/mu4e/mu4e-folders
/Users/luciuschen/.emacs.d/straight/build/mu/mu4e-window hides
/opt/homebrew/share/emacs/site-lisp/mu/mu4e/mu4e-window
/Users/luciuschen/.emacs.d/straight/build/mu/mu4e-main hides
/opt/homebrew/share/emacs/site-lisp/mu/mu4e/mu4e-main
/Users/luciuschen/.emacs.d/straight/build/mu/mu4e-obsolete hides
/opt/homebrew/share/emacs/site-lisp/mu/mu4e/mu4e-obsolete
/Users/luciuschen/.emacs.d/straight/build/mu/mu4e-contacts hides
/opt/homebrew/share/emacs/site-lisp/mu/mu4e/mu4e-contacts
/Users/luciuschen/.emacs.d/straight/build/mu/mu4e-mime-parts hides
/opt/homebrew/share/emacs/site-lisp/mu/mu4e/mu4e-mime-parts
/Users/luciuschen/.emacs.d/straight/build/mu/mu4e-thread hides
/opt/homebrew/share/emacs/site-lisp/mu/mu4e/mu4e-thread
/Users/luciuschen/.emacs.d/straight/build/mu/mu4e-context hides
/opt/homebrew/share/emacs/site-lisp/mu/mu4e/mu4e-context
/Users/luciuschen/.emacs.d/straight/build/mu/mu4e-org hides
/opt/homebrew/share/emacs/site-lisp/mu/mu4e/mu4e-org
/Users/luciuschen/.emacs.d/straight/build/mu/mu4e-query-items hides
/opt/homebrew/share/emacs/site-lisp/mu/mu4e/mu4e-query-items
/Users/luciuschen/.emacs.d/straight/build/mu/mu4e-speedbar hides
/opt/homebrew/share/emacs/site-lisp/mu/mu4e/mu4e-speedbar
/Users/luciuschen/.emacs.d/straight/build/mu/mu4e-view hides
/opt/homebrew/share/emacs/site-lisp/mu/mu4e/mu4e-view
/Users/luciuschen/.emacs.d/straight/build/mu/mu4e-message hides
/opt/homebrew/share/emacs/site-lisp/mu/mu4e/mu4e-message
/Users/luciuschen/.emacs.d/straight/build/mu/mu4e-server hides
/opt/homebrew/share/emacs/site-lisp/mu/mu4e/mu4e-server
/Users/luciuschen/.emacs.d/straight/build/mu/mu4e-mark hides
/opt/homebrew/share/emacs/site-lisp/mu/mu4e/mu4e-mark
/Users/luciuschen/.emacs.d/straight/build/mu/mu4e-update hides
/opt/homebrew/share/emacs/site-lisp/mu/mu4e/mu4e-update
/Users/luciuschen/.emacs.d/straight/build/mu/mu4e-bookmarks hides
/opt/homebrew/share/emacs/site-lisp/mu/mu4e/mu4e-bookmarks
/Users/luciuschen/.emacs.d/straight/build/mu/mu4e-contrib hides
/opt/homebrew/share/emacs/site-lisp/mu/mu4e/mu4e-contrib
/Users/luciuschen/.emacs.d/straight/build/mu/mu4e-notification hides
/opt/homebrew/share/emacs/site-lisp/mu/mu4e/mu4e-notification
/Users/luciuschen/.emacs.d/straight/build/mu/mu4e hides
/opt/homebrew/share/emacs/site-lisp/mu/mu4e/mu4e
/Users/luciuschen/.emacs.d/straight/build/mu/mu4e-vars hides
/opt/homebrew/share/emacs/site-lisp/mu/mu4e/mu4e-vars
/Users/luciuschen/.emacs.d/straight/build/transient/transient hides
/opt/homebrew/Cellar/emacs-plus@31
/31.0.50/share/emacs/31.0.50/lisp/transient
/Users/luciuschen/.emacs.d/straight/build/jsonrpc/jsonrpc hides
/opt/homebrew/Cellar/emacs-plus@31/31.0.50/share/emacs/31.0.50/lisp/jsonrpc
/Users/luciuschen/.emacs.d/straight/build/external-completion/external-completion
hides /opt/homebrew/Cellar/emacs-plus@31
/31.0.50/share/emacs/31.0.50/lisp/external-completion
/Users/luciuschen/.emacs.d/straight/build/modus-themes/theme-loaddefs hides
/opt/homebrew/Cellar/emacs-plus@31
/31.0.50/share/emacs/31.0.50/lisp/theme-loaddefs
/Users/luciuschen/.emacs.d/straight/build/flymake/flymake hides
/opt/homebrew/Cellar/emacs-plus@31
/31.0.50/share/emacs/31.0.50/lisp/progmodes/flymake
/Users/luciuschen/.emacs.d/straight/build/xref/xref hides
/opt/homebrew/Cellar/emacs-plus@31
/31.0.50/share/emacs/31.0.50/lisp/progmodes/xref
/Users/luciuschen/.emacs.d/straight/build/project/project hides
/opt/homebrew/Cellar/emacs-plus@31
/31.0.50/share/emacs/31.0.50/lisp/progmodes/project
/Users/luciuschen/.emacs.d/straight/build/eglot/eglot hides
/opt/homebrew/Cellar/emacs-plus@31
/31.0.50/share/emacs/31.0.50/lisp/progmodes/eglot
/Users/luciuschen/.emacs.d/straight/build/org/ob-comint hides
/opt/homebrew/Cellar/emacs-plus@31
/31.0.50/share/emacs/31.0.50/lisp/org/ob-comint
/Users/luciuschen/.emacs.d/straight/build/org/ob-exp hides
/opt/homebrew/Cellar/emacs-plus@31
/31.0.50/share/emacs/31.0.50/lisp/org/ob-exp
/Users/luciuschen/.emacs.d/straight/build/org/org-ctags hides
/opt/homebrew/Cellar/emacs-plus@31
/31.0.50/share/emacs/31.0.50/lisp/org/org-ctags
/Users/luciuschen/.emacs.d/straight/build/org/ob-emacs-lisp hides
/opt/homebrew/Cellar/emacs-plus@31
/31.0.50/share/emacs/31.0.50/lisp/org/ob-emacs-lisp
/Users/luciuschen/.emacs.d/straight/build/org/oc hides
/opt/homebrew/Cellar/emacs-plus@31/31.0.50/share/emacs/31.0.50/lisp/org/oc
/Users/luciuschen/.emacs.d/straight/build/org/ox-texinfo hides
/opt/homebrew/Cellar/emacs-plus@31
/31.0.50/share/emacs/31.0.50/lisp/org/ox-texinfo
/Users/luciuschen/.emacs.d/straight/build/org/ol-irc hides
/opt/homebrew/Cellar/emacs-plus@31
/31.0.50/share/emacs/31.0.50/lisp/org/ol-irc
/Users/luciuschen/.emacs.d/straight/build/org/ol-doi hides
/opt/homebrew/Cellar/emacs-plus@31
/31.0.50/share/emacs/31.0.50/lisp/org/ol-doi
/Users/luciuschen/.emacs.d/straight/build/org/ob hides
/opt/homebrew/Cellar/emacs-plus@31/31.0.50/share/emacs/31.0.50/lisp/org/ob
/Users/luciuschen/.emacs.d/straight/build/org/org-refile hides
/opt/homebrew/Cellar/emacs-plus@31
/31.0.50/share/emacs/31.0.50/lisp/org/org-refile
/Users/luciuschen/.emacs.d/straight/build/org/org-version hides
/opt/homebrew/Cellar/emacs-plus@31
/31.0.50/share/emacs/31.0.50/lisp/org/org-version
/Users/luciuschen/.emacs.d/straight/build/org/org-num hides
/opt/homebrew/Cellar/emacs-plus@31
/31.0.50/share/emacs/31.0.50/lisp/org/org-num
/Users/luciuschen/.emacs.d/straight/build/org/ol-mhe hides
/opt/homebrew/Cellar/emacs-plus@31
/31.0.50/share/emacs/31.0.50/lisp/org/ol-mhe
/Users/luciuschen/.emacs.d/straight/build/org/ob-shell hides
/opt/homebrew/Cellar/emacs-plus@31
/31.0.50/share/emacs/31.0.50/lisp/org/ob-shell
/Users/luciuschen/.emacs.d/straight/build/org/org-attach hides
/opt/homebrew/Cellar/emacs-plus@31
/31.0.50/share/emacs/31.0.50/lisp/org/org-attach
/Users/luciuschen/.emacs.d/straight/build/org/ob-C hides
/opt/homebrew/Cellar/emacs-plus@31/31.0.50/share/emacs/31.0.50/lisp/org/ob-C
/Users/luciuschen/.emacs.d/straight/build/org/org-macs hides
/opt/homebrew/Cellar/emacs-plus@31
/31.0.50/share/emacs/31.0.50/lisp/org/org-macs
/Users/luciuschen/.emacs.d/straight/build/org/org-entities hides
/opt/homebrew/Cellar/emacs-plus@31
/31.0.50/share/emacs/31.0.50/lisp/org/org-entities
/Users/luciuschen/.emacs.d/straight/build/org/ob-dot hides
/opt/homebrew/Cellar/emacs-plus@31
/31.0.50/share/emacs/31.0.50/lisp/org/ob-dot
/Users/luciuschen/.emacs.d/straight/build/org/ob-sql hides
/opt/homebrew/Cellar/emacs-plus@31
/31.0.50/share/emacs/31.0.50/lisp/org/ob-sql
/Users/luciuschen/.emacs.d/straight/build/org/ol-eww hides
/opt/homebrew/Cellar/emacs-plus@31
/31.0.50/share/emacs/31.0.50/lisp/org/ol-eww
/Users/luciuschen/.emacs.d/straight/build/org/org-datetree hides
/opt/homebrew/Cellar/emacs-plus@31
/31.0.50/share/emacs/31.0.50/lisp/org/org-datetree
/Users/luciuschen/.emacs.d/straight/build/org/org-macro hides
/opt/homebrew/Cellar/emacs-plus@31
/31.0.50/share/emacs/31.0.50/lisp/org/org-macro
/Users/luciuschen/.emacs.d/straight/build/org/ob-eval hides
/opt/homebrew/Cellar/emacs-plus@31
/31.0.50/share/emacs/31.0.50/lisp/org/ob-eval
/Users/luciuschen/.emacs.d/straight/build/org/ob-haskell hides
/opt/homebrew/Cellar/emacs-plus@31
/31.0.50/share/emacs/31.0.50/lisp/org/ob-haskell
/Users/luciuschen/.emacs.d/straight/build/org/ox-org hides
/opt/homebrew/Cellar/emacs-plus@31
/31.0.50/share/emacs/31.0.50/lisp/org/ox-org
/Users/luciuschen/.emacs.d/straight/build/org/ol-rmail hides
/opt/homebrew/Cellar/emacs-plus@31
/31.0.50/share/emacs/31.0.50/lisp/org/ol-rmail
/Users/luciuschen/.emacs.d/straight/build/org/ob-awk hides
/opt/homebrew/Cellar/emacs-plus@31
/31.0.50/share/emacs/31.0.50/lisp/org/ob-awk
/Users/luciuschen/.emacs.d/straight/build/org/ob-groovy hides
/opt/homebrew/Cellar/emacs-plus@31
/31.0.50/share/emacs/31.0.50/lisp/org/ob-groovy
/Users/luciuschen/.emacs.d/straight/build/org/ox-icalendar hides
/opt/homebrew/Cellar/emacs-plus@31
/31.0.50/share/emacs/31.0.50/lisp/org/ox-icalendar
/Users/luciuschen/.emacs.d/straight/build/org/ob-octave hides
/opt/homebrew/Cellar/emacs-plus@31
/31.0.50/share/emacs/31.0.50/lisp/org/ob-octave
/Users/luciuschen/.emacs.d/straight/build/org/ob-scheme hides
/opt/homebrew/Cellar/emacs-plus@31
/31.0.50/share/emacs/31.0.50/lisp/org/ob-scheme
/Users/luciuschen/.emacs.d/straight/build/org/org-mobile hides
/opt/homebrew/Cellar/emacs-plus@31
/31.0.50/share/emacs/31.0.50/lisp/org/org-mobile
/Users/luciuschen/.emacs.d/straight/build/org/ob-processing hides
/opt/homebrew/Cellar/emacs-plus@31
/31.0.50/share/emacs/31.0.50/lisp/org/ob-processing
/Users/luciuschen/.emacs.d/straight/build/org/oc-biblatex hides
/opt/homebrew/Cellar/emacs-plus@31
/31.0.50/share/emacs/31.0.50/lisp/org/oc-biblatex
/Users/luciuschen/.emacs.d/straight/build/org/oc-csl hides
/opt/homebrew/Cellar/emacs-plus@31
/31.0.50/share/emacs/31.0.50/lisp/org/oc-csl
/Users/luciuschen/.emacs.d/straight/build/org/org-colview hides
/opt/homebrew/Cellar/emacs-plus@31
/31.0.50/share/emacs/31.0.50/lisp/org/org-colview
/Users/luciuschen/.emacs.d/straight/build/org/ob-R hides
/opt/homebrew/Cellar/emacs-plus@31/31.0.50/share/emacs/31.0.50/lisp/org/ob-R
/Users/luciuschen/.emacs.d/straight/build/org/org-table hides
/opt/homebrew/Cellar/emacs-plus@31
/31.0.50/share/emacs/31.0.50/lisp/org/org-table
/Users/luciuschen/.emacs.d/straight/build/org/ox-html hides
/opt/homebrew/Cellar/emacs-plus@31
/31.0.50/share/emacs/31.0.50/lisp/org/ox-html
/Users/luciuschen/.emacs.d/straight/build/org/ob-fortran hides
/opt/homebrew/Cellar/emacs-plus@31
/31.0.50/share/emacs/31.0.50/lisp/org/ob-fortran
/Users/luciuschen/.emacs.d/straight/build/org/ol hides
/opt/homebrew/Cellar/emacs-plus@31/31.0.50/share/emacs/31.0.50/lisp/org/ol
/Users/luciuschen/.emacs.d/straight/build/org/ob-plantuml hides
/opt/homebrew/Cellar/emacs-plus@31
/31.0.50/share/emacs/31.0.50/lisp/org/ob-plantuml
/Users/luciuschen/.emacs.d/straight/build/org/ol-docview hides
/opt/homebrew/Cellar/emacs-plus@31
/31.0.50/share/emacs/31.0.50/lisp/org/ol-docview
/Users/luciuschen/.emacs.d/straight/build/org/ob-perl hides
/opt/homebrew/Cellar/emacs-plus@31
/31.0.50/share/emacs/31.0.50/lisp/org/ob-perl
/Users/luciuschen/.emacs.d/straight/build/org/ob-sqlite hides
/opt/homebrew/Cellar/emacs-plus@31
/31.0.50/share/emacs/31.0.50/lisp/org/ob-sqlite
/Users/luciuschen/.emacs.d/straight/build/org/oc-basic hides
/opt/homebrew/Cellar/emacs-plus@31
/31.0.50/share/emacs/31.0.50/lisp/org/oc-basic
/Users/luciuschen/.emacs.d/straight/build/org/ob-sed hides
/opt/homebrew/Cellar/emacs-plus@31
/31.0.50/share/emacs/31.0.50/lisp/org/ob-sed
/Users/luciuschen/.emacs.d/straight/build/org/org-fold-core hides
/opt/homebrew/Cellar/emacs-plus@31
/31.0.50/share/emacs/31.0.50/lisp/org/org-fold-core
/Users/luciuschen/.emacs.d/straight/build/org/ob-ditaa hides
/opt/homebrew/Cellar/emacs-plus@31
/31.0.50/share/emacs/31.0.50/lisp/org/ob-ditaa
/Users/luciuschen/.emacs.d/straight/build/org/ob-ruby hides
/opt/homebrew/Cellar/emacs-plus@31
/31.0.50/share/emacs/31.0.50/lisp/org/ob-ruby
/Users/luciuschen/.emacs.d/straight/build/org/oc-bibtex hides
/opt/homebrew/Cellar/emacs-plus@31
/31.0.50/share/emacs/31.0.50/lisp/org/oc-bibtex
/Users/luciuschen/.emacs.d/straight/build/org/org-habit hides
/opt/homebrew/Cellar/emacs-plus@31
/31.0.50/share/emacs/31.0.50/lisp/org/org-habit
/Users/luciuschen/.emacs.d/straight/build/org/org-loaddefs hides
/opt/homebrew/Cellar/emacs-plus@31
/31.0.50/share/emacs/31.0.50/lisp/org/org-loaddefs
/Users/luciuschen/.emacs.d/straight/build/org/ol-gnus hides
/opt/homebrew/Cellar/emacs-plus@31
/31.0.50/share/emacs/31.0.50/lisp/org/ol-gnus
/Users/luciuschen/.emacs.d/straight/build/org/ob-screen hides
/opt/homebrew/Cellar/emacs-plus@31
/31.0.50/share/emacs/31.0.50/lisp/org/ob-screen
/Users/luciuschen/.emacs.d/straight/build/org/org-mouse hides
/opt/homebrew/Cellar/emacs-plus@31
/31.0.50/share/emacs/31.0.50/lisp/org/org-mouse
/Users/luciuschen/.emacs.d/straight/build/org/ob-css hides
/opt/homebrew/Cellar/emacs-plus@31
/31.0.50/share/emacs/31.0.50/lisp/org/ob-css
/Users/luciuschen/.emacs.d/straight/build/org/org-inlinetask hides
/opt/homebrew/Cellar/emacs-plus@31
/31.0.50/share/emacs/31.0.50/lisp/org/org-inlinetask
/Users/luciuschen/.emacs.d/straight/build/org/ob-lisp hides
/opt/homebrew/Cellar/emacs-plus@31
/31.0.50/share/emacs/31.0.50/lisp/org/ob-lisp
/Users/luciuschen/.emacs.d/straight/build/org/ol-eshell hides
/opt/homebrew/Cellar/emacs-plus@31
/31.0.50/share/emacs/31.0.50/lisp/org/ol-eshell
/Users/luciuschen/.emacs.d/straight/build/org/org-pcomplete hides
/opt/homebrew/Cellar/emacs-plus@31
/31.0.50/share/emacs/31.0.50/lisp/org/org-pcomplete
/Users/luciuschen/.emacs.d/straight/build/org/org-lint hides
/opt/homebrew/Cellar/emacs-plus@31
/31.0.50/share/emacs/31.0.50/lisp/org/org-lint
/Users/luciuschen/.emacs.d/straight/build/org/org-id hides
/opt/homebrew/Cellar/emacs-plus@31
/31.0.50/share/emacs/31.0.50/lisp/org/org-id
/Users/luciuschen/.emacs.d/straight/build/org/org-capture hides
/opt/homebrew/Cellar/emacs-plus@31
/31.0.50/share/emacs/31.0.50/lisp/org/org-capture
/Users/luciuschen/.emacs.d/straight/build/org/ob-sass hides
/opt/homebrew/Cellar/emacs-plus@31
/31.0.50/share/emacs/31.0.50/lisp/org/ob-sass
/Users/luciuschen/.emacs.d/straight/build/org/ob-tangle hides
/opt/homebrew/Cellar/emacs-plus@31
/31.0.50/share/emacs/31.0.50/lisp/org/ob-tangle
/Users/luciuschen/.emacs.d/straight/build/org/ob-calc hides
/opt/homebrew/Cellar/emacs-plus@31
/31.0.50/share/emacs/31.0.50/lisp/org/ob-calc
/Users/luciuschen/.emacs.d/straight/build/org/ob-java hides
/opt/homebrew/Cellar/emacs-plus@31
/31.0.50/share/emacs/31.0.50/lisp/org/ob-java
/Users/luciuschen/.emacs.d/straight/build/org/org-compat hides
/opt/homebrew/Cellar/emacs-plus@31
/31.0.50/share/emacs/31.0.50/lisp/org/org-compat
/Users/luciuschen/.emacs.d/straight/build/org/org-attach-git hides
/opt/homebrew/Cellar/emacs-plus@31
/31.0.50/share/emacs/31.0.50/lisp/org/org-attach-git
/Users/luciuschen/.emacs.d/straight/build/org/ox-beamer hides
/opt/homebrew/Cellar/emacs-plus@31
/31.0.50/share/emacs/31.0.50/lisp/org/ox-beamer
/Users/luciuschen/.emacs.d/straight/build/org/org-protocol hides
/opt/homebrew/Cellar/emacs-plus@31
/31.0.50/share/emacs/31.0.50/lisp/org/org-protocol
/Users/luciuschen/.emacs.d/straight/build/org/org-element hides
/opt/homebrew/Cellar/emacs-plus@31
/31.0.50/share/emacs/31.0.50/lisp/org/org-element
/Users/luciuschen/.emacs.d/straight/build/org/ob-lob hides
/opt/homebrew/Cellar/emacs-plus@31
/31.0.50/share/emacs/31.0.50/lisp/org/ob-lob
/Users/luciuschen/.emacs.d/straight/build/org/org-tempo hides
/opt/homebrew/Cellar/emacs-plus@31
/31.0.50/share/emacs/31.0.50/lisp/org/org-tempo
/Users/luciuschen/.emacs.d/straight/build/org/ob-python hides
/opt/homebrew/Cellar/emacs-plus@31
/31.0.50/share/emacs/31.0.50/lisp/org/ob-python
/Users/luciuschen/.emacs.d/straight/build/org/ob-latex hides
/opt/homebrew/Cellar/emacs-plus@31
/31.0.50/share/emacs/31.0.50/lisp/org/ob-latex
/Users/luciuschen/.emacs.d/straight/build/org/ol-w3m hides
/opt/homebrew/Cellar/emacs-plus@31
/31.0.50/share/emacs/31.0.50/lisp/org/ol-w3m
/Users/luciuschen/.emacs.d/straight/build/org/org-agenda hides
/opt/homebrew/Cellar/emacs-plus@31
/31.0.50/share/emacs/31.0.50/lisp/org/org-agenda
/Users/luciuschen/.emacs.d/straight/build/org/org-persist hides
/opt/homebrew/Cellar/emacs-plus@31
/31.0.50/share/emacs/31.0.50/lisp/org/org-persist
/Users/luciuschen/.emacs.d/straight/build/org/ob-ocaml hides
/opt/homebrew/Cellar/emacs-plus@31
/31.0.50/share/emacs/31.0.50/lisp/org/ob-ocaml
/Users/luciuschen/.emacs.d/straight/build/org/ob-ref hides
/opt/homebrew/Cellar/emacs-plus@31
/31.0.50/share/emacs/31.0.50/lisp/org/ob-ref
/Users/luciuschen/.emacs.d/straight/build/org/org-fold hides
/opt/homebrew/Cellar/emacs-plus@31
/31.0.50/share/emacs/31.0.50/lisp/org/org-fold
/Users/luciuschen/.emacs.d/straight/build/org/ob-julia hides
/opt/homebrew/Cellar/emacs-plus@31
/31.0.50/share/emacs/31.0.50/lisp/org/ob-julia
/Users/luciuschen/.emacs.d/straight/build/org/ob-lilypond hides
/opt/homebrew/Cellar/emacs-plus@31
/31.0.50/share/emacs/31.0.50/lisp/org/ob-lilypond
/Users/luciuschen/.emacs.d/straight/build/org/ob-table hides
/opt/homebrew/Cellar/emacs-plus@31
/31.0.50/share/emacs/31.0.50/lisp/org/ob-table
/Users/luciuschen/.emacs.d/straight/build/org/ob-clojure hides
/opt/homebrew/Cellar/emacs-plus@31
/31.0.50/share/emacs/31.0.50/lisp/org/ob-clojure
/Users/luciuschen/.emacs.d/straight/build/org/org-indent hides
/opt/homebrew/Cellar/emacs-plus@31
/31.0.50/share/emacs/31.0.50/lisp/org/org-indent
/Users/luciuschen/.emacs.d/straight/build/org/org-plot hides
/opt/homebrew/Cellar/emacs-plus@31
/31.0.50/share/emacs/31.0.50/lisp/org/org-plot
/Users/luciuschen/.emacs.d/straight/build/org/ox-latex hides
/opt/homebrew/Cellar/emacs-plus@31
/31.0.50/share/emacs/31.0.50/lisp/org/ox-latex
/Users/luciuschen/.emacs.d/straight/build/org/org-src hides
/opt/homebrew/Cellar/emacs-plus@31
/31.0.50/share/emacs/31.0.50/lisp/org/org-src
/Users/luciuschen/.emacs.d/straight/build/org/org-duration hides
/opt/homebrew/Cellar/emacs-plus@31
/31.0.50/share/emacs/31.0.50/lisp/org/org-duration
/Users/luciuschen/.emacs.d/straight/build/org/ob-makefile hides
/opt/homebrew/Cellar/emacs-plus@31
/31.0.50/share/emacs/31.0.50/lisp/org/ob-makefile
/Users/luciuschen/.emacs.d/straight/build/org/ol-info hides
/opt/homebrew/Cellar/emacs-plus@31
/31.0.50/share/emacs/31.0.50/lisp/org/ol-info
/Users/luciuschen/.emacs.d/straight/build/org/org-clock hides
/opt/homebrew/Cellar/emacs-plus@31
/31.0.50/share/emacs/31.0.50/lisp/org/org-clock
/Users/luciuschen/.emacs.d/straight/build/org/ob-forth hides
/opt/homebrew/Cellar/emacs-plus@31
/31.0.50/share/emacs/31.0.50/lisp/org/ob-forth
/Users/luciuschen/.emacs.d/straight/build/org/ox-odt hides
/opt/homebrew/Cellar/emacs-plus@31
/31.0.50/share/emacs/31.0.50/lisp/org/ox-odt
/Users/luciuschen/.emacs.d/straight/build/org/ol-man hides
/opt/homebrew/Cellar/emacs-plus@31
/31.0.50/share/emacs/31.0.50/lisp/org/ol-man
/Users/luciuschen/.emacs.d/straight/build/org/ox-publish hides
/opt/homebrew/Cellar/emacs-plus@31
/31.0.50/share/emacs/31.0.50/lisp/org/ox-publish
/Users/luciuschen/.emacs.d/straight/build/org/org-archive hides
/opt/homebrew/Cellar/emacs-plus@31
/31.0.50/share/emacs/31.0.50/lisp/org/org-archive
/Users/luciuschen/.emacs.d/straight/build/org/ob-org hides
/opt/homebrew/Cellar/emacs-plus@31
/31.0.50/share/emacs/31.0.50/lisp/org/ob-org
/Users/luciuschen/.emacs.d/straight/build/org/ob-lua hides
/opt/homebrew/Cellar/emacs-plus@31
/31.0.50/share/emacs/31.0.50/lisp/org/ob-lua
/Users/luciuschen/.emacs.d/straight/build/org/org-keys hides
/opt/homebrew/Cellar/emacs-plus@31
/31.0.50/share/emacs/31.0.50/lisp/org/org-keys
/Users/luciuschen/.emacs.d/straight/build/org/ob-eshell hides
/opt/homebrew/Cellar/emacs-plus@31
/31.0.50/share/emacs/31.0.50/lisp/org/ob-eshell
/Users/luciuschen/.emacs.d/straight/build/org/org-faces hides
/opt/homebrew/Cellar/emacs-plus@31
/31.0.50/share/emacs/31.0.50/lisp/org/org-faces
/Users/luciuschen/.emacs.d/straight/build/org/ox-man hides
/opt/homebrew/Cellar/emacs-plus@31
/31.0.50/share/emacs/31.0.50/lisp/org/ox-man
/Users/luciuschen/.emacs.d/straight/build/org/org-list hides
/opt/homebrew/Cellar/emacs-plus@31
/31.0.50/share/emacs/31.0.50/lisp/org/org-list
/Users/luciuschen/.emacs.d/straight/build/org/ox-md hides
/opt/homebrew/Cellar/emacs-plus@31
/31.0.50/share/emacs/31.0.50/lisp/org/ox-md
/Users/luciuschen/.emacs.d/straight/build/org/org-goto hides
/opt/homebrew/Cellar/emacs-plus@31
/31.0.50/share/emacs/31.0.50/lisp/org/org-goto
/Users/luciuschen/.emacs.d/straight/build/org/ol-bbdb hides
/opt/homebrew/Cellar/emacs-plus@31
/31.0.50/share/emacs/31.0.50/lisp/org/ol-bbdb
/Users/luciuschen/.emacs.d/straight/build/org/org hides
/opt/homebrew/Cellar/emacs-plus@31/31.0.50/share/emacs/31.0.50/lisp/org/org
/Users/luciuschen/.emacs.d/straight/build/org/ol-bibtex hides
/opt/homebrew/Cellar/emacs-plus@31
/31.0.50/share/emacs/31.0.50/lisp/org/ol-bibtex
/Users/luciuschen/.emacs.d/straight/build/org/ox-koma-letter hides
/opt/homebrew/Cellar/emacs-plus@31
/31.0.50/share/emacs/31.0.50/lisp/org/ox-koma-letter
/Users/luciuschen/.emacs.d/straight/build/org/ox-ascii hides
/opt/homebrew/Cellar/emacs-plus@31
/31.0.50/share/emacs/31.0.50/lisp/org/ox-ascii
/Users/luciuschen/.emacs.d/straight/build/org/ob-matlab hides
/opt/homebrew/Cellar/emacs-plus@31
/31.0.50/share/emacs/31.0.50/lisp/org/ob-matlab
/Users/luciuschen/.emacs.d/straight/build/org/ox hides
/opt/homebrew/Cellar/emacs-plus@31/31.0.50/share/emacs/31.0.50/lisp/org/ox
/Users/luciuschen/.emacs.d/straight/build/org/org-timer hides
/opt/homebrew/Cellar/emacs-plus@31
/31.0.50/share/emacs/31.0.50/lisp/org/org-timer
/Users/luciuschen/.emacs.d/straight/build/org/oc-natbib hides
/opt/homebrew/Cellar/emacs-plus@31
/31.0.50/share/emacs/31.0.50/lisp/org/oc-natbib
/Users/luciuschen/.emacs.d/straight/build/org/ob-core hides
/opt/homebrew/Cellar/emacs-plus@31
/31.0.50/share/emacs/31.0.50/lisp/org/ob-core
/Users/luciuschen/.emacs.d/straight/build/org/org-feed hides
/opt/homebrew/Cellar/emacs-plus@31
/31.0.50/share/emacs/31.0.50/lisp/org/org-feed
/Users/luciuschen/.emacs.d/straight/build/org/ob-gnuplot hides
/opt/homebrew/Cellar/emacs-plus@31
/31.0.50/share/emacs/31.0.50/lisp/org/ob-gnuplot
/Users/luciuschen/.emacs.d/straight/build/org/ob-js hides
/opt/homebrew/Cellar/emacs-plus@31
/31.0.50/share/emacs/31.0.50/lisp/org/ob-js
/Users/luciuschen/.emacs.d/straight/build/org/org-element-ast hides
/opt/homebrew/Cellar/emacs-plus@31
/31.0.50/share/emacs/31.0.50/lisp/org/org-element-ast
/Users/luciuschen/.emacs.d/straight/build/org/org-footnote hides
/opt/homebrew/Cellar/emacs-plus@31
/31.0.50/share/emacs/31.0.50/lisp/org/org-footnote
/Users/luciuschen/.emacs.d/straight/build/org/ob-maxima hides
/opt/homebrew/Cellar/emacs-plus@31
/31.0.50/share/emacs/31.0.50/lisp/org/ob-maxima
/Users/luciuschen/.emacs.d/straight/build/org/org-cycle hides
/opt/homebrew/Cellar/emacs-plus@31
/31.0.50/share/emacs/31.0.50/lisp/org/org-cycle
/Users/luciuschen/.emacs.d/straight/build/org/org-crypt hides
/opt/homebrew/Cellar/emacs-plus@31
/31.0.50/share/emacs/31.0.50/lisp/org/org-crypt
/Users/luciuschen/.emacs.d/straight/build/compat/compat hides
/opt/homebrew/Cellar/emacs-plus@31
/31.0.50/share/emacs/31.0.50/lisp/emacs-lisp/compat
/Users/luciuschen/.emacs.d/straight/build/track-changes/track-changes hides
/opt/homebrew/Cellar/emacs-plus@31
/31.0.50/share/emacs/31.0.50/lisp/emacs-lisp/track-changes
/Users/luciuschen/.emacs.d/straight/build/map/map hides
/opt/homebrew/Cellar/emacs-plus@31
/31.0.50/share/emacs/31.0.50/lisp/emacs-lisp/map
/Users/luciuschen/.emacs.d/straight/build/let-alist/let-alist hides
/opt/homebrew/Cellar/emacs-plus@31
/31.0.50/share/emacs/31.0.50/lisp/emacs-lisp/let-alist
/Users/luciuschen/.emacs.d/straight/build/seq/seq hides
/opt/homebrew/Cellar/emacs-plus@31
/31.0.50/share/emacs/31.0.50/lisp/emacs-lisp/seq
/Users/luciuschen/.emacs.d/straight/build/eldoc/eldoc hides
/opt/homebrew/Cellar/emacs-plus@31
/31.0.50/share/emacs/31.0.50/lisp/emacs-lisp/eldoc

Features:
(shadow sort mail-extr org-indent latexenc oc-basic gptel-curl apheleia
apheleia-rcs apheleia-dp apheleia-formatters apheleia-utils apheleia-log
apheleia-formatter-context dabbrev checkdoc lisp-mnt
display-fill-column-indicator display-line-numbers company
language-detection lib-telega telega-mnz telega-bridge-bot
telega-url-shorten telega-obsolete telega telega-tdlib-events
telega-webpage telega-match telega-root telega-info telega-chat
visual-fill-column telega-modes telega-company telega-emoji telega-user
telega-notifications telega-voip telega-msg telega-story telega-tme
telega-sticker telega-vvnote bindat telega-ffplay telega-i18n
telega-sort telega-filter telega-ins telega-inline telega-util
telega-folders telega-topic telega-media telega-tdlib
rainbow-identifiers dired-aux telega-server telega-core telega-customize
emacsbug help-fns radix-tree vc-hg vc-bzr vc-src vc-sccs vc-svn vc-cvs
vc-rcs vc-git magit-extras emacsql-sqlite-builtin sqlite dimmer tab-line
popper-echo popper yasnippet ace-pinyin pinyinlib avy diff-hl log-view
vc-dir gptel-commit gptel gptel-org gptel-openai forge-repos
forge-tablist forge-topics forge-commands forge-semi forge-bitbucket
buck forge-gogs gogs forge-gitea gtea forge-gitlab glab forge-github
ghub-graphql treepy gsexp ghub let-alist forge-notify forge-revnote
forge-pullreq forge-issue forge-topic yaml eieio-custom bug-reference
forge-post markdown-mode forge-repo forge forge-core forge-db closql
emacsql-sqlite-common emacsql emacsql-compiler eieio-base lib-magit
magit-bookmark magit-submodule magit-blame magit-stash magit-reflog
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-files magit-refs magit-status
magit magit-repos magit-apply magit-wip magit-log which-func magit-diff
smerge-mode git-commit log-edit pcvs-util add-log magit-core
magit-autorevert autorevert magit-margin magit-transient magit-process
magit-mode benchmark magit-git magit-base magit-section cursor-sensor vc
vc-dispatcher doom-modeline doom-modeline-segments doom-modeline-env
doom-modeline-core shrink-path f s nerd-icons-completion marginalia
vertico embark-org embark-consult embark lib-orderless orderless cape
kind-icon svg-lib corfu eglot-booster lib-eglot eglot
external-completion jsonrpc xref seq-25 diff diff-mode track-changes ert
ewoc debug backtrace sideline-flymake sideline ht flymake warnings
separedit calc-misc calc calc-loaddefs rect calc-macs edit-indirect dash
lib-transient transient pdf-tools package url-handlers pdf-view
pdf-cache pdf-info tq pdf-util pdf-macs webpaste password-store
auth-source-pass with-editor server vterm tramp trampver
tramp-integration files-x tramp-message tramp-compat tramp-loaddefs term
ehelp vterm-module term/xterm xterm mastodon mastodon-search
mastodon-toot mastodon-iso persist mastodon-http request ready-player
consult-mu wgrep grep compile lib-consult consult mu4e mu4e-org ol-eww
eww url-queue mm-url ol-rmail ol-mhe ol-irc ol-gnus nnselect ol-docview
doc-view filenotify jka-compr image-mode exif ol-bibtex ol-bbdb ol-w3m
ol-doi org-link-doi ob-shell shell ob-verb verb verb-util lib-js js
c-ts-common imenu cc-mode cc-fonts cc-guess cc-menus cc-cmds cc-styles
cc-align cc-engine cc-vars cc-defs org-modern citar citar-file
citar-cache citar-format ebib ebib-reading-list ebib-notes ebib-filters
ebib-keywords ebib-utils ebib-db parsebib crm bibtex 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-icalendar org-habit lib-org-agenda
org-agenda ox-ascii ox-hugo ox-hugo-deprecated ol-info ffap
ox-blackfriday ox-md ox-html ox-mathml org-latex-preview ox-latex table
ox-publish tomelr ox org-element org-persist xdg avl-tree generator
lib-org-archive-hierachical org-archive lib-org org-remark
org-remark-global-tracking org-id org-refile org-element-ast inline org
org-macro org-pcomplete pcomplete org-list org-footnote org-faces
org-entities ob-emacs-lisp ob-latex ob-python python project ob-plantuml
ob ob-tangle org-src sh-script smie treesit executable ob-ref ob-lob
ob-table ob-exp ob-comint ob-core ob-eval org-cycle org-table ol
org-fold org-fold-core org-keys oc org-loaddefs find-func org-version
org-compat org-macs format-spec mu4e-notification notifications
mu4e-main smtpmail mu4e-view mu4e-mime-parts thingatpt comint ansi-osc
ansi-color cal-menu calendar cal-loaddefs mu4e-headers mu4e-thread
mu4e-actions mu4e-compose mu4e-draft gnus-msg gnus-art mm-uu mml2015
mm-view mml-smime smime dig gnus-sum gnus-group gnus-undo gnus-start
gnus-dbus dbus gnus-cloud nnimap nnmail mail-source utf7 nnoo parse-time
iso8601 gnus-spec gnus-int gnus-range gnus-win gnus nnheader range
mu4e-search mu4e-lists mu4e-bookmarks mu4e-mark mu4e-message shr
pixel-fill kinsoku url-file svg xml browse-url flow-fill hl-line
mu4e-contacts mu4e-update mu4e-folders mu4e-context mu4e-query-items
mu4e-server mu4e-modeline mu4e-vars mu4e-helpers mu4e-config mu4e-window
bookmark ido message sendmail yank-media dired-hacks diredfl dired
dired-loaddefs rfc822 mml mml-sec epa epg rfc6068 epg-config gnus-util
text-property-search time-date mm-decode mm-bodies mm-encode mailabbrev
gmm-utils mailheader mu4e-obsolete mail-utils gnutls network-stream
url-http mail-parse rfc2231 rfc2047 rfc2045 mm-util ietf-drums
mail-prsvr url-gw nsm puny url-cache url-auth time rainbow-delimiters
goggles pulse cus-start mmm-mode mmm-univ mmm-class mmm-region mmm-auto
mmm-vars mmm-utils mmm-compat savehist elec-pair default-text-scale emt
mode-line-bell init init-local init-mu4e init-telega init-org init-util
init-reader init-transient init-prog indent-bars cus-edit face-remap
noutline outline macrostep ring pp compat lib-lisp
highlight-matching-tag sgml-mode facemenu dom web-mode disp-table
derived init-completion init-minibuffer init-vc init-editing auto-space
diminish whitespace-cleanup-mode whitespace sis lib-meow meow meow-tutor
meow-cheatsheet meow-cheatsheet-layout meow-core meow-shims delsel
meow-esc meow-command array meow-keypad meow-helpers meow-beacon
meow-thing meow-visual meow-util meow-face meow-keymap meow-var color
init-ui lib-tabbar lib-font modus-vivendi-tinted-theme modus-themes
lib-appearance dashboard nerd-icons nerd-icons-faces nerd-icons-data
nerd-icons-data-mdicon nerd-icons-data-flicon nerd-icons-data-codicon
nerd-icons-data-devicon nerd-icons-data-sucicon nerd-icons-data-wicon
nerd-icons-data-faicon nerd-icons-data-powerline nerd-icons-data-octicon
nerd-icons-data-pomicon nerd-icons-data-ipsicon url url-proxy
url-privacy url-expand url-methods url-history url-cookie
generate-lisp-file url-domsuf url-util url-parse auth-source eieio
eieio-core icons password-cache url-vars mailcap recentf tree-widget
wid-edit json async init-builtin lib-window cus-load init-setup map
setup ready-player-autoloads dired-hacks-autoloads
immersive-translate-autoloads mu-autoloads modus-themes-autoloads
eglot-booster-autoloads consult-mu-autoloads pcase indent-bars-autoloads
dashboard-autoloads async-autoloads yasnippet-autoloads telega-autoloads
rainbow-identifiers-autoloads visual-fill-column-autoloads
gptel-autoloads meow-autoloads emt-autoloads
password-store-otp-autoloads password-store-autoloads
whitespace-cleanup-mode-autoloads emacsql-sqlite-builtin-autoloads
nerd-icons-completion-autoloads language-detection-autoloads
default-text-scale-autoloads rainbow-delimiters-autoloads
browse-kill-ring-autoloads command-log-mode-autoloads
nerd-icons-dired-autoloads typescript-mode-autoloads
elfeed-tube-mpv-autoloads embark-consult-autoloads
benchmark-init-autoloads mode-line-bell-autoloads
consult-eglot-autoloads doom-modeline-autoloads shrink-path-autoloads
org-cliplink-autoloads treesit-auto-autoloads vterm-toggle-autoloads
vterm-autoloads swift-mode-autoloads consult-dir-autoloads
prettier-js-autoloads rainbow-mode-autoloads org-roam-ui-autoloads
websocket-autoloads simple-httpd-autoloads elfeed-tube-autoloads
aio-autoloads org-remark-autoloads marginalia-autoloads
ace-pinyin-autoloads pinyinlib-autoloads org-modern-autoloads
nerd-icons-autoloads git-blamed-autoloads git-modes-autoloads
kind-icon-autoloads svg-lib-autoloads orderless-autoloads
json-mode-autoloads rx json-snatcher-autoloads macrostep-autoloads
ox-pandoc-autoloads pdf-tools-autoloads tablist-autoloads
mastodon-autoloads persist-autoloads apheleia-autoloads easy-mmode
webpaste-autoloads request-autoloads git-link-autoloads
org-roam-autoloads diminish-autoloads move-dup-autoloads
js2-mode-autoloads web-mode-autoloads sideline-flymake-autoloads
sideline-autoloads ht-autoloads goggles-autoloads company-autoloads
diff-hl-autoloads scratch-autoloads ox-hugo-autoloads tomelr-autoloads
map-autoloads mmm-mode-autoloads consult-autoloads cdlatex-autoloads
separedit-autoloads edit-indirect-autoloads diredfl-autoloads
vertico-autoloads dimmer-autoloads embark-autoloads popper-autoloads
elfeed-autoloads verb-autoloads forge-autoloads yaml-autoloads
markdown-mode-autoloads magit-autoloads magit-section-autoloads
git-commit-autoloads with-editor-autoloads transient-autoloads
ghub-autoloads treepy-autoloads let-alist-autoloads closql-autoloads
emacsql-autoloads vundo-autoloads corfu-autoloads eglot-autoloads
track-changes-autoloads jsonrpc-autoloads flymake-autoloads
project-autoloads xref-autoloads external-completion-autoloads
eldoc-autoloads setup-autoloads wgrep-autoloads citar-autoloads
citeproc-autoloads string-inflection-autoloads queue-autoloads
f-autoloads s-autoloads dash-autoloads ebib-autoloads parsebib-autoloads
deft-autoloads cape-autoloads compat-autoloads seq-autoloads
mpv-autoloads avy-autoloads sis-autoloads nov-autoloads esxml-autoloads
finder-inf kv-autoloads org-autoloads info straight-autoloads cl-extra
help-mode straight subr-x edmacro kmacro byte-opt bytecomp byte-compile
early-init benchmark-init advice cl-seq cl-macs gv cl-loaddefs cl-lib
rmc iso-transl tooltip cconv eldoc paren electric uniquify ediff-hook
vc-hooks lisp-float-type elisp-mode mwheel term/ns-win ns-win
ucs-normalize mule-util term/common-win tool-bar dnd fontset image
regexp-opt fringe tabulated-list replace newcomment text-mode lisp-mode
prog-mode register page tab-bar menu-bar rfn-eshadow isearch easymenu
timer select scroll-bar mouse jit-lock font-lock syntax font-core
term/tty-colors frame minibuffer nadvice seq simple cl-generic
indonesian philippine 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 emoji-zwj charscript charprop case-table epa-hook
jka-cmpr-hook help abbrev obarray oclosure cl-preloaded button loaddefs
theme-loaddefs faces cus-face macroexp files window text-properties
overlay sha1 md5 base64 format env code-pages mule custom widget keymap
hashtable-print-readable backquote threads xwidget-internal kqueue cocoa
ns lcms2 multi-tty make-network-process emacs)

Memory information:
((conses 16 2862385 1104007) (symbols 48 68222 106)
 (strings 32 570008 52038) (string-bytes 1 12548159)
 (vectors 16 325997) (vector-slots 8 2754491 1266235)
 (floats 8 429181 4074) (intervals 56 11152 12968) (buffers 992 39))

[-- Attachment #2: Type: text/html, Size: 42601 bytes --]

^ permalink raw reply	[flat|nested] 7+ messages in thread

* bug#72422: 31.0.50; Bug: Rime input candidates always appear in the bottom-left corner on Emacs 31
  2024-08-02 15:18 bug#72422: 31.0.50; Bug: Rime input candidates always appear in the bottom-left corner on Emacs 31 Lucius Chen
@ 2024-08-02 16:20 ` Gerd Möllmann
       [not found]   ` <CALyaXOhwwJX=ArP5rqFZMDVEa9JZ5bgh658eOdBJ=7e41pG+cg@mail.gmail.com>
  0 siblings, 1 reply; 7+ messages in thread
From: Gerd Möllmann @ 2024-08-02 16:20 UTC (permalink / raw)
  To: Lucius Chen; +Cc: 72422

Lucius Chen <chenyh572@gmail.com> writes:

> --text follows this line--
>
> *Description:*
> After updating to Emacs 31 (master branch), I found that the candidate
> window for Rime input always appears in the bottom-left corner of the
> screen. This issue seems to be related to the NSTextInputClient
> implementation.
>
> *Steps to Reproduce:*
> 1. Open Emacs 31 with the latest changes applied.
> 2. Use Rime input to input text.
> 3. Observe the position of the candidate window.
>
> *Expected Behavior:*
> The candidate window should appear near the text insertion point, not in
> the bottom-left corner of the screen.
>
> *Actual Behavior:*
> The candidate window consistently appears in the bottom-left corner of the
> screen.
>
> *Analysis:*
> The issue seems to be caused by the following method in the
> NSTextInputClient implementation always returning NSZeroRect:

Could be. Can you please explain what "Rime input" is?





^ permalink raw reply	[flat|nested] 7+ messages in thread

* bug#72422: 31.0.50; Bug: Rime input candidates always appear in the bottom-left corner on Emacs 31
       [not found]   ` <CALyaXOhwwJX=ArP5rqFZMDVEa9JZ5bgh658eOdBJ=7e41pG+cg@mail.gmail.com>
@ 2024-08-03  4:02     ` Gerd Möllmann
  2024-08-03  4:28       ` Gerd Möllmann
  0 siblings, 1 reply; 7+ messages in thread
From: Gerd Möllmann @ 2024-08-03  4:02 UTC (permalink / raw)
  To: Lucius Chen; +Cc: 72422

Lucius Chen <chenyh572@gmail.com> writes:

> Rime input method. https://github.com/rime/squirrel
>
> 在 2024年8月3日星期六,Gerd Möllmann <gerd.moellmann@gmail.com> 写道:
>
>  Lucius Chen <chenyh572@gmail.com> writes:

(Please use Reply to All when responding, so that the bug list is kept
informed.)

Thanks for the link. Alas I can't read Chinese, and the automatic
translation of the page isn't helpful.

Can you please describe a way how to reproduce this for some non-Chinese
guy like me? And preferrably using built-in macOS means instead of
third-party software?

TIA





^ permalink raw reply	[flat|nested] 7+ messages in thread

* bug#72422: 31.0.50; Bug: Rime input candidates always appear in the bottom-left corner on Emacs 31
  2024-08-03  4:02     ` Gerd Möllmann
@ 2024-08-03  4:28       ` Gerd Möllmann
  2024-08-03  7:49         ` Lucius Chen
  2024-08-03  8:31         ` Lucius Chen
  0 siblings, 2 replies; 7+ messages in thread
From: Gerd Möllmann @ 2024-08-03  4:28 UTC (permalink / raw)
  To: Lucius Chen; +Cc: 72422

Gerd Möllmann <gerd.moellmann@gmail.com> writes:

> Lucius Chen <chenyh572@gmail.com> writes:
>
>> Rime input method. https://github.com/rime/squirrel
>>
>> 在 2024年8月3日星期六,Gerd Möllmann <gerd.moellmann@gmail.com> 写道:
>>
>>  Lucius Chen <chenyh572@gmail.com> writes:
>
> (Please use Reply to All when responding, so that the bug list is kept
> informed.)
>
> Thanks for the link. Alas I can't read Chinese, and the automatic
> translation of the page isn't helpful.
>
> Can you please describe a way how to reproduce this for some non-Chinese
> guy like me? And preferrably using built-in macOS means instead of
> third-party software?
>
> TIA

Hm, could you also please try with this change?

1 file changed, 1 insertion(+), 1 deletion(-)
src/nsterm.m | 2 +-

modified   src/nsterm.m
@@ -7081,7 +7081,7 @@ - (void) setMarkedText: (id) string
 - (NSRect) firstRectForCharacterRange: (NSRange) range
 			  actualRange: (nullable NSRangePointer) actualRange
 {
-  return NSZeroRect;
+  return [self firstRectForCharacterRange: range];
 }

 #endif /* NS_IMPL_COCOA */





^ permalink raw reply	[flat|nested] 7+ messages in thread

* bug#72422: 31.0.50; Bug: Rime input candidates always appear in the bottom-left corner on Emacs 31
  2024-08-03  4:28       ` Gerd Möllmann
@ 2024-08-03  7:49         ` Lucius Chen
  2024-08-03  8:31         ` Lucius Chen
  1 sibling, 0 replies; 7+ messages in thread
From: Lucius Chen @ 2024-08-03  7:49 UTC (permalink / raw)
  To: Gerd Möllmann; +Cc: 72422


[-- Attachment #1.1: Type: text/plain, Size: 1976 bytes --]

After adding the Simplified Chinese input method in macOS System Settings >
Keyboard Settings, when entering Chinese in Emacs (latest code from the
master branch), the candidate box appears in the bottom-left corner of the
screen. When multiple screens are used, the candidate box will appear in
the bottom-left corner of the main display.

The issue can also be reproduced using the built-in Chinese input method on
MacOS. The screenshot below shows the effect of using the built-in
Simplified Chinese input method, where the candidate box appears in the
bottom right corner of the screen. Normally, it should follow the input
cursor.

[image: image.png]

Gerd Möllmann <gerd.moellmann@gmail.com> 于2024年8月3日周六 12:28写道:

> Gerd Möllmann <gerd.moellmann@gmail.com> writes:
>
> > Lucius Chen <chenyh572@gmail.com> writes:
> >
> >> Rime input method. https://github.com/rime/squirrel
> >>
> >> 在 2024年8月3日星期六,Gerd Möllmann <gerd.moellmann@gmail.com> 写道:
> >>
> >>  Lucius Chen <chenyh572@gmail.com> writes:
> >
> > (Please use Reply to All when responding, so that the bug list is kept
> > informed.)
> >
> > Thanks for the link. Alas I can't read Chinese, and the automatic
> > translation of the page isn't helpful.
> >
> > Can you please describe a way how to reproduce this for some non-Chinese
> > guy like me? And preferrably using built-in macOS means instead of
> > third-party software?
> >
> > TIA
>
> Hm, could you also please try with this change?
>
> 1 file changed, 1 insertion(+), 1 deletion(-)
> src/nsterm.m | 2 +-
>
> modified   src/nsterm.m
> @@ -7081,7 +7081,7 @@ - (void) setMarkedText: (id) string
>  - (NSRect) firstRectForCharacterRange: (NSRange) range
>                           actualRange: (nullable NSRangePointer)
> actualRange
>  {
> -  return NSZeroRect;
> +  return [self firstRectForCharacterRange: range];
>  }
>
>  #endif /* NS_IMPL_COCOA */
>

[-- Attachment #1.2: Type: text/html, Size: 2867 bytes --]

[-- Attachment #2: image.png --]
[-- Type: image/png, Size: 885776 bytes --]

^ permalink raw reply	[flat|nested] 7+ messages in thread

* bug#72422: 31.0.50; Bug: Rime input candidates always appear in the bottom-left corner on Emacs 31
  2024-08-03  4:28       ` Gerd Möllmann
  2024-08-03  7:49         ` Lucius Chen
@ 2024-08-03  8:31         ` Lucius Chen
  2024-08-03  8:38           ` Gerd Möllmann
  1 sibling, 1 reply; 7+ messages in thread
From: Lucius Chen @ 2024-08-03  8:31 UTC (permalink / raw)
  To: Gerd Möllmann; +Cc: 72422

[-- Attachment #1: Type: text/plain, Size: 1405 bytes --]

Sorry, I didn't see your latest patch. I tried the patch, and it does fix
the issue. Thank you.

Gerd Möllmann <gerd.moellmann@gmail.com> 于2024年8月3日周六 12:28写道:

> Gerd Möllmann <gerd.moellmann@gmail.com> writes:
>
> > Lucius Chen <chenyh572@gmail.com> writes:
> >
> >> Rime input method. https://github.com/rime/squirrel
> >>
> >> 在 2024年8月3日星期六,Gerd Möllmann <gerd.moellmann@gmail.com> 写道:
> >>
> >>  Lucius Chen <chenyh572@gmail.com> writes:
> >
> > (Please use Reply to All when responding, so that the bug list is kept
> > informed.)
> >
> > Thanks for the link. Alas I can't read Chinese, and the automatic
> > translation of the page isn't helpful.
> >
> > Can you please describe a way how to reproduce this for some non-Chinese
> > guy like me? And preferrably using built-in macOS means instead of
> > third-party software?
> >
> > TIA
>
> Hm, could you also please try with this change?
>
> 1 file changed, 1 insertion(+), 1 deletion(-)
> src/nsterm.m | 2 +-
>
> modified   src/nsterm.m
> @@ -7081,7 +7081,7 @@ - (void) setMarkedText: (id) string
>  - (NSRect) firstRectForCharacterRange: (NSRange) range
>                           actualRange: (nullable NSRangePointer)
> actualRange
>  {
> -  return NSZeroRect;
> +  return [self firstRectForCharacterRange: range];
>  }
>
>  #endif /* NS_IMPL_COCOA */
>

[-- Attachment #2: Type: text/html, Size: 2209 bytes --]

^ permalink raw reply	[flat|nested] 7+ messages in thread

* bug#72422: 31.0.50; Bug: Rime input candidates always appear in the bottom-left corner on Emacs 31
  2024-08-03  8:31         ` Lucius Chen
@ 2024-08-03  8:38           ` Gerd Möllmann
  0 siblings, 0 replies; 7+ messages in thread
From: Gerd Möllmann @ 2024-08-03  8:38 UTC (permalink / raw)
  To: Lucius Chen; +Cc: 72422

Lucius Chen <chenyh572@gmail.com> writes:

> Sorry, I didn't see your latest patch. I tried the patch, and it does
> fix the issue. Thank you.

Thanks! I could also reproduce this meanwhile with the built-in Pinyin,
Chinese Simplified. Fix is already pushed to emacs-30, and I'll close
this bug.





^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2024-08-03  8:38 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-08-02 15:18 bug#72422: 31.0.50; Bug: Rime input candidates always appear in the bottom-left corner on Emacs 31 Lucius Chen
2024-08-02 16:20 ` Gerd Möllmann
     [not found]   ` <CALyaXOhwwJX=ArP5rqFZMDVEa9JZ5bgh658eOdBJ=7e41pG+cg@mail.gmail.com>
2024-08-03  4:02     ` Gerd Möllmann
2024-08-03  4:28       ` Gerd Möllmann
2024-08-03  7:49         ` Lucius Chen
2024-08-03  8:31         ` Lucius Chen
2024-08-03  8:38           ` Gerd Möllmann

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).