From unknown Sun Jun 22 00:52:03 2025 X-Loop: help-debbugs@gnu.org Subject: bug#48095: 28.0.50; display-line-numbers-mode / display-line-numbers-width-start incorrect Resent-From: Len Trigg Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Thu, 29 Apr 2021 02:45:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 48095 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: 48095@debbugs.gnu.org X-Debbugs-Original-To: bug-gnu-emacs@gnu.org Received: via spool by submit@debbugs.gnu.org id=B.161966424218567 (code B ref -1); Thu, 29 Apr 2021 02:45:02 +0000 Received: (at submit) by debbugs.gnu.org; 29 Apr 2021 02:44:02 +0000 Received: from localhost ([127.0.0.1]:54487 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lbwel-0004oz-RQ for submit@debbugs.gnu.org; Wed, 28 Apr 2021 22:44:02 -0400 Received: from lists.gnu.org ([209.51.188.17]:44162) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lbwei-0004om-U5 for submit@debbugs.gnu.org; Wed, 28 Apr 2021 22:43:59 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:43234) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lbwei-0003Pr-Ma for bug-gnu-emacs@gnu.org; Wed, 28 Apr 2021 22:43:56 -0400 Received: from mail-pg1-x52c.google.com ([2607:f8b0:4864:20::52c]:42672) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lbwec-0008AD-84 for bug-gnu-emacs@gnu.org; Wed, 28 Apr 2021 22:43:56 -0400 Received: by mail-pg1-x52c.google.com with SMTP id m12so5374114pgr.9 for ; Wed, 28 Apr 2021 19:43:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:from:date:message-id:subject:to; bh=mSm1i1HITnBpnQi+HSUoevxnF3MRas69hwdaIODTzVg=; b=L6xj1dRxTfuo1emNB49PQFnhy5BBsHOiTYFtMHZzbNeGihDvjsYbXx602nktOi40Zf VqFC2/hkz3GviVj1dPYP0loY7hO91deHoIoI83o38G0z1tNbMdGRBkhuNlzjck2W04ba 36MLsbBUhoKQoDs5RMz0RM84bOvJFU8ZgqJxx8qfuQr2lWNWDCVrwoGq5O8I3yNrVuiQ ibbuSLaf1onAwu1MSSIn20K26e/u8t9PdjCJ2AUMuDaggHp/gICZiKWZ5SclGL2A+Ppl 3qTvs8ovcL+z+OCpG2JSU3DEANOX3HRAUTJ966tiATai9IhNdOX5goh+Jrv56lV3KASS FZ6A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=mSm1i1HITnBpnQi+HSUoevxnF3MRas69hwdaIODTzVg=; b=b9bpuTVLwr5LryaG8vKJGxvmZC3p96WbCSTVidl9lKuXnSsZb1WQjiZf/LUfnvXO6m cgNBosNmPVgTTWG11jNFwXF85zgj6O5XkfYcDaNaO70iq+5T3HVK/8QPU3TNsbb/vPEb Jg09CxDtPFBDYGeXepHAmh8RNzHHGesFlJF2cRZxfv4s736dkFxRgmowZ06H5pZ8mBYy NEW7aLHE4XEZ2/S1xQoYCKNF2SUSZS9kboypE0p4DEnRhsxfKIEdhsr/h861Xpbe4lXd CSHL8X+ANq7nD5ppvz834/LNCfcEpV2d73Bq99N5WmYXwTaTfEHEmH5YzEqfPsg/Nwp/ yTng== X-Gm-Message-State: AOAM530zbHxxnmPV+AbAYc765U2z330LxxPgkGZIiQrrsq0YRAm0ZD7+ nEgmmYGwmp7xe1P/eKB2gCoAW24RAiCCb3JN+kGsGcQwMgVJvg== X-Google-Smtp-Source: ABdhPJzzWFuxe3Ps43d1nmN7UIi8IBjHcps1jri+Sqxfxb8iF+bLXXLHvvhPsF5wIpSdTp/FCBVZV5pLnDo/MHrjV3I= X-Received: by 2002:a05:6a00:1588:b029:272:f5b1:c96c with SMTP id u8-20020a056a001588b0290272f5b1c96cmr23222503pfk.47.1619664226813; Wed, 28 Apr 2021 19:43:46 -0700 (PDT) MIME-Version: 1.0 From: Len Trigg Date: Thu, 29 Apr 2021 14:43:30 +1200 Message-ID: Content-Type: multipart/alternative; boundary="000000000000e5097e05c11376a9" Received-SPF: pass client-ip=2607:f8b0:4864:20::52c; envelope-from=lenbok@gmail.com; helo=mail-pg1-x52c.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-Spam-Score: -1.3 (-) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -2.3 (--) --000000000000e5097e05c11376a9 Content-Type: text/plain; charset="UTF-8" I am using display-line-numbers mode, and would like to avoid it changing the width assigned to the line numbers as the buffer is scrolled. I have (setq display-line-numbers-width-start t), which purports to check in advance how much width is required. It seems somehow incorrect though. To reproduce: 1 Create a buffer with 90 lines. 2 Ensure the window is approx 40 lines tall, displaying the first 40 lines of the buffer. 3 Ensure display-line-numbers-width-start is t 4 Turn on display-line-numbers-mode. 5 Scroll down to near the bottom of the buffer. At some point, emacs adds an extra character of width to the line numbers, even though no line number higher than 90 is ever shown. If emacs needed an extra character for whatever reason, surely display-line-numbers-width-start should have incorporated that up front (otherwise what's the point)? In GNU Emacs 28.0.50 (build 4, x86_64-pc-linux-gnu, GTK+ Version 3.24.20, cairo version 1.16.0) of 2021-04-27 built on noir Repository revision: 40c71e574ad27deee003a0850a40171750234d59 Repository branch: master Windowing system distributor 'The X.Org Foundation', version 11.0.12009000 System Description: Ubuntu 20.04.2 LTS Configured using: 'configure --prefix=/home/len/.local --with-xwidgets --with-rsvg --with-cairo --with-native-compilation' Configured features: CAIRO DBUS FREETYPE GIF GLIB GMP GNUTLS GSETTINGS HARFBUZZ JPEG JSON LCMS2 LIBSELINUX LIBXML2 MODULES NATIVE_COMP NOTIFY INOTIFY PDUMPER PNG RSVG SECCOMP SOUND THREADS TIFF TOOLKIT_SCROLL_BARS X11 XDBE XIM XPM XWIDGETS GTK3 ZLIB Important settings: value of $LANG: en_NZ.UTF-8 value of $XMODIFIERS: @im=ibus locale-coding-system: utf-8-unix Major mode: Text Minor modes in effect: global-company-mode: t company-mode: t global-git-commit-mode: t magit-auto-revert-mode: t recentf-mode: t display-line-numbers-mode: t global-atomic-chrome-edit-mode: t pyvenv-mode: t projectile-mode: t smartparens-global-mode: t smartparens-mode: t editorconfig-mode: t diredfl-global-mode: t direnv-mode: t shell-dirtrack-mode: t backward-forward-mode: t override-global-mode: t which-key-mode: t treemacs-icons-dired-mode: t treemacs-filewatch-mode: t treemacs-follow-mode: t treemacs-git-mode: deferred treemacs-fringe-indicator-mode: t all-the-icons-ibuffer-mode: t ivy-mode: t global-ligature-mode: t ligature-mode: t diff-hl-margin-local-mode: t diff-hl-margin-mode: t global-diff-hl-mode: t diff-hl-mode: t xterm-mouse-mode: t straight-use-package-mode: t straight-package-neutering-mode: t show-paren-mode: t delete-selection-mode: t tooltip-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 auto-composition-mode: t auto-encryption-mode: t auto-compression-mode: t column-number-mode: t line-number-mode: t transient-mark-mode: t Load-path shadows: /home/len/.emacs.d/straight/build/transient/transient hides /home/len/.local/share/emacs/28.0.50/lisp/transient /home/len/.emacs.d/straight/build/org/ob-stan hides /home/len/.local/share/emacs/28.0.50/lisp/org/ob-stan /home/len/.emacs.d/straight/build/org/org-clock hides /home/len/.local/share/emacs/28.0.50/lisp/org/org-clock /home/len/.emacs.d/straight/build/org/ob-perl hides /home/len/.local/share/emacs/28.0.50/lisp/org/ob-perl /home/len/.emacs.d/straight/build/org/ob-tangle hides /home/len/.local/share/emacs/28.0.50/lisp/org/ob-tangle /home/len/.emacs.d/straight/build/org/ox-org hides /home/len/.local/share/emacs/28.0.50/lisp/org/ox-org /home/len/.emacs.d/straight/build/org/ob-ledger hides /home/len/.local/share/emacs/28.0.50/lisp/org/ob-ledger /home/len/.emacs.d/straight/build/org/ob-makefile hides /home/len/.local/share/emacs/28.0.50/lisp/org/ob-makefile /home/len/.emacs.d/straight/build/org/ob-fortran hides /home/len/.local/share/emacs/28.0.50/lisp/org/ob-fortran /home/len/.emacs.d/straight/build/org/ob-plantuml hides /home/len/.local/share/emacs/28.0.50/lisp/org/ob-plantuml /home/len/.emacs.d/straight/build/org/ox-man hides /home/len/.local/share/emacs/28.0.50/lisp/org/ox-man /home/len/.emacs.d/straight/build/org/ob-eval hides /home/len/.local/share/emacs/28.0.50/lisp/org/ob-eval /home/len/.emacs.d/straight/build/org/org-lint hides /home/len/.local/share/emacs/28.0.50/lisp/org/org-lint /home/len/.emacs.d/straight/build/org/ox-publish hides /home/len/.local/share/emacs/28.0.50/lisp/org/ox-publish /home/len/.emacs.d/straight/build/org/ox-latex hides /home/len/.local/share/emacs/28.0.50/lisp/org/ox-latex /home/len/.emacs.d/straight/build/org/ob-groovy hides /home/len/.local/share/emacs/28.0.50/lisp/org/ob-groovy /home/len/.emacs.d/straight/build/org/org-habit hides /home/len/.local/share/emacs/28.0.50/lisp/org/org-habit /home/len/.emacs.d/straight/build/org/ob-eshell hides /home/len/.local/share/emacs/28.0.50/lisp/org/ob-eshell /home/len/.emacs.d/straight/build/org/ob-shell hides /home/len/.local/share/emacs/28.0.50/lisp/org/ob-shell /home/len/.emacs.d/straight/build/org/org-duration hides /home/len/.local/share/emacs/28.0.50/lisp/org/org-duration /home/len/.emacs.d/straight/build/org/ol-rmail hides /home/len/.local/share/emacs/28.0.50/lisp/org/ol-rmail /home/len/.emacs.d/straight/build/org/org-inlinetask hides /home/len/.local/share/emacs/28.0.50/lisp/org/org-inlinetask /home/len/.emacs.d/straight/build/org/ol-irc hides /home/len/.local/share/emacs/28.0.50/lisp/org/ol-irc /home/len/.emacs.d/straight/build/org/ob-emacs-lisp hides /home/len/.local/share/emacs/28.0.50/lisp/org/ob-emacs-lisp /home/len/.emacs.d/straight/build/org/ob-mscgen hides /home/len/.local/share/emacs/28.0.50/lisp/org/ob-mscgen /home/len/.emacs.d/straight/build/org/ob-screen hides /home/len/.local/share/emacs/28.0.50/lisp/org/ob-screen /home/len/.emacs.d/straight/build/org/ob-ocaml hides /home/len/.local/share/emacs/28.0.50/lisp/org/ob-ocaml /home/len/.emacs.d/straight/build/org/ob-shen hides /home/len/.local/share/emacs/28.0.50/lisp/org/ob-shen /home/len/.emacs.d/straight/build/org/org-entities hides /home/len/.local/share/emacs/28.0.50/lisp/org/org-entities /home/len/.emacs.d/straight/build/org/ob-matlab hides /home/len/.local/share/emacs/28.0.50/lisp/org/ob-matlab /home/len/.emacs.d/straight/build/org/ob-gnuplot hides /home/len/.local/share/emacs/28.0.50/lisp/org/ob-gnuplot /home/len/.emacs.d/straight/build/org/ol-bibtex hides /home/len/.local/share/emacs/28.0.50/lisp/org/ol-bibtex /home/len/.emacs.d/straight/build/org/ob-sass hides /home/len/.local/share/emacs/28.0.50/lisp/org/ob-sass /home/len/.emacs.d/straight/build/org/ob-css hides /home/len/.local/share/emacs/28.0.50/lisp/org/ob-css /home/len/.emacs.d/straight/build/org/ob-vala hides /home/len/.local/share/emacs/28.0.50/lisp/org/ob-vala /home/len/.emacs.d/straight/build/org/ob-R hides /home/len/.local/share/emacs/28.0.50/lisp/org/ob-R /home/len/.emacs.d/straight/build/org/org-datetree hides /home/len/.local/share/emacs/28.0.50/lisp/org/org-datetree /home/len/.emacs.d/straight/build/org/ob-ebnf hides /home/len/.local/share/emacs/28.0.50/lisp/org/ob-ebnf /home/len/.emacs.d/straight/build/org/org-mouse hides /home/len/.local/share/emacs/28.0.50/lisp/org/org-mouse /home/len/.emacs.d/straight/build/org/ob-sqlite hides /home/len/.local/share/emacs/28.0.50/lisp/org/ob-sqlite /home/len/.emacs.d/straight/build/org/ob-maxima hides /home/len/.local/share/emacs/28.0.50/lisp/org/ob-maxima /home/len/.emacs.d/straight/build/org/ox-beamer hides /home/len/.local/share/emacs/28.0.50/lisp/org/ox-beamer /home/len/.emacs.d/straight/build/org/ol-bbdb hides /home/len/.local/share/emacs/28.0.50/lisp/org/ol-bbdb /home/len/.emacs.d/straight/build/org/ob-C hides /home/len/.local/share/emacs/28.0.50/lisp/org/ob-C /home/len/.emacs.d/straight/build/org/ol-w3m hides /home/len/.local/share/emacs/28.0.50/lisp/org/ol-w3m /home/len/.emacs.d/straight/build/org/ob-ditaa hides /home/len/.local/share/emacs/28.0.50/lisp/org/ob-ditaa /home/len/.emacs.d/straight/build/org/ox-odt hides /home/len/.local/share/emacs/28.0.50/lisp/org/ox-odt /home/len/.emacs.d/straight/build/org/org-archive hides /home/len/.local/share/emacs/28.0.50/lisp/org/org-archive /home/len/.emacs.d/straight/build/org/ol-mhe hides /home/len/.local/share/emacs/28.0.50/lisp/org/ol-mhe /home/len/.emacs.d/straight/build/org/ob-ref hides /home/len/.local/share/emacs/28.0.50/lisp/org/ob-ref /home/len/.emacs.d/straight/build/org/ob-sql hides /home/len/.local/share/emacs/28.0.50/lisp/org/ob-sql /home/len/.emacs.d/straight/build/org/ob-lua hides /home/len/.local/share/emacs/28.0.50/lisp/org/ob-lua /home/len/.emacs.d/straight/build/org/org-faces hides /home/len/.local/share/emacs/28.0.50/lisp/org/org-faces /home/len/.emacs.d/straight/build/org/ob-abc hides /home/len/.local/share/emacs/28.0.50/lisp/org/ob-abc /home/len/.emacs.d/straight/build/org/ob-ruby hides /home/len/.local/share/emacs/28.0.50/lisp/org/ob-ruby /home/len/.emacs.d/straight/build/org/org-plot hides /home/len/.local/share/emacs/28.0.50/lisp/org/org-plot /home/len/.emacs.d/straight/build/org/org-compat hides /home/len/.local/share/emacs/28.0.50/lisp/org/org-compat /home/len/.emacs.d/straight/build/org/org-src hides /home/len/.local/share/emacs/28.0.50/lisp/org/org-src /home/len/.emacs.d/straight/build/org/org-macs hides /home/len/.local/share/emacs/28.0.50/lisp/org/org-macs /home/len/.emacs.d/straight/build/org/ob-dot hides /home/len/.local/share/emacs/28.0.50/lisp/org/ob-dot /home/len/.emacs.d/straight/build/org/org-attach-git hides /home/len/.local/share/emacs/28.0.50/lisp/org/org-attach-git /home/len/.emacs.d/straight/build/org/org-pcomplete hides /home/len/.local/share/emacs/28.0.50/lisp/org/org-pcomplete /home/len/.emacs.d/straight/build/org/org-goto hides /home/len/.local/share/emacs/28.0.50/lisp/org/org-goto /home/len/.emacs.d/straight/build/org/ox-md hides /home/len/.local/share/emacs/28.0.50/lisp/org/ox-md /home/len/.emacs.d/straight/build/org/org-attach hides /home/len/.local/share/emacs/28.0.50/lisp/org/org-attach /home/len/.emacs.d/straight/build/org/ob-latex hides /home/len/.local/share/emacs/28.0.50/lisp/org/ob-latex /home/len/.emacs.d/straight/build/org/ob-coq hides /home/len/.local/share/emacs/28.0.50/lisp/org/ob-coq /home/len/.emacs.d/straight/build/org/ob-asymptote hides /home/len/.local/share/emacs/28.0.50/lisp/org/ob-asymptote /home/len/.emacs.d/straight/build/org/ob-octave hides /home/len/.local/share/emacs/28.0.50/lisp/org/ob-octave /home/len/.emacs.d/straight/build/org/org-indent hides /home/len/.local/share/emacs/28.0.50/lisp/org/org-indent /home/len/.emacs.d/straight/build/org/org-version hides /home/len/.local/share/emacs/28.0.50/lisp/org/org-version /home/len/.emacs.d/straight/build/org/org-table hides /home/len/.local/share/emacs/28.0.50/lisp/org/org-table /home/len/.emacs.d/straight/build/org/org-timer hides /home/len/.local/share/emacs/28.0.50/lisp/org/org-timer /home/len/.emacs.d/straight/build/org/ox-ascii hides /home/len/.local/share/emacs/28.0.50/lisp/org/ox-ascii /home/len/.emacs.d/straight/build/org/ob-core hides /home/len/.local/share/emacs/28.0.50/lisp/org/ob-core /home/len/.emacs.d/straight/build/org/org-footnote hides /home/len/.local/share/emacs/28.0.50/lisp/org/org-footnote /home/len/.emacs.d/straight/build/org/ob-io hides /home/len/.local/share/emacs/28.0.50/lisp/org/ob-io /home/len/.emacs.d/straight/build/org/ob-scheme hides /home/len/.local/share/emacs/28.0.50/lisp/org/ob-scheme /home/len/.emacs.d/straight/build/org/ol hides /home/len/.local/share/emacs/28.0.50/lisp/org/ol /home/len/.emacs.d/straight/build/org/ox-html hides /home/len/.local/share/emacs/28.0.50/lisp/org/ox-html /home/len/.emacs.d/straight/build/org/org-element hides /home/len/.local/share/emacs/28.0.50/lisp/org/org-element /home/len/.emacs.d/straight/build/org/ob-haskell hides /home/len/.local/share/emacs/28.0.50/lisp/org/ob-haskell /home/len/.emacs.d/straight/build/org/org-loaddefs hides /home/len/.local/share/emacs/28.0.50/lisp/org/org-loaddefs /home/len/.emacs.d/straight/build/org/ob-sed hides /home/len/.local/share/emacs/28.0.50/lisp/org/ob-sed /home/len/.emacs.d/straight/build/org/org-capture hides /home/len/.local/share/emacs/28.0.50/lisp/org/org-capture /home/len/.emacs.d/straight/build/org/ol-eshell hides /home/len/.local/share/emacs/28.0.50/lisp/org/ol-eshell /home/len/.emacs.d/straight/build/org/ol-gnus hides /home/len/.local/share/emacs/28.0.50/lisp/org/ol-gnus /home/len/.emacs.d/straight/build/org/ob-org hides /home/len/.local/share/emacs/28.0.50/lisp/org/ob-org /home/len/.emacs.d/straight/build/org/ob-lilypond hides /home/len/.local/share/emacs/28.0.50/lisp/org/ob-lilypond /home/len/.emacs.d/straight/build/org/org-agenda hides /home/len/.local/share/emacs/28.0.50/lisp/org/org-agenda /home/len/.emacs.d/straight/build/org/ox-texinfo hides /home/len/.local/share/emacs/28.0.50/lisp/org/ox-texinfo /home/len/.emacs.d/straight/build/org/org-id hides /home/len/.local/share/emacs/28.0.50/lisp/org/org-id /home/len/.emacs.d/straight/build/org/ob-python hides /home/len/.local/share/emacs/28.0.50/lisp/org/ob-python /home/len/.emacs.d/straight/build/org/ob-java hides /home/len/.local/share/emacs/28.0.50/lisp/org/ob-java /home/len/.emacs.d/straight/build/org/ob-picolisp hides /home/len/.local/share/emacs/28.0.50/lisp/org/ob-picolisp /home/len/.emacs.d/straight/build/org/ol-docview hides /home/len/.local/share/emacs/28.0.50/lisp/org/ol-docview /home/len/.emacs.d/straight/build/org/ol-eww hides /home/len/.local/share/emacs/28.0.50/lisp/org/ol-eww /home/len/.emacs.d/straight/build/org/ox hides /home/len/.local/share/emacs/28.0.50/lisp/org/ox /home/len/.emacs.d/straight/build/org/org-keys hides /home/len/.local/share/emacs/28.0.50/lisp/org/org-keys /home/len/.emacs.d/straight/build/org/org-ctags hides /home/len/.local/share/emacs/28.0.50/lisp/org/org-ctags /home/len/.emacs.d/straight/build/org/org hides /home/len/.local/share/emacs/28.0.50/lisp/org/org /home/len/.emacs.d/straight/build/org/org-num hides /home/len/.local/share/emacs/28.0.50/lisp/org/org-num /home/len/.emacs.d/straight/build/org/ob-awk hides /home/len/.local/share/emacs/28.0.50/lisp/org/ob-awk /home/len/.emacs.d/straight/build/org/org-refile hides /home/len/.local/share/emacs/28.0.50/lisp/org/org-refile /home/len/.emacs.d/straight/build/org/ob-hledger hides /home/len/.local/share/emacs/28.0.50/lisp/org/ob-hledger /home/len/.emacs.d/straight/build/org/ol-info hides /home/len/.local/share/emacs/28.0.50/lisp/org/ol-info /home/len/.emacs.d/straight/build/org/ob-lisp hides /home/len/.local/share/emacs/28.0.50/lisp/org/ob-lisp /home/len/.emacs.d/straight/build/org/org-colview hides /home/len/.local/share/emacs/28.0.50/lisp/org/org-colview /home/len/.emacs.d/straight/build/org/ob-exp hides /home/len/.local/share/emacs/28.0.50/lisp/org/ob-exp /home/len/.emacs.d/straight/build/org/org-feed hides /home/len/.local/share/emacs/28.0.50/lisp/org/org-feed /home/len/.emacs.d/straight/build/org/ob-comint hides /home/len/.local/share/emacs/28.0.50/lisp/org/ob-comint /home/len/.emacs.d/straight/build/org/org-tempo hides /home/len/.local/share/emacs/28.0.50/lisp/org/org-tempo /home/len/.emacs.d/straight/build/org/org-protocol hides /home/len/.local/share/emacs/28.0.50/lisp/org/org-protocol /home/len/.emacs.d/straight/build/org/org-list hides /home/len/.local/share/emacs/28.0.50/lisp/org/org-list /home/len/.emacs.d/straight/build/org/org-crypt hides /home/len/.local/share/emacs/28.0.50/lisp/org/org-crypt /home/len/.emacs.d/straight/build/org/ob-forth hides /home/len/.local/share/emacs/28.0.50/lisp/org/ob-forth /home/len/.emacs.d/straight/build/org/ob-js hides /home/len/.local/share/emacs/28.0.50/lisp/org/ob-js /home/len/.emacs.d/straight/build/org/org-mobile hides /home/len/.local/share/emacs/28.0.50/lisp/org/org-mobile /home/len/.emacs.d/straight/build/org/ob-lob hides /home/len/.local/share/emacs/28.0.50/lisp/org/ob-lob /home/len/.emacs.d/straight/build/org/ob-table hides /home/len/.local/share/emacs/28.0.50/lisp/org/ob-table /home/len/.emacs.d/straight/build/org/ob-processing hides /home/len/.local/share/emacs/28.0.50/lisp/org/ob-processing /home/len/.emacs.d/straight/build/org/ob-J hides /home/len/.local/share/emacs/28.0.50/lisp/org/ob-J /home/len/.emacs.d/straight/build/org/ob-calc hides /home/len/.local/share/emacs/28.0.50/lisp/org/ob-calc /home/len/.emacs.d/straight/build/org/org-install hides /home/len/.local/share/emacs/28.0.50/lisp/org/org-install /home/len/.emacs.d/straight/build/org/ob hides /home/len/.local/share/emacs/28.0.50/lisp/org/ob /home/len/.emacs.d/straight/build/org/org-macro hides /home/len/.local/share/emacs/28.0.50/lisp/org/org-macro /home/len/.emacs.d/straight/build/org/ob-clojure hides /home/len/.local/share/emacs/28.0.50/lisp/org/ob-clojure /home/len/.emacs.d/straight/build/org/ox-icalendar hides /home/len/.local/share/emacs/28.0.50/lisp/org/ox-icalendar /home/len/.emacs.d/straight/build/let-alist/let-alist hides /home/len/.local/share/emacs/28.0.50/lisp/emacs-lisp/let-alist /home/len/.emacs.d/straight/build/eldoc/eldoc hides /home/len/.local/share/emacs/28.0.50/lisp/emacs-lisp/eldoc Features: (shadow sort mail-extr emacsbug sendmail cl-print help-fns radix-tree dabbrev lsp-diagnostics company-oddmuse company-keywords company-etags company-gtags company-dabbrev-code company-dabbrev company-files company-clang company-capf company-cmake company-semantic company-template company-yasnippet company-bbdb company lsp-headerline lsp-icons lsp-modeline lsp-ui lsp-ui-flycheck lsp-ui-doc xwidget image-mode exif lsp-ui-imenu lsp-ui-peek lsp-ui-sideline lsp-ui-util goto-addr vc-mtn vc-hg vc-bzr vc-src vc-sccs vc-svn vc-cvs vc-rcs bug-reference mule-util magit-extras treemacs-magit magit-bookmark magit-submodule magit-obsolete 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 diff git-commit log-edit message rfc822 mml mml-sec epa gnus-util rmail rmail-loaddefs mm-decode mm-bodies mm-encode mail-parse rfc2231 rfc2047 rfc2045 mm-util ietf-drums mail-prsvr mailabbrev gmm-utils add-log magit-core magit-autorevert magit-margin magit-transient magit-process with-editor magit-mode magit-git magit-section magit-utils crm dired-aux view lsp-zig lsp-steep lsp-svelte lsp-sqls lsp-yaml lsp-xml lsp-vimscript lsp-vhdl lsp-vetur lsp-html lsp-verilog lsp-vala lsp-terraform lsp-tex lsp-sorbet lsp-solargraph lsp-rust lsp-rf lsp-r lsp-purescript lsp-pwsh lsp-php lsp-perl lsp-ocaml lsp-nix lsp-nim lsp-markdown lsp-lua lsp-kotlin lsp-json lsp-javascript lsp-haxe lsp-groovy lsp-hack lsp-go lsp-completion lsp-gdscript lsp-fsharp lsp-fortran lsp-eslint lsp-erlang lsp-elixir lsp-elm lsp-dockerfile lsp-dhall lsp-d lsp-css lsp-csharp gnutls lsp-crystal lsp-cmake lsp-clojure lsp-clangd dom lsp-bash lsp-angular lsp-ada lsp-actionscript ccls ccls-member-hierarchy ccls-inheritance-hierarchy ccls-call-hierarchy ccls-tree ccls-code-lens ccls-semantic-highlight ccls-common recentf treemacs-bookmarks bookmark scad-dbus dbus xml scad-mode symbol-overlay ws-butler display-fill-column-indicator display-line-numbers editorconfig-core editorconfig-core-handle editorconfig-fnmatch ffap counsel xdg disp-table server diary-lib diary-loaddefs cal-menu calendar cal-loaddefs generic hydra python-pytest python-pytest-autoloads importmagic epc ctable concurrent deferred cl importmagic-autoloads epc-autoloads ctable-autoloads concurrent-autoloads deferred-autoloads auto-remove auto-remove-autoloads py-isort py-isort-autoloads python-black reformatter python-black-autoloads reformatter-autoloads blacken blacken-autoloads flycheck-mypy flycheck-mypy-autoloads elpy elpy-rpc elpy-shell elpy-profile elpy-django elpy-refactor python tramp-sh tramp tramp-loaddefs trampver tramp-integration tramp-compat parse-time iso8601 time-date ls-lisp ido files-x cus-edit pp elpy-autoloads highlight-indentation-autoloads groovy-mode groovy-mode-autoloads shell-extras eradio-autoloads atomic-chrome websocket bindat atomic-chrome-autoloads websocket-autoloads counsel-keepassxc-autoloads pyvenv eshell esh-cmd esh-ext esh-opt esh-proc esh-io esh-arg esh-module esh-groups esh-util pyvenv-autoloads ccls-autoloads lsp-pyls lsp-ivy lsp-mode tree-widget wid-edit spinner network-stream puny nsm rmc markdown-mode noutline outline lv f epg epg-config lsp-protocol lsp-ivy-autoloads lsp-ui-autoloads lsp-mode-autoloads spinner-autoloads f-autoloads eldoc-autoloads js2-mode etags fileloop generator js cc-mode cc-fonts cc-guess cc-menus cc-cmds cc-styles cc-align cc-engine cc-vars cc-defs js2-mode-autoloads ess ess-utils ess-custom ess-autoloads dts-mode dts-mode-autoloads gnuplot info-look gnuplot-autoloads scad-dbus-autoloads scad-mode-autoloads projectile ibuf-ext projectile-autoloads grip-mode grip-mode-autoloads markdown-mode-autoloads org-bullets-autoloads multi-web-mode multi-web-mode-autoloads yaml-mode yaml-mode-autoloads csv-mode-autoloads ediff ediff-merg ediff-mult ediff-wind ediff-diff ediff-help ediff-init ediff-util git-timemachine transient format-spec vc-git git-timemachine-autoloads git-messenger-autoloads flycheck-aspell ispell flycheck-aspell-autoloads flycheck derived find-func jka-compr let-alist flycheck-autoloads let-alist-autoloads pkg-info-autoloads epl-autoloads company-autoloads yasnippet-snippets-autoloads yasnippet-snippets ivy-yasnippet yasnippet multiple-cursors mc-separate-operations rectangular-region-mode mc-mark-pop mc-edit-lines mc-hide-unmatched-lines-mode mc-mark-more mc-cycle-cursors multiple-cursors-core multiple-cursors-autoloads iedit-autoloads visual-regexp-autoloads wgrep-ag wgrep-ag-autoloads wgrep wgrep-autoloads evil-numbers-autoloads rectangle-utils rect rectangle-utils-autoloads smartparens thingatpt smartparens-autoloads ws-butler-autoloads dtrt-indent dtrt-indent-autoloads editorconfig editorconfig-autoloads expand-region-autoloads diredfl diredfl-autoloads dired-du-autoloads dired-single dired-single-autoloads dired-hide-dotfiles dired-hide-dotfiles-autoloads direnv direnv-autoloads shell pcomplete midnight dumb-jump popup dumb-jump-autoloads popup-autoloads ivy-yasnippet-autoloads yasnippet-autoloads counsel-autoloads request mailheader autorevert mail-utils request-autoloads swiper swiper-autoloads posframe backward-forward backward-forward-autoloads crux-autoloads edmacro kmacro move-text move-text-autoloads use-package-bind-key bind-key which-key which-key-autoloads minimap minimap-autoloads treemacs-magit-autoloads magit-autoloads git-commit-autoloads with-editor-autoloads transient-autoloads treemacs-icons-dired treemacs-icons-dired-autoloads treemacs treemacs-header-line treemacs-compatibility treemacs-mode treemacs-interface treemacs-extensions treemacs-mouse-interface treemacs-tags imenu xref project treemacs-persistence treemacs-filewatch-mode filenotify treemacs-follow-mode treemacs-rendering treemacs-async treemacs-workspaces treemacs-dom treemacs-visuals treemacs-fringe-indicator treemacs-scope treemacs-faces treemacs-icons treemacs-themes treemacs-core-utils pfuture inline ht treemacs-logging treemacs-customization treemacs-macros treemacs-autoloads cfrs-autoloads posframe-autoloads ht-autoloads hydra-autoloads lv-autoloads pfuture-autoloads ace-window-autoloads avy-autoloads all-the-icons-ibuffer ibuffer ibuffer-loaddefs all-the-icons-ibuffer-autoloads all-the-icons-ivy ivy ivy-faces ivy-overlay colir all-the-icons-ivy-autoloads ivy-autoloads all-the-icons all-the-icons-faces data-material data-weathericons data-octicons data-fileicons data-faicons data-alltheicons all-the-icons-autoloads ligature ligature-autoloads symbol-overlay-autoloads highlight-indent-guides highlight-indent-guides-autoloads diff-hl-margin diff-hl-dired dired dired-loaddefs diff-hl log-view pcvs-util vc-dir ewoc vc vc-dispatcher diff-mode easy-mmode diff-hl-autoloads hl-line whitespace xterm-color xterm-color-autoloads rainbow-mode rainbow-mode-autoloads pcase spaceline-config spaceline-segments s spaceline powerline comp comp-cstr warnings rx powerline-separators powerline-themes dash spaceline-autoloads s-autoloads dash-autoloads powerline-autoloads finder-inf jetbrains-darcula-theme-autoloads modus-vivendi-theme modus-themes modus-vivendi-theme-autoloads use-package-diminish auto-minor-mode auto-minor-mode-autoloads diminish diminish-autoloads try package browse-url url url-proxy url-privacy url-expand url-methods url-history url-cookie url-domsuf url-util mailcap url-handlers url-parse auth-source eieio eieio-core eieio-loaddefs password-cache json map url-vars try-autoloads olivetti olivetti-autoloads mixed-pitch face-remap mixed-pitch-autoloads pulse color advice use-package-ensure xt-mouse use-package-core use-package-autoloads bind-key-autoloads straight-autoloads info cl-seq cl-extra help-mode seq byte-opt straight subr-x cl-macs gv cl-loaddefs cl-lib bytecomp byte-compile cconv lazy-lock paren avoid grep compile text-property-search comint ansi-color ring delsel cus-load iso-transl tooltip eldoc electric uniquify ediff-hook vc-hooks lisp-float-type 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 elisp-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 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 xwidget-internal dbusbind inotify lcms2 dynamic-setting system-font-setting font-render-setting cairo move-toolbar gtk x-toolkit x multi-tty make-network-process nativecomp emacs) Memory information: ((conses 16 1428188 1245272) (symbols 48 61064 3) (strings 32 220570 170030) (string-bytes 1 8148602) (vectors 16 115384) (vector-slots 8 2862776 1062890) (floats 8 1201 2813) (intervals 56 29889 20776) (buffers 992 62)) --000000000000e5097e05c11376a9 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable

I am using display-line-numbers mode, and would like t= o avoid it
changing the width assigned to the line numbers as the buffer= is
scrolled. I have (setq display-line-numbers-width-start t), whichpurports to check in advance how much width is required. It seems
someh= ow incorrect though. To reproduce:

1 Create a buffer with 90 lines.<= br>
2 Ensure the window is approx 40 lines tall, displaying the first 40= lines
of the buffer.

3 Ensure display-line-numbers-width-start i= s t

4 Turn on display-line-numbers-mode.

5 Scroll down to nea= r the bottom of the buffer. At some point, emacs
=C2=A0 adds an ext= ra character of width to the line numbers, even though no
= =C2=A0 line number higher than 90 is ever shown. If emacs needed an extra
=C2=A0 character for whatever reason, surely display-line-numbers-= width-start
=C2=A0 should have incorporated that up front (otherw= ise what's the point)?




In GNU Emacs 28.0.50 (build= 4, x86_64-pc-linux-gnu, GTK+ Version 3.24.20, cairo version 1.16.0)
=C2= =A0of 2021-04-27 built on noir
Repository revision: 40c71e574ad27deee003= a0850a40171750234d59
Repository branch: master
Windowing system distr= ibutor 'The X.Org Foundation', version 11.0.12009000
System Desc= ription: Ubuntu 20.04.2 LTS

Configured using:
=C2=A0'configur= e --prefix=3D/home/len/.local --with-xwidgets --with-rsvg
=C2=A0--with-c= airo --with-native-compilation'

Configured features:
CAIRO DB= US FREETYPE GIF GLIB GMP GNUTLS GSETTINGS HARFBUZZ JPEG JSON
LCMS2 LIBSE= LINUX LIBXML2 MODULES NATIVE_COMP NOTIFY INOTIFY PDUMPER PNG
RSVG SECCOM= P SOUND THREADS TIFF TOOLKIT_SCROLL_BARS X11 XDBE XIM XPM
XWIDGETS GTK3 = ZLIB

Important settings:
=C2=A0 value of $LANG: en_NZ.UTF-8
= =C2=A0 value of $XMODIFIERS: @im=3Dibus
=C2=A0 locale-coding-system: utf= -8-unix

Major mode: Text

Minor modes in effect:
=C2=A0 glo= bal-company-mode: t
=C2=A0 company-mode: t
=C2=A0 global-git-commit-m= ode: t
=C2=A0 magit-auto-revert-mode: t
=C2=A0 recentf-mode: t
=C2= =A0 display-line-numbers-mode: t
=C2=A0 global-atomic-chrome-edit-mode: = t
=C2=A0 pyvenv-mode: t
=C2=A0 projectile-mode: t
=C2=A0 smartpare= ns-global-mode: t
=C2=A0 smartparens-mode: t
=C2=A0 editorconfig-mode= : t
=C2=A0 diredfl-global-mode: t
=C2=A0 direnv-mode: t
=C2=A0 she= ll-dirtrack-mode: t
=C2=A0 backward-forward-mode: t
=C2=A0 override-g= lobal-mode: t
=C2=A0 which-key-mode: t
=C2=A0 treemacs-icons-dired-mo= de: t
=C2=A0 treemacs-filewatch-mode: t
=C2=A0 treemacs-follow-mode: = t
=C2=A0 treemacs-git-mode: deferred
=C2=A0 treemacs-fringe-indicator= -mode: t
=C2=A0 all-the-icons-ibuffer-mode: t
=C2=A0 ivy-mode: t
= =C2=A0 global-ligature-mode: t
=C2=A0 ligature-mode: t
=C2=A0 diff-hl= -margin-local-mode: t
=C2=A0 diff-hl-margin-mode: t
=C2=A0 global-dif= f-hl-mode: t
=C2=A0 diff-hl-mode: t
=C2=A0 xterm-mouse-mode: t
=C2= =A0 straight-use-package-mode: t
=C2=A0 straight-package-neutering-mode:= t
=C2=A0 show-paren-mode: t
=C2=A0 delete-selection-mode: t
=C2= =A0 tooltip-mode: t
=C2=A0 global-eldoc-mode: t
=C2=A0 electric-inden= t-mode: t
=C2=A0 mouse-wheel-mode: t
=C2=A0 file-name-shadow-mode: t<= br>=C2=A0 global-font-lock-mode: t
=C2=A0 font-lock-mode: t
=C2=A0 au= to-composition-mode: t
=C2=A0 auto-encryption-mode: t
=C2=A0 auto-com= pression-mode: t
=C2=A0 column-number-mode: t
=C2=A0 line-number-mode= : t
=C2=A0 transient-mark-mode: t

Load-path shadows:
/home/len= /.emacs.d/straight/build/transient/transient hides /home/len/.local/share/e= macs/28.0.50/lisp/transient
/home/len/.emacs.d/straight/build/org/ob-sta= n hides /home/len/.local/share/emacs/28.0.50/lisp/org/ob-stan
/home/len/= .emacs.d/straight/build/org/org-clock hides /home/len/.local/share/emacs/28= .0.50/lisp/org/org-clock
/home/len/.emacs.d/straight/build/org/ob-perl h= ides /home/len/.local/share/emacs/28.0.50/lisp/org/ob-perl
/home/len/.em= acs.d/straight/build/org/ob-tangle hides /home/len/.local/share/emacs/28.0.= 50/lisp/org/ob-tangle
/home/len/.emacs.d/straight/build/org/ox-org hides= /home/len/.local/share/emacs/28.0.50/lisp/org/ox-org
/home/len/.emacs.d= /straight/build/org/ob-ledger hides /home/len/.local/share/emacs/28.0.50/li= sp/org/ob-ledger
/home/len/.emacs.d/straight/build/org/ob-makefile hides= /home/len/.local/share/emacs/28.0.50/lisp/org/ob-makefile
/home/len/.em= acs.d/straight/build/org/ob-fortran hides /home/len/.local/share/emacs/28.0= .50/lisp/org/ob-fortran
/home/len/.emacs.d/straight/build/org/ob-plantum= l hides /home/len/.local/share/emacs/28.0.50/lisp/org/ob-plantuml
/home/= len/.emacs.d/straight/build/org/ox-man hides /home/len/.local/share/emacs/2= 8.0.50/lisp/org/ox-man
/home/len/.emacs.d/straight/build/org/ob-eval hid= es /home/len/.local/share/emacs/28.0.50/lisp/org/ob-eval
/home/len/.emac= s.d/straight/build/org/org-lint hides /home/len/.local/share/emacs/28.0.50/= lisp/org/org-lint
/home/len/.emacs.d/straight/build/org/ox-publish hides= /home/len/.local/share/emacs/28.0.50/lisp/org/ox-publish
/home/len/.ema= cs.d/straight/build/org/ox-latex hides /home/len/.local/share/emacs/28.0.50= /lisp/org/ox-latex
/home/len/.emacs.d/straight/build/org/ob-groovy hides= /home/len/.local/share/emacs/28.0.50/lisp/org/ob-groovy
/home/len/.emac= s.d/straight/build/org/org-habit hides /home/len/.local/share/emacs/28.0.50= /lisp/org/org-habit
/home/len/.emacs.d/straight/build/org/ob-eshell hide= s /home/len/.local/share/emacs/28.0.50/lisp/org/ob-eshell
/home/len/.ema= cs.d/straight/build/org/ob-shell hides /home/len/.local/share/emacs/28.0.50= /lisp/org/ob-shell
/home/len/.emacs.d/straight/build/org/org-duration hi= des /home/len/.local/share/emacs/28.0.50/lisp/org/org-duration
/home/len= /.emacs.d/straight/build/org/ol-rmail hides /home/len/.local/share/emacs/28= .0.50/lisp/org/ol-rmail
/home/len/.emacs.d/straight/build/org/org-inline= task hides /home/len/.local/share/emacs/28.0.50/lisp/org/org-inlinetask
= /home/len/.emacs.d/straight/build/org/ol-irc hides /home/len/.local/share/e= macs/28.0.50/lisp/org/ol-irc
/home/len/.emacs.d/straight/build/org/ob-em= acs-lisp hides /home/len/.local/share/emacs/28.0.50/lisp/org/ob-emacs-lisp<= br>/home/len/.emacs.d/straight/build/org/ob-mscgen hides /home/len/.local/s= hare/emacs/28.0.50/lisp/org/ob-mscgen
/home/len/.emacs.d/straight/build/= org/ob-screen hides /home/len/.local/share/emacs/28.0.50/lisp/org/ob-screen=
/home/len/.emacs.d/straight/build/org/ob-ocaml hides /home/len/.local/s= hare/emacs/28.0.50/lisp/org/ob-ocaml
/home/len/.emacs.d/straight/build/o= rg/ob-shen hides /home/len/.local/share/emacs/28.0.50/lisp/org/ob-shen
/= home/len/.emacs.d/straight/build/org/org-entities hides /home/len/.local/sh= are/emacs/28.0.50/lisp/org/org-entities
/home/len/.emacs.d/straight/buil= d/org/ob-matlab hides /home/len/.local/share/emacs/28.0.50/lisp/org/ob-matl= ab
/home/len/.emacs.d/straight/build/org/ob-gnuplot hides /home/len/.loc= al/share/emacs/28.0.50/lisp/org/ob-gnuplot
/home/len/.emacs.d/straight/b= uild/org/ol-bibtex hides /home/len/.local/share/emacs/28.0.50/lisp/org/ol-b= ibtex
/home/len/.emacs.d/straight/build/org/ob-sass hides /home/len/.loc= al/share/emacs/28.0.50/lisp/org/ob-sass
/home/len/.emacs.d/straight/buil= d/org/ob-css hides /home/len/.local/share/emacs/28.0.50/lisp/org/ob-css
= /home/len/.emacs.d/straight/build/org/ob-vala hides /home/len/.local/share/= emacs/28.0.50/lisp/org/ob-vala
/home/len/.emacs.d/straight/build/org/ob-= R hides /home/len/.local/share/emacs/28.0.50/lisp/org/ob-R
/home/len/.em= acs.d/straight/build/org/org-datetree hides /home/len/.local/share/emacs/28= .0.50/lisp/org/org-datetree
/home/len/.emacs.d/straight/build/org/ob-ebn= f hides /home/len/.local/share/emacs/28.0.50/lisp/org/ob-ebnf
/home/len/= .emacs.d/straight/build/org/org-mouse hides /home/len/.local/share/emacs/28= .0.50/lisp/org/org-mouse
/home/len/.emacs.d/straight/build/org/ob-sqlite= hides /home/len/.local/share/emacs/28.0.50/lisp/org/ob-sqlite
/home/len= /.emacs.d/straight/build/org/ob-maxima hides /home/len/.local/share/emacs/2= 8.0.50/lisp/org/ob-maxima
/home/len/.emacs.d/straight/build/org/ox-beame= r hides /home/len/.local/share/emacs/28.0.50/lisp/org/ox-beamer
/home/le= n/.emacs.d/straight/build/org/ol-bbdb hides /home/len/.local/share/emacs/28= .0.50/lisp/org/ol-bbdb
/home/len/.emacs.d/straight/build/org/ob-C hides = /home/len/.local/share/emacs/28.0.50/lisp/org/ob-C
/home/len/.emacs.d/st= raight/build/org/ol-w3m hides /home/len/.local/share/emacs/28.0.50/lisp/org= /ol-w3m
/home/len/.emacs.d/straight/build/org/ob-ditaa hides /home/len/.= local/share/emacs/28.0.50/lisp/org/ob-ditaa
/home/len/.emacs.d/straight/= build/org/ox-odt hides /home/len/.local/share/emacs/28.0.50/lisp/org/ox-odt=
/home/len/.emacs.d/straight/build/org/org-archive hides /home/len/.loca= l/share/emacs/28.0.50/lisp/org/org-archive
/home/len/.emacs.d/straight/b= uild/org/ol-mhe hides /home/len/.local/share/emacs/28.0.50/lisp/org/ol-mhe<= br>/home/len/.emacs.d/straight/build/org/ob-ref hides /home/len/.local/shar= e/emacs/28.0.50/lisp/org/ob-ref
/home/len/.emacs.d/straight/build/org/ob= -sql hides /home/len/.local/share/emacs/28.0.50/lisp/org/ob-sql
/home/le= n/.emacs.d/straight/build/org/ob-lua hides /home/len/.local/share/emacs/28.= 0.50/lisp/org/ob-lua
/home/len/.emacs.d/straight/build/org/org-faces hid= es /home/len/.local/share/emacs/28.0.50/lisp/org/org-faces
/home/len/.em= acs.d/straight/build/org/ob-abc hides /home/len/.local/share/emacs/28.0.50/= lisp/org/ob-abc
/home/len/.emacs.d/straight/build/org/ob-ruby hides /hom= e/len/.local/share/emacs/28.0.50/lisp/org/ob-ruby
/home/len/.emacs.d/str= aight/build/org/org-plot hides /home/len/.local/share/emacs/28.0.50/lisp/or= g/org-plot
/home/len/.emacs.d/straight/build/org/org-compat hides /home/= len/.local/share/emacs/28.0.50/lisp/org/org-compat
/home/len/.emacs.d/st= raight/build/org/org-src hides /home/len/.local/share/emacs/28.0.50/lisp/or= g/org-src
/home/len/.emacs.d/straight/build/org/org-macs hides /home/len= /.local/share/emacs/28.0.50/lisp/org/org-macs
/home/len/.emacs.d/straigh= t/build/org/ob-dot hides /home/len/.local/share/emacs/28.0.50/lisp/org/ob-d= ot
/home/len/.emacs.d/straight/build/org/org-attach-git hides /home/len/= .local/share/emacs/28.0.50/lisp/org/org-attach-git
/home/len/.emacs.d/st= raight/build/org/org-pcomplete hides /home/len/.local/share/emacs/28.0.50/l= isp/org/org-pcomplete
/home/len/.emacs.d/straight/build/org/org-goto hid= es /home/len/.local/share/emacs/28.0.50/lisp/org/org-goto
/home/len/.ema= cs.d/straight/build/org/ox-md hides /home/len/.local/share/emacs/28.0.50/li= sp/org/ox-md
/home/len/.emacs.d/straight/build/org/org-attach hides /hom= e/len/.local/share/emacs/28.0.50/lisp/org/org-attach
/home/len/.emacs.d/= straight/build/org/ob-latex hides /home/len/.local/share/emacs/28.0.50/lisp= /org/ob-latex
/home/len/.emacs.d/straight/build/org/ob-coq hides /home/l= en/.local/share/emacs/28.0.50/lisp/org/ob-coq
/home/len/.emacs.d/straigh= t/build/org/ob-asymptote hides /home/len/.local/share/emacs/28.0.50/lisp/or= g/ob-asymptote
/home/len/.emacs.d/straight/build/org/ob-octave hides /ho= me/len/.local/share/emacs/28.0.50/lisp/org/ob-octave
/home/len/.emacs.d/= straight/build/org/org-indent hides /home/len/.local/share/emacs/28.0.50/li= sp/org/org-indent
/home/len/.emacs.d/straight/build/org/org-version hide= s /home/len/.local/share/emacs/28.0.50/lisp/org/org-version
/home/len/.e= macs.d/straight/build/org/org-table hides /home/len/.local/share/emacs/28.0= .50/lisp/org/org-table
/home/len/.emacs.d/straight/build/org/org-timer h= ides /home/len/.local/share/emacs/28.0.50/lisp/org/org-timer
/home/len/.= emacs.d/straight/build/org/ox-ascii hides /home/len/.local/share/emacs/28.0= .50/lisp/org/ox-ascii
/home/len/.emacs.d/straight/build/org/ob-core hide= s /home/len/.local/share/emacs/28.0.50/lisp/org/ob-core
/home/len/.emacs= .d/straight/build/org/org-footnote hides /home/len/.local/share/emacs/28.0.= 50/lisp/org/org-footnote
/home/len/.emacs.d/straight/build/org/ob-io hid= es /home/len/.local/share/emacs/28.0.50/lisp/org/ob-io
/home/len/.emacs.= d/straight/build/org/ob-scheme hides /home/len/.local/share/emacs/28.0.50/l= isp/org/ob-scheme
/home/len/.emacs.d/straight/build/org/ol hides /home/l= en/.local/share/emacs/28.0.50/lisp/org/ol
/home/len/.emacs.d/straight/bu= ild/org/ox-html hides /home/len/.local/share/emacs/28.0.50/lisp/org/ox-html=
/home/len/.emacs.d/straight/build/org/org-element hides /home/len/.loca= l/share/emacs/28.0.50/lisp/org/org-element
/home/len/.emacs.d/straight/b= uild/org/ob-haskell hides /home/len/.local/share/emacs/28.0.50/lisp/org/ob-= haskell
/home/len/.emacs.d/straight/build/org/org-loaddefs hides /home/l= en/.local/share/emacs/28.0.50/lisp/org/org-loaddefs
/home/len/.emacs.d/s= traight/build/org/ob-sed hides /home/len/.local/share/emacs/28.0.50/lisp/or= g/ob-sed
/home/len/.emacs.d/straight/build/org/org-capture hides /home/l= en/.local/share/emacs/28.0.50/lisp/org/org-capture
/home/len/.emacs.d/st= raight/build/org/ol-eshell hides /home/len/.local/share/emacs/28.0.50/lisp/= org/ol-eshell
/home/len/.emacs.d/straight/build/org/ol-gnus hides /home/= len/.local/share/emacs/28.0.50/lisp/org/ol-gnus
/home/len/.emacs.d/strai= ght/build/org/ob-org hides /home/len/.local/share/emacs/28.0.50/lisp/org/ob= -org
/home/len/.emacs.d/straight/build/org/ob-lilypond hides /home/len/.= local/share/emacs/28.0.50/lisp/org/ob-lilypond
/home/len/.emacs.d/straig= ht/build/org/org-agenda hides /home/len/.local/share/emacs/28.0.50/lisp/org= /org-agenda
/home/len/.emacs.d/straight/build/org/ox-texinfo hides /home= /len/.local/share/emacs/28.0.50/lisp/org/ox-texinfo
/home/len/.emacs.d/s= traight/build/org/org-id hides /home/len/.local/share/emacs/28.0.50/lisp/or= g/org-id
/home/len/.emacs.d/straight/build/org/ob-python hides /home/len= /.local/share/emacs/28.0.50/lisp/org/ob-python
/home/len/.emacs.d/straig= ht/build/org/ob-java hides /home/len/.local/share/emacs/28.0.50/lisp/org/ob= -java
/home/len/.emacs.d/straight/build/org/ob-picolisp hides /home/len/= .local/share/emacs/28.0.50/lisp/org/ob-picolisp
/home/len/.emacs.d/strai= ght/build/org/ol-docview hides /home/len/.local/share/emacs/28.0.50/lisp/or= g/ol-docview
/home/len/.emacs.d/straight/build/org/ol-eww hides /home/le= n/.local/share/emacs/28.0.50/lisp/org/ol-eww
/home/len/.emacs.d/straight= /build/org/ox hides /home/len/.local/share/emacs/28.0.50/lisp/org/ox
/ho= me/len/.emacs.d/straight/build/org/org-keys hides /home/len/.local/share/em= acs/28.0.50/lisp/org/org-keys
/home/len/.emacs.d/straight/build/org/org-= ctags hides /home/len/.local/share/emacs/28.0.50/lisp/org/org-ctags
/hom= e/len/.emacs.d/straight/build/org/org hides /home/len/.local/share/emacs/28= .0.50/lisp/org/org
/home/len/.emacs.d/straight/build/org/org-num hides /= home/len/.local/share/emacs/28.0.50/lisp/org/org-num
/home/len/.emacs.d/= straight/build/org/ob-awk hides /home/len/.local/share/emacs/28.0.50/lisp/o= rg/ob-awk
/home/len/.emacs.d/straight/build/org/org-refile hides /home/l= en/.local/share/emacs/28.0.50/lisp/org/org-refile
/home/len/.emacs.d/str= aight/build/org/ob-hledger hides /home/len/.local/share/emacs/28.0.50/lisp/= org/ob-hledger
/home/len/.emacs.d/straight/build/org/ol-info hides /home= /len/.local/share/emacs/28.0.50/lisp/org/ol-info
/home/len/.emacs.d/stra= ight/build/org/ob-lisp hides /home/len/.local/share/emacs/28.0.50/lisp/org/= ob-lisp
/home/len/.emacs.d/straight/build/org/org-colview hides /home/le= n/.local/share/emacs/28.0.50/lisp/org/org-colview
/home/len/.emacs.d/str= aight/build/org/ob-exp hides /home/len/.local/share/emacs/28.0.50/lisp/org/= ob-exp
/home/len/.emacs.d/straight/build/org/org-feed hides /home/len/.l= ocal/share/emacs/28.0.50/lisp/org/org-feed
/home/len/.emacs.d/straight/b= uild/org/ob-comint hides /home/len/.local/share/emacs/28.0.50/lisp/org/ob-c= omint
/home/len/.emacs.d/straight/build/org/org-tempo hides /home/len/.l= ocal/share/emacs/28.0.50/lisp/org/org-tempo
/home/len/.emacs.d/straight/= build/org/org-protocol hides /home/len/.local/share/emacs/28.0.50/lisp/org/= org-protocol
/home/len/.emacs.d/straight/build/org/org-list hides /home/= len/.local/share/emacs/28.0.50/lisp/org/org-list
/home/len/.emacs.d/stra= ight/build/org/org-crypt hides /home/len/.local/share/emacs/28.0.50/lisp/or= g/org-crypt
/home/len/.emacs.d/straight/build/org/ob-forth hides /home/l= en/.local/share/emacs/28.0.50/lisp/org/ob-forth
/home/len/.emacs.d/strai= ght/build/org/ob-js hides /home/len/.local/share/emacs/28.0.50/lisp/org/ob-= js
/home/len/.emacs.d/straight/build/org/org-mobile hides /home/len/.loc= al/share/emacs/28.0.50/lisp/org/org-mobile
/home/len/.emacs.d/straight/b= uild/org/ob-lob hides /home/len/.local/share/emacs/28.0.50/lisp/org/ob-lob<= br>/home/len/.emacs.d/straight/build/org/ob-table hides /home/len/.local/sh= are/emacs/28.0.50/lisp/org/ob-table
/home/len/.emacs.d/straight/build/or= g/ob-processing hides /home/len/.local/share/emacs/28.0.50/lisp/org/ob-proc= essing
/home/len/.emacs.d/straight/build/org/ob-J hides /home/len/.local= /share/emacs/28.0.50/lisp/org/ob-J
/home/len/.emacs.d/straight/build/org= /ob-calc hides /home/len/.local/share/emacs/28.0.50/lisp/org/ob-calc
/ho= me/len/.emacs.d/straight/build/org/org-install hides /home/len/.local/share= /emacs/28.0.50/lisp/org/org-install
/home/len/.emacs.d/straight/build/or= g/ob hides /home/len/.local/share/emacs/28.0.50/lisp/org/ob
/home/len/.e= macs.d/straight/build/org/org-macro hides /home/len/.local/share/emacs/28.0= .50/lisp/org/org-macro
/home/len/.emacs.d/straight/build/org/ob-clojure = hides /home/len/.local/share/emacs/28.0.50/lisp/org/ob-clojure
/home/len= /.emacs.d/straight/build/org/ox-icalendar hides /home/len/.local/share/emac= s/28.0.50/lisp/org/ox-icalendar
/home/len/.emacs.d/straight/build/let-al= ist/let-alist hides /home/len/.local/share/emacs/28.0.50/lisp/emacs-lisp/le= t-alist
/home/len/.emacs.d/straight/build/eldoc/eldoc hides /home/len/.l= ocal/share/emacs/28.0.50/lisp/emacs-lisp/eldoc

Features:
(shadow = sort mail-extr emacsbug sendmail cl-print help-fns radix-tree
dabbrev ls= p-diagnostics company-oddmuse company-keywords company-etags
company-gta= gs company-dabbrev-code company-dabbrev company-files
company-clang comp= any-capf company-cmake company-semantic
company-template company-yasnipp= et company-bbdb company lsp-headerline
lsp-icons lsp-modeline lsp-ui lsp= -ui-flycheck lsp-ui-doc xwidget
image-mode exif lsp-ui-imenu lsp-ui-peek= lsp-ui-sideline lsp-ui-util
goto-addr vc-mtn vc-hg vc-bzr vc-src vc-scc= s vc-svn vc-cvs vc-rcs
bug-reference mule-util magit-extras treemacs-mag= it magit-bookmark
magit-submodule magit-obsolete 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 mag= it-tag
magit-merge magit-branch magit-reset magit-files magit-refs magit= -status
magit magit-repos magit-apply magit-wip magit-log which-func mag= it-diff
smerge-mode diff git-commit log-edit message rfc822 mml mml-sec = epa
gnus-util rmail rmail-loaddefs mm-decode mm-bodies mm-encode mail-pa= rse
rfc2231 rfc2047 rfc2045 mm-util ietf-drums mail-prsvr mailabbrev
= gmm-utils add-log magit-core magit-autorevert magit-margin
magit-transie= nt magit-process with-editor magit-mode magit-git
magit-section magit-ut= ils crm dired-aux view lsp-zig lsp-steep
lsp-svelte lsp-sqls lsp-yaml ls= p-xml lsp-vimscript lsp-vhdl lsp-vetur
lsp-html lsp-verilog lsp-vala lsp= -terraform lsp-tex lsp-sorbet
lsp-solargraph lsp-rust lsp-rf lsp-r lsp-p= urescript lsp-pwsh lsp-php
lsp-perl lsp-ocaml lsp-nix lsp-nim lsp-markdo= wn lsp-lua lsp-kotlin
lsp-json lsp-javascript lsp-haxe lsp-groovy lsp-ha= ck lsp-go
lsp-completion lsp-gdscript lsp-fsharp lsp-fortran lsp-eslint = lsp-erlang
lsp-elixir lsp-elm lsp-dockerfile lsp-dhall lsp-d lsp-css lsp= -csharp
gnutls lsp-crystal lsp-cmake lsp-clojure lsp-clangd dom lsp-bash=
lsp-angular lsp-ada lsp-actionscript ccls ccls-member-hierarchy
ccls= -inheritance-hierarchy ccls-call-hierarchy ccls-tree ccls-code-lens
ccls= -semantic-highlight ccls-common recentf treemacs-bookmarks bookmark
scad= -dbus dbus xml scad-mode symbol-overlay ws-butler
display-fill-column-in= dicator display-line-numbers editorconfig-core
editorconfig-core-handle = editorconfig-fnmatch ffap counsel xdg
disp-table server diary-lib diary-= loaddefs cal-menu calendar
cal-loaddefs generic hydra python-pytest pyth= on-pytest-autoloads
importmagic epc ctable concurrent deferred cl import= magic-autoloads
epc-autoloads ctable-autoloads concurrent-autoloads defe= rred-autoloads
auto-remove auto-remove-autoloads py-isort py-isort-autol= oads
python-black reformatter python-black-autoloads reformatter-autoloa= ds
blacken blacken-autoloads flycheck-mypy flycheck-mypy-autoloads elpy<= br>elpy-rpc elpy-shell elpy-profile elpy-django elpy-refactor python
tra= mp-sh tramp tramp-loaddefs trampver tramp-integration tramp-compat
parse= -time iso8601 time-date ls-lisp ido files-x cus-edit pp
elpy-autoloads h= ighlight-indentation-autoloads groovy-mode
groovy-mode-autoloads shell-e= xtras eradio-autoloads atomic-chrome
websocket bindat atomic-chrome-auto= loads websocket-autoloads
counsel-keepassxc-autoloads pyvenv eshell esh-= cmd esh-ext esh-opt
esh-proc esh-io esh-arg esh-module esh-groups esh-ut= il pyvenv-autoloads
ccls-autoloads lsp-pyls lsp-ivy lsp-mode tree-widget= wid-edit spinner
network-stream puny nsm rmc markdown-mode noutline out= line lv f epg
epg-config lsp-protocol lsp-ivy-autoloads lsp-ui-autoloads=
lsp-mode-autoloads spinner-autoloads f-autoloads eldoc-autoloads
js2= -mode etags fileloop generator js cc-mode cc-fonts cc-guess cc-menus
cc-= cmds cc-styles cc-align cc-engine cc-vars cc-defs js2-mode-autoloads
ess= ess-utils ess-custom ess-autoloads dts-mode dts-mode-autoloads
gnuplot = info-look gnuplot-autoloads scad-dbus-autoloads
scad-mode-autoloads proj= ectile ibuf-ext projectile-autoloads grip-mode
grip-mode-autoloads markd= own-mode-autoloads org-bullets-autoloads
multi-web-mode multi-web-mode-a= utoloads yaml-mode yaml-mode-autoloads
csv-mode-autoloads ediff ediff-me= rg ediff-mult ediff-wind ediff-diff
ediff-help ediff-init ediff-util git= -timemachine transient format-spec
vc-git git-timemachine-autoloads git-= messenger-autoloads flycheck-aspell
ispell flycheck-aspell-autoloads fly= check derived find-func jka-compr
let-alist flycheck-autoloads let-alist= -autoloads pkg-info-autoloads
epl-autoloads company-autoloads yasnippet-= snippets-autoloads
yasnippet-snippets ivy-yasnippet yasnippet multiple-c= ursors
mc-separate-operations rectangular-region-mode mc-mark-pop mc-edi= t-lines
mc-hide-unmatched-lines-mode mc-mark-more mc-cycle-cursors
mu= ltiple-cursors-core multiple-cursors-autoloads iedit-autoloads
visual-re= gexp-autoloads wgrep-ag wgrep-ag-autoloads wgrep
wgrep-autoloads evil-nu= mbers-autoloads rectangle-utils rect
rectangle-utils-autoloads smartpare= ns thingatpt smartparens-autoloads
ws-butler-autoloads dtrt-indent dtrt-= indent-autoloads editorconfig
editorconfig-autoloads expand-region-autol= oads diredfl diredfl-autoloads
dired-du-autoloads dired-single dired-sin= gle-autoloads
dired-hide-dotfiles dired-hide-dotfiles-autoloads direnvdirenv-autoloads shell pcomplete midnight dumb-jump popup
dumb-jump-au= toloads popup-autoloads ivy-yasnippet-autoloads
yasnippet-autoloads coun= sel-autoloads request mailheader autorevert
mail-utils request-autoloads= swiper swiper-autoloads posframe
backward-forward backward-forward-auto= loads crux-autoloads edmacro
kmacro move-text move-text-autoloads use-pa= ckage-bind-key bind-key
which-key which-key-autoloads minimap minimap-au= toloads
treemacs-magit-autoloads magit-autoloads git-commit-autoloadswith-editor-autoloads transient-autoloads treemacs-icons-dired
treemacs= -icons-dired-autoloads treemacs treemacs-header-line
treemacs-compatibil= ity treemacs-mode treemacs-interface
treemacs-extensions treemacs-mouse-= interface treemacs-tags imenu xref
project treemacs-persistence treemacs= -filewatch-mode filenotify
treemacs-follow-mode treemacs-rendering treem= acs-async
treemacs-workspaces treemacs-dom treemacs-visuals
treemacs-= fringe-indicator treemacs-scope treemacs-faces treemacs-icons
treemacs-t= hemes treemacs-core-utils pfuture inline ht treemacs-logging
treemacs-cu= stomization treemacs-macros treemacs-autoloads cfrs-autoloads
posframe-a= utoloads ht-autoloads hydra-autoloads lv-autoloads
pfuture-autoloads ace= -window-autoloads avy-autoloads
all-the-icons-ibuffer ibuffer ibuffer-lo= addefs
all-the-icons-ibuffer-autoloads all-the-icons-ivy ivy ivy-facesivy-overlay colir all-the-icons-ivy-autoloads ivy-autoloads
all-the-ic= ons all-the-icons-faces data-material data-weathericons
data-octicons da= ta-fileicons data-faicons data-alltheicons
all-the-icons-autoloads ligat= ure ligature-autoloads
symbol-overlay-autoloads highlight-indent-guides<= br>highlight-indent-guides-autoloads diff-hl-margin diff-hl-dired dired
= dired-loaddefs diff-hl log-view pcvs-util vc-dir ewoc vc vc-dispatcher
d= iff-mode easy-mmode diff-hl-autoloads hl-line whitespace xterm-color
xte= rm-color-autoloads rainbow-mode rainbow-mode-autoloads pcase
spaceline-c= onfig spaceline-segments s spaceline powerline comp comp-cstr
warnings r= x powerline-separators powerline-themes dash
spaceline-autoloads s-autol= oads dash-autoloads powerline-autoloads
finder-inf jetbrains-darcula-the= me-autoloads modus-vivendi-theme
modus-themes modus-vivendi-theme-autolo= ads use-package-diminish
auto-minor-mode auto-minor-mode-autoloads dimin= ish diminish-autoloads
try package browse-url url url-proxy url-privacy = url-expand url-methods
url-history url-cookie url-domsuf url-util mailca= p url-handlers
url-parse auth-source eieio eieio-core eieio-loaddefs pas= sword-cache
json map url-vars try-autoloads olivetti olivetti-autoloads = mixed-pitch
face-remap mixed-pitch-autoloads pulse color advice use-pack= age-ensure
xt-mouse use-package-core use-package-autoloads bind-key-auto= loads
straight-autoloads info cl-seq cl-extra help-mode seq byte-opt str= aight
subr-x cl-macs gv cl-loaddefs cl-lib bytecomp byte-compile cconvlazy-lock paren avoid grep compile text-property-search comint
ansi-co= lor ring delsel cus-load iso-transl tooltip eldoc electric
uniquify edif= f-hook vc-hooks lisp-float-type mwheel term/x-win x-win
term/common-win = x-dnd tool-bar dnd fontset image regexp-opt fringe
tabulated-list replac= e newcomment text-mode elisp-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 cl-= generic cham georgian utf-8-lang
misc-lang vietnamese tibetan thai tai-v= iet lao korean japanese eucjp-ms
cp51932 hebrew greek romanian slovak cz= ech european ethiopic indian
cyrillic chinese composite charscript charp= rop case-table epa-hook
jka-cmpr-hook help simple abbrev obarray cl-prel= oaded nadvice button
loaddefs faces cus-face macroexp files window text-= properties overlay
sha1 md5 base64 format env code-pages mule custom wid= get
hashtable-print-readable backquote threads xwidget-internal dbusbind=
inotify lcms2 dynamic-setting system-font-setting font-render-settingcairo move-toolbar gtk x-toolkit x multi-tty make-network-process
nati= vecomp emacs)

Memory information:
((conses 16 1428188 1245272)=C2=A0(symbols 48 61064 3)
=C2=A0(strings 32 220570 170030)
=C2=A0(s= tring-bytes 1 8148602)
=C2=A0(vectors 16 115384)
=C2=A0(vector-slots = 8 2862776 1062890)
=C2=A0(floats 8 1201 2813)
=C2=A0(intervals 56 298= 89 20776)
=C2=A0(buffers 992 62))
--000000000000e5097e05c11376a9-- From unknown Sun Jun 22 00:52:03 2025 X-Loop: help-debbugs@gnu.org Subject: bug#48095: 28.0.50; display-line-numbers-mode / display-line-numbers-width-start incorrect Resent-From: Eli Zaretskii Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Thu, 29 Apr 2021 09:04:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 48095 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Len Trigg Cc: 48095@debbugs.gnu.org Received: via spool by 48095-submit@debbugs.gnu.org id=B48095.161968703722730 (code B ref 48095); Thu, 29 Apr 2021 09:04:02 +0000 Received: (at 48095) by debbugs.gnu.org; 29 Apr 2021 09:03:57 +0000 Received: from localhost ([127.0.0.1]:54821 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lc2aS-0005uY-O6 for submit@debbugs.gnu.org; Thu, 29 Apr 2021 05:03:57 -0400 Received: from eggs.gnu.org ([209.51.188.92]:48058) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lc2aP-0005uJ-2I for 48095@debbugs.gnu.org; Thu, 29 Apr 2021 05:03:54 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]:38767) by eggs.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lc2aJ-0003AE-Tk; Thu, 29 Apr 2021 05:03:47 -0400 Received: from 84.94.185.95.cable.012.net.il ([84.94.185.95]:3884 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1lc2aI-0005cQ-Rp; Thu, 29 Apr 2021 05:03:47 -0400 Date: Thu, 29 Apr 2021 12:03:36 +0300 Message-Id: <83pmydea3b.fsf@gnu.org> From: Eli Zaretskii In-Reply-To: (message from Len Trigg on Thu, 29 Apr 2021 14:43:30 +1200) References: X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > From: Len Trigg > Date: Thu, 29 Apr 2021 14:43:30 +1200 > > I am using display-line-numbers mode, and would like to avoid it > changing the width assigned to the line numbers as the buffer is > scrolled. I have (setq display-line-numbers-width-start t), which > purports to check in advance how much width is required. It seems > somehow incorrect though. To reproduce: > > 1 Create a buffer with 90 lines. > > 2 Ensure the window is approx 40 lines tall, displaying the first 40 lines > of the buffer. > > 3 Ensure display-line-numbers-width-start is t > > 4 Turn on display-line-numbers-mode. > > 5 Scroll down to near the bottom of the buffer. At some point, emacs > adds an extra character of width to the line numbers, even though no > line number higher than 90 is ever shown. If emacs needed an extra > character for whatever reason, surely display-line-numbers-width-start > should have incorporated that up front (otherwise what's the point)? This is not exactly as simple as it may sound. When the line numbers are produced at display time, Emacs accounts for the maximum possible number of lines that could fit in the window, and enlarges the width when the window could display more lines, so that the width doesn't change in the middle of the window. So if the window is, say, 35 lines high, and the last portion of the buffer is about to be displayed, Emacs computes the width necessary to display up to 35 more lines, even if those lines are not yet in the buffer. There's also the possibility that the text will have different faces, and that could affect the actual number of lines (via the font height). But this cannot be done up front, because when the mode is turned on in a buffer, the dimensions of the window where it will be displayed are not necessarily known, and neither are the fonts that will be used to display the buffer. And windows nowadays can be as small as a few lines or as toll as the full screen. What I can offer to make the situation slightly better is to allow display-line-numbers-width-start to have a numeric value, which will then be interpreted as the number of extra lines to account for when computing the required width. A user who wants this is supposed to know how tall are the windows in his/her sessions, and should set the value to the maximum height of windows he/she wants to support. The patch for that is below; could you please try it and see if this provides a satisfactory solution for your problem? diff --git a/lisp/display-line-numbers.el b/lisp/display-line-numbers.el index a6fa813..0a834d4 100644 --- a/lisp/display-line-numbers.el +++ b/lisp/display-line-numbers.el @@ -56,12 +56,15 @@ display-line-numbers-grow-only (defcustom display-line-numbers-width-start nil "If non-nil, count number of lines to use for line number width. -When `display-line-numbers-mode' is turned on, -`display-line-numbers-width' is set to the minimum width necessary -to display all line numbers in the buffer." +When `display-line-numbers-mode' is turned on, if this option is +non-nil, `display-line-numbers-width' is set up front to a width +necessary to display all line numbers in the buffer. If the value +is a positive number, it is interpreted as extra lines to account +for when computing the required width." :group 'display-line-numbers - :type 'boolean - :version "26.1") + :type '(choice (boolean :tag "Minimum width for buffer's line count") + (integer :tag "Number of extra lines to account for")) + :version "28.1") (defun display-line-numbers-update-width () "Prevent the line number width from shrinking." @@ -83,7 +86,11 @@ display-line-numbers-mode (when display-line-numbers-width-start (setq display-line-numbers-width (length (number-to-string - (count-lines (point-min) (point-max)))))) + (+ (count-lines (point-min) (point-max)) + (if (and (numberp display-line-numbers-width-start) + (> display-line-numbers-width-start 0)) + display-line-numbers-width-start + 0)))))) (when display-line-numbers-grow-only (add-hook 'pre-command-hook #'display-line-numbers-update-width nil t)) (setq display-line-numbers display-line-numbers-type)) From unknown Sun Jun 22 00:52:03 2025 X-Loop: help-debbugs@gnu.org Subject: bug#48095: 28.0.50; display-line-numbers-mode / display-line-numbers-width-start incorrect Resent-From: Len Trigg Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Thu, 29 Apr 2021 22:30:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 48095 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Eli Zaretskii Cc: 48095@debbugs.gnu.org Received: via spool by 48095-submit@debbugs.gnu.org id=B48095.161973538814092 (code B ref 48095); Thu, 29 Apr 2021 22:30:02 +0000 Received: (at 48095) by debbugs.gnu.org; 29 Apr 2021 22:29:48 +0000 Received: from localhost ([127.0.0.1]:57019 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lcFAJ-0003fE-TY for submit@debbugs.gnu.org; Thu, 29 Apr 2021 18:29:48 -0400 Received: from mail-pg1-f181.google.com ([209.85.215.181]:37589) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lcFAH-0003f0-MT for 48095@debbugs.gnu.org; Thu, 29 Apr 2021 18:29:46 -0400 Received: by mail-pg1-f181.google.com with SMTP id p2so32695904pgh.4 for <48095@debbugs.gnu.org>; Thu, 29 Apr 2021 15:29:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=wzRqQXRxbk41jlnizF6d3hImY6Uf4z+hqMCp2AViyts=; b=hmI3dAx16EkrI6atrCIUsksvijoRc7i9nsoCiAB2/trAiOH/JqgSpPs15uq9MvnTnR ZxMLBErI1UFovkggwoSr2wEmmRaIsN8/cbQjXv+zGx1qo+5jqL+7S6OJCzbSe/JjF9hi jhODVYKQVtGriXqrXFAQA1tFS6fCE4eZUfEnDZbbqIjsfR+ni3PJEAE7L0Tdkwt77uC4 X2ZXDD8MpyVoTNtUF2oXDgzUpke34JJglNYkeeWFuLWCFtddbplWU4+DFjev5J43BuJw +qsVIW2apjfWhpLLxOIkCre+Q4s+T/mwqvItuM3GxdW2JwCcBa/MDq0SoLdtIbj6eLky B26g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=wzRqQXRxbk41jlnizF6d3hImY6Uf4z+hqMCp2AViyts=; b=oV3iLs+E8O4Y9fTc4WlW+vRo68vh4GPRiBumxWGB4Bn/knuLxM/Sm4WX7IOY7WZ/+z QMLb3JObrmEfp/FhSnc4zMw3G02WL2Q0mz5UCE7V0J85FjjEKb/gZGSwsZKJmnPJD1No dQ5Je0mITgG4ERLxQ01Hq+tcwehJHtddY+P+iT86MNyyGj+7GAIyi2fOim+Sxny2AvG0 /nZqaoqOkgwPWoupDznHuns+GqmtempO+pSRvPbzZIVD8B/CQkMR9ccRxnd5FhxY3MB6 xFO/l0v0igeb4da+mnfuRU+tBRAVy4txZunKk4Dl1EK0RoQVHXhP2GG+ffZZVJVp+jp4 V9GQ== X-Gm-Message-State: AOAM533iqg7bWCbN7MwEDlD/bZaG97o1Be/TuMYsWoQgQE9ApIkER4/8 i07aKoshJgCKhyjrpnsIbvJpz16QoSWrm9tVYnM= X-Google-Smtp-Source: ABdhPJz4b6vFx2o/Iy3zJAyjySsRhz1L3VWeViIDrPr97ar5ZBwLFrn01cwV4Ijzeu2J53SGI/eSd+EsvSPPD7JoCUM= X-Received: by 2002:aa7:8010:0:b029:254:f083:66fa with SMTP id j16-20020aa780100000b0290254f08366famr1942895pfi.17.1619735379670; Thu, 29 Apr 2021 15:29:39 -0700 (PDT) MIME-Version: 1.0 References: <83pmydea3b.fsf@gnu.org> In-Reply-To: <83pmydea3b.fsf@gnu.org> From: Len Trigg Date: Fri, 30 Apr 2021 10:29:23 +1200 Message-ID: Content-Type: multipart/alternative; boundary="000000000000ef783f05c12407bf" X-Spam-Score: 0.0 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) --000000000000ef783f05c12407bf Content-Type: text/plain; charset="UTF-8" That seems to work perfectly for my goal (and I assume the intent of display-line-numbers-width-start) of having the width stay fixed unless content gets added to the buffer. It might help to add guidance in the docs that extra lines would typically be set to the maximum window height. Or maybe that value could instead be automatically computed from the height of the tallest emacs frame at that time? I assume that's not too intensive to determine since it happens once when the mode is activated? On Thu, 29 Apr 2021 at 21:03, Eli Zaretskii wrote: > > From: Len Trigg > > Date: Thu, 29 Apr 2021 14:43:30 +1200 > > > > I am using display-line-numbers mode, and would like to avoid it > > changing the width assigned to the line numbers as the buffer is > > scrolled. I have (setq display-line-numbers-width-start t), which > > purports to check in advance how much width is required. It seems > > somehow incorrect though. To reproduce: > > > > 1 Create a buffer with 90 lines. > > > > 2 Ensure the window is approx 40 lines tall, displaying the first 40 > lines > > of the buffer. > > > > 3 Ensure display-line-numbers-width-start is t > > > > 4 Turn on display-line-numbers-mode. > > > > 5 Scroll down to near the bottom of the buffer. At some point, emacs > > adds an extra character of width to the line numbers, even though no > > line number higher than 90 is ever shown. If emacs needed an extra > > character for whatever reason, surely display-line-numbers-width-start > > should have incorporated that up front (otherwise what's the point)? > > This is not exactly as simple as it may sound. When the line numbers > are produced at display time, Emacs accounts for the maximum possible > number of lines that could fit in the window, and enlarges the width > when the window could display more lines, so that the width doesn't > change in the middle of the window. So if the window is, say, 35 > lines high, and the last portion of the buffer is about to be > displayed, Emacs computes the width necessary to display up to 35 more > lines, even if those lines are not yet in the buffer. There's also > the possibility that the text will have different faces, and that > could affect the actual number of lines (via the font height). > > But this cannot be done up front, because when the mode is turned on > in a buffer, the dimensions of the window where it will be displayed > are not necessarily known, and neither are the fonts that will be used > to display the buffer. And windows nowadays can be as small as a few > lines or as toll as the full screen. > > What I can offer to make the situation slightly better is to allow > display-line-numbers-width-start to have a numeric value, which will > then be interpreted as the number of extra lines to account for when > computing the required width. A user who wants this is supposed to > know how tall are the windows in his/her sessions, and should set the > value to the maximum height of windows he/she wants to support. > > The patch for that is below; could you please try it and see if this > provides a satisfactory solution for your problem? > > diff --git a/lisp/display-line-numbers.el b/lisp/display-line-numbers.el > index a6fa813..0a834d4 100644 > --- a/lisp/display-line-numbers.el > +++ b/lisp/display-line-numbers.el > @@ -56,12 +56,15 @@ display-line-numbers-grow-only > > (defcustom display-line-numbers-width-start nil > "If non-nil, count number of lines to use for line number width. > -When `display-line-numbers-mode' is turned on, > -`display-line-numbers-width' is set to the minimum width necessary > -to display all line numbers in the buffer." > +When `display-line-numbers-mode' is turned on, if this option is > +non-nil, `display-line-numbers-width' is set up front to a width > +necessary to display all line numbers in the buffer. If the value > +is a positive number, it is interpreted as extra lines to account > +for when computing the required width." > :group 'display-line-numbers > - :type 'boolean > - :version "26.1") > + :type '(choice (boolean :tag "Minimum width for buffer's line count") > + (integer :tag "Number of extra lines to account for")) > + :version "28.1") > > (defun display-line-numbers-update-width () > "Prevent the line number width from shrinking." > @@ -83,7 +86,11 @@ display-line-numbers-mode > (when display-line-numbers-width-start > (setq display-line-numbers-width > (length (number-to-string > - (count-lines (point-min) (point-max)))))) > + (+ (count-lines (point-min) (point-max)) > + (if (and (numberp > display-line-numbers-width-start) > + (> display-line-numbers-width-start > 0)) > + display-line-numbers-width-start > + 0)))))) > (when display-line-numbers-grow-only > (add-hook 'pre-command-hook #'display-line-numbers-update-width > nil t)) > (setq display-line-numbers display-line-numbers-type)) > --000000000000ef783f05c12407bf Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
That seems to work perfectly for my goal (and I assum= e the intent of display-line-numbers-width-start) of having the width stay = fixed unless content gets added to the buffer. It might help to add guidanc= e in the docs that extra lines would typically be set to the maximum window= height. Or maybe that value could instead be automatically computed from t= he height of the tallest emacs frame at that time? I assume that's not = too intensive to determine since it happens once when the mode is activated= ?


On Thu, 29 Apr 2021 at 21:03, Eli Zaretskii <eliz@gnu.org> wrote:
> From: Len Trigg <lenbok@gmail.com>
> Date: Thu, 29 Apr 2021 14:43:30 +1200
>
> I am using display-line-numbers mode, and would like to avoid it
> changing the width assigned to the line numbers as the buffer is
> scrolled. I have (setq display-line-numbers-width-start t), which
> purports to check in advance how much width is required. It seems
> somehow incorrect though. To reproduce:
>
> 1 Create a buffer with 90 lines.
>
> 2 Ensure the window is approx 40 lines tall, displaying the first 40 l= ines
> of the buffer.
>
> 3 Ensure display-line-numbers-width-start is t
>
> 4 Turn on display-line-numbers-mode.
>
> 5 Scroll down to near the bottom of the buffer. At some point, emacs >=C2=A0 =C2=A0adds an extra character of width to the line numbers, even= though no
>=C2=A0 =C2=A0line number higher than 90 is ever shown. If emacs needed = an extra
>=C2=A0 =C2=A0character for whatever reason, surely display-line-numbers= -width-start
>=C2=A0 =C2=A0should have incorporated that up front (otherwise what'= ;s the point)?

This is not exactly as simple as it may sound.=C2=A0 When the line numbers<= br> are produced at display time, Emacs accounts for the maximum possible
number of lines that could fit in the window, and enlarges the width
when the window could display more lines, so that the width doesn't
change in the middle of the window.=C2=A0 So if the window is, say, 35
lines high, and the last portion of the buffer is about to be
displayed, Emacs computes the width necessary to display up to 35 more
lines, even if those lines are not yet in the buffer.=C2=A0 There's als= o
the possibility that the text will have different faces, and that
could affect the actual number of lines (via the font height).

But this cannot be done up front, because when the mode is turned on
in a buffer, the dimensions of the window where it will be displayed
are not necessarily known, and neither are the fonts that will be used
to display the buffer.=C2=A0 And windows nowadays can be as small as a few<= br> lines or as toll as the full screen.

What I can offer to make the situation slightly better is to allow
display-line-numbers-width-start to have a numeric value, which will
then be interpreted as the number of extra lines to account for when
computing the required width.=C2=A0 A user who wants this is supposed to know how tall are the windows in his/her sessions, and should set the
value to the maximum height of windows he/she wants to support.

The patch for that is below; could you please try it and see if this
provides a satisfactory solution for your problem?

diff --git a/lisp/display-line-numbers.el b/lisp/display-line-numbers.el index a6fa813..0a834d4 100644
--- a/lisp/display-line-numbers.el
+++ b/lisp/display-line-numbers.el
@@ -56,12 +56,15 @@ display-line-numbers-grow-only

=C2=A0(defcustom display-line-numbers-width-start nil
=C2=A0 =C2=A0"If non-nil, count number of lines to use for line number= width.
-When `display-line-numbers-mode' is turned on,
-`display-line-numbers-width' is set to the minimum width necessary
-to display all line numbers in the buffer."
+When `display-line-numbers-mode' is turned on, if this option is
+non-nil, `display-line-numbers-width' is set up front to a width
+necessary to display all line numbers in the buffer.=C2=A0 If the value +is a positive number, it is interpreted as extra lines to account
+for when computing the required width."
=C2=A0 =C2=A0:group 'display-line-numbers
-=C2=A0 :type 'boolean
-=C2=A0 :version "26.1")
+=C2=A0 :type '(choice (boolean :tag "Minimum width for buffer'= ;s line count")
+=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(integer :ta= g "Number of extra lines to account for"))
+=C2=A0 :version "28.1")

=C2=A0(defun display-line-numbers-update-width ()
=C2=A0 =C2=A0"Prevent the line number width from shrinking."
@@ -83,7 +86,11 @@ display-line-numbers-mode
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(when display-line-numbers-width-start =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(setq display-line-numbers-width =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(length (numb= er-to-string
-=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0(count-lines (point-min) (point-max))))))
+=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0(+ (count-lines (point-min) (point-max))
+=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 (if (and (numberp display-line-numbers-width-start= )
+=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(> display-li= ne-numbers-width-start 0))
+=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 display-line-numbers-width-start
+=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 0))))))
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(when display-line-numbers-grow-only
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(add-hook 'pre-command-hook #&= #39;display-line-numbers-update-width nil t))
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(setq display-line-numbers display-line-n= umbers-type))
--000000000000ef783f05c12407bf-- From unknown Sun Jun 22 00:52:03 2025 MIME-Version: 1.0 X-Mailer: MIME-tools 5.505 (Entity 5.505) X-Loop: help-debbugs@gnu.org From: help-debbugs@gnu.org (GNU bug Tracking System) To: Len Trigg Subject: bug#48095: closed (Re: bug#48095: 28.0.50; display-line-numbers-mode / display-line-numbers-width-start incorrect) Message-ID: References: <83czuccjg2.fsf@gnu.org> X-Gnu-PR-Message: they-closed 48095 X-Gnu-PR-Package: emacs Reply-To: 48095@debbugs.gnu.org Date: Fri, 30 Apr 2021 07:38:02 +0000 Content-Type: multipart/mixed; boundary="----------=_1619768282-15998-1" This is a multi-part message in MIME format... ------------=_1619768282-15998-1 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Your bug report #48095: 28.0.50; display-line-numbers-mode / display-line-numbers-width-sta= rt incorrect 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 48095@debbugs.gnu.org. --=20 48095: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=3D48095 GNU Bug Tracking System Contact help-debbugs@gnu.org with problems ------------=_1619768282-15998-1 Content-Type: message/rfc822 Content-Disposition: inline Content-Transfer-Encoding: 7bit Received: (at 48095-done) by debbugs.gnu.org; 30 Apr 2021 07:37:04 +0000 Received: from localhost ([127.0.0.1]:57387 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lcNhw-00048s-J9 for submit@debbugs.gnu.org; Fri, 30 Apr 2021 03:37:04 -0400 Received: from eggs.gnu.org ([209.51.188.92]:48402) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lcNhu-00048M-N4 for 48095-done@debbugs.gnu.org; Fri, 30 Apr 2021 03:37:03 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]:58517) by eggs.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lcNhp-0006E5-Fu; Fri, 30 Apr 2021 03:36:57 -0400 Received: from 84.94.185.95.cable.012.net.il ([84.94.185.95]:3726 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1lcNhm-0000Kb-K7; Fri, 30 Apr 2021 03:36:57 -0400 Date: Fri, 30 Apr 2021 10:36:45 +0300 Message-Id: <83czuccjg2.fsf@gnu.org> From: Eli Zaretskii To: Len Trigg In-Reply-To: (message from Len Trigg on Fri, 30 Apr 2021 10:29:23 +1200) Subject: Re: bug#48095: 28.0.50; display-line-numbers-mode / display-line-numbers-width-start incorrect References: <83pmydea3b.fsf@gnu.org> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 48095-done Cc: 48095-done@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > From: Len Trigg > Date: Fri, 30 Apr 2021 10:29:23 +1200 > Cc: 48095@debbugs.gnu.org > > That seems to work perfectly for my goal (and I assume the intent of display-line-numbers-width-start) of > having the width stay fixed unless content gets added to the buffer. It might help to add guidance in the docs > that extra lines would typically be set to the maximum window height. Thanks, I added that to the doc string. > Or maybe that value could instead be > automatically computed from the height of the tallest emacs frame at that time? I assume that's not too > intensive to determine since it happens once when the mode is activated? This would be over-engineering, IMO. First, some people tend to have lots of frames, so this might be expensive. Second, what matters is not the frame height but the window height, and we could have many windows even if the number of frames is small. Third, some frames and windows could be dedicated to special displays, and thus not really relevant (example: Speedbar frames), so we will no doubt be asked to provide yet another defcustom, to let users control which frames are exempt from accounting for their height. So I think asking users to provide a value strikes a good balance between functionality and complexity, at least unless we hear about use cases where automatic adjustment would really make a lot of sense. With that in mind, I installed the change on the master branch, and I'm closing this bug report. ------------=_1619768282-15998-1 Content-Type: message/rfc822 Content-Disposition: inline Content-Transfer-Encoding: 7bit Received: (at submit) by debbugs.gnu.org; 29 Apr 2021 02:44:02 +0000 Received: from localhost ([127.0.0.1]:54487 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lbwel-0004oz-RQ for submit@debbugs.gnu.org; Wed, 28 Apr 2021 22:44:02 -0400 Received: from lists.gnu.org ([209.51.188.17]:44162) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lbwei-0004om-U5 for submit@debbugs.gnu.org; Wed, 28 Apr 2021 22:43:59 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:43234) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lbwei-0003Pr-Ma for bug-gnu-emacs@gnu.org; Wed, 28 Apr 2021 22:43:56 -0400 Received: from mail-pg1-x52c.google.com ([2607:f8b0:4864:20::52c]:42672) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lbwec-0008AD-84 for bug-gnu-emacs@gnu.org; Wed, 28 Apr 2021 22:43:56 -0400 Received: by mail-pg1-x52c.google.com with SMTP id m12so5374114pgr.9 for ; Wed, 28 Apr 2021 19:43:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:from:date:message-id:subject:to; bh=mSm1i1HITnBpnQi+HSUoevxnF3MRas69hwdaIODTzVg=; b=L6xj1dRxTfuo1emNB49PQFnhy5BBsHOiTYFtMHZzbNeGihDvjsYbXx602nktOi40Zf VqFC2/hkz3GviVj1dPYP0loY7hO91deHoIoI83o38G0z1tNbMdGRBkhuNlzjck2W04ba 36MLsbBUhoKQoDs5RMz0RM84bOvJFU8ZgqJxx8qfuQr2lWNWDCVrwoGq5O8I3yNrVuiQ ibbuSLaf1onAwu1MSSIn20K26e/u8t9PdjCJ2AUMuDaggHp/gICZiKWZ5SclGL2A+Ppl 3qTvs8ovcL+z+OCpG2JSU3DEANOX3HRAUTJ966tiATai9IhNdOX5goh+Jrv56lV3KASS FZ6A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=mSm1i1HITnBpnQi+HSUoevxnF3MRas69hwdaIODTzVg=; b=b9bpuTVLwr5LryaG8vKJGxvmZC3p96WbCSTVidl9lKuXnSsZb1WQjiZf/LUfnvXO6m cgNBosNmPVgTTWG11jNFwXF85zgj6O5XkfYcDaNaO70iq+5T3HVK/8QPU3TNsbb/vPEb Jg09CxDtPFBDYGeXepHAmh8RNzHHGesFlJF2cRZxfv4s736dkFxRgmowZ06H5pZ8mBYy NEW7aLHE4XEZ2/S1xQoYCKNF2SUSZS9kboypE0p4DEnRhsxfKIEdhsr/h861Xpbe4lXd CSHL8X+ANq7nD5ppvz834/LNCfcEpV2d73Bq99N5WmYXwTaTfEHEmH5YzEqfPsg/Nwp/ yTng== X-Gm-Message-State: AOAM530zbHxxnmPV+AbAYc765U2z330LxxPgkGZIiQrrsq0YRAm0ZD7+ nEgmmYGwmp7xe1P/eKB2gCoAW24RAiCCb3JN+kGsGcQwMgVJvg== X-Google-Smtp-Source: ABdhPJzzWFuxe3Ps43d1nmN7UIi8IBjHcps1jri+Sqxfxb8iF+bLXXLHvvhPsF5wIpSdTp/FCBVZV5pLnDo/MHrjV3I= X-Received: by 2002:a05:6a00:1588:b029:272:f5b1:c96c with SMTP id u8-20020a056a001588b0290272f5b1c96cmr23222503pfk.47.1619664226813; Wed, 28 Apr 2021 19:43:46 -0700 (PDT) MIME-Version: 1.0 From: Len Trigg Date: Thu, 29 Apr 2021 14:43:30 +1200 Message-ID: Subject: 28.0.50; display-line-numbers-mode / display-line-numbers-width-start incorrect To: bug-gnu-emacs@gnu.org Content-Type: multipart/alternative; boundary="000000000000e5097e05c11376a9" Received-SPF: pass client-ip=2607:f8b0:4864:20::52c; envelope-from=lenbok@gmail.com; helo=mail-pg1-x52c.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-Spam-Score: -1.3 (-) X-Debbugs-Envelope-To: submit X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -2.3 (--) --000000000000e5097e05c11376a9 Content-Type: text/plain; charset="UTF-8" I am using display-line-numbers mode, and would like to avoid it changing the width assigned to the line numbers as the buffer is scrolled. I have (setq display-line-numbers-width-start t), which purports to check in advance how much width is required. It seems somehow incorrect though. To reproduce: 1 Create a buffer with 90 lines. 2 Ensure the window is approx 40 lines tall, displaying the first 40 lines of the buffer. 3 Ensure display-line-numbers-width-start is t 4 Turn on display-line-numbers-mode. 5 Scroll down to near the bottom of the buffer. At some point, emacs adds an extra character of width to the line numbers, even though no line number higher than 90 is ever shown. If emacs needed an extra character for whatever reason, surely display-line-numbers-width-start should have incorporated that up front (otherwise what's the point)? In GNU Emacs 28.0.50 (build 4, x86_64-pc-linux-gnu, GTK+ Version 3.24.20, cairo version 1.16.0) of 2021-04-27 built on noir Repository revision: 40c71e574ad27deee003a0850a40171750234d59 Repository branch: master Windowing system distributor 'The X.Org Foundation', version 11.0.12009000 System Description: Ubuntu 20.04.2 LTS Configured using: 'configure --prefix=/home/len/.local --with-xwidgets --with-rsvg --with-cairo --with-native-compilation' Configured features: CAIRO DBUS FREETYPE GIF GLIB GMP GNUTLS GSETTINGS HARFBUZZ JPEG JSON LCMS2 LIBSELINUX LIBXML2 MODULES NATIVE_COMP NOTIFY INOTIFY PDUMPER PNG RSVG SECCOMP SOUND THREADS TIFF TOOLKIT_SCROLL_BARS X11 XDBE XIM XPM XWIDGETS GTK3 ZLIB Important settings: value of $LANG: en_NZ.UTF-8 value of $XMODIFIERS: @im=ibus locale-coding-system: utf-8-unix Major mode: Text Minor modes in effect: global-company-mode: t company-mode: t global-git-commit-mode: t magit-auto-revert-mode: t recentf-mode: t display-line-numbers-mode: t global-atomic-chrome-edit-mode: t pyvenv-mode: t projectile-mode: t smartparens-global-mode: t smartparens-mode: t editorconfig-mode: t diredfl-global-mode: t direnv-mode: t shell-dirtrack-mode: t backward-forward-mode: t override-global-mode: t which-key-mode: t treemacs-icons-dired-mode: t treemacs-filewatch-mode: t treemacs-follow-mode: t treemacs-git-mode: deferred treemacs-fringe-indicator-mode: t all-the-icons-ibuffer-mode: t ivy-mode: t global-ligature-mode: t ligature-mode: t diff-hl-margin-local-mode: t diff-hl-margin-mode: t global-diff-hl-mode: t diff-hl-mode: t xterm-mouse-mode: t straight-use-package-mode: t straight-package-neutering-mode: t show-paren-mode: t delete-selection-mode: t tooltip-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 auto-composition-mode: t auto-encryption-mode: t auto-compression-mode: t column-number-mode: t line-number-mode: t transient-mark-mode: t Load-path shadows: /home/len/.emacs.d/straight/build/transient/transient hides /home/len/.local/share/emacs/28.0.50/lisp/transient /home/len/.emacs.d/straight/build/org/ob-stan hides /home/len/.local/share/emacs/28.0.50/lisp/org/ob-stan /home/len/.emacs.d/straight/build/org/org-clock hides /home/len/.local/share/emacs/28.0.50/lisp/org/org-clock /home/len/.emacs.d/straight/build/org/ob-perl hides /home/len/.local/share/emacs/28.0.50/lisp/org/ob-perl /home/len/.emacs.d/straight/build/org/ob-tangle hides /home/len/.local/share/emacs/28.0.50/lisp/org/ob-tangle /home/len/.emacs.d/straight/build/org/ox-org hides /home/len/.local/share/emacs/28.0.50/lisp/org/ox-org /home/len/.emacs.d/straight/build/org/ob-ledger hides /home/len/.local/share/emacs/28.0.50/lisp/org/ob-ledger /home/len/.emacs.d/straight/build/org/ob-makefile hides /home/len/.local/share/emacs/28.0.50/lisp/org/ob-makefile /home/len/.emacs.d/straight/build/org/ob-fortran hides /home/len/.local/share/emacs/28.0.50/lisp/org/ob-fortran /home/len/.emacs.d/straight/build/org/ob-plantuml hides /home/len/.local/share/emacs/28.0.50/lisp/org/ob-plantuml /home/len/.emacs.d/straight/build/org/ox-man hides /home/len/.local/share/emacs/28.0.50/lisp/org/ox-man /home/len/.emacs.d/straight/build/org/ob-eval hides /home/len/.local/share/emacs/28.0.50/lisp/org/ob-eval /home/len/.emacs.d/straight/build/org/org-lint hides /home/len/.local/share/emacs/28.0.50/lisp/org/org-lint /home/len/.emacs.d/straight/build/org/ox-publish hides /home/len/.local/share/emacs/28.0.50/lisp/org/ox-publish /home/len/.emacs.d/straight/build/org/ox-latex hides /home/len/.local/share/emacs/28.0.50/lisp/org/ox-latex /home/len/.emacs.d/straight/build/org/ob-groovy hides /home/len/.local/share/emacs/28.0.50/lisp/org/ob-groovy /home/len/.emacs.d/straight/build/org/org-habit hides /home/len/.local/share/emacs/28.0.50/lisp/org/org-habit /home/len/.emacs.d/straight/build/org/ob-eshell hides /home/len/.local/share/emacs/28.0.50/lisp/org/ob-eshell /home/len/.emacs.d/straight/build/org/ob-shell hides /home/len/.local/share/emacs/28.0.50/lisp/org/ob-shell /home/len/.emacs.d/straight/build/org/org-duration hides /home/len/.local/share/emacs/28.0.50/lisp/org/org-duration /home/len/.emacs.d/straight/build/org/ol-rmail hides /home/len/.local/share/emacs/28.0.50/lisp/org/ol-rmail /home/len/.emacs.d/straight/build/org/org-inlinetask hides /home/len/.local/share/emacs/28.0.50/lisp/org/org-inlinetask /home/len/.emacs.d/straight/build/org/ol-irc hides /home/len/.local/share/emacs/28.0.50/lisp/org/ol-irc /home/len/.emacs.d/straight/build/org/ob-emacs-lisp hides /home/len/.local/share/emacs/28.0.50/lisp/org/ob-emacs-lisp /home/len/.emacs.d/straight/build/org/ob-mscgen hides /home/len/.local/share/emacs/28.0.50/lisp/org/ob-mscgen /home/len/.emacs.d/straight/build/org/ob-screen hides /home/len/.local/share/emacs/28.0.50/lisp/org/ob-screen /home/len/.emacs.d/straight/build/org/ob-ocaml hides /home/len/.local/share/emacs/28.0.50/lisp/org/ob-ocaml /home/len/.emacs.d/straight/build/org/ob-shen hides /home/len/.local/share/emacs/28.0.50/lisp/org/ob-shen /home/len/.emacs.d/straight/build/org/org-entities hides /home/len/.local/share/emacs/28.0.50/lisp/org/org-entities /home/len/.emacs.d/straight/build/org/ob-matlab hides /home/len/.local/share/emacs/28.0.50/lisp/org/ob-matlab /home/len/.emacs.d/straight/build/org/ob-gnuplot hides /home/len/.local/share/emacs/28.0.50/lisp/org/ob-gnuplot /home/len/.emacs.d/straight/build/org/ol-bibtex hides /home/len/.local/share/emacs/28.0.50/lisp/org/ol-bibtex /home/len/.emacs.d/straight/build/org/ob-sass hides /home/len/.local/share/emacs/28.0.50/lisp/org/ob-sass /home/len/.emacs.d/straight/build/org/ob-css hides /home/len/.local/share/emacs/28.0.50/lisp/org/ob-css /home/len/.emacs.d/straight/build/org/ob-vala hides /home/len/.local/share/emacs/28.0.50/lisp/org/ob-vala /home/len/.emacs.d/straight/build/org/ob-R hides /home/len/.local/share/emacs/28.0.50/lisp/org/ob-R /home/len/.emacs.d/straight/build/org/org-datetree hides /home/len/.local/share/emacs/28.0.50/lisp/org/org-datetree /home/len/.emacs.d/straight/build/org/ob-ebnf hides /home/len/.local/share/emacs/28.0.50/lisp/org/ob-ebnf /home/len/.emacs.d/straight/build/org/org-mouse hides /home/len/.local/share/emacs/28.0.50/lisp/org/org-mouse /home/len/.emacs.d/straight/build/org/ob-sqlite hides /home/len/.local/share/emacs/28.0.50/lisp/org/ob-sqlite /home/len/.emacs.d/straight/build/org/ob-maxima hides /home/len/.local/share/emacs/28.0.50/lisp/org/ob-maxima /home/len/.emacs.d/straight/build/org/ox-beamer hides /home/len/.local/share/emacs/28.0.50/lisp/org/ox-beamer /home/len/.emacs.d/straight/build/org/ol-bbdb hides /home/len/.local/share/emacs/28.0.50/lisp/org/ol-bbdb /home/len/.emacs.d/straight/build/org/ob-C hides /home/len/.local/share/emacs/28.0.50/lisp/org/ob-C /home/len/.emacs.d/straight/build/org/ol-w3m hides /home/len/.local/share/emacs/28.0.50/lisp/org/ol-w3m /home/len/.emacs.d/straight/build/org/ob-ditaa hides /home/len/.local/share/emacs/28.0.50/lisp/org/ob-ditaa /home/len/.emacs.d/straight/build/org/ox-odt hides /home/len/.local/share/emacs/28.0.50/lisp/org/ox-odt /home/len/.emacs.d/straight/build/org/org-archive hides /home/len/.local/share/emacs/28.0.50/lisp/org/org-archive /home/len/.emacs.d/straight/build/org/ol-mhe hides /home/len/.local/share/emacs/28.0.50/lisp/org/ol-mhe /home/len/.emacs.d/straight/build/org/ob-ref hides /home/len/.local/share/emacs/28.0.50/lisp/org/ob-ref /home/len/.emacs.d/straight/build/org/ob-sql hides /home/len/.local/share/emacs/28.0.50/lisp/org/ob-sql /home/len/.emacs.d/straight/build/org/ob-lua hides /home/len/.local/share/emacs/28.0.50/lisp/org/ob-lua /home/len/.emacs.d/straight/build/org/org-faces hides /home/len/.local/share/emacs/28.0.50/lisp/org/org-faces /home/len/.emacs.d/straight/build/org/ob-abc hides /home/len/.local/share/emacs/28.0.50/lisp/org/ob-abc /home/len/.emacs.d/straight/build/org/ob-ruby hides /home/len/.local/share/emacs/28.0.50/lisp/org/ob-ruby /home/len/.emacs.d/straight/build/org/org-plot hides /home/len/.local/share/emacs/28.0.50/lisp/org/org-plot /home/len/.emacs.d/straight/build/org/org-compat hides /home/len/.local/share/emacs/28.0.50/lisp/org/org-compat /home/len/.emacs.d/straight/build/org/org-src hides /home/len/.local/share/emacs/28.0.50/lisp/org/org-src /home/len/.emacs.d/straight/build/org/org-macs hides /home/len/.local/share/emacs/28.0.50/lisp/org/org-macs /home/len/.emacs.d/straight/build/org/ob-dot hides /home/len/.local/share/emacs/28.0.50/lisp/org/ob-dot /home/len/.emacs.d/straight/build/org/org-attach-git hides /home/len/.local/share/emacs/28.0.50/lisp/org/org-attach-git /home/len/.emacs.d/straight/build/org/org-pcomplete hides /home/len/.local/share/emacs/28.0.50/lisp/org/org-pcomplete /home/len/.emacs.d/straight/build/org/org-goto hides /home/len/.local/share/emacs/28.0.50/lisp/org/org-goto /home/len/.emacs.d/straight/build/org/ox-md hides /home/len/.local/share/emacs/28.0.50/lisp/org/ox-md /home/len/.emacs.d/straight/build/org/org-attach hides /home/len/.local/share/emacs/28.0.50/lisp/org/org-attach /home/len/.emacs.d/straight/build/org/ob-latex hides /home/len/.local/share/emacs/28.0.50/lisp/org/ob-latex /home/len/.emacs.d/straight/build/org/ob-coq hides /home/len/.local/share/emacs/28.0.50/lisp/org/ob-coq /home/len/.emacs.d/straight/build/org/ob-asymptote hides /home/len/.local/share/emacs/28.0.50/lisp/org/ob-asymptote /home/len/.emacs.d/straight/build/org/ob-octave hides /home/len/.local/share/emacs/28.0.50/lisp/org/ob-octave /home/len/.emacs.d/straight/build/org/org-indent hides /home/len/.local/share/emacs/28.0.50/lisp/org/org-indent /home/len/.emacs.d/straight/build/org/org-version hides /home/len/.local/share/emacs/28.0.50/lisp/org/org-version /home/len/.emacs.d/straight/build/org/org-table hides /home/len/.local/share/emacs/28.0.50/lisp/org/org-table /home/len/.emacs.d/straight/build/org/org-timer hides /home/len/.local/share/emacs/28.0.50/lisp/org/org-timer /home/len/.emacs.d/straight/build/org/ox-ascii hides /home/len/.local/share/emacs/28.0.50/lisp/org/ox-ascii /home/len/.emacs.d/straight/build/org/ob-core hides /home/len/.local/share/emacs/28.0.50/lisp/org/ob-core /home/len/.emacs.d/straight/build/org/org-footnote hides /home/len/.local/share/emacs/28.0.50/lisp/org/org-footnote /home/len/.emacs.d/straight/build/org/ob-io hides /home/len/.local/share/emacs/28.0.50/lisp/org/ob-io /home/len/.emacs.d/straight/build/org/ob-scheme hides /home/len/.local/share/emacs/28.0.50/lisp/org/ob-scheme /home/len/.emacs.d/straight/build/org/ol hides /home/len/.local/share/emacs/28.0.50/lisp/org/ol /home/len/.emacs.d/straight/build/org/ox-html hides /home/len/.local/share/emacs/28.0.50/lisp/org/ox-html /home/len/.emacs.d/straight/build/org/org-element hides /home/len/.local/share/emacs/28.0.50/lisp/org/org-element /home/len/.emacs.d/straight/build/org/ob-haskell hides /home/len/.local/share/emacs/28.0.50/lisp/org/ob-haskell /home/len/.emacs.d/straight/build/org/org-loaddefs hides /home/len/.local/share/emacs/28.0.50/lisp/org/org-loaddefs /home/len/.emacs.d/straight/build/org/ob-sed hides /home/len/.local/share/emacs/28.0.50/lisp/org/ob-sed /home/len/.emacs.d/straight/build/org/org-capture hides /home/len/.local/share/emacs/28.0.50/lisp/org/org-capture /home/len/.emacs.d/straight/build/org/ol-eshell hides /home/len/.local/share/emacs/28.0.50/lisp/org/ol-eshell /home/len/.emacs.d/straight/build/org/ol-gnus hides /home/len/.local/share/emacs/28.0.50/lisp/org/ol-gnus /home/len/.emacs.d/straight/build/org/ob-org hides /home/len/.local/share/emacs/28.0.50/lisp/org/ob-org /home/len/.emacs.d/straight/build/org/ob-lilypond hides /home/len/.local/share/emacs/28.0.50/lisp/org/ob-lilypond /home/len/.emacs.d/straight/build/org/org-agenda hides /home/len/.local/share/emacs/28.0.50/lisp/org/org-agenda /home/len/.emacs.d/straight/build/org/ox-texinfo hides /home/len/.local/share/emacs/28.0.50/lisp/org/ox-texinfo /home/len/.emacs.d/straight/build/org/org-id hides /home/len/.local/share/emacs/28.0.50/lisp/org/org-id /home/len/.emacs.d/straight/build/org/ob-python hides /home/len/.local/share/emacs/28.0.50/lisp/org/ob-python /home/len/.emacs.d/straight/build/org/ob-java hides /home/len/.local/share/emacs/28.0.50/lisp/org/ob-java /home/len/.emacs.d/straight/build/org/ob-picolisp hides /home/len/.local/share/emacs/28.0.50/lisp/org/ob-picolisp /home/len/.emacs.d/straight/build/org/ol-docview hides /home/len/.local/share/emacs/28.0.50/lisp/org/ol-docview /home/len/.emacs.d/straight/build/org/ol-eww hides /home/len/.local/share/emacs/28.0.50/lisp/org/ol-eww /home/len/.emacs.d/straight/build/org/ox hides /home/len/.local/share/emacs/28.0.50/lisp/org/ox /home/len/.emacs.d/straight/build/org/org-keys hides /home/len/.local/share/emacs/28.0.50/lisp/org/org-keys /home/len/.emacs.d/straight/build/org/org-ctags hides /home/len/.local/share/emacs/28.0.50/lisp/org/org-ctags /home/len/.emacs.d/straight/build/org/org hides /home/len/.local/share/emacs/28.0.50/lisp/org/org /home/len/.emacs.d/straight/build/org/org-num hides /home/len/.local/share/emacs/28.0.50/lisp/org/org-num /home/len/.emacs.d/straight/build/org/ob-awk hides /home/len/.local/share/emacs/28.0.50/lisp/org/ob-awk /home/len/.emacs.d/straight/build/org/org-refile hides /home/len/.local/share/emacs/28.0.50/lisp/org/org-refile /home/len/.emacs.d/straight/build/org/ob-hledger hides /home/len/.local/share/emacs/28.0.50/lisp/org/ob-hledger /home/len/.emacs.d/straight/build/org/ol-info hides /home/len/.local/share/emacs/28.0.50/lisp/org/ol-info /home/len/.emacs.d/straight/build/org/ob-lisp hides /home/len/.local/share/emacs/28.0.50/lisp/org/ob-lisp /home/len/.emacs.d/straight/build/org/org-colview hides /home/len/.local/share/emacs/28.0.50/lisp/org/org-colview /home/len/.emacs.d/straight/build/org/ob-exp hides /home/len/.local/share/emacs/28.0.50/lisp/org/ob-exp /home/len/.emacs.d/straight/build/org/org-feed hides /home/len/.local/share/emacs/28.0.50/lisp/org/org-feed /home/len/.emacs.d/straight/build/org/ob-comint hides /home/len/.local/share/emacs/28.0.50/lisp/org/ob-comint /home/len/.emacs.d/straight/build/org/org-tempo hides /home/len/.local/share/emacs/28.0.50/lisp/org/org-tempo /home/len/.emacs.d/straight/build/org/org-protocol hides /home/len/.local/share/emacs/28.0.50/lisp/org/org-protocol /home/len/.emacs.d/straight/build/org/org-list hides /home/len/.local/share/emacs/28.0.50/lisp/org/org-list /home/len/.emacs.d/straight/build/org/org-crypt hides /home/len/.local/share/emacs/28.0.50/lisp/org/org-crypt /home/len/.emacs.d/straight/build/org/ob-forth hides /home/len/.local/share/emacs/28.0.50/lisp/org/ob-forth /home/len/.emacs.d/straight/build/org/ob-js hides /home/len/.local/share/emacs/28.0.50/lisp/org/ob-js /home/len/.emacs.d/straight/build/org/org-mobile hides /home/len/.local/share/emacs/28.0.50/lisp/org/org-mobile /home/len/.emacs.d/straight/build/org/ob-lob hides /home/len/.local/share/emacs/28.0.50/lisp/org/ob-lob /home/len/.emacs.d/straight/build/org/ob-table hides /home/len/.local/share/emacs/28.0.50/lisp/org/ob-table /home/len/.emacs.d/straight/build/org/ob-processing hides /home/len/.local/share/emacs/28.0.50/lisp/org/ob-processing /home/len/.emacs.d/straight/build/org/ob-J hides /home/len/.local/share/emacs/28.0.50/lisp/org/ob-J /home/len/.emacs.d/straight/build/org/ob-calc hides /home/len/.local/share/emacs/28.0.50/lisp/org/ob-calc /home/len/.emacs.d/straight/build/org/org-install hides /home/len/.local/share/emacs/28.0.50/lisp/org/org-install /home/len/.emacs.d/straight/build/org/ob hides /home/len/.local/share/emacs/28.0.50/lisp/org/ob /home/len/.emacs.d/straight/build/org/org-macro hides /home/len/.local/share/emacs/28.0.50/lisp/org/org-macro /home/len/.emacs.d/straight/build/org/ob-clojure hides /home/len/.local/share/emacs/28.0.50/lisp/org/ob-clojure /home/len/.emacs.d/straight/build/org/ox-icalendar hides /home/len/.local/share/emacs/28.0.50/lisp/org/ox-icalendar /home/len/.emacs.d/straight/build/let-alist/let-alist hides /home/len/.local/share/emacs/28.0.50/lisp/emacs-lisp/let-alist /home/len/.emacs.d/straight/build/eldoc/eldoc hides /home/len/.local/share/emacs/28.0.50/lisp/emacs-lisp/eldoc Features: (shadow sort mail-extr emacsbug sendmail cl-print help-fns radix-tree dabbrev lsp-diagnostics company-oddmuse company-keywords company-etags company-gtags company-dabbrev-code company-dabbrev company-files company-clang company-capf company-cmake company-semantic company-template company-yasnippet company-bbdb company lsp-headerline lsp-icons lsp-modeline lsp-ui lsp-ui-flycheck lsp-ui-doc xwidget image-mode exif lsp-ui-imenu lsp-ui-peek lsp-ui-sideline lsp-ui-util goto-addr vc-mtn vc-hg vc-bzr vc-src vc-sccs vc-svn vc-cvs vc-rcs bug-reference mule-util magit-extras treemacs-magit magit-bookmark magit-submodule magit-obsolete 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 diff git-commit log-edit message rfc822 mml mml-sec epa gnus-util rmail rmail-loaddefs mm-decode mm-bodies mm-encode mail-parse rfc2231 rfc2047 rfc2045 mm-util ietf-drums mail-prsvr mailabbrev gmm-utils add-log magit-core magit-autorevert magit-margin magit-transient magit-process with-editor magit-mode magit-git magit-section magit-utils crm dired-aux view lsp-zig lsp-steep lsp-svelte lsp-sqls lsp-yaml lsp-xml lsp-vimscript lsp-vhdl lsp-vetur lsp-html lsp-verilog lsp-vala lsp-terraform lsp-tex lsp-sorbet lsp-solargraph lsp-rust lsp-rf lsp-r lsp-purescript lsp-pwsh lsp-php lsp-perl lsp-ocaml lsp-nix lsp-nim lsp-markdown lsp-lua lsp-kotlin lsp-json lsp-javascript lsp-haxe lsp-groovy lsp-hack lsp-go lsp-completion lsp-gdscript lsp-fsharp lsp-fortran lsp-eslint lsp-erlang lsp-elixir lsp-elm lsp-dockerfile lsp-dhall lsp-d lsp-css lsp-csharp gnutls lsp-crystal lsp-cmake lsp-clojure lsp-clangd dom lsp-bash lsp-angular lsp-ada lsp-actionscript ccls ccls-member-hierarchy ccls-inheritance-hierarchy ccls-call-hierarchy ccls-tree ccls-code-lens ccls-semantic-highlight ccls-common recentf treemacs-bookmarks bookmark scad-dbus dbus xml scad-mode symbol-overlay ws-butler display-fill-column-indicator display-line-numbers editorconfig-core editorconfig-core-handle editorconfig-fnmatch ffap counsel xdg disp-table server diary-lib diary-loaddefs cal-menu calendar cal-loaddefs generic hydra python-pytest python-pytest-autoloads importmagic epc ctable concurrent deferred cl importmagic-autoloads epc-autoloads ctable-autoloads concurrent-autoloads deferred-autoloads auto-remove auto-remove-autoloads py-isort py-isort-autoloads python-black reformatter python-black-autoloads reformatter-autoloads blacken blacken-autoloads flycheck-mypy flycheck-mypy-autoloads elpy elpy-rpc elpy-shell elpy-profile elpy-django elpy-refactor python tramp-sh tramp tramp-loaddefs trampver tramp-integration tramp-compat parse-time iso8601 time-date ls-lisp ido files-x cus-edit pp elpy-autoloads highlight-indentation-autoloads groovy-mode groovy-mode-autoloads shell-extras eradio-autoloads atomic-chrome websocket bindat atomic-chrome-autoloads websocket-autoloads counsel-keepassxc-autoloads pyvenv eshell esh-cmd esh-ext esh-opt esh-proc esh-io esh-arg esh-module esh-groups esh-util pyvenv-autoloads ccls-autoloads lsp-pyls lsp-ivy lsp-mode tree-widget wid-edit spinner network-stream puny nsm rmc markdown-mode noutline outline lv f epg epg-config lsp-protocol lsp-ivy-autoloads lsp-ui-autoloads lsp-mode-autoloads spinner-autoloads f-autoloads eldoc-autoloads js2-mode etags fileloop generator js cc-mode cc-fonts cc-guess cc-menus cc-cmds cc-styles cc-align cc-engine cc-vars cc-defs js2-mode-autoloads ess ess-utils ess-custom ess-autoloads dts-mode dts-mode-autoloads gnuplot info-look gnuplot-autoloads scad-dbus-autoloads scad-mode-autoloads projectile ibuf-ext projectile-autoloads grip-mode grip-mode-autoloads markdown-mode-autoloads org-bullets-autoloads multi-web-mode multi-web-mode-autoloads yaml-mode yaml-mode-autoloads csv-mode-autoloads ediff ediff-merg ediff-mult ediff-wind ediff-diff ediff-help ediff-init ediff-util git-timemachine transient format-spec vc-git git-timemachine-autoloads git-messenger-autoloads flycheck-aspell ispell flycheck-aspell-autoloads flycheck derived find-func jka-compr let-alist flycheck-autoloads let-alist-autoloads pkg-info-autoloads epl-autoloads company-autoloads yasnippet-snippets-autoloads yasnippet-snippets ivy-yasnippet yasnippet multiple-cursors mc-separate-operations rectangular-region-mode mc-mark-pop mc-edit-lines mc-hide-unmatched-lines-mode mc-mark-more mc-cycle-cursors multiple-cursors-core multiple-cursors-autoloads iedit-autoloads visual-regexp-autoloads wgrep-ag wgrep-ag-autoloads wgrep wgrep-autoloads evil-numbers-autoloads rectangle-utils rect rectangle-utils-autoloads smartparens thingatpt smartparens-autoloads ws-butler-autoloads dtrt-indent dtrt-indent-autoloads editorconfig editorconfig-autoloads expand-region-autoloads diredfl diredfl-autoloads dired-du-autoloads dired-single dired-single-autoloads dired-hide-dotfiles dired-hide-dotfiles-autoloads direnv direnv-autoloads shell pcomplete midnight dumb-jump popup dumb-jump-autoloads popup-autoloads ivy-yasnippet-autoloads yasnippet-autoloads counsel-autoloads request mailheader autorevert mail-utils request-autoloads swiper swiper-autoloads posframe backward-forward backward-forward-autoloads crux-autoloads edmacro kmacro move-text move-text-autoloads use-package-bind-key bind-key which-key which-key-autoloads minimap minimap-autoloads treemacs-magit-autoloads magit-autoloads git-commit-autoloads with-editor-autoloads transient-autoloads treemacs-icons-dired treemacs-icons-dired-autoloads treemacs treemacs-header-line treemacs-compatibility treemacs-mode treemacs-interface treemacs-extensions treemacs-mouse-interface treemacs-tags imenu xref project treemacs-persistence treemacs-filewatch-mode filenotify treemacs-follow-mode treemacs-rendering treemacs-async treemacs-workspaces treemacs-dom treemacs-visuals treemacs-fringe-indicator treemacs-scope treemacs-faces treemacs-icons treemacs-themes treemacs-core-utils pfuture inline ht treemacs-logging treemacs-customization treemacs-macros treemacs-autoloads cfrs-autoloads posframe-autoloads ht-autoloads hydra-autoloads lv-autoloads pfuture-autoloads ace-window-autoloads avy-autoloads all-the-icons-ibuffer ibuffer ibuffer-loaddefs all-the-icons-ibuffer-autoloads all-the-icons-ivy ivy ivy-faces ivy-overlay colir all-the-icons-ivy-autoloads ivy-autoloads all-the-icons all-the-icons-faces data-material data-weathericons data-octicons data-fileicons data-faicons data-alltheicons all-the-icons-autoloads ligature ligature-autoloads symbol-overlay-autoloads highlight-indent-guides highlight-indent-guides-autoloads diff-hl-margin diff-hl-dired dired dired-loaddefs diff-hl log-view pcvs-util vc-dir ewoc vc vc-dispatcher diff-mode easy-mmode diff-hl-autoloads hl-line whitespace xterm-color xterm-color-autoloads rainbow-mode rainbow-mode-autoloads pcase spaceline-config spaceline-segments s spaceline powerline comp comp-cstr warnings rx powerline-separators powerline-themes dash spaceline-autoloads s-autoloads dash-autoloads powerline-autoloads finder-inf jetbrains-darcula-theme-autoloads modus-vivendi-theme modus-themes modus-vivendi-theme-autoloads use-package-diminish auto-minor-mode auto-minor-mode-autoloads diminish diminish-autoloads try package browse-url url url-proxy url-privacy url-expand url-methods url-history url-cookie url-domsuf url-util mailcap url-handlers url-parse auth-source eieio eieio-core eieio-loaddefs password-cache json map url-vars try-autoloads olivetti olivetti-autoloads mixed-pitch face-remap mixed-pitch-autoloads pulse color advice use-package-ensure xt-mouse use-package-core use-package-autoloads bind-key-autoloads straight-autoloads info cl-seq cl-extra help-mode seq byte-opt straight subr-x cl-macs gv cl-loaddefs cl-lib bytecomp byte-compile cconv lazy-lock paren avoid grep compile text-property-search comint ansi-color ring delsel cus-load iso-transl tooltip eldoc electric uniquify ediff-hook vc-hooks lisp-float-type 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 elisp-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 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 xwidget-internal dbusbind inotify lcms2 dynamic-setting system-font-setting font-render-setting cairo move-toolbar gtk x-toolkit x multi-tty make-network-process nativecomp emacs) Memory information: ((conses 16 1428188 1245272) (symbols 48 61064 3) (strings 32 220570 170030) (string-bytes 1 8148602) (vectors 16 115384) (vector-slots 8 2862776 1062890) (floats 8 1201 2813) (intervals 56 29889 20776) (buffers 992 62)) --000000000000e5097e05c11376a9 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable

I am using display-line-numbers mode, and would like t= o avoid it
changing the width assigned to the line numbers as the buffer= is
scrolled. I have (setq display-line-numbers-width-start t), whichpurports to check in advance how much width is required. It seems
someh= ow incorrect though. To reproduce:

1 Create a buffer with 90 lines.<= br>
2 Ensure the window is approx 40 lines tall, displaying the first 40= lines
of the buffer.

3 Ensure display-line-numbers-width-start i= s t

4 Turn on display-line-numbers-mode.

5 Scroll down to nea= r the bottom of the buffer. At some point, emacs
=C2=A0 adds an ext= ra character of width to the line numbers, even though no
= =C2=A0 line number higher than 90 is ever shown. If emacs needed an extra
=C2=A0 character for whatever reason, surely display-line-numbers-= width-start
=C2=A0 should have incorporated that up front (otherw= ise what's the point)?




In GNU Emacs 28.0.50 (build= 4, x86_64-pc-linux-gnu, GTK+ Version 3.24.20, cairo version 1.16.0)
=C2= =A0of 2021-04-27 built on noir
Repository revision: 40c71e574ad27deee003= a0850a40171750234d59
Repository branch: master
Windowing system distr= ibutor 'The X.Org Foundation', version 11.0.12009000
System Desc= ription: Ubuntu 20.04.2 LTS

Configured using:
=C2=A0'configur= e --prefix=3D/home/len/.local --with-xwidgets --with-rsvg
=C2=A0--with-c= airo --with-native-compilation'

Configured features:
CAIRO DB= US FREETYPE GIF GLIB GMP GNUTLS GSETTINGS HARFBUZZ JPEG JSON
LCMS2 LIBSE= LINUX LIBXML2 MODULES NATIVE_COMP NOTIFY INOTIFY PDUMPER PNG
RSVG SECCOM= P SOUND THREADS TIFF TOOLKIT_SCROLL_BARS X11 XDBE XIM XPM
XWIDGETS GTK3 = ZLIB

Important settings:
=C2=A0 value of $LANG: en_NZ.UTF-8
= =C2=A0 value of $XMODIFIERS: @im=3Dibus
=C2=A0 locale-coding-system: utf= -8-unix

Major mode: Text

Minor modes in effect:
=C2=A0 glo= bal-company-mode: t
=C2=A0 company-mode: t
=C2=A0 global-git-commit-m= ode: t
=C2=A0 magit-auto-revert-mode: t
=C2=A0 recentf-mode: t
=C2= =A0 display-line-numbers-mode: t
=C2=A0 global-atomic-chrome-edit-mode: = t
=C2=A0 pyvenv-mode: t
=C2=A0 projectile-mode: t
=C2=A0 smartpare= ns-global-mode: t
=C2=A0 smartparens-mode: t
=C2=A0 editorconfig-mode= : t
=C2=A0 diredfl-global-mode: t
=C2=A0 direnv-mode: t
=C2=A0 she= ll-dirtrack-mode: t
=C2=A0 backward-forward-mode: t
=C2=A0 override-g= lobal-mode: t
=C2=A0 which-key-mode: t
=C2=A0 treemacs-icons-dired-mo= de: t
=C2=A0 treemacs-filewatch-mode: t
=C2=A0 treemacs-follow-mode: = t
=C2=A0 treemacs-git-mode: deferred
=C2=A0 treemacs-fringe-indicator= -mode: t
=C2=A0 all-the-icons-ibuffer-mode: t
=C2=A0 ivy-mode: t
= =C2=A0 global-ligature-mode: t
=C2=A0 ligature-mode: t
=C2=A0 diff-hl= -margin-local-mode: t
=C2=A0 diff-hl-margin-mode: t
=C2=A0 global-dif= f-hl-mode: t
=C2=A0 diff-hl-mode: t
=C2=A0 xterm-mouse-mode: t
=C2= =A0 straight-use-package-mode: t
=C2=A0 straight-package-neutering-mode:= t
=C2=A0 show-paren-mode: t
=C2=A0 delete-selection-mode: t
=C2= =A0 tooltip-mode: t
=C2=A0 global-eldoc-mode: t
=C2=A0 electric-inden= t-mode: t
=C2=A0 mouse-wheel-mode: t
=C2=A0 file-name-shadow-mode: t<= br>=C2=A0 global-font-lock-mode: t
=C2=A0 font-lock-mode: t
=C2=A0 au= to-composition-mode: t
=C2=A0 auto-encryption-mode: t
=C2=A0 auto-com= pression-mode: t
=C2=A0 column-number-mode: t
=C2=A0 line-number-mode= : t
=C2=A0 transient-mark-mode: t

Load-path shadows:
/home/len= /.emacs.d/straight/build/transient/transient hides /home/len/.local/share/e= macs/28.0.50/lisp/transient
/home/len/.emacs.d/straight/build/org/ob-sta= n hides /home/len/.local/share/emacs/28.0.50/lisp/org/ob-stan
/home/len/= .emacs.d/straight/build/org/org-clock hides /home/len/.local/share/emacs/28= .0.50/lisp/org/org-clock
/home/len/.emacs.d/straight/build/org/ob-perl h= ides /home/len/.local/share/emacs/28.0.50/lisp/org/ob-perl
/home/len/.em= acs.d/straight/build/org/ob-tangle hides /home/len/.local/share/emacs/28.0.= 50/lisp/org/ob-tangle
/home/len/.emacs.d/straight/build/org/ox-org hides= /home/len/.local/share/emacs/28.0.50/lisp/org/ox-org
/home/len/.emacs.d= /straight/build/org/ob-ledger hides /home/len/.local/share/emacs/28.0.50/li= sp/org/ob-ledger
/home/len/.emacs.d/straight/build/org/ob-makefile hides= /home/len/.local/share/emacs/28.0.50/lisp/org/ob-makefile
/home/len/.em= acs.d/straight/build/org/ob-fortran hides /home/len/.local/share/emacs/28.0= .50/lisp/org/ob-fortran
/home/len/.emacs.d/straight/build/org/ob-plantum= l hides /home/len/.local/share/emacs/28.0.50/lisp/org/ob-plantuml
/home/= len/.emacs.d/straight/build/org/ox-man hides /home/len/.local/share/emacs/2= 8.0.50/lisp/org/ox-man
/home/len/.emacs.d/straight/build/org/ob-eval hid= es /home/len/.local/share/emacs/28.0.50/lisp/org/ob-eval
/home/len/.emac= s.d/straight/build/org/org-lint hides /home/len/.local/share/emacs/28.0.50/= lisp/org/org-lint
/home/len/.emacs.d/straight/build/org/ox-publish hides= /home/len/.local/share/emacs/28.0.50/lisp/org/ox-publish
/home/len/.ema= cs.d/straight/build/org/ox-latex hides /home/len/.local/share/emacs/28.0.50= /lisp/org/ox-latex
/home/len/.emacs.d/straight/build/org/ob-groovy hides= /home/len/.local/share/emacs/28.0.50/lisp/org/ob-groovy
/home/len/.emac= s.d/straight/build/org/org-habit hides /home/len/.local/share/emacs/28.0.50= /lisp/org/org-habit
/home/len/.emacs.d/straight/build/org/ob-eshell hide= s /home/len/.local/share/emacs/28.0.50/lisp/org/ob-eshell
/home/len/.ema= cs.d/straight/build/org/ob-shell hides /home/len/.local/share/emacs/28.0.50= /lisp/org/ob-shell
/home/len/.emacs.d/straight/build/org/org-duration hi= des /home/len/.local/share/emacs/28.0.50/lisp/org/org-duration
/home/len= /.emacs.d/straight/build/org/ol-rmail hides /home/len/.local/share/emacs/28= .0.50/lisp/org/ol-rmail
/home/len/.emacs.d/straight/build/org/org-inline= task hides /home/len/.local/share/emacs/28.0.50/lisp/org/org-inlinetask
= /home/len/.emacs.d/straight/build/org/ol-irc hides /home/len/.local/share/e= macs/28.0.50/lisp/org/ol-irc
/home/len/.emacs.d/straight/build/org/ob-em= acs-lisp hides /home/len/.local/share/emacs/28.0.50/lisp/org/ob-emacs-lisp<= br>/home/len/.emacs.d/straight/build/org/ob-mscgen hides /home/len/.local/s= hare/emacs/28.0.50/lisp/org/ob-mscgen
/home/len/.emacs.d/straight/build/= org/ob-screen hides /home/len/.local/share/emacs/28.0.50/lisp/org/ob-screen=
/home/len/.emacs.d/straight/build/org/ob-ocaml hides /home/len/.local/s= hare/emacs/28.0.50/lisp/org/ob-ocaml
/home/len/.emacs.d/straight/build/o= rg/ob-shen hides /home/len/.local/share/emacs/28.0.50/lisp/org/ob-shen
/= home/len/.emacs.d/straight/build/org/org-entities hides /home/len/.local/sh= are/emacs/28.0.50/lisp/org/org-entities
/home/len/.emacs.d/straight/buil= d/org/ob-matlab hides /home/len/.local/share/emacs/28.0.50/lisp/org/ob-matl= ab
/home/len/.emacs.d/straight/build/org/ob-gnuplot hides /home/len/.loc= al/share/emacs/28.0.50/lisp/org/ob-gnuplot
/home/len/.emacs.d/straight/b= uild/org/ol-bibtex hides /home/len/.local/share/emacs/28.0.50/lisp/org/ol-b= ibtex
/home/len/.emacs.d/straight/build/org/ob-sass hides /home/len/.loc= al/share/emacs/28.0.50/lisp/org/ob-sass
/home/len/.emacs.d/straight/buil= d/org/ob-css hides /home/len/.local/share/emacs/28.0.50/lisp/org/ob-css
= /home/len/.emacs.d/straight/build/org/ob-vala hides /home/len/.local/share/= emacs/28.0.50/lisp/org/ob-vala
/home/len/.emacs.d/straight/build/org/ob-= R hides /home/len/.local/share/emacs/28.0.50/lisp/org/ob-R
/home/len/.em= acs.d/straight/build/org/org-datetree hides /home/len/.local/share/emacs/28= .0.50/lisp/org/org-datetree
/home/len/.emacs.d/straight/build/org/ob-ebn= f hides /home/len/.local/share/emacs/28.0.50/lisp/org/ob-ebnf
/home/len/= .emacs.d/straight/build/org/org-mouse hides /home/len/.local/share/emacs/28= .0.50/lisp/org/org-mouse
/home/len/.emacs.d/straight/build/org/ob-sqlite= hides /home/len/.local/share/emacs/28.0.50/lisp/org/ob-sqlite
/home/len= /.emacs.d/straight/build/org/ob-maxima hides /home/len/.local/share/emacs/2= 8.0.50/lisp/org/ob-maxima
/home/len/.emacs.d/straight/build/org/ox-beame= r hides /home/len/.local/share/emacs/28.0.50/lisp/org/ox-beamer
/home/le= n/.emacs.d/straight/build/org/ol-bbdb hides /home/len/.local/share/emacs/28= .0.50/lisp/org/ol-bbdb
/home/len/.emacs.d/straight/build/org/ob-C hides = /home/len/.local/share/emacs/28.0.50/lisp/org/ob-C
/home/len/.emacs.d/st= raight/build/org/ol-w3m hides /home/len/.local/share/emacs/28.0.50/lisp/org= /ol-w3m
/home/len/.emacs.d/straight/build/org/ob-ditaa hides /home/len/.= local/share/emacs/28.0.50/lisp/org/ob-ditaa
/home/len/.emacs.d/straight/= build/org/ox-odt hides /home/len/.local/share/emacs/28.0.50/lisp/org/ox-odt=
/home/len/.emacs.d/straight/build/org/org-archive hides /home/len/.loca= l/share/emacs/28.0.50/lisp/org/org-archive
/home/len/.emacs.d/straight/b= uild/org/ol-mhe hides /home/len/.local/share/emacs/28.0.50/lisp/org/ol-mhe<= br>/home/len/.emacs.d/straight/build/org/ob-ref hides /home/len/.local/shar= e/emacs/28.0.50/lisp/org/ob-ref
/home/len/.emacs.d/straight/build/org/ob= -sql hides /home/len/.local/share/emacs/28.0.50/lisp/org/ob-sql
/home/le= n/.emacs.d/straight/build/org/ob-lua hides /home/len/.local/share/emacs/28.= 0.50/lisp/org/ob-lua
/home/len/.emacs.d/straight/build/org/org-faces hid= es /home/len/.local/share/emacs/28.0.50/lisp/org/org-faces
/home/len/.em= acs.d/straight/build/org/ob-abc hides /home/len/.local/share/emacs/28.0.50/= lisp/org/ob-abc
/home/len/.emacs.d/straight/build/org/ob-ruby hides /hom= e/len/.local/share/emacs/28.0.50/lisp/org/ob-ruby
/home/len/.emacs.d/str= aight/build/org/org-plot hides /home/len/.local/share/emacs/28.0.50/lisp/or= g/org-plot
/home/len/.emacs.d/straight/build/org/org-compat hides /home/= len/.local/share/emacs/28.0.50/lisp/org/org-compat
/home/len/.emacs.d/st= raight/build/org/org-src hides /home/len/.local/share/emacs/28.0.50/lisp/or= g/org-src
/home/len/.emacs.d/straight/build/org/org-macs hides /home/len= /.local/share/emacs/28.0.50/lisp/org/org-macs
/home/len/.emacs.d/straigh= t/build/org/ob-dot hides /home/len/.local/share/emacs/28.0.50/lisp/org/ob-d= ot
/home/len/.emacs.d/straight/build/org/org-attach-git hides /home/len/= .local/share/emacs/28.0.50/lisp/org/org-attach-git
/home/len/.emacs.d/st= raight/build/org/org-pcomplete hides /home/len/.local/share/emacs/28.0.50/l= isp/org/org-pcomplete
/home/len/.emacs.d/straight/build/org/org-goto hid= es /home/len/.local/share/emacs/28.0.50/lisp/org/org-goto
/home/len/.ema= cs.d/straight/build/org/ox-md hides /home/len/.local/share/emacs/28.0.50/li= sp/org/ox-md
/home/len/.emacs.d/straight/build/org/org-attach hides /hom= e/len/.local/share/emacs/28.0.50/lisp/org/org-attach
/home/len/.emacs.d/= straight/build/org/ob-latex hides /home/len/.local/share/emacs/28.0.50/lisp= /org/ob-latex
/home/len/.emacs.d/straight/build/org/ob-coq hides /home/l= en/.local/share/emacs/28.0.50/lisp/org/ob-coq
/home/len/.emacs.d/straigh= t/build/org/ob-asymptote hides /home/len/.local/share/emacs/28.0.50/lisp/or= g/ob-asymptote
/home/len/.emacs.d/straight/build/org/ob-octave hides /ho= me/len/.local/share/emacs/28.0.50/lisp/org/ob-octave
/home/len/.emacs.d/= straight/build/org/org-indent hides /home/len/.local/share/emacs/28.0.50/li= sp/org/org-indent
/home/len/.emacs.d/straight/build/org/org-version hide= s /home/len/.local/share/emacs/28.0.50/lisp/org/org-version
/home/len/.e= macs.d/straight/build/org/org-table hides /home/len/.local/share/emacs/28.0= .50/lisp/org/org-table
/home/len/.emacs.d/straight/build/org/org-timer h= ides /home/len/.local/share/emacs/28.0.50/lisp/org/org-timer
/home/len/.= emacs.d/straight/build/org/ox-ascii hides /home/len/.local/share/emacs/28.0= .50/lisp/org/ox-ascii
/home/len/.emacs.d/straight/build/org/ob-core hide= s /home/len/.local/share/emacs/28.0.50/lisp/org/ob-core
/home/len/.emacs= .d/straight/build/org/org-footnote hides /home/len/.local/share/emacs/28.0.= 50/lisp/org/org-footnote
/home/len/.emacs.d/straight/build/org/ob-io hid= es /home/len/.local/share/emacs/28.0.50/lisp/org/ob-io
/home/len/.emacs.= d/straight/build/org/ob-scheme hides /home/len/.local/share/emacs/28.0.50/l= isp/org/ob-scheme
/home/len/.emacs.d/straight/build/org/ol hides /home/l= en/.local/share/emacs/28.0.50/lisp/org/ol
/home/len/.emacs.d/straight/bu= ild/org/ox-html hides /home/len/.local/share/emacs/28.0.50/lisp/org/ox-html=
/home/len/.emacs.d/straight/build/org/org-element hides /home/len/.loca= l/share/emacs/28.0.50/lisp/org/org-element
/home/len/.emacs.d/straight/b= uild/org/ob-haskell hides /home/len/.local/share/emacs/28.0.50/lisp/org/ob-= haskell
/home/len/.emacs.d/straight/build/org/org-loaddefs hides /home/l= en/.local/share/emacs/28.0.50/lisp/org/org-loaddefs
/home/len/.emacs.d/s= traight/build/org/ob-sed hides /home/len/.local/share/emacs/28.0.50/lisp/or= g/ob-sed
/home/len/.emacs.d/straight/build/org/org-capture hides /home/l= en/.local/share/emacs/28.0.50/lisp/org/org-capture
/home/len/.emacs.d/st= raight/build/org/ol-eshell hides /home/len/.local/share/emacs/28.0.50/lisp/= org/ol-eshell
/home/len/.emacs.d/straight/build/org/ol-gnus hides /home/= len/.local/share/emacs/28.0.50/lisp/org/ol-gnus
/home/len/.emacs.d/strai= ght/build/org/ob-org hides /home/len/.local/share/emacs/28.0.50/lisp/org/ob= -org
/home/len/.emacs.d/straight/build/org/ob-lilypond hides /home/len/.= local/share/emacs/28.0.50/lisp/org/ob-lilypond
/home/len/.emacs.d/straig= ht/build/org/org-agenda hides /home/len/.local/share/emacs/28.0.50/lisp/org= /org-agenda
/home/len/.emacs.d/straight/build/org/ox-texinfo hides /home= /len/.local/share/emacs/28.0.50/lisp/org/ox-texinfo
/home/len/.emacs.d/s= traight/build/org/org-id hides /home/len/.local/share/emacs/28.0.50/lisp/or= g/org-id
/home/len/.emacs.d/straight/build/org/ob-python hides /home/len= /.local/share/emacs/28.0.50/lisp/org/ob-python
/home/len/.emacs.d/straig= ht/build/org/ob-java hides /home/len/.local/share/emacs/28.0.50/lisp/org/ob= -java
/home/len/.emacs.d/straight/build/org/ob-picolisp hides /home/len/= .local/share/emacs/28.0.50/lisp/org/ob-picolisp
/home/len/.emacs.d/strai= ght/build/org/ol-docview hides /home/len/.local/share/emacs/28.0.50/lisp/or= g/ol-docview
/home/len/.emacs.d/straight/build/org/ol-eww hides /home/le= n/.local/share/emacs/28.0.50/lisp/org/ol-eww
/home/len/.emacs.d/straight= /build/org/ox hides /home/len/.local/share/emacs/28.0.50/lisp/org/ox
/ho= me/len/.emacs.d/straight/build/org/org-keys hides /home/len/.local/share/em= acs/28.0.50/lisp/org/org-keys
/home/len/.emacs.d/straight/build/org/org-= ctags hides /home/len/.local/share/emacs/28.0.50/lisp/org/org-ctags
/hom= e/len/.emacs.d/straight/build/org/org hides /home/len/.local/share/emacs/28= .0.50/lisp/org/org
/home/len/.emacs.d/straight/build/org/org-num hides /= home/len/.local/share/emacs/28.0.50/lisp/org/org-num
/home/len/.emacs.d/= straight/build/org/ob-awk hides /home/len/.local/share/emacs/28.0.50/lisp/o= rg/ob-awk
/home/len/.emacs.d/straight/build/org/org-refile hides /home/l= en/.local/share/emacs/28.0.50/lisp/org/org-refile
/home/len/.emacs.d/str= aight/build/org/ob-hledger hides /home/len/.local/share/emacs/28.0.50/lisp/= org/ob-hledger
/home/len/.emacs.d/straight/build/org/ol-info hides /home= /len/.local/share/emacs/28.0.50/lisp/org/ol-info
/home/len/.emacs.d/stra= ight/build/org/ob-lisp hides /home/len/.local/share/emacs/28.0.50/lisp/org/= ob-lisp
/home/len/.emacs.d/straight/build/org/org-colview hides /home/le= n/.local/share/emacs/28.0.50/lisp/org/org-colview
/home/len/.emacs.d/str= aight/build/org/ob-exp hides /home/len/.local/share/emacs/28.0.50/lisp/org/= ob-exp
/home/len/.emacs.d/straight/build/org/org-feed hides /home/len/.l= ocal/share/emacs/28.0.50/lisp/org/org-feed
/home/len/.emacs.d/straight/b= uild/org/ob-comint hides /home/len/.local/share/emacs/28.0.50/lisp/org/ob-c= omint
/home/len/.emacs.d/straight/build/org/org-tempo hides /home/len/.l= ocal/share/emacs/28.0.50/lisp/org/org-tempo
/home/len/.emacs.d/straight/= build/org/org-protocol hides /home/len/.local/share/emacs/28.0.50/lisp/org/= org-protocol
/home/len/.emacs.d/straight/build/org/org-list hides /home/= len/.local/share/emacs/28.0.50/lisp/org/org-list
/home/len/.emacs.d/stra= ight/build/org/org-crypt hides /home/len/.local/share/emacs/28.0.50/lisp/or= g/org-crypt
/home/len/.emacs.d/straight/build/org/ob-forth hides /home/l= en/.local/share/emacs/28.0.50/lisp/org/ob-forth
/home/len/.emacs.d/strai= ght/build/org/ob-js hides /home/len/.local/share/emacs/28.0.50/lisp/org/ob-= js
/home/len/.emacs.d/straight/build/org/org-mobile hides /home/len/.loc= al/share/emacs/28.0.50/lisp/org/org-mobile
/home/len/.emacs.d/straight/b= uild/org/ob-lob hides /home/len/.local/share/emacs/28.0.50/lisp/org/ob-lob<= br>/home/len/.emacs.d/straight/build/org/ob-table hides /home/len/.local/sh= are/emacs/28.0.50/lisp/org/ob-table
/home/len/.emacs.d/straight/build/or= g/ob-processing hides /home/len/.local/share/emacs/28.0.50/lisp/org/ob-proc= essing
/home/len/.emacs.d/straight/build/org/ob-J hides /home/len/.local= /share/emacs/28.0.50/lisp/org/ob-J
/home/len/.emacs.d/straight/build/org= /ob-calc hides /home/len/.local/share/emacs/28.0.50/lisp/org/ob-calc
/ho= me/len/.emacs.d/straight/build/org/org-install hides /home/len/.local/share= /emacs/28.0.50/lisp/org/org-install
/home/len/.emacs.d/straight/build/or= g/ob hides /home/len/.local/share/emacs/28.0.50/lisp/org/ob
/home/len/.e= macs.d/straight/build/org/org-macro hides /home/len/.local/share/emacs/28.0= .50/lisp/org/org-macro
/home/len/.emacs.d/straight/build/org/ob-clojure = hides /home/len/.local/share/emacs/28.0.50/lisp/org/ob-clojure
/home/len= /.emacs.d/straight/build/org/ox-icalendar hides /home/len/.local/share/emac= s/28.0.50/lisp/org/ox-icalendar
/home/len/.emacs.d/straight/build/let-al= ist/let-alist hides /home/len/.local/share/emacs/28.0.50/lisp/emacs-lisp/le= t-alist
/home/len/.emacs.d/straight/build/eldoc/eldoc hides /home/len/.l= ocal/share/emacs/28.0.50/lisp/emacs-lisp/eldoc

Features:
(shadow = sort mail-extr emacsbug sendmail cl-print help-fns radix-tree
dabbrev ls= p-diagnostics company-oddmuse company-keywords company-etags
company-gta= gs company-dabbrev-code company-dabbrev company-files
company-clang comp= any-capf company-cmake company-semantic
company-template company-yasnipp= et company-bbdb company lsp-headerline
lsp-icons lsp-modeline lsp-ui lsp= -ui-flycheck lsp-ui-doc xwidget
image-mode exif lsp-ui-imenu lsp-ui-peek= lsp-ui-sideline lsp-ui-util
goto-addr vc-mtn vc-hg vc-bzr vc-src vc-scc= s vc-svn vc-cvs vc-rcs
bug-reference mule-util magit-extras treemacs-mag= it magit-bookmark
magit-submodule magit-obsolete 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 mag= it-tag
magit-merge magit-branch magit-reset magit-files magit-refs magit= -status
magit magit-repos magit-apply magit-wip magit-log which-func mag= it-diff
smerge-mode diff git-commit log-edit message rfc822 mml mml-sec = epa
gnus-util rmail rmail-loaddefs mm-decode mm-bodies mm-encode mail-pa= rse
rfc2231 rfc2047 rfc2045 mm-util ietf-drums mail-prsvr mailabbrev
= gmm-utils add-log magit-core magit-autorevert magit-margin
magit-transie= nt magit-process with-editor magit-mode magit-git
magit-section magit-ut= ils crm dired-aux view lsp-zig lsp-steep
lsp-svelte lsp-sqls lsp-yaml ls= p-xml lsp-vimscript lsp-vhdl lsp-vetur
lsp-html lsp-verilog lsp-vala lsp= -terraform lsp-tex lsp-sorbet
lsp-solargraph lsp-rust lsp-rf lsp-r lsp-p= urescript lsp-pwsh lsp-php
lsp-perl lsp-ocaml lsp-nix lsp-nim lsp-markdo= wn lsp-lua lsp-kotlin
lsp-json lsp-javascript lsp-haxe lsp-groovy lsp-ha= ck lsp-go
lsp-completion lsp-gdscript lsp-fsharp lsp-fortran lsp-eslint = lsp-erlang
lsp-elixir lsp-elm lsp-dockerfile lsp-dhall lsp-d lsp-css lsp= -csharp
gnutls lsp-crystal lsp-cmake lsp-clojure lsp-clangd dom lsp-bash=
lsp-angular lsp-ada lsp-actionscript ccls ccls-member-hierarchy
ccls= -inheritance-hierarchy ccls-call-hierarchy ccls-tree ccls-code-lens
ccls= -semantic-highlight ccls-common recentf treemacs-bookmarks bookmark
scad= -dbus dbus xml scad-mode symbol-overlay ws-butler
display-fill-column-in= dicator display-line-numbers editorconfig-core
editorconfig-core-handle = editorconfig-fnmatch ffap counsel xdg
disp-table server diary-lib diary-= loaddefs cal-menu calendar
cal-loaddefs generic hydra python-pytest pyth= on-pytest-autoloads
importmagic epc ctable concurrent deferred cl import= magic-autoloads
epc-autoloads ctable-autoloads concurrent-autoloads defe= rred-autoloads
auto-remove auto-remove-autoloads py-isort py-isort-autol= oads
python-black reformatter python-black-autoloads reformatter-autoloa= ds
blacken blacken-autoloads flycheck-mypy flycheck-mypy-autoloads elpy<= br>elpy-rpc elpy-shell elpy-profile elpy-django elpy-refactor python
tra= mp-sh tramp tramp-loaddefs trampver tramp-integration tramp-compat
parse= -time iso8601 time-date ls-lisp ido files-x cus-edit pp
elpy-autoloads h= ighlight-indentation-autoloads groovy-mode
groovy-mode-autoloads shell-e= xtras eradio-autoloads atomic-chrome
websocket bindat atomic-chrome-auto= loads websocket-autoloads
counsel-keepassxc-autoloads pyvenv eshell esh-= cmd esh-ext esh-opt
esh-proc esh-io esh-arg esh-module esh-groups esh-ut= il pyvenv-autoloads
ccls-autoloads lsp-pyls lsp-ivy lsp-mode tree-widget= wid-edit spinner
network-stream puny nsm rmc markdown-mode noutline out= line lv f epg
epg-config lsp-protocol lsp-ivy-autoloads lsp-ui-autoloads=
lsp-mode-autoloads spinner-autoloads f-autoloads eldoc-autoloads
js2= -mode etags fileloop generator js cc-mode cc-fonts cc-guess cc-menus
cc-= cmds cc-styles cc-align cc-engine cc-vars cc-defs js2-mode-autoloads
ess= ess-utils ess-custom ess-autoloads dts-mode dts-mode-autoloads
gnuplot = info-look gnuplot-autoloads scad-dbus-autoloads
scad-mode-autoloads proj= ectile ibuf-ext projectile-autoloads grip-mode
grip-mode-autoloads markd= own-mode-autoloads org-bullets-autoloads
multi-web-mode multi-web-mode-a= utoloads yaml-mode yaml-mode-autoloads
csv-mode-autoloads ediff ediff-me= rg ediff-mult ediff-wind ediff-diff
ediff-help ediff-init ediff-util git= -timemachine transient format-spec
vc-git git-timemachine-autoloads git-= messenger-autoloads flycheck-aspell
ispell flycheck-aspell-autoloads fly= check derived find-func jka-compr
let-alist flycheck-autoloads let-alist= -autoloads pkg-info-autoloads
epl-autoloads company-autoloads yasnippet-= snippets-autoloads
yasnippet-snippets ivy-yasnippet yasnippet multiple-c= ursors
mc-separate-operations rectangular-region-mode mc-mark-pop mc-edi= t-lines
mc-hide-unmatched-lines-mode mc-mark-more mc-cycle-cursors
mu= ltiple-cursors-core multiple-cursors-autoloads iedit-autoloads
visual-re= gexp-autoloads wgrep-ag wgrep-ag-autoloads wgrep
wgrep-autoloads evil-nu= mbers-autoloads rectangle-utils rect
rectangle-utils-autoloads smartpare= ns thingatpt smartparens-autoloads
ws-butler-autoloads dtrt-indent dtrt-= indent-autoloads editorconfig
editorconfig-autoloads expand-region-autol= oads diredfl diredfl-autoloads
dired-du-autoloads dired-single dired-sin= gle-autoloads
dired-hide-dotfiles dired-hide-dotfiles-autoloads direnvdirenv-autoloads shell pcomplete midnight dumb-jump popup
dumb-jump-au= toloads popup-autoloads ivy-yasnippet-autoloads
yasnippet-autoloads coun= sel-autoloads request mailheader autorevert
mail-utils request-autoloads= swiper swiper-autoloads posframe
backward-forward backward-forward-auto= loads crux-autoloads edmacro
kmacro move-text move-text-autoloads use-pa= ckage-bind-key bind-key
which-key which-key-autoloads minimap minimap-au= toloads
treemacs-magit-autoloads magit-autoloads git-commit-autoloadswith-editor-autoloads transient-autoloads treemacs-icons-dired
treemacs= -icons-dired-autoloads treemacs treemacs-header-line
treemacs-compatibil= ity treemacs-mode treemacs-interface
treemacs-extensions treemacs-mouse-= interface treemacs-tags imenu xref
project treemacs-persistence treemacs= -filewatch-mode filenotify
treemacs-follow-mode treemacs-rendering treem= acs-async
treemacs-workspaces treemacs-dom treemacs-visuals
treemacs-= fringe-indicator treemacs-scope treemacs-faces treemacs-icons
treemacs-t= hemes treemacs-core-utils pfuture inline ht treemacs-logging
treemacs-cu= stomization treemacs-macros treemacs-autoloads cfrs-autoloads
posframe-a= utoloads ht-autoloads hydra-autoloads lv-autoloads
pfuture-autoloads ace= -window-autoloads avy-autoloads
all-the-icons-ibuffer ibuffer ibuffer-lo= addefs
all-the-icons-ibuffer-autoloads all-the-icons-ivy ivy ivy-facesivy-overlay colir all-the-icons-ivy-autoloads ivy-autoloads
all-the-ic= ons all-the-icons-faces data-material data-weathericons
data-octicons da= ta-fileicons data-faicons data-alltheicons
all-the-icons-autoloads ligat= ure ligature-autoloads
symbol-overlay-autoloads highlight-indent-guides<= br>highlight-indent-guides-autoloads diff-hl-margin diff-hl-dired dired
= dired-loaddefs diff-hl log-view pcvs-util vc-dir ewoc vc vc-dispatcher
d= iff-mode easy-mmode diff-hl-autoloads hl-line whitespace xterm-color
xte= rm-color-autoloads rainbow-mode rainbow-mode-autoloads pcase
spaceline-c= onfig spaceline-segments s spaceline powerline comp comp-cstr
warnings r= x powerline-separators powerline-themes dash
spaceline-autoloads s-autol= oads dash-autoloads powerline-autoloads
finder-inf jetbrains-darcula-the= me-autoloads modus-vivendi-theme
modus-themes modus-vivendi-theme-autolo= ads use-package-diminish
auto-minor-mode auto-minor-mode-autoloads dimin= ish diminish-autoloads
try package browse-url url url-proxy url-privacy = url-expand url-methods
url-history url-cookie url-domsuf url-util mailca= p url-handlers
url-parse auth-source eieio eieio-core eieio-loaddefs pas= sword-cache
json map url-vars try-autoloads olivetti olivetti-autoloads = mixed-pitch
face-remap mixed-pitch-autoloads pulse color advice use-pack= age-ensure
xt-mouse use-package-core use-package-autoloads bind-key-auto= loads
straight-autoloads info cl-seq cl-extra help-mode seq byte-opt str= aight
subr-x cl-macs gv cl-loaddefs cl-lib bytecomp byte-compile cconvlazy-lock paren avoid grep compile text-property-search comint
ansi-co= lor ring delsel cus-load iso-transl tooltip eldoc electric
uniquify edif= f-hook vc-hooks lisp-float-type mwheel term/x-win x-win
term/common-win = x-dnd tool-bar dnd fontset image regexp-opt fringe
tabulated-list replac= e newcomment text-mode elisp-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 cl-= generic cham georgian utf-8-lang
misc-lang vietnamese tibetan thai tai-v= iet lao korean japanese eucjp-ms
cp51932 hebrew greek romanian slovak cz= ech european ethiopic indian
cyrillic chinese composite charscript charp= rop case-table epa-hook
jka-cmpr-hook help simple abbrev obarray cl-prel= oaded nadvice button
loaddefs faces cus-face macroexp files window text-= properties overlay
sha1 md5 base64 format env code-pages mule custom wid= get
hashtable-print-readable backquote threads xwidget-internal dbusbind=
inotify lcms2 dynamic-setting system-font-setting font-render-settingcairo move-toolbar gtk x-toolkit x multi-tty make-network-process
nati= vecomp emacs)

Memory information:
((conses 16 1428188 1245272)=C2=A0(symbols 48 61064 3)
=C2=A0(strings 32 220570 170030)
=C2=A0(s= tring-bytes 1 8148602)
=C2=A0(vectors 16 115384)
=C2=A0(vector-slots = 8 2862776 1062890)
=C2=A0(floats 8 1201 2813)
=C2=A0(intervals 56 298= 89 20776)
=C2=A0(buffers 992 62))
--000000000000e5097e05c11376a9-- ------------=_1619768282-15998-1-- From unknown Sun Jun 22 00:52:03 2025 X-Loop: help-debbugs@gnu.org Subject: bug#48095: 28.0.50; display-line-numbers-mode / display-line-numbers-width-start incorrect Resent-From: Len Trigg Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Fri, 30 Apr 2021 10:57:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 48095 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Eli Zaretskii Cc: 48095-done@debbugs.gnu.org Received: via spool by 48095-done@debbugs.gnu.org id=D48095.16197801953179 (code D ref 48095); Fri, 30 Apr 2021 10:57:01 +0000 Received: (at 48095-done) by debbugs.gnu.org; 30 Apr 2021 10:56:35 +0000 Received: from localhost ([127.0.0.1]:57586 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lcQp0-0000pC-MT for submit@debbugs.gnu.org; Fri, 30 Apr 2021 06:56:35 -0400 Received: from mail-pl1-f178.google.com ([209.85.214.178]:34796) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lcQoy-0000ov-RK for 48095-done@debbugs.gnu.org; Fri, 30 Apr 2021 06:56:33 -0400 Received: by mail-pl1-f178.google.com with SMTP id h7so7821499plt.1 for <48095-done@debbugs.gnu.org>; Fri, 30 Apr 2021 03:56:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=TNpL7aVn9JM4qpw0PoP1tCpFk0SNKnT7nN8zr1ObbMI=; b=o03Hqd/W7s/apc7RfvMn1jwHJ/9vojsayLEKNk6SAbvjT5TzudUtGVRp4ITeFsT4KC SwqD5GsoTa3AzyP0cCOCTXVV9gIMhT3IiqwhGgl/F3dPMe+IgunS8DQtqlfJV2VXLKrY rcw5UyZt3aPWY4WZFIlPL3IqIUgL+WkWFROrwPEP9HkVAfVoWwvKynVUVz8rBY+uWkNF Zu6LthYU4mGZXwHl0f+WBvu2Xz/zmGbRXTgXf7ikXVan7vF+jpjnIp7aFwElC/FztvuN kng3lGD0Mec8cMsu4MGrw3Y9DkExe0/eBAnFdtNLgDF5VoDBNjt7kt3ofZm+OXU5JBAl 1ikQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=TNpL7aVn9JM4qpw0PoP1tCpFk0SNKnT7nN8zr1ObbMI=; b=tKGpThZNUezCeOE1e9WXQVHgFJ4XHeZNGB/55uleFENy8Hjso4AcrroixUWMUUTgXu jTDHIth8dLRLMemzh3bIDro2Vy62cDubomq+taLxWRjzhy+u29CQivjkggfht3C98uX7 QAcTT23IcL/h9D3ryyf8kzCqAXRkQwLbguQgqc5F5g2KxHsFvP/4UTNKURG/kYYU3CRO HyBnYcAsQRrf6dCHS3f1b3kqllxjbPCEzEdiioSLHNplJiUuMdJNBbNeSnyw6brc3lEM VlSAXwJArpw9MmmeiazRFYrO7TyyvcrETGsOjkjNKDnQtMJ9jYAd0DxAKHpu8Nxf0Ipo hijw== X-Gm-Message-State: AOAM531IG8DPFCgUAuJl8NnCdW1KfzCO0iPAPd3oOxLxeRJWPnHl/2kC rr6jDb8a7qs9V/INvV/kTtBUA9poLdG7N6M2qmAhTG5m X-Google-Smtp-Source: ABdhPJzAuhwLr7lvhqZkOE+ntgjEuaJ77+Wgym1TA26maGIypHK/Y3BbmyF907yBI98LyODIj0vV8XUHbxFxdhc8Rxs= X-Received: by 2002:a17:902:82c3:b029:ed:70b2:363a with SMTP id u3-20020a17090282c3b02900ed70b2363amr4515371plz.25.1619780186779; Fri, 30 Apr 2021 03:56:26 -0700 (PDT) MIME-Version: 1.0 References: <83pmydea3b.fsf@gnu.org> <83czuccjg2.fsf@gnu.org> In-Reply-To: <83czuccjg2.fsf@gnu.org> From: Len Trigg Date: Fri, 30 Apr 2021 22:56:15 +1200 Message-ID: Content-Type: multipart/alternative; boundary="000000000000a5b28f05c12e76be" X-Spam-Score: 0.0 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) --000000000000a5b28f05c12e76be Content-Type: text/plain; charset="UTF-8" Thanks Eli, that sounds carefully thought through and I agree with your assessment. Cheers! On Fri, 30 Apr 2021, 19:36 Eli Zaretskii, wrote: > > From: Len Trigg > > Date: Fri, 30 Apr 2021 10:29:23 +1200 > > Cc: 48095@debbugs.gnu.org > > > > That seems to work perfectly for my goal (and I assume the intent of > display-line-numbers-width-start) of > > having the width stay fixed unless content gets added to the buffer. It > might help to add guidance in the docs > > that extra lines would typically be set to the maximum window height. > > Thanks, I added that to the doc string. > > > Or maybe that value could instead be > > automatically computed from the height of the tallest emacs frame at > that time? I assume that's not too > > intensive to determine since it happens once when the mode is activated? > > This would be over-engineering, IMO. First, some people tend to have > lots of frames, so this might be expensive. Second, what matters is > not the frame height but the window height, and we could have many > windows even if the number of frames is small. Third, some frames and > windows could be dedicated to special displays, and thus not really > relevant (example: Speedbar frames), so we will no doubt be asked to > provide yet another defcustom, to let users control which frames are > exempt from accounting for their height. > > So I think asking users to provide a value strikes a good balance > between functionality and complexity, at least unless we hear about > use cases where automatic adjustment would really make a lot of sense. > > With that in mind, I installed the change on the master branch, and > I'm closing this bug report. > --000000000000a5b28f05c12e76be Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Thanks Eli, that sounds carefully thought through and I a= gree with your assessment.

Che= ers!

On Fri, 30 Apr 2021, 19:36 Eli Zaretskii, <eliz@gnu.org> wrote:
> From: Len Trigg <lenbok@gmail.com>
> Date: Fri, 30 Apr 2021 10:29:23 +1200
> Cc: 48095@debbugs.gnu.org
>
> That seems to work perfectly for my goal (and I assume the intent of d= isplay-line-numbers-width-start) of
> having the width stay fixed unless content gets added to the buffer. I= t might help to add guidance in the docs
> that extra lines would typically be set to the maximum window height.<= br>
Thanks, I added that to the doc string.

> Or maybe that value could instead be
> automatically computed from the height of the tallest emacs frame at t= hat time? I assume that's not too
> intensive to determine since it happens once when the mode is activate= d?

This would be over-engineering, IMO.=C2=A0 First, some people tend to have<= br> lots of frames, so this might be expensive.=C2=A0 Second, what matters is not the frame height but the window height, and we could have many
windows even if the number of frames is small.=C2=A0 Third, some frames and=
windows could be dedicated to special displays, and thus not really
relevant (example: Speedbar frames), so we will no doubt be asked to
provide yet another defcustom, to let users control which frames are
exempt from accounting for their height.

So I think asking users to provide a value strikes a good balance
between functionality and complexity, at least unless we hear about
use cases where automatic adjustment would really make a lot of sense.

With that in mind, I installed the change on the master branch, and
I'm closing this bug report.
--000000000000a5b28f05c12e76be--