[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#53294: 29.0.50; Indirect font changes incorrectly affecting original
From: |
Andrew Hyatt |
Subject: |
bug#53294: 29.0.50; Indirect font changes incorrectly affecting original buffer |
Date: |
Sun, 16 Jan 2022 00:13:26 -0500 |
text-scale-patch
Description: Binary data
Hi all,
I noticed a bug recently where if I scale up fonts in an org
capture buffer, it affects the original buffer, which keeps
getting bigger and bigger every time org-capture is run.
However, you don't need org to reproduce this. Here's a quick way
to reproduce, which works with emacs -Q:
(require 'face-remap) (defun ash/big-font ()
"Creates a font that is big enough for about 20 lines of text."
(interactive) (let ((text-scale-mode-amount (/ (frame-height)
20)))
(text-scale-mode 1)))
(defun ash/reproduce-with-indirect-buffer ()
(interactive) (let ((buf (get-buffer-create "*Orig buffer*")))
(set-buffer buf) (variable-pitch-mode 1) ;; same way org mode
creates indirect buffer (set-buffer (make-indirect-buffer buf
"*Indirect buffer*" 'clone)) (ash/big-font-new) (kill-buffer
(current-buffer))))
Running ash/reproduce-with-indirect-buffer will increase the
indirect buffer in size each time. If you look at
face-remapping-alist, it's clear that the original buffer's value
is being altered by the indirect buffer.
I traced this down to the setcdr in face-remove-add-relative,
which is incorrectly alterting a buffer local variable, by setting
parts of a variable in a way that will affect the original
variable. Evidently making something buffer local doesn't clone
it, it just copies the value, and so you can alter the original by
operations such as setcdr.
Assuming that the fixing how variables becomes buffer local is too
much, I've fixed this in face-remap.el. The patch is attached.
In GNU Emacs 29.0.50 (build 1, aarch64-apple-darwin21.2.0, NS
appkit-2113.20 Version 12.1 (Build 21C52))
of 2021-12-26 built on andrews-mbp.lan
Repository revision: 978987f7ad58cd66fe51cefde53ba4771b189aeb
Repository branch: master Windowing system distributor 'Apple',
version 10.3.2113 System Description: macOS 12.1
Configured using:
'configure --with-native-
Configured features:
ACL GLIB GNUTLS JSON LCMS2 LIBXML2 MODULES NATIVE_COMP NOTIFY
KQUEUE NS
PDUMPER PNG RSVG SQLITE3 THREADS TOOLKIT_SCROLL_BARS XIM ZLIB
Important settings:
value of $LANG: en_US.UTF-8
locale-coding-system: utf-8-unix
- bug#53294: 29.0.50; Indirect font changes incorrectly affecting original buffer,
Andrew Hyatt <=
- bug#53294: 29.0.50; Indirect font changes incorrectly affecting original buffer, Eli Zaretskii, 2022/01/16
- bug#53294: 29.0.50; Indirect font changes incorrectly affecting original buffer, Andrew Hyatt, 2022/01/16
- bug#53294: 29.0.50; Indirect font changes incorrectly affecting original buffer, Eli Zaretskii, 2022/01/16
- bug#53294: 29.0.50; Indirect font changes incorrectly affecting original buffer, Andrew Hyatt, 2022/01/16
- bug#53294: 29.0.50; Indirect font changes incorrectly affecting original buffer, Eli Zaretskii, 2022/01/16
- bug#53294: 29.0.50; Indirect font changes incorrectly affecting original buffer, Stefan Monnier, 2022/01/16
- bug#53294: 29.0.50; Indirect font changes incorrectly affecting original buffer, Eli Zaretskii, 2022/01/16
- bug#53294: 29.0.50; Indirect font changes incorrectly affecting original buffer, Andrew Hyatt, 2022/01/16
- bug#53294: 29.0.50; Indirect font changes incorrectly affecting original buffer, Stefan Monnier, 2022/01/17
- bug#53294: 29.0.50; Indirect font changes incorrectly affecting original buffer, Andrew Hyatt, 2022/01/17