* bug#59290: 29.0.50; [PATCH] Buffer-localize temporary-goal-column
@ 2022-11-15 21:52 dick
2022-11-16 12:24 ` Eli Zaretskii
0 siblings, 1 reply; 6+ messages in thread
From: dick @ 2022-11-15 21:52 UTC (permalink / raw)
To: 59290
[-- Attachment #1: Type: text/plain, Size: 351 bytes --]
emacs -Q -l cl-lib --eval " \
(with-temp-buffer \
(save-excursion \
(insert \"עִבְרִית\nעִבְרִית\")) \
(call-interactively (function next-line)) \
(with-temp-buffer \
(save-excursion (insert \"English\nEnglish\")) \
(call-interactively (function next-line)) \
(cl-assert (zerop (current-column)))))"
[-- Attachment #2: 0001-Temporary-goal-column-leaks.patch --]
[-- Type: text/x-diff, Size: 1711 bytes --]
From 44ca27270bdd7786ddb36469149128b6d18aac9a Mon Sep 17 00:00:00 2001
From: dickmao <dick.r.chiang@gmail.com>
Date: Tue, 15 Nov 2022 16:03:48 -0500
Subject: [PATCH] Temporary goal column leaks
* lisp/simple.el (temporary-goal-column): Buffer-localize.
* test/lisp/simple-tests.el (line-move-visual-goal-column-leakage):
Test it.
---
lisp/simple.el | 2 +-
test/lisp/simple-tests.el | 10 ++++++++++
2 files changed, 11 insertions(+), 1 deletion(-)
diff --git a/lisp/simple.el b/lisp/simple.el
index 0f44b14948c..fa4a7f0638d 100644
--- a/lisp/simple.el
+++ b/lisp/simple.el
@@ -7463,7 +7463,7 @@ goal-column
:group 'editing-basics)
(make-variable-buffer-local 'goal-column)
-(defvar temporary-goal-column 0
+(defvar-local temporary-goal-column 0
"Current goal column for vertical motion.
It is the column where point was at the start of the current run
of vertical motion commands.
diff --git a/test/lisp/simple-tests.el b/test/lisp/simple-tests.el
index d067f3e586e..e3ecec287d7 100644
--- a/test/lisp/simple-tests.el
+++ b/test/lisp/simple-tests.el
@@ -1045,5 +1045,15 @@ simple-tests-zap-to-char
(with-zap-to-char-test "abcdeCXYZ" "XYZ"
(zap-to-char 1 ?C 'interactive))))
+(ert-deftest line-move-visual-goal-column-leakage ()
+ (skip-unless (not noninteractive))
+ (with-temp-buffer
+ (save-excursion (insert "עִבְרִית\nעִבְרִית"))
+ (call-interactively #'next-line)
+ (with-temp-buffer
+ (save-excursion (insert "English\nEnglish"))
+ (call-interactively #'next-line)
+ (should (zerop (current-column))))))
+
(provide 'simple-test)
;;; simple-tests.el ends here
--
2.36.1
[-- Attachment #3: Type: text/plain, Size: 12319 bytes --]
In Commercial Emacs 0.3.1snapshot 58ebafc in dev (upstream 29.0.50,
x86_64-pc-linux-gnu) built on dick
Repository revision: 58ebafc8acb1dad12bdc7b67ddf17ba466d79f68
Repository branch: dev
Windowing system distributor 'The X.Org Foundation', version 11.0.12013000
System Description: Ubuntu 20.04.4 LTS
Configured using:
'configure WERROR_CFLAGS=-Werror --prefix=/home/dick/.local
--with-tree-sitter'
Configured features:
CAIRO DBUS FREETYPE GIF GLIB GMP GNUTLS GSETTINGS HARFBUZZ JPEG JSON
TREE_SITTER LCMS2 LIBSELINUX LIBXML2 MODULES NOTIFY INOTIFY PDUMPER PNG
RSVG SECCOMP SOUND THREADS TIFF TOOLKIT_SCROLL_BARS WEBP X11 XDBE XIM
XINPUT2 XPM GTK3 ZLIB
Important settings:
value of $LANG: en_US.UTF-8
locale-coding-system: utf-8-unix
Major mode: Lisp Interaction
Minor modes in effect:
paredit-mode: t
projectile-mode: t
flx-ido-mode: t
global-xlsp-mode: t
global-hl-line-mode: t
hl-line-mode: t
winner-mode: t
override-global-mode: t
tooltip-mode: t
global-eldoc-mode: t
eldoc-mode: t
show-paren-mode: t
mouse-wheel-mode: t
file-name-shadow-mode: t
global-font-lock-mode: t
font-lock-mode: t
blink-cursor-mode: t
column-number-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:
/home/dick/gomacro-mode/gomacro-mode hides /home/dick/.emacs.d/elpa/gomacro-mode-20200326.1103/gomacro-mode
/home/dick/.emacs.d/elpa/go-rename-20190805.2101/go-rename hides /home/dick/.emacs.d/elpa/go-mode-1.6.0/go-rename
/home/dick/.emacs.d/elpa/go-guru-20181012.330/go-guru hides /home/dick/.emacs.d/elpa/go-mode-1.6.0/go-guru
/home/dick/.emacs.d/elpa/hydra-20170924.2259/lv hides /home/dick/.emacs.d/elpa/lv-0.1.0.1snapshot20200507.1518/lv
/home/dick/org-gcal.el/org-gcal hides /home/dick/.emacs.d/elpa/org-gcal-0.3/org-gcal
/home/dick/.emacs.d/elpa/request-deferred-0.2.0/request-deferred hides /home/dick/.emacs.d/elpa/request-0.3.3/request-deferred
/home/dick/.emacs.d/elpa/chess-2.0.5/_pkg hides /home/dick/.local/share/emacs/site-lisp/_pkg
/home/dick/.emacs.d/elpa/chess-2.0.5/chess-pos hides /home/dick/.local/share/emacs/site-lisp/chess-pos
/home/dick/.emacs.d/elpa/chess-2.0.5/chess-module hides /home/dick/.local/share/emacs/site-lisp/chess-module
/home/dick/.emacs.d/elpa/chess-2.0.5/chess-ucb hides /home/dick/.local/share/emacs/site-lisp/chess-ucb
/home/dick/.emacs.d/elpa/chess-2.0.5/chess-scid hides /home/dick/.local/share/emacs/site-lisp/chess-scid
/home/dick/.emacs.d/elpa/chess-2.0.5/chess-puzzle hides /home/dick/.local/share/emacs/site-lisp/chess-puzzle
/home/dick/.emacs.d/elpa/chess-2.0.5/chess-irc hides /home/dick/.local/share/emacs/site-lisp/chess-irc
/home/dick/.emacs.d/elpa/chess-2.0.5/chess-network hides /home/dick/.local/share/emacs/site-lisp/chess-network
/home/dick/.emacs.d/elpa/chess-2.0.5/chess-autosave hides /home/dick/.local/share/emacs/site-lisp/chess-autosave
/home/dick/.emacs.d/elpa/chess-2.0.5/chess-engine hides /home/dick/.local/share/emacs/site-lisp/chess-engine
/home/dick/.emacs.d/elpa/chess-2.0.5/chess-tutorial hides /home/dick/.local/share/emacs/site-lisp/chess-tutorial
/home/dick/.emacs.d/elpa/chess-2.0.5/chess-german hides /home/dick/.local/share/emacs/site-lisp/chess-german
/home/dick/.emacs.d/elpa/chess-2.0.5/chess-file hides /home/dick/.local/share/emacs/site-lisp/chess-file
/home/dick/.emacs.d/elpa/chess-2.0.5/chess-random hides /home/dick/.local/share/emacs/site-lisp/chess-random
/home/dick/.emacs.d/elpa/chess-2.0.5/chess-stockfish hides /home/dick/.local/share/emacs/site-lisp/chess-stockfish
/home/dick/.emacs.d/elpa/chess-2.0.5/chess-pgn hides /home/dick/.local/share/emacs/site-lisp/chess-pgn
/home/dick/.emacs.d/elpa/chess-2.0.5/chess-kibitz hides /home/dick/.local/share/emacs/site-lisp/chess-kibitz
/home/dick/.emacs.d/elpa/chess-2.0.5/chess-eco hides /home/dick/.local/share/emacs/site-lisp/chess-eco
/home/dick/.emacs.d/elpa/chess-2.0.5/chess-display hides /home/dick/.local/share/emacs/site-lisp/chess-display
/home/dick/.emacs.d/elpa/chess-2.0.5/chess-var hides /home/dick/.local/share/emacs/site-lisp/chess-var
/home/dick/.emacs.d/elpa/chess-2.0.5/chess-test hides /home/dick/.local/share/emacs/site-lisp/chess-test
/home/dick/.emacs.d/elpa/chess-2.0.5/chess-ply hides /home/dick/.local/share/emacs/site-lisp/chess-ply
/home/dick/.emacs.d/elpa/chess-2.0.5/chess-message hides /home/dick/.local/share/emacs/site-lisp/chess-message
/home/dick/.emacs.d/elpa/chess-2.0.5/chess-ics1 hides /home/dick/.local/share/emacs/site-lisp/chess-ics1
/home/dick/.emacs.d/elpa/chess-2.0.5/chess-phalanx hides /home/dick/.local/share/emacs/site-lisp/chess-phalanx
/home/dick/.emacs.d/elpa/chess-2.0.5/chess-game hides /home/dick/.local/share/emacs/site-lisp/chess-game
/home/dick/.emacs.d/elpa/chess-2.0.5/chess-log hides /home/dick/.local/share/emacs/site-lisp/chess-log
/home/dick/.emacs.d/elpa/chess-2.0.5/chess-plain hides /home/dick/.local/share/emacs/site-lisp/chess-plain
/home/dick/.emacs.d/elpa/chess-2.0.5/chess-perft hides /home/dick/.local/share/emacs/site-lisp/chess-perft
/home/dick/.emacs.d/elpa/chess-2.0.5/chess-glaurung hides /home/dick/.local/share/emacs/site-lisp/chess-glaurung
/home/dick/.emacs.d/elpa/chess-2.0.5/chess-ai hides /home/dick/.local/share/emacs/site-lisp/chess-ai
/home/dick/.emacs.d/elpa/chess-2.0.5/chess-fruit hides /home/dick/.local/share/emacs/site-lisp/chess-fruit
/home/dick/.emacs.d/elpa/chess-2.0.5/chess-uci hides /home/dick/.local/share/emacs/site-lisp/chess-uci
/home/dick/.emacs.d/elpa/chess-2.0.5/chess-epd hides /home/dick/.local/share/emacs/site-lisp/chess-epd
/home/dick/.emacs.d/elpa/chess-2.0.5/chess-database hides /home/dick/.local/share/emacs/site-lisp/chess-database
/home/dick/.emacs.d/elpa/chess-2.0.5/chess-link hides /home/dick/.local/share/emacs/site-lisp/chess-link
/home/dick/.emacs.d/elpa/chess-2.0.5/chess-transport hides /home/dick/.local/share/emacs/site-lisp/chess-transport
/home/dick/.emacs.d/elpa/chess-2.0.5/chess-none hides /home/dick/.local/share/emacs/site-lisp/chess-none
/home/dick/.emacs.d/elpa/chess-2.0.5/chess-polyglot hides /home/dick/.local/share/emacs/site-lisp/chess-polyglot
/home/dick/.emacs.d/elpa/chess-2.0.5/chess-crafty hides /home/dick/.local/share/emacs/site-lisp/chess-crafty
/home/dick/.emacs.d/elpa/chess-2.0.5/chess-chat hides /home/dick/.local/share/emacs/site-lisp/chess-chat
/home/dick/.emacs.d/elpa/chess-2.0.5/chess hides /home/dick/.local/share/emacs/site-lisp/chess
/home/dick/.emacs.d/elpa/chess-2.0.5/chess-images hides /home/dick/.local/share/emacs/site-lisp/chess-images
/home/dick/.emacs.d/elpa/chess-2.0.5/chess-gnuchess hides /home/dick/.local/share/emacs/site-lisp/chess-gnuchess
/home/dick/.emacs.d/elpa/chess-2.0.5/chess-fen hides /home/dick/.local/share/emacs/site-lisp/chess-fen
/home/dick/.emacs.d/elpa/chess-2.0.5/chess-ics hides /home/dick/.local/share/emacs/site-lisp/chess-ics
/home/dick/.emacs.d/elpa/chess-2.0.5/chess-ics2 hides /home/dick/.local/share/emacs/site-lisp/chess-ics2
/home/dick/.emacs.d/elpa/chess-2.0.5/chess-common hides /home/dick/.local/share/emacs/site-lisp/chess-common
/home/dick/.emacs.d/elpa/chess-2.0.5/chess-input hides /home/dick/.local/share/emacs/site-lisp/chess-input
/home/dick/.emacs.d/elpa/chess-2.0.5/chess-announce hides /home/dick/.local/share/emacs/site-lisp/chess-announce
/home/dick/.emacs.d/elpa/chess-2.0.5/chess-clock hides /home/dick/.local/share/emacs/site-lisp/chess-clock
/home/dick/.emacs.d/elpa/chess-2.0.5/chess-sound hides /home/dick/.local/share/emacs/site-lisp/chess-sound
/home/dick/.emacs.d/elpa/chess-2.0.5/chess-sjeng hides /home/dick/.local/share/emacs/site-lisp/chess-sjeng
/home/dick/.emacs.d/elpa/chess-2.0.5/chess-algebraic hides /home/dick/.local/share/emacs/site-lisp/chess-algebraic
/home/dick/.emacs.d/elpa/transient-0.3.7snapshot/transient hides /home/dick/.local/share/emacs/0.3.1/lisp/transient
Features:
(tree-sitter bbdb-com bbdb bbdb-site timezone help-fns radix-tree
cl-print debug backtrace eudcb-mailabbrev eudcb-ecomplete ecomplete
eudc-capf eudc cus-start eudc-vars ispell shadow sort vc-hg vc-git
diff-mode vc-bzr vc-src vc-sccs vc-svn vc-cvs vc-rcs log-view pcvs-util
vc vc-dispatcher footnote mail-extr gnus-msg gnus-art mm-uu mml2015
mm-view mml-smime smime gnutls dig gnus-sum shr pixel-fill kinsoku
url-file svg dom gnus-group mm-url gnus-undo gnus-start gnus-dbus dbus
xml gnus-cloud nnimap nnmail mail-source utf7 nnoo parse-time iso8601
gnus-spec gnus-int gnus-range gnus-win emacsbug message yank-media puny
dired-x dired dired-loaddefs rfc822 mml mml-sec epa epg rfc6068
epg-config mm-decode mm-bodies mm-encode mail-parse rfc2231 mailabbrev
gmm-utils mailheader sendmail rfc2047 rfc2045 ietf-drums paredit-ext
paredit inf-ruby ruby-mode smie haskell-interactive-mode
haskell-presentation-mode haskell-process haskell-session
haskell-compile haskell-mode haskell-cabal haskell-utils
haskell-font-lock haskell-indentation haskell-string
haskell-sort-imports haskell-lexeme haskell-align-imports
haskell-complete-module haskell-ghc-support noutline outline
flymake-proc flymake etags fileloop generator dabbrev haskell-customize
hydra lv use-package-ensure solarized-theme solarized-definitions
projectile lisp-mnt ibuf-ext ibuffer ibuffer-loaddefs thingatpt
magit-autorevert autorevert magit-git magit-base magit-section
format-spec crm dash rx compat-27 compat-26 compat grep compile comint
ansi-osc ansi-color gnus nnheader range mail-utils mm-util mail-prsvr
gnus-util text-property-search time-date flx-ido flx xlsp xlsp-xref
xlsp-server xlsp-company company-capf company xlsp-handle-notification
xlsp-handle-request xlsp-struct xlsp-utils jsonrpc pcase warnings
filenotify google-translate-default-ui google-translate-core-ui facemenu
color ido google-translate-core google-translate-tk
google-translate-backend auto-complete advice popup cus-edit pp cus-load
icons wid-edit emms-player-mplayer emms-player-simple emms emms-compat
hl-line winner edmacro kmacro cl-extra help-mode xref project ring
use-package-bind-key bind-key easy-mmode use-package-core derived
company-go-autoloads corfu-autoloads debbugs-autoloads
elpaso-disc-autoloads elpaso-autoloads find-func flycheck-autoloads
finder-inf go-mode-autoloads json-reformat-autoloads
json-snatcher-autoloads lsp-bridge-autoloads lsp-mode-autoloads
lv-autoloads magit-autoloads nnreddit-autoloads cask-autoloads
epl-autoloads posframe-autoloads projectile-autoloads
rust-mode-autoloads sml-mode-autoloads tornado-template-mode-autoloads
typescript-mode-autoloads request-autoloads info wordnut-autoloads
xlsp-autoloads markdown-mode-autoloads company-autoloads
yasnippet-autoloads package browse-url url url-proxy url-privacy
url-expand url-methods url-history url-cookie generate-lisp-file
url-domsuf url-util mailcap url-handlers url-parse auth-source cl-seq
eieio eieio-core cl-macs password-cache json subr-x map byte-opt gv
bytecomp byte-compile cldefs url-vars cl-loaddefs cl-lib rmc iso-transl
tooltip cconv eldoc paren electric uniquify ediff-hook vc-hooks
lisp-float-type elisp-mode mwheel term/x-win x-win term/common-win x-dnd
tool-bar dnd fontset image regexp-opt fringe tabulated-list replace
newcomment text-mode 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 dbusbind
inotify lcms2 dynamic-setting system-font-setting font-render-setting
cairo move-toolbar gtk x-toolkit xinput2 x multi-tty
make-network-process emacs)
Memory information:
((conses 16 634949 58690)
(symbols 48 38175 41)
(strings 32 133725 6457)
(string-bytes 1 4548644)
(vectors 16 50442)
(vector-slots 8 620118 34381)
(floats 8 388 521)
(intervals 56 4710 0)
(buffers 992 15))
^ permalink raw reply related [flat|nested] 6+ messages in thread
* bug#59290: 29.0.50; [PATCH] Buffer-localize temporary-goal-column
2022-11-15 21:52 bug#59290: 29.0.50; [PATCH] Buffer-localize temporary-goal-column dick
@ 2022-11-16 12:24 ` Eli Zaretskii
2023-09-03 9:36 ` Stefan Kangas
0 siblings, 1 reply; 6+ messages in thread
From: Eli Zaretskii @ 2022-11-16 12:24 UTC (permalink / raw)
To: dick; +Cc: 59290
> From: dick <dick.r.chiang@gmail.com>
> Date: Tue, 15 Nov 2022 16:52:10 -0500
>
> emacs -Q -l cl-lib --eval " \
> (with-temp-buffer \
> (save-excursion \
> (insert \"עִבְרִית\nעִבְרִית\")) \
> (call-interactively (function next-line)) \
> (with-temp-buffer \
> (save-excursion (insert \"English\nEnglish\")) \
> (call-interactively (function next-line)) \
> (cl-assert (zerop (current-column)))))"
>
>
> >From 44ca27270bdd7786ddb36469149128b6d18aac9a Mon Sep 17 00:00:00 2001
> From: dickmao <dick.r.chiang@gmail.com>
> Date: Tue, 15 Nov 2022 16:03:48 -0500
> Subject: [PATCH] Temporary goal column leaks
>
> * lisp/simple.el (temporary-goal-column): Buffer-localize.
> * test/lisp/simple-tests.el (line-move-visual-goal-column-leakage):
> Test it.
Thanks, but please provide a meaningful commit log message with an
explanation of the problem and the solution. AFAIU, it isn't
self-evident. For example, if I invoke the program interactively in a
running Emacs session, the problem doesn't happen. Your test seems to
acknowledge that, as is evidenced by this:
> +(ert-deftest line-move-visual-goal-column-leakage ()
> + (skip-unless (not noninteractive)) <<<<<<<<<<<<<<<<<<<<<<<
but without any explanation.
With the root cause of this stated explicitly, it might be that we
will want or at least consider a different solution.
^ permalink raw reply [flat|nested] 6+ messages in thread
* bug#59290: 29.0.50; [PATCH] Buffer-localize temporary-goal-column
2022-11-16 12:24 ` Eli Zaretskii
@ 2023-09-03 9:36 ` Stefan Kangas
[not found] ` <87pm2zmphz.fsf@dick>
0 siblings, 1 reply; 6+ messages in thread
From: Stefan Kangas @ 2023-09-03 9:36 UTC (permalink / raw)
To: Eli Zaretskii; +Cc: 59290, dick
Eli Zaretskii <eliz@gnu.org> writes:
>> From: dick <dick.r.chiang@gmail.com>
>> Date: Tue, 15 Nov 2022 16:52:10 -0500
>>
>> emacs -Q -l cl-lib --eval " \
>> (with-temp-buffer \
>> (save-excursion \
>> (insert \"עִבְרִית\nעִבְרִית\")) \
>> (call-interactively (function next-line)) \
>> (with-temp-buffer \
>> (save-excursion (insert \"English\nEnglish\")) \
>> (call-interactively (function next-line)) \
>> (cl-assert (zerop (current-column)))))"
>>
>>
>> >From 44ca27270bdd7786ddb36469149128b6d18aac9a Mon Sep 17 00:00:00 2001
>> From: dickmao <dick.r.chiang@gmail.com>
>> Date: Tue, 15 Nov 2022 16:03:48 -0500
>> Subject: [PATCH] Temporary goal column leaks
>>
>> * lisp/simple.el (temporary-goal-column): Buffer-localize.
>> * test/lisp/simple-tests.el (line-move-visual-goal-column-leakage):
>> Test it.
>
> Thanks, but please provide a meaningful commit log message with an
> explanation of the problem and the solution. AFAIU, it isn't
> self-evident. For example, if I invoke the program interactively in a
> running Emacs session, the problem doesn't happen. Your test seems to
> acknowledge that, as is evidenced by this:
>
>> +(ert-deftest line-move-visual-goal-column-leakage ()
>> + (skip-unless (not noninteractive)) <<<<<<<<<<<<<<<<<<<<<<<
>
> but without any explanation.
>
> With the root cause of this stated explicitly, it might be that we
> will want or at least consider a different solution.
dick, could you please provide the information Eli is asking for above?
Thanks in advance.
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2023-09-05 23:05 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-11-15 21:52 bug#59290: 29.0.50; [PATCH] Buffer-localize temporary-goal-column dick
2022-11-16 12:24 ` Eli Zaretskii
2023-09-03 9:36 ` Stefan Kangas
[not found] ` <87pm2zmphz.fsf@dick>
2023-09-03 12:17 ` Eli Zaretskii
[not found] ` <87lednmn1t.fsf@dick>
2023-09-03 13:14 ` Eli Zaretskii
2023-09-05 23:05 ` Stefan Kangas
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/emacs.git
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.