Subject: bug#48377: closed (Re: bug#48377: 27.1; pixel-scroll-mode is unusable with popular modelines)

From: [email-masked] (GNU bug Tracking System)
Date: Wed, 17 Aug 2022 02:08:01 +0000

Your bug report

#48377: 27.1; pixel-scroll-mode is unusable with popular modelines

which was filed against the emacs package, has been closed.

The explanation is attached below, along with your original report.
If you require more details, please reply to [email-masked].

-- 
48377: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=48377
GNU Bug Tracking System
Contact [email-masked] with problems

Subject: Re: bug#48377: 27.1; pixel-scroll-mode is unusable with popular modelines
From: Po Lu <[email-masked]>
To: Rudi C <[email-masked]>
Cc: Lars Ingebrigtsen <[email-masked]>, [email-masked]
Date: Wed, 17 Aug 2022 10:07:12 +0800
List-Id: <debbugs-submit.debbugs.gnu.org>

Rudi C <[email-masked]> writes:

> `pixel-scroll-precision-mode` seems to work well. I guess we can close this issue.

Thanks, closing.  pixel-scroll-precision-mode also has some knobs that
let it work with a regular mouse.  They don't work very well yet, but
once I clean them up we can probably obsolete (or at least rename) the
old pixel-scroll-mode to avoid confusion.

Subject: 27.1; pixel-scroll-mode is unusable with popular modelines
From: Rudi C <[email-masked]>
To: [email-masked]
Date: Wed, 12 May 2021 16:07:35 +0430
List-Id: <debbugs-submit.debbugs.gnu.org>

pixel-scroll-mode has severe performance issues with some popular
modelines, as documented on:

- https://github.com/seagle0128/doom-modeline/issues/199

- https://github.com/syl20bnr/spacemacs/issues/11549

- https://www.reddit.com/r/emacs/comments/8rml8f/emacs_26_pixelscrollmode_gcs_like_theres_no/

Is this unsolvable? pixel-scroll-mode is critical when one works with
inline images, such as an org-mode workflow where notes are taken using
screenshots. I have tried some alternative non-pixel-scrolling
workarounds, but they aren't in the end usable enough for me.

I am open to experimenting with forks such as
https://github.com/emacs-ng/emacs-ng if they do have this feature.

In GNU Emacs 27.1 (build 1, x86_64-apple-darwin20.3.0, NS
appkit-2022.30 Version 11.2.1 (Build 20D75))
 of 2021-03-13 built on Fereidoons-MacBook-Pro.local
System Description:  macOS 11.2.1

Recent messages:
Quit
Configured using:
 'configure --disable-dependency-tracking --disable-silent-rules
 --enable-locallisppath=/usr/local/share/emacs/site-lisp
 --infodir=/usr/local/Cellar/emacs-plus@27/27.1/share/info/emacs
 --prefix=/usr/local/Cellar/emacs-plus@27/27.1 --with-xml2 --with-gnutls
 --without-dbus --with-imagemagick --with-modules --with-rsvg
 --with-xwidgets --with-ns --disable-ns-self-contained'

Configured features:
RSVG IMAGEMAGICK GLIB NOTIFY KQUEUE ACL GNUTLS LIBXML2 ZLIB
TOOLKIT_SCROLL_BARS XIM NS MODULES THREADS XWIDGETS JSON PDUMPER LCMS2
GMP

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

Major mode: Org

Minor modes in effect:
  pdf-occur-global-minor-mode: t
  global-evil-surround-mode: t
  evil-surround-mode: t
  eros-mode: t
  global-anzu-mode: t
  anzu-mode: t
  diff-hl-margin-mode: t
  projectile-mode: t
  whitespace-mode: t
  flycheck-popup-tip-mode: t
  evil-org-mode: t
  org-fragtog-mode: t
  vi-tilde-fringe-mode: t
  org-indent-mode: t
  global-so-long-mode: t
  which-key-mode: t
  better-jumper-mode: t
  better-jumper-local-mode: t
  evil-goggles-mode: t
  evil-escape-mode: t
  evil-snipe-override-mode: t
  evil-snipe-mode: t
  evil-snipe-override-local-mode: t
  evil-snipe-local-mode: t
  gcmh-mode: t
  global-hl-line-mode: t
  hl-line-mode: t
  winner-mode: t
  ws-butler-global-mode: t
  ws-butler-mode: t
  global-undo-fu-session-mode: t
  undo-fu-session-mode: t
  undo-fu-mode: t
  global-flycheck-mode: t
  flycheck-mode: t
  yas-minor-mode: t
  savehist-mode: t
  recentf-mode: t
  doom-modeline-mode: t
  xterm-mouse-mode: t
  ivy-rich-project-root-cache-mode: t
  ivy-rich-mode: t
  ivy-mode: t
  +global-word-wrap-mode: t
  +word-wrap-mode: t
  save-place-mode: t
  global-display-line-numbers-mode: t
  display-line-numbers-mode: t
  company-tng-mode: t
  global-company-mode: t
  company-mode: t
  override-global-mode: t
  toc-org-mode: t
  hl-todo-mode: t
  global-git-commit-mode: t
  global-auto-revert-mode: t
  org-roam-mode: t
  osx-clipboard-mode: t
  ns-auto-titlebar-mode: t
  shell-dirtrack-mode: t
  evil-mode: t
  evil-local-mode: t
  +popup-mode: t
  general-override-mode: t
  global-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
  window-divider-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t
  size-indication-mode: t
  column-number-mode: t
  line-number-mode: t
  global-visual-line-mode: t
  visual-line-mode: t
  transient-mark-mode: t

Load-path shadows:
/Users/evar/.emacs.d.doom/.local/straight/build-27.1/lispy/elpa hides
/Users/evar/.emacs.d.doom/.local/straight/build-27.1/ivy/elpa
/Users/evar/.emacs.d.doom/.local/straight/build-27.1/tablist/tablist
hides /usr/local/share/emacs/site-lisp/tablist/tablist
/Users/evar/.emacs.d.doom/.local/straight/build-27.1/tablist/tablist-filter
hides /usr/local/share/emacs/site-lisp/tablist/tablist-filter
/Users/evar/.emacs.d.doom/.local/straight/build-27.1/jsonrpc/jsonrpc
hides /usr/local/Cellar/emacs-plus@27/27.1/share/emacs/27.1/lisp/jsonrpc
/Users/evar/.emacs.d.doom/.local/straight/build-27.1/xref/xref hides
/usr/local/Cellar/emacs-plus@27/27.1/share/emacs/27.1/lisp/progmodes/xref
/Users/evar/.emacs.d.doom/.local/straight/build-27.1/project/project
hides /usr/local/Cellar/emacs-plus@27/27.1/share/emacs/27.1/lisp/progmodes/project
/Users/evar/.emacs.d.doom/.local/straight/build-27.1/flymake/flymake
hides /usr/local/Cellar/emacs-plus@27/27.1/share/emacs/27.1/lisp/progmodes/flymake
/Users/evar/.emacs.d.doom/.local/straight/build-27.1/faceup/faceup
hides /usr/local/Cellar/emacs-plus@27/27.1/share/emacs/27.1/lisp/emacs-lisp/faceup
/usr/local/share/emacs/site-lisp/let-alist/let-alist hides
/usr/local/Cellar/emacs-plus@27/27.1/share/emacs/27.1/lisp/emacs-lisp/let-alist
/Users/evar/.emacs.d.doom/.local/straight/build-27.1/eldoc/eldoc hides
/usr/local/Cellar/emacs-plus@27/27.1/share/emacs/27.1/lisp/emacs-lisp/eldoc

Features:
(shadow sort emacsbug sendmail mail-extr evil-collection-typescript-mode
typescript-mode timezone org-pdftools pdf-occur pdf-isearch
evil-collection-pdf pdf-tools org-noter drag-stuff elisp-def idlwave
idlwave-help idlw-help elisp-demos evil-collection-indent
evil-collection-helpful helpful trace info-look evil-collection-info
info evil-collection-elisp-refs elisp-refs evil-nerd-commenter
evil-nerd-commenter-operator evil-nerd-commenter-sdk
html-mode-expansions smartparens-html sgml-mode dom vc-hg eglot-jl
evil-collection-eglot eglot array jsonrpc ert evil-collection-help help
evil-collection-flymake flymake-proc flymake warnings js2-refactor
js2r-paredit js2r-conveniences js2r-conditionals js2r-wrapping
js2r-functions js2r-vars js2r-iife js2r-formatting js2r-helpers npm-mode
js2-mode-expansions xref-js2 evil-collection-js2-mode js2-mode
js-mode-expansions smartparens-javascript js diff-hl-flydiff conf-mode
osx-trash evil-collection-image ox-pandoc ht ox-org 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 ox-ascii ox-md ox-beamer ox-latex
org-re-reveal ox-html table ox-publish ox org-archive
mc-hide-unmatched-lines-mode mc-mark-more mc-cycle-cursors
multiple-cursors-core tabify macrostep-c cmacexp
evil-collection-macrostep macrostep cc-mode-expansions smartparens-c
cc-mode cc-fonts cc-guess cc-menus cc-cmds cc-styles cc-align cc-engine
cc-vars cc-defs misc evil-markdown cl-print evil-collection-debug debug
flycheck-cask evil-embrace evil-surround eros highlight-quoted amx
hide-mode-line evil-collection-wdired wdired evil-anzu anzu dired-aux
vc-svn diredfl diff-hl-margin diff-hl-dired diff-hl
evil-collection-log-view log-view evil-collection-vc-dir vc-dir ewoc vc
vc-dispatcher dired-x company-files rainbow-delimiters company-shell
evil-collection-sh-script sh-script smie ffap highlight-numbers
parent-mode dart-mode executable org-crypt nav-flash git-gutter
evil-collection-vc-git vc-git tramp-cache tramp-sh tramp tramp-loaddefs
trampver tramp-integration files-x tramp-compat parse-time iso8601
ls-lisp projectile ibuf-ext evil-collection-ibuffer ibuffer
ibuffer-loaddefs auto-minor-mode disp-table whitespace
flycheck-popup-tip org-eldoc embrace expand-region text-mode-expansions
the-org-mode-expansions er-basic-expansions expand-region-core
expand-region-custom org-super-links evil-org org-fragtog
vi-tilde-fringe highlight-indent-guides org-indent ol-bibtex bibtex
raku-detect so-long cursor-sensor evil-collection-which-key which-key
better-jumper company-yasnippet company-dabbrev-code company-dabbrev
company-capf evil-goggles pulse evil-easymotion evil-escape evil-snipe
gcmh hl-line winner paren ws-butler undo-fu-session undo-fu
flycheck-clj-kondo evil-collection-flycheck flycheck doom-themes-ext-org
tramp-theme em-dirs esh-var esh-mode esh-cmd esh-ext esh-opt esh-proc
esh-io esh-arg esh-module esh-groups esh-util solarized-light-theme
solarized solarized-faces term/xterm xterm desktop frameset face-remap
doom-snippets doom-snippets-lib yasnippet evil-collection-elisp-mode
elisp-mode savehist recentf tree-widget doom-modeline
doom-modeline-segments doom-modeline-env doom-modeline-core shrink-path
.emacs pdf-continuous-scroll-mode pdf-annot evil-collection-tablist
tablist tablist-filter semantic/wisent/comp semantic/wisent
semantic/wisent/wisent semantic/util-modes semantic/util semantic
semantic/tag semantic/lex semantic/fw cedet pdf-misc saveplace-pdf-view
pdf-view magit-bookmark evil-collection-bookmark bookmark jka-compr
pdf-cache pdf-info tq pdf-util pdf-macs image-mode exif vlf-setup
google-translate-smooth-ui google-translate google-translate-default-ui
google-translate-core-ui evil-collection-popup popup ido
google-translate-core google-translate-tk google-translate-backend
evil-collection-view view neuron-mode smartparens-markdown markdown-mode
edit-indirect xt-mouse lispyville lispy hydra lv lispy-inline etags
fileloop ivy-xref evil-collection-ivy ivy-avy avy all-the-icons-ivy
all-the-icons all-the-icons-faces data-material data-weathericons
data-octicons data-fileicons data-faicons data-alltheicons ivy-rich
counsel xdg swiper ivy flx delsel ivy-faces ivy-overlay colir color
evil-collection-xref xref project evil-collection-edebug edebug
backtrace help-fns radix-tree lispy-tags mode-local adaptive-wrap
smartparens-config smartparens-text smartparens dtrt-indent saveplace
display-line-numbers night-completion company-tng company
use-package-bind-key bind-key toc-org ob-tmux org-roam-protocol
org-protocol org-drill persist org-agenda orgit
evil-collection-magit-todos magit-todos pcre2el rxt re-builder hl-todo
async evil-collection-grep grep evil-collection-compile compile
github-review ghub-graphql treepy gsexp ghub url-http url-gw nsm
url-auth url url-proxy url-privacy url-expand url-methods url-history
url-cookie url-domsuf url-util mailcap gnutls deferred a
evil-collection-magit magit-autoloads magit-submodule magit-obsolete
magit-popup 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
core-packages package browse-url url-handlers url-parse auth-source json
map url-vars magit-repos magit-apply magit-wip magit-log which-func
evil-collection-imenu imenu magit-diff smerge-mode diff
evil-collection-diff-mode diff-mode git-commit evil-collection-log-edit
log-edit message rmc puny evil-collection-dired dired dired-loaddefs
rfc822 mml mml-sec password-cache evil-collection-epa epa epg epg-config
gnus-util rmail rmail-loaddefs text-property-search mm-decode mm-bodies
mm-encode mail-parse rfc2231 rfc2047 rfc2045 mm-util ietf-drums
mail-prsvr mailabbrev mail-utils gmm-utils mailheader pcvs-util add-log
magit-core magit-autorevert autorevert filenotify magit-margin
magit-transient magit-process with-editor server magit-mode transient
help-mode magit-git magit-section magit-utils crm org-roam org-roam-link
org-roam-graph xml org-roam-doctor org-roam-dailies org-roam-capture
org-roam-db emacsql-sqlite3 emacsql emacsql-compiler org-capture
org-roam-completion org-roam-buffer org-roam-faces org-roam-macs
org-roam-compat org-id org-refile smartparens-org org-yt org-element
avl-tree generator org org-macro org-footnote org-pcomplete org-list
org-faces org-entities time-date noutline outline org-version
ob-emacs-lisp org-table org-loaddefs find-func evil-collection-calendar
evil-collection-custom cus-edit cus-start cus-load wid-edit
evil-collection-comint evil-collection annalist cal-menu calendar
cal-loaddefs eieio eieio-core eieio-loaddefs ob-shell ob ob-tangle ol
org-src ob-ref ob-lob ob-table ob-exp ob-comint ob-core ob-eval org-keys
org-compat org-macs format-spec fzf osx-clipboard f dash s
ns-auto-titlebar let-alist smartparens-lua evil evil-integration
evil-maps evil-commands reveal flyspell ispell evil-jumps
evil-command-window evil-types evil-search shell pcomplete comint
ansi-color evil-macros evil-repeat evil-states evil-core advice
evil-common windmove thingatpt rect evil-digraphs evil-vars ring derived
core-editor core-projects core-ui edmacro kmacro easy-mmode
core-keybinds pp general cl-extra easymenu seq byte-opt cl-seq
use-package-core bytecomp byte-compile cconv core-modules tex-site rx
proof-site proof-autoloads cl core core-lib pcase cl-macs gv cl-loaddefs
cl-lib subr-x tooltip eldoc electric uniquify ediff-hook vc-hooks
lisp-float-type 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 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 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
xwidget-internal kqueue cocoa ns lcms2 multi-tty make-network-process
emacs)

Memory information:
((conses 16 2562794 1368001)
 (symbols 48 72974 4)
 (strings 32 288739 170030)
 (string-bytes 1 10095640)
 (vectors 16 336750)
 (vector-slots 8 10439187 3314216)
 (floats 8 1317 1928)
 (intervals 56 58572 16876)
 (buffers 1000 121))