* bug#47162: Mouse Wheel Won't Work When Emacs Built without Any Window System @ 2021-03-15 14:44 张强 2021-03-18 5:23 ` Lars Ingebrigtsen 0 siblings, 1 reply; 18+ messages in thread From: 张强 @ 2021-03-15 14:44 UTC (permalink / raw) To: 47162 [-- Attachment #1: Type: text/plain, Size: 1399 bytes --] Dear All, I found the mouse wheel can't work when I build emacs without any window system, after some investigation I found below code snippet in file "lisp/loadup.el". (if (fboundp 'x-create-frame) ;; Do it after loading term/foo-win.el since the value of the ;; mouse-wheel-*-event vars depends on those files being loaded or not. (load "mwheel")) It is strange to me, because the mouse click work well no matter left/right mouse click or double click, but the mouse wheel will not, from comments in above code snippet, it seems the package "mwheel" need to be loaded after "xxx-win.el" for the initialization of variables "mouse-wheel-*-event". After add below code snippet to my emacs configuration file, I found the package "mwheel" can work well when the emacs built without any window system. (load "mwheel") (mouse-wheel-mode t) so I want to know whether the package "mwheel" should be loaded without precondition? The window system is useless for me, and most of the time the lib needed by window system is not available, so I want to build emacs with configuration options like "--without-x / --without-ns" to reduce the dependent libraries as more as possible. But mouse wheel is important to me, it is very useful especially I discuss problem with my colleagues and they want scroll my emacs screen temporarily. Thanks. -- Best Regards, Qiang Zhang [-- Attachment #2: Type: text/html, Size: 4525 bytes --] ^ permalink raw reply [flat|nested] 18+ messages in thread
* bug#47162: Mouse Wheel Won't Work When Emacs Built without Any Window System 2021-03-15 14:44 bug#47162: Mouse Wheel Won't Work When Emacs Built without Any Window System 张强 @ 2021-03-18 5:23 ` Lars Ingebrigtsen 2021-07-30 8:32 ` Basil L. Contovounesios via Bug reports for GNU Emacs, the Swiss army knife of text editors 0 siblings, 1 reply; 18+ messages in thread From: Lars Ingebrigtsen @ 2021-03-18 5:23 UTC (permalink / raw) To: 张强; +Cc: 47162 张强 <johnson9009@163.com> writes: > It is strange to me, because the mouse click work well no matter > left/right mouse click or double click, but the mouse wheel will not, > from comments in above code snippet, it seems the package "mwheel" > need to be loaded after "xxx-win.el" for the initialization of > variables "mouse-wheel-*-event". After add below code snippet to my > emacs configuration file, I found the package "mwheel" can work well > when the emacs built without any window system. > > (load "mwheel") > (mouse-wheel-mode t) > > so I want to know whether the package "mwheel" should be loaded without > precondition? I'm not sure that preloading the mwheel package in non-window builds is optimal (I think a minority of users use mwheel in non-window builds). But the mode should be autoloaded, at least, so that you don't have to say (load "mwheel") to use it. I've now made this change in Emacs 28. -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no ^ permalink raw reply [flat|nested] 18+ messages in thread
* bug#47162: Mouse Wheel Won't Work When Emacs Built without Any Window System 2021-03-18 5:23 ` Lars Ingebrigtsen @ 2021-07-30 8:32 ` Basil L. Contovounesios via Bug reports for GNU Emacs, the Swiss army knife of text editors 2021-07-30 10:57 ` Eli Zaretskii 2021-07-30 10:59 ` Lars Ingebrigtsen 0 siblings, 2 replies; 18+ messages in thread From: Basil L. Contovounesios via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2021-07-30 8:32 UTC (permalink / raw) To: Lars Ingebrigtsen; +Cc: 张强, 47162 Lars Ingebrigtsen <larsi@gnus.org> writes: > 张强 <johnson9009@163.com> writes: > >> It is strange to me, because the mouse click work well no matter >> left/right mouse click or double click, but the mouse wheel will not, >> from comments in above code snippet, it seems the package "mwheel" >> need to be loaded after "xxx-win.el" for the initialization of >> variables "mouse-wheel-*-event". After add below code snippet to my >> emacs configuration file, I found the package "mwheel" can work well >> when the emacs built without any window system. >> >> (load "mwheel") >> (mouse-wheel-mode t) >> >> so I want to know whether the package "mwheel" should be loaded without >> precondition? > > I'm not sure that preloading the mwheel package in non-window builds is > optimal (I think a minority of users use mwheel in non-window builds). > But the mode should be autoloaded, at least, so that you don't have to > say (load "mwheel") to use it. > > I've now made this change in Emacs 28. FYI, as a result of this change mwheel is now effectively preloaded even --without-x, in the sense that (featurep 'mwheel) returns non-nil even when starting nox builds with -Q (see my signature for details). Bother or feature? Thanks, -- Basil In GNU Emacs 28.0.50 (build 1, x86_64-pc-linux-gnu) of 2021-07-30 built on tia Repository revision: 5fb8b20fa35a931660d9d59afc9ca863dd33a123 Repository branch: master System Description: Debian GNU/Linux 11 (bullseye) Configured using: 'configure 'CC=ccache gcc' 'CFLAGS=-O2 -march=native' --config-cache --prefix=/home/blc/.local --program-suffix=-nox --enable-checking=structs --with-file-notification=yes --with-x-toolkit=no --without-x' Configured features: ACL DBUS GMP GNUTLS GPM JSON LCMS2 LIBSELINUX LIBSYSTEMD LIBXML2 MODULES NOTIFY INOTIFY PDUMPER SECCOMP SOUND THREADS XIM ZLIB Important settings: value of $LANG: en_IE.UTF-8 value of $XMODIFIERS: @im=ibus locale-coding-system: utf-8-unix Major mode: Lisp Interaction Minor modes in effect: mouse-wheel-mode: t tooltip-mode: t global-eldoc-mode: t eldoc-mode: t electric-indent-mode: t menu-bar-mode: t file-name-shadow-mode: t global-font-lock-mode: t font-lock-mode: t blink-cursor-mode: t auto-composition-mode: t auto-encryption-mode: t auto-compression-mode: t line-number-mode: t indent-tabs-mode: t transient-mark-mode: t Load-path shadows: None found. Features: (shadow sort mail-extr emacsbug message rmc puny dired dired-loaddefs rfc822 mml mml-sec epa derived epg epg-config gnus-util rmail tool-bar rmail-loaddefs auth-source cl-seq eieio eieio-core cl-macs eieio-loaddefs password-cache json map text-property-search time-date subr-x seq mm-decode mm-bodies mm-encode mail-parse rfc2231 mailabbrev gmm-utils mailheader cl-loaddefs cl-lib sendmail rfc2047 rfc2045 ietf-drums mm-util mail-prsvr mail-utils term/xterm xterm byte-opt gv bytecomp byte-compile cconv regexp-opt mwheel iso-transl tooltip eldoc ^^^^^^ electric uniquify ediff-hook vc-hooks lisp-float-type tabulated-list replace newcomment text-mode elisp-mode lisp-mode prog-mode register page tab-bar menu-bar rfn-eshadow isearch easymenu timer select mouse jit-lock font-lock syntax 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 button loaddefs faces cus-face macroexp files window text-properties overlay sha1 md5 base64 format env code-pages mule custom widget hashtable-print-readable backquote threads dbusbind inotify lcms2 multi-tty make-network-process emacs) ^ permalink raw reply [flat|nested] 18+ messages in thread
* bug#47162: Mouse Wheel Won't Work When Emacs Built without Any Window System 2021-07-30 8:32 ` Basil L. Contovounesios via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2021-07-30 10:57 ` Eli Zaretskii 2021-07-30 15:53 ` Basil L. Contovounesios via Bug reports for GNU Emacs, the Swiss army knife of text editors 2021-07-30 10:59 ` Lars Ingebrigtsen 1 sibling, 1 reply; 18+ messages in thread From: Eli Zaretskii @ 2021-07-30 10:57 UTC (permalink / raw) To: Basil L. Contovounesios; +Cc: larsi, johnson9009, 47162 > Cc: 张强 <johnson9009@163.com>, 47162@debbugs.gnu.org > Date: Fri, 30 Jul 2021 09:32:22 +0100 > From: "Basil L. Contovounesios" via "Bug reports for GNU Emacs, > the Swiss army knife of text editors" <bug-gnu-emacs@gnu.org> > > > I've now made this change in Emacs 28. > > FYI, as a result of this change mwheel is now effectively preloaded even > --without-x, in the sense that (featurep 'mwheel) returns non-nil even > when starting nox builds with -Q (see my signature for details). > > Bother or feature? It's probably a bother, but could you please show the details, like what causes mwheel to be loaded at startup or at loadup time in the "--without-x" builds? ^ permalink raw reply [flat|nested] 18+ messages in thread
* bug#47162: Mouse Wheel Won't Work When Emacs Built without Any Window System 2021-07-30 10:57 ` Eli Zaretskii @ 2021-07-30 15:53 ` Basil L. Contovounesios via Bug reports for GNU Emacs, the Swiss army knife of text editors 0 siblings, 0 replies; 18+ messages in thread From: Basil L. Contovounesios via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2021-07-30 15:53 UTC (permalink / raw) To: Eli Zaretskii; +Cc: larsi, johnson9009, 47162 [-- Attachment #1: Type: text/plain, Size: 1326 bytes --] Eli Zaretskii <eliz@gnu.org> writes: >> Cc: 张强 <johnson9009@163.com>, 47162@debbugs.gnu.org >> Date: Fri, 30 Jul 2021 09:32:22 +0100 >> From: "Basil L. Contovounesios" via "Bug reports for GNU Emacs, >> the Swiss army knife of text editors" <bug-gnu-emacs@gnu.org> >> >> > I've now made this change in Emacs 28. >> >> FYI, as a result of this change mwheel is now effectively preloaded even >> --without-x, in the sense that (featurep 'mwheel) returns non-nil even >> when starting nox builds with -Q (see my signature for details). >> >> Bother or feature? > > It's probably a bother, but could you please show the details, like > what causes mwheel to be loaded at startup or at loadup time in the > "--without-x" builds? I built Emacs before and after commit 0aad4d134f, and attach the resulting configurations as well as their diff. Note that some other libraries such as pp are also being loaded in the latter configuration. After the autoload, I get the attached GDB backtrace with the following: 0. gdb ./emacs 1. set logging file gdb-after.txt 2. set logging on 3. b lread.c:1215 if !strncmp (SDATA (file), "mwheel", 6) 4. r -Q 5. bt So it seems to be the reevaluation of custom-delayed-init-variables in command-line that is loading mwheel at startup. -- Basil [-- Attachment #2: Emacs configuration before autoload --] [-- Type: text/plain, Size: 2456 bytes --] In GNU Emacs 28.0.50 (build 3, x86_64-pc-linux-gnu) of 2021-07-30 built on tia Repository revision: 1219207a82740fc6ac21f178cacbe30e6aff9e7b Repository branch: HEAD System Description: Debian GNU/Linux 11 (bullseye) Configured using: 'configure 'CC=ccache gcc' 'CFLAGS=-O0 -g3 -ggdb' --prefix=/home/blc/.local --program-suffix=-nox-mwheel-before --with-file-notification=yes --with-x-toolkit=no --without-x' Configured features: ACL DBUS GMP GNUTLS GPM JSON LCMS2 LIBSELINUX LIBSYSTEMD LIBXML2 MODULES NOTIFY INOTIFY PDUMPER SOUND THREADS XIM ZLIB Important settings: value of $LANG: en_IE.UTF-8 value of $XMODIFIERS: @im=ibus locale-coding-system: utf-8-unix Major mode: Lisp Interaction Minor modes in effect: tooltip-mode: t global-eldoc-mode: t eldoc-mode: t electric-indent-mode: t menu-bar-mode: t file-name-shadow-mode: t global-font-lock-mode: t font-lock-mode: t blink-cursor-mode: t auto-composition-mode: t auto-encryption-mode: t auto-compression-mode: t line-number-mode: t transient-mark-mode: t Load-path shadows: None found. Features: (shadow sort mail-extr emacsbug message rmc puny dired dired-loaddefs rfc822 mml mml-sec epa derived epg epg-config gnus-util rmail tool-bar rmail-loaddefs auth-source cl-seq eieio eieio-core cl-macs eieio-loaddefs password-cache json map text-property-search time-date subr-x seq mm-decode mm-bodies mm-encode mail-parse rfc2231 mailabbrev gmm-utils mailheader cl-loaddefs cl-lib sendmail rfc2047 rfc2045 ietf-drums mm-util mail-prsvr mail-utils term/xterm xterm byte-opt gv bytecomp byte-compile cconv regexp-opt iso-transl tooltip eldoc electric uniquify ediff-hook vc-hooks lisp-float-type tabulated-list replace newcomment text-mode elisp-mode lisp-mode prog-mode register page tab-bar menu-bar rfn-eshadow isearch easymenu timer select mouse jit-lock font-lock syntax 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 button loaddefs faces cus-face macroexp files window text-properties overlay sha1 md5 base64 format env code-pages mule custom widget hashtable-print-readable backquote threads dbusbind inotify lcms2 multi-tty make-network-process emacs) [-- Attachment #3: Emacs configuration after autoload --] [-- Type: text/plain, Size: 2536 bytes --] In GNU Emacs 28.0.50 (build 2, x86_64-pc-linux-gnu) of 2021-07-30 built on tia Repository revision: 0aad4d134f481662e621aea62c6633678a1387e1 Repository branch: HEAD System Description: Debian GNU/Linux 11 (bullseye) Configured using: 'configure 'CC=ccache gcc' 'CFLAGS=-O0 -g3 -ggdb' --prefix=/home/blc/.local --program-suffix=-nox-mwheel-after --with-file-notification=yes --with-x-toolkit=no --without-x' Configured features: ACL DBUS GMP GNUTLS GPM JSON LCMS2 LIBSELINUX LIBSYSTEMD LIBXML2 MODULES NOTIFY INOTIFY PDUMPER SOUND THREADS XIM ZLIB Important settings: value of $LANG: en_IE.UTF-8 value of $XMODIFIERS: @im=ibus locale-coding-system: utf-8-unix Major mode: Lisp Interaction Minor modes in effect: mouse-wheel-mode: t tooltip-mode: t global-eldoc-mode: t eldoc-mode: t electric-indent-mode: t menu-bar-mode: t file-name-shadow-mode: t global-font-lock-mode: t font-lock-mode: t blink-cursor-mode: t auto-composition-mode: t auto-encryption-mode: t auto-compression-mode: t line-number-mode: t transient-mark-mode: t Load-path shadows: None found. Features: (shadow sort mail-extr emacsbug message rmc puny dired dired-loaddefs rfc822 mml mml-sec epa derived epg epg-config gnus-util rmail rmail-loaddefs auth-source cl-seq eieio eieio-core cl-macs eieio-loaddefs password-cache json map text-property-search time-date subr-x seq mm-decode mm-bodies mm-encode mail-parse rfc2231 mailabbrev gmm-utils mailheader sendmail rfc2047 rfc2045 ietf-drums mm-util mail-prsvr mail-utils pp cl-print thingatpt help-fns radix-tree help-mode tool-bar cl-loaddefs cl-lib term/xterm xterm byte-opt gv bytecomp byte-compile cconv regexp-opt mwheel iso-transl tooltip eldoc electric uniquify ediff-hook vc-hooks lisp-float-type tabulated-list replace newcomment text-mode elisp-mode lisp-mode prog-mode register page tab-bar menu-bar rfn-eshadow isearch easymenu timer select mouse jit-lock font-lock syntax 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 button loaddefs faces cus-face macroexp files window text-properties overlay sha1 md5 base64 format env code-pages mule custom widget hashtable-print-readable backquote threads dbusbind inotify lcms2 multi-tty make-network-process emacs) [-- Warning: decoded text below may be mangled, UTF-8 assumed --] [-- Attachment #4: Diff of Emacs configurations before and after autoload --] [-- Type: text/x-diff, Size: 2509 bytes --] --- configuration-before.txt 2021-07-30 16:41:18.468692030 +0100 +++ configuration-after.txt 2021-07-30 16:06:32.624236581 +0100 @@ -1,12 +1,12 @@ -In GNU Emacs 28.0.50 (build 3, x86_64-pc-linux-gnu) +In GNU Emacs 28.0.50 (build 2, x86_64-pc-linux-gnu) of 2021-07-30 built on tia -Repository revision: 1219207a82740fc6ac21f178cacbe30e6aff9e7b +Repository revision: 0aad4d134f481662e621aea62c6633678a1387e1 Repository branch: HEAD System Description: Debian GNU/Linux 11 (bullseye) Configured using: 'configure 'CC=ccache gcc' 'CFLAGS=-O0 -g3 -ggdb' - --prefix=/home/blc/.local --program-suffix=-nox-mwheel-before + --prefix=/home/blc/.local --program-suffix=-nox-mwheel-after --with-file-notification=yes --with-x-toolkit=no --without-x' Configured features: @@ -21,6 +21,7 @@ Important settings: Major mode: Lisp Interaction Minor modes in effect: + mouse-wheel-mode: t tooltip-mode: t global-eldoc-mode: t eldoc-mode: t @@ -41,16 +42,17 @@ None found. Features: (shadow sort mail-extr emacsbug message rmc puny dired dired-loaddefs -rfc822 mml mml-sec epa derived epg epg-config gnus-util rmail tool-bar +rfc822 mml mml-sec epa derived epg epg-config gnus-util rmail rmail-loaddefs auth-source cl-seq eieio eieio-core cl-macs eieio-loaddefs password-cache json map text-property-search time-date subr-x seq mm-decode mm-bodies mm-encode mail-parse rfc2231 mailabbrev -gmm-utils mailheader cl-loaddefs cl-lib sendmail rfc2047 rfc2045 -ietf-drums mm-util mail-prsvr mail-utils term/xterm xterm byte-opt gv -bytecomp byte-compile cconv regexp-opt iso-transl tooltip eldoc electric -uniquify ediff-hook vc-hooks lisp-float-type tabulated-list replace -newcomment text-mode elisp-mode lisp-mode prog-mode register page -tab-bar menu-bar rfn-eshadow isearch easymenu timer select mouse +gmm-utils mailheader sendmail rfc2047 rfc2045 ietf-drums mm-util +mail-prsvr mail-utils pp cl-print thingatpt help-fns radix-tree +help-mode tool-bar cl-loaddefs cl-lib term/xterm xterm byte-opt gv +bytecomp byte-compile cconv regexp-opt mwheel iso-transl tooltip eldoc +electric uniquify ediff-hook vc-hooks lisp-float-type tabulated-list +replace newcomment text-mode elisp-mode lisp-mode prog-mode register +page tab-bar menu-bar rfn-eshadow isearch easymenu timer select mouse jit-lock font-lock syntax 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 [-- Attachment #5: GDB backtrace after autoload --] [-- Type: text/plain, Size: 4792 bytes --] Breakpoint 2 at 0x1fcacf: file lread.c, line 1215. Starting program: /home/blc/.local/src/emacs-mwheel-after/src/emacs -Q [Thread debugging using libthread_db enabled] Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1". Breakpoint 2, Fload (file=XIL(0x7ffff48db8ac), noerror=XIL(0), nomessage=XIL(0x30), nosuffix=XIL(0), must_suffix=XIL(0x30)) at lread.c:1215 1215 if (! NILP (noerror)) #0 Fload (file=XIL(0x7ffff48db8ac), noerror=XIL(0), nomessage=XIL(0x30), nosuffix=XIL(0), must_suffix=XIL(0x30)) at lread.c:1215 #1 0x00005555557519d0 in save_match_data_load (file=XIL(0x7ffff48db8ac), noerror=XIL(0), nomessage=XIL(0x30), nosuffix=XIL(0), must_suffix=XIL(0x30)) at lread.c:1569 #2 0x000055555571e44d in Fautoload_do_load (fundef=XIL(0x7ffff4936bb3), funname=XIL(0x2aaa9ed4a090), macro_only=XIL(0)) at eval.c:2188 #3 0x00005555557205c1 in Ffuncall (nargs=2, args=0x7fffffffbab8) at eval.c:2931 #4 0x000055555576a076 in exec_byte_code (bytestr=XIL(0x7ffff49a0a0c), vector=XIL(0x7ffff472590d), maxdepth=make_fixnum(4), args_template=make_fixnum(514), nargs=2, args=0x7fffffffbfa8) at bytecode.c:632 #5 0x0000555555720afe in fetch_and_exec_byte_code (fun=XIL(0x7ffff47258dd), syms_left=make_fixnum(514), nargs=2, args=0x7fffffffbf98) at eval.c:3036 #6 0x0000555555720e8b in funcall_lambda (fun=XIL(0x7ffff47258dd), nargs=2, arg_vector=0x7fffffffbf98) at eval.c:3117 #7 0x00005555557204a3 in Ffuncall (nargs=3, args=0x7fffffffbf90) at eval.c:2916 #8 0x000055555576a076 in exec_byte_code (bytestr=XIL(0x7ffff48b9ca4), vector=XIL(0x7ffff48b9c75), maxdepth=make_fixnum(6), args_template=make_fixnum(257), nargs=1, args=0x7fffffffc480) at bytecode.c:632 #9 0x0000555555720afe in fetch_and_exec_byte_code (fun=XIL(0x7ffff48b9c45), syms_left=make_fixnum(257), nargs=1, args=0x7fffffffc478) at eval.c:3036 #10 0x0000555555720e8b in funcall_lambda (fun=XIL(0x7ffff48b9c45), nargs=1, arg_vector=0x7fffffffc478) at eval.c:3117 #11 0x00005555557204a3 in Ffuncall (nargs=2, args=0x7fffffffc470) at eval.c:2916 #12 0x000055555571fd38 in call1 (fn=XIL(0x2aaa9eccd210), arg1=XIL(0x2aaa9ed4a090)) at eval.c:2774 #13 0x000055555572e466 in mapcar1 (leni=24, vals=0x0, fn=XIL(0x2aaa9eccd210), seq=XIL(0x7ffff474e463)) at fns.c:2794 #14 0x000055555572e88e in Fmapc (function=XIL(0x2aaa9eccd210), sequence=XIL(0x7ffff474e463)) at fns.c:2867 #15 0x0000555555720872 in funcall_subr (subr=0x555555b7c6a0 <Smapc>, numargs=2, args=0x7fffffffc690) at eval.c:2989 #16 0x000055555572045f in Ffuncall (nargs=3, args=0x7fffffffc688) at eval.c:2914 #17 0x000055555576a076 in exec_byte_code (bytestr=XIL(0x7ffff48ba6bc), vector=XIL(0x7ffff48a7c8d), maxdepth=make_fixnum(14), args_template=make_fixnum(0), nargs=0, args=0x7fffffffd148) at bytecode.c:632 #18 0x0000555555720afe in fetch_and_exec_byte_code (fun=XIL(0x7ffff48a7c5d), syms_left=make_fixnum(0), nargs=0, args=0x7fffffffd148) at eval.c:3036 #19 0x0000555555720e8b in funcall_lambda (fun=XIL(0x7ffff48a7c5d), nargs=0, arg_vector=0x7fffffffd148) at eval.c:3117 #20 0x00005555557204a3 in Ffuncall (nargs=1, args=0x7fffffffd140) at eval.c:2916 #21 0x000055555576a076 in exec_byte_code (bytestr=XIL(0x7ffff48bc624), vector=XIL(0x7ffff48a7245), maxdepth=make_fixnum(9), args_template=make_fixnum(0), nargs=0, args=0x7fffffffd780) at bytecode.c:632 #22 0x0000555555720afe in fetch_and_exec_byte_code (fun=XIL(0x7ffff48a7215), syms_left=make_fixnum(0), nargs=0, args=0x7fffffffd780) at eval.c:3036 #23 0x0000555555720e8b in funcall_lambda (fun=XIL(0x7ffff48a7215), nargs=0, arg_vector=0x7fffffffd780) at eval.c:3117 #24 0x0000555555720ca8 in apply_lambda (fun=XIL(0x7ffff48a7215), args=XIL(0), count=4) at eval.c:3061 #25 0x000055555571f0d3 in eval_sub (form=XIL(0x7ffff4c66f73)) at eval.c:2436 #26 0x000055555571e5d0 in Feval (form=XIL(0x7ffff4c66f73), lexical=XIL(0)) at eval.c:2220 #27 0x000055555566915e in top_level_2 () at keyboard.c:1103 #28 0x000055555571cba6 in internal_condition_case (bfun=0x55555566913b <top_level_2>, handlers=XIL(0x90), hfun=0x555555668bf5 <cmd_error>) at eval.c:1439 #29 0x00005555556691a6 in top_level_1 (ignore=XIL(0)) at keyboard.c:1111 #30 0x000055555571c3b4 in internal_catch (tag=XIL(0xc3c0), func=0x555555669160 <top_level_1>, arg=XIL(0)) at eval.c:1189 #31 0x0000555555669089 in command_loop () at keyboard.c:1072 #32 0x00005555556687c6 in recursive_edit_1 () at keyboard.c:720 #33 0x0000555555668949 in Frecursive_edit () at keyboard.c:789 #34 0x0000555555665473 in main (argc=2, argv=0x7fffffffdd08) at emacs.c:2050 Lisp Backtrace: "mouse-wheel-mode" (0xffffbac0) "custom-set-minor-mode" (0xffffbf98) "custom-reevaluate-setting" (0xffffc478) "mapc" (0xffffc690) "command-line" (0xffffd148) "normal-top-level" (0xffffd780) quit ^ permalink raw reply [flat|nested] 18+ messages in thread
* bug#47162: Mouse Wheel Won't Work When Emacs Built without Any Window System 2021-07-30 8:32 ` Basil L. Contovounesios via Bug reports for GNU Emacs, the Swiss army knife of text editors 2021-07-30 10:57 ` Eli Zaretskii @ 2021-07-30 10:59 ` Lars Ingebrigtsen 2021-07-30 15:54 ` Basil L. Contovounesios via Bug reports for GNU Emacs, the Swiss army knife of text editors 1 sibling, 1 reply; 18+ messages in thread From: Lars Ingebrigtsen @ 2021-07-30 10:59 UTC (permalink / raw) To: Basil L. Contovounesios; +Cc: 张强, 47162 "Basil L. Contovounesios" <contovob@tcd.ie> writes: > FYI, as a result of this change mwheel is now effectively preloaded even > --without-x, in the sense that (featurep 'mwheel) returns non-nil even > when starting nox builds with -Q (see my signature for details). > > Bother or feature? Sounds like a bug -- I don't understand how adding an ;;;###autoload to a function would lead to Emacs being pre-built with the .el file the function exists in. Unless there's something checking for that function during the build and then loading mwheel? Didn't see anything like that in loadup.el... -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no ^ permalink raw reply [flat|nested] 18+ messages in thread
* bug#47162: Mouse Wheel Won't Work When Emacs Built without Any Window System 2021-07-30 10:59 ` Lars Ingebrigtsen @ 2021-07-30 15:54 ` Basil L. Contovounesios via Bug reports for GNU Emacs, the Swiss army knife of text editors 2021-07-30 16:02 ` Lars Ingebrigtsen 0 siblings, 1 reply; 18+ messages in thread From: Basil L. Contovounesios via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2021-07-30 15:54 UTC (permalink / raw) To: Lars Ingebrigtsen; +Cc: 张强, 47162 Lars Ingebrigtsen <larsi@gnus.org> writes: > "Basil L. Contovounesios" <contovob@tcd.ie> writes: > >> FYI, as a result of this change mwheel is now effectively preloaded even >> --without-x, in the sense that (featurep 'mwheel) returns non-nil even >> when starting nox builds with -Q (see my signature for details). >> >> Bother or feature? > > Sounds like a bug -- I don't understand how adding an ;;;###autoload to > a function would lead to Emacs being pre-built with the .el file the > function exists in. Unless there's something checking for that function > during the build and then loading mwheel? Didn't see anything like that > in loadup.el... My guess is the salient difference lies in lisp/loaddefs.el, where autoload cookie results in the following additions: --8<---------------cut here---------------start------------->8--- (defcustom mouse-wheel-mode t "\ Non-nil if Mouse-Wheel mode is enabled. See the `mouse-wheel-mode' command for a description of this minor mode. Setting this variable directly does not take effect; either customize it (see the info node `Easy Customization') or call the function `mouse-wheel-mode'." :set #'custom-set-minor-mode :initialize 'custom-initialize-delay :group 'mouse :type 'boolean) (custom-autoload 'mouse-wheel-mode "mwheel" nil) (autoload 'mouse-wheel-mode "mwheel" "\ Toggle mouse wheel support (Mouse Wheel mode). If called interactively, toggle `Mouse-Wheel mode'. If the prefix argument is positive, enable the mode, and if it is zero or negative, disable the mode. If called from Lisp, toggle the mode if ARG is `toggle'. Enable the mode if ARG is nil, omitted, or is a positive number. Disable the mode if ARG is a negative number. The mode's hook is called both when the mode is enabled and when it is disabled. \(fn &optional ARG)" t nil) --8<---------------cut here---------------end--------------->8--- BTW, another way to tell that mwheel is now being loaded is that the following warnings disappear following the autoload in nox builds: --8<---------------cut here---------------start------------->8--- In edmacro-fix-menu-commands: edmacro.el:625:34: Warning: reference to free variable ‘mouse-wheel-down-event’ edmacro.el:625:57: Warning: reference to free variable ‘mouse-wheel-up-event’ edmacro.el:626:34: Warning: reference to free variable ‘mouse-wheel-right-event’ edmacro.el:627:34: Warning: reference to free variable ‘mouse-wheel-left-event’ --8<---------------cut here---------------end--------------->8--- -- Basil ^ permalink raw reply [flat|nested] 18+ messages in thread
* bug#47162: Mouse Wheel Won't Work When Emacs Built without Any Window System 2021-07-30 15:54 ` Basil L. Contovounesios via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2021-07-30 16:02 ` Lars Ingebrigtsen 2021-07-30 16:30 ` Lars Ingebrigtsen 2021-07-31 13:15 ` Eli Zaretskii 0 siblings, 2 replies; 18+ messages in thread From: Lars Ingebrigtsen @ 2021-07-30 16:02 UTC (permalink / raw) To: Basil L. Contovounesios; +Cc: 张强, 47162 "Basil L. Contovounesios" <contovob@tcd.ie> writes: > My guess is the salient difference lies in lisp/loaddefs.el, where > autoload cookie results in the following additions: [...] > or call the function `mouse-wheel-mode'." :set #'custom-set-minor-mode :initialize 'custom-initialize-delay :group 'mouse :type 'boolean) Aaah. So we basically have the same problem with any define-minor-mode that has a custom-initialize-delay thing? But we only have that here because we expect that Emacs is dumped with mwheel... So we could guard that :initialize with a (fboundp 'x-create-frame)? Would that work, I wonder? -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no ^ permalink raw reply [flat|nested] 18+ messages in thread
* bug#47162: Mouse Wheel Won't Work When Emacs Built without Any Window System 2021-07-30 16:02 ` Lars Ingebrigtsen @ 2021-07-30 16:30 ` Lars Ingebrigtsen 2021-07-31 13:15 ` Eli Zaretskii 1 sibling, 0 replies; 18+ messages in thread From: Lars Ingebrigtsen @ 2021-07-30 16:30 UTC (permalink / raw) To: Basil L. Contovounesios; +Cc: 张强, 47162 Lars Ingebrigtsen <larsi@gnus.org> writes: > But we only have that here because we expect that Emacs is dumped with > mwheel... So we could guard that :initialize with a (fboundp > 'x-create-frame)? Would that work, I wonder? I tried removing the :intialize, and that made Emacs not load mweel.el. But the :initialize parameter isn't evaluated, which makes it more tricky to use conditionally... -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no ^ permalink raw reply [flat|nested] 18+ messages in thread
* bug#47162: Mouse Wheel Won't Work When Emacs Built without Any Window System 2021-07-30 16:02 ` Lars Ingebrigtsen 2021-07-30 16:30 ` Lars Ingebrigtsen @ 2021-07-31 13:15 ` Eli Zaretskii 2021-07-31 14:14 ` Lars Ingebrigtsen 1 sibling, 1 reply; 18+ messages in thread From: Eli Zaretskii @ 2021-07-31 13:15 UTC (permalink / raw) To: Lars Ingebrigtsen, Stefan Monnier; +Cc: contovob, johnson9009, 47162 > From: Lars Ingebrigtsen <larsi@gnus.org> > Date: Fri, 30 Jul 2021 18:02:14 +0200 > Cc: 张强 <johnson9009@163.com>, 47162@debbugs.gnu.org > > "Basil L. Contovounesios" <contovob@tcd.ie> writes: > > > My guess is the salient difference lies in lisp/loaddefs.el, where > > autoload cookie results in the following additions: > > [...] > > > or call the function `mouse-wheel-mode'." :set #'custom-set-minor-mode :initialize 'custom-initialize-delay :group 'mouse :type 'boolean) > > Aaah. So we basically have the same problem with any define-minor-mode > that has a custom-initialize-delay thing? Yes, and I think Stefan always maintained that minor modes should not be autoloaded. > But we only have that here because we expect that Emacs is dumped with > mwheel... We do? I'm afraid I lost you here, because we don't dump mwheel in builds --without-x, AFAIK. ^ permalink raw reply [flat|nested] 18+ messages in thread
* bug#47162: Mouse Wheel Won't Work When Emacs Built without Any Window System 2021-07-31 13:15 ` Eli Zaretskii @ 2021-07-31 14:14 ` Lars Ingebrigtsen 2021-07-31 14:24 ` Eli Zaretskii 0 siblings, 1 reply; 18+ messages in thread From: Lars Ingebrigtsen @ 2021-07-31 14:14 UTC (permalink / raw) To: Eli Zaretskii; +Cc: contovob, johnson9009, Stefan Monnier, 47162 Eli Zaretskii <eliz@gnu.org> writes: >> Aaah. So we basically have the same problem with any define-minor-mode >> that has a custom-initialize-delay thing? > > Yes, and I think Stefan always maintained that minor modes should not > be autoloaded. 114 matches for "This is a minor mode" in buffer: loaddefs.el<trunk> So if that's not something we shouldn't do, we've got a lot of splaining to do. >> But we only have that here because we expect that Emacs is dumped with >> mwheel... > > We do? I'm afraid I lost you here, because we don't dump mwheel in > builds --without-x, AFAIK. This bit: ;; We'd like to use custom-initialize-set here so the setup is done ;; before dumping, but at the point where the defcustom is evaluated, ;; the corresponding function isn't defined yet, so ;; custom-initialize-set signals an error. :initialize 'custom-initialize-delay It's there because we (in some configurations) dump Emacs with mwheel. But it causes problems when we're not dumping it. -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no ^ permalink raw reply [flat|nested] 18+ messages in thread
* bug#47162: Mouse Wheel Won't Work When Emacs Built without Any Window System 2021-07-31 14:14 ` Lars Ingebrigtsen @ 2021-07-31 14:24 ` Eli Zaretskii 2021-07-31 17:10 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors 0 siblings, 1 reply; 18+ messages in thread From: Eli Zaretskii @ 2021-07-31 14:24 UTC (permalink / raw) To: Lars Ingebrigtsen; +Cc: contovob, johnson9009, monnier, 47162 > From: Lars Ingebrigtsen <larsi@gnus.org> > Cc: Stefan Monnier <monnier@iro.umontreal.ca>, contovob@tcd.ie, > johnson9009@163.com, 47162@debbugs.gnu.org > Date: Sat, 31 Jul 2021 16:14:31 +0200 > > ;; We'd like to use custom-initialize-set here so the setup is done > ;; before dumping, but at the point where the defcustom is evaluated, > ;; the corresponding function isn't defined yet, so > ;; custom-initialize-set signals an error. > :initialize 'custom-initialize-delay > > It's there because we (in some configurations) dump Emacs with mwheel. > But it causes problems when we're not dumping it. Why does this need to be done via custom-initialize-delay? Why can't we simply call the necessary code at startup, explicitly, when mwheel is available? ^ permalink raw reply [flat|nested] 18+ messages in thread
* bug#47162: Mouse Wheel Won't Work When Emacs Built without Any Window System 2021-07-31 14:24 ` Eli Zaretskii @ 2021-07-31 17:10 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors 2021-07-31 17:18 ` Eli Zaretskii 2021-07-31 18:07 ` Lars Ingebrigtsen 0 siblings, 2 replies; 18+ messages in thread From: Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2021-07-31 17:10 UTC (permalink / raw) To: Eli Zaretskii; +Cc: contovob, Lars Ingebrigtsen, johnson9009, 47162 > Why does this need to be done via custom-initialize-delay? Indeed, using `custom-initialize-delay` causes the setup to be performed at run-time whereas it could/should be done when loading the file, I think. > Why can't we simply call the necessary code at startup, Actually even earlier. Maybe a patch like the one below is a better approach? Stefan diff --git a/lisp/emacs-lisp/easy-mmode.el b/lisp/emacs-lisp/easy-mmode.el index 3a00fdb454..762a97ae33 100644 --- a/lisp/emacs-lisp/easy-mmode.el +++ b/lisp/emacs-lisp/easy-mmode.el @@ -294,20 +294,8 @@ define-minor-mode (internal--format-docstring-line "Use the command `%s' to change this variable." mode))))) (t - (let ((base-doc-string - (concat "Non-nil if %s is enabled. -See the `%s' command -for a description of this minor mode." - (if body " -Setting this variable directly does not take effect; -either customize it (see the info node `Easy Customization') -or call the function `%s'.")))) - `(defcustom ,mode ,init-value - ,(format base-doc-string pretty-name mode mode) - ,@set - ,@initialize - ,@type - ,@(nreverse extra-keywords))))) + ;; The actual var definition comes after the function. + `(progn :autoload-end (defvar ,mode)))) ;; The actual function. ,(funcall @@ -374,6 +362,27 @@ define-minor-mode ;; Return the new setting. ,getter)) + ;; Put the defcustom *after* the function, so its + ;; initializer/setter can call the function. + ,(cond + (variable nil) + ((not globalp) nil) + (t + (let ((base-doc-string + (concat "Non-nil if %s is enabled. +See the `%s' command +for a description of this minor mode." + (if body " +Setting this variable directly does not take effect; +either customize it (see the info node `Easy Customization') +or call the function `%s'.")))) + `(defcustom ,mode ,init-value + ,(format base-doc-string pretty-name mode mode) + ,@set + ,@initialize + ,@type + ,@(nreverse extra-keywords))))) + ;; Autoloading a define-minor-mode autoloads everything ;; up-to-here. :autoload-end diff --git a/lisp/mwheel.el b/lisp/mwheel.el index b31805a575..aded0aa8c9 100644 --- a/lisp/mwheel.el +++ b/lisp/mwheel.el @@ -418,11 +418,7 @@ mouse-wheel--create-scroll-keys (define-minor-mode mouse-wheel-mode "Toggle mouse wheel support (Mouse Wheel mode)." :init-value t - ;; We'd like to use custom-initialize-set here so the setup is done - ;; before dumping, but at the point where the defcustom is evaluated, - ;; the corresponding function isn't defined yet, so - ;; custom-initialize-set signals an error. - :initialize 'custom-initialize-delay + :initialize #'custom-initialize-set :global t :group 'mouse ;; Remove previous bindings, if any. ^ permalink raw reply related [flat|nested] 18+ messages in thread
* bug#47162: Mouse Wheel Won't Work When Emacs Built without Any Window System 2021-07-31 17:10 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2021-07-31 17:18 ` Eli Zaretskii 2021-07-31 18:07 ` Lars Ingebrigtsen 1 sibling, 0 replies; 18+ messages in thread From: Eli Zaretskii @ 2021-07-31 17:18 UTC (permalink / raw) To: Stefan Monnier; +Cc: contovob, larsi, johnson9009, 47162 > From: Stefan Monnier <monnier@iro.umontreal.ca> > Cc: Lars Ingebrigtsen <larsi@gnus.org>, contovob@tcd.ie, > johnson9009@163.com, 47162@debbugs.gnu.org > Date: Sat, 31 Jul 2021 13:10:10 -0400 > > > Why can't we simply call the necessary code at startup, > > Actually even earlier. > Maybe a patch like the one below is a better approach? If it works reliably, sure. But it will need to be documented. Thanks. ^ permalink raw reply [flat|nested] 18+ messages in thread
* bug#47162: Mouse Wheel Won't Work When Emacs Built without Any Window System 2021-07-31 17:10 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors 2021-07-31 17:18 ` Eli Zaretskii @ 2021-07-31 18:07 ` Lars Ingebrigtsen 2021-07-31 18:09 ` Lars Ingebrigtsen 1 sibling, 1 reply; 18+ messages in thread From: Lars Ingebrigtsen @ 2021-07-31 18:07 UTC (permalink / raw) To: Stefan Monnier; +Cc: contovob, johnson9009, 47162 Stefan Monnier <monnier@iro.umontreal.ca> writes: > + ;; Put the defcustom *after* the function, so its > + ;; initializer/setter can call the function. I like it. -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no ^ permalink raw reply [flat|nested] 18+ messages in thread
* bug#47162: Mouse Wheel Won't Work When Emacs Built without Any Window System 2021-07-31 18:07 ` Lars Ingebrigtsen @ 2021-07-31 18:09 ` Lars Ingebrigtsen 2021-08-02 4:39 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors 0 siblings, 1 reply; 18+ messages in thread From: Lars Ingebrigtsen @ 2021-07-31 18:09 UTC (permalink / raw) To: Stefan Monnier; +Cc: contovob, johnson9009, 47162 Lars Ingebrigtsen <larsi@gnus.org> writes: > Stefan Monnier <monnier@iro.umontreal.ca> writes: > >> + ;; Put the defcustom *after* the function, so its >> + ;; initializer/setter can call the function. > > I like it. Spoke some seconds too soon. The leads to the following when doing a "make bootstrap": Loading faces... Loading loaddefs.el (source)... Attempt to autoload mouse-wheel-mode while preparing to dump make[1]: *** [Makefile:569: emacs.pdmp] Error 255 -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no ^ permalink raw reply [flat|nested] 18+ messages in thread
* bug#47162: Mouse Wheel Won't Work When Emacs Built without Any Window System 2021-07-31 18:09 ` Lars Ingebrigtsen @ 2021-08-02 4:39 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors 2021-08-04 6:11 ` Lars Ingebrigtsen 0 siblings, 1 reply; 18+ messages in thread From: Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2021-08-02 4:39 UTC (permalink / raw) To: Lars Ingebrigtsen; +Cc: contovob, Eli Zaretskii, johnson9009, 47162 Lars Ingebrigtsen [2021-07-31 20:09:43] wrote: > Lars Ingebrigtsen <larsi@gnus.org> writes: >> Stefan Monnier <monnier@iro.umontreal.ca> writes: >>> + ;; Put the defcustom *after* the function, so its >>> + ;; initializer/setter can call the function. >> >> I like it. > > Spoke some seconds too soon. The leads to the following when doing a > "make bootstrap": > > Loading faces... > Loading loaddefs.el (source)... > Attempt to autoload mouse-wheel-mode while preparing to dump > make[1]: *** [Makefile:569: emacs.pdmp] Error 255 This brought to a light a more direct bug that could be reproduced in the non-GUI build (by setting mouse-wheel-mode before loading mwheel.el) and the fix to that bug fixes the use of `custom-initialize-delay` as well so I pushed it to `master`. [ It's hard to test those things in all the various ways they can be loaded, so I'm keeping my fingers crossed that it won't introduce another bootstrap problem elsewhere, but since it's now "more normal", I'm hopeful. ] Stefan ^ permalink raw reply [flat|nested] 18+ messages in thread
* bug#47162: Mouse Wheel Won't Work When Emacs Built without Any Window System 2021-08-02 4:39 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2021-08-04 6:11 ` Lars Ingebrigtsen 0 siblings, 0 replies; 18+ messages in thread From: Lars Ingebrigtsen @ 2021-08-04 6:11 UTC (permalink / raw) To: Stefan Monnier; +Cc: contovob, johnson9009, 47162 Stefan Monnier <monnier@iro.umontreal.ca> writes: > [ It's hard to test those things in all the various ways they can be > loaded, so I'm keeping my fingers crossed that it won't introduce > another bootstrap problem elsewhere, but since it's now "more > normal", I'm hopeful. ] Yup; works for me. And I can confirm that the --without-x build now doesn't load mwheel.el, so I'm re-closing this bug report. -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no ^ permalink raw reply [flat|nested] 18+ messages in thread
end of thread, other threads:[~2021-08-04 6:11 UTC | newest] Thread overview: 18+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2021-03-15 14:44 bug#47162: Mouse Wheel Won't Work When Emacs Built without Any Window System 张强 2021-03-18 5:23 ` Lars Ingebrigtsen 2021-07-30 8:32 ` Basil L. Contovounesios via Bug reports for GNU Emacs, the Swiss army knife of text editors 2021-07-30 10:57 ` Eli Zaretskii 2021-07-30 15:53 ` Basil L. Contovounesios via Bug reports for GNU Emacs, the Swiss army knife of text editors 2021-07-30 10:59 ` Lars Ingebrigtsen 2021-07-30 15:54 ` Basil L. Contovounesios via Bug reports for GNU Emacs, the Swiss army knife of text editors 2021-07-30 16:02 ` Lars Ingebrigtsen 2021-07-30 16:30 ` Lars Ingebrigtsen 2021-07-31 13:15 ` Eli Zaretskii 2021-07-31 14:14 ` Lars Ingebrigtsen 2021-07-31 14:24 ` Eli Zaretskii 2021-07-31 17:10 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors 2021-07-31 17:18 ` Eli Zaretskii 2021-07-31 18:07 ` Lars Ingebrigtsen 2021-07-31 18:09 ` Lars Ingebrigtsen 2021-08-02 4:39 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors 2021-08-04 6:11 ` Lars Ingebrigtsen
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).