GNU bug report logs - #48257
[kisara.moe] 28.0.50; Align to right doesn't account for window separator in terminal frames

Previous Next

Package: emacs;

Reported by: mohkale <at> kisara.moe

Date: Thu, 6 May 2021 15:40:02 UTC

Severity: normal

Tags: notabug

Done: Eli Zaretskii <eliz <at> gnu.org>

Bug is archived. No further changes may be made.

To add a comment to this bug, you must first unarchive it, by sending
a message to control AT debbugs.gnu.org, with unarchive 48257 in the body.
You can then email your comments to 48257 AT debbugs.gnu.org in the normal way.

Toggle the display of automated, internal messages from the tracker.

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to bug-gnu-emacs <at> gnu.org:
bug#48257; Package emacs. (Thu, 06 May 2021 15:40:02 GMT) Full text and rfc822 format available.

Acknowledgement sent to mohkale <at> kisara.moe:
New bug report received and forwarded. Copy sent to bug-gnu-emacs <at> gnu.org. (Thu, 06 May 2021 15:40:02 GMT) Full text and rfc822 format available.

Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):

From: mohkale <at> kisara.moe
To: bug-gnu-emacs <at> gnu.org
Subject: [kisara.moe] 28.0.50;
 Align to right doesn't account for window separator in terminal frames
Date: Thu, 06 May 2021 17:16:53 +0200
On terminal frames emacs doesn't account for the window separator when
right aligning some text. Many mode-line packages which include both
left and right hand sections are thus off alignment. I believe this is
an issue because on GUI frames the separator is a straight line that
takes up (essentially) no width whereas on terminal frames it takes up a
full column.

Reproduction instruction:
1. Run `emacs -nw -q`
2. Copy the following code block into your scratch buffer and run `M-x eval-buffer`.
```lisp
(defvar left-mode-line-format+
  '("foo"))

(defvar right-mode-line-format+
  '("bar"))

(defun +align-mode-line (lhs-forms rhs-forms)
  "Adapted from `doom-modeline-def-modeline'."
  (let ((left-width (string-width (format-mode-line (cons "" rhs-forms)))))
    (list lhs-forms
          (propertize " "
                      'display `((space :align-to
                                        (- (+ right right-fringe right-margin)
                                           ,left-width))))
          rhs-forms)))

(setq
 mode-line-format
 '((:eval (+align-mode-line left-mode-line-format+
                            right-mode-line-format+))))
```
3. Now run `split-window-right`.


Observe that in the left window the last character in the right aligned
mode-line section is one character too short (because the window
separators width isn't accounted for) whereas in the right window this
isn't an issue.

If you split-window-right multiple times you can observe the same
behaviour of the rightmost window being rendered properly but all the
other windows with a window separator on the right-hand-side are
truncated by one character.

In GNU Emacs 28.0.50 (build 2, x86_64-pc-linux-gnu, GTK+ Version 3.24.29, cairo version 1.17.4)
 of 2021-04-30 built on mk-desktop
Repository revision: 1167253f75badf9e7df1bf983c2ebeb2d37d3881
Repository branch: master
System Description: Arch Linux

Configured using:
 'configure --prefix=/usr --sysconfdir=/etc --libexecdir=/usr/lib
 --localstatedir=/var --mandir=/usr/share/man --with-gameuser=:games
 --with-sound=alsa --with-modules --with-native-compilation
 --without-gconf --without-gsettings --enable-link-time-optimization
 --with-x-toolkit=gtk3 --without-xaw3d --without-compress-install
 '--program-transform-name=s/\([ec]tags\)/\1.emacs/'
 'CFLAGS=-march=x86-64 -mtune=generic -O2 -pipe -fno-plt -fexceptions
 -Wp,-D_FORTIFY_SOURCE=2,-D_GLIBCXX_ASSERTIONS -Wformat
 -Werror=format-security -fstack-clash-protection -fcf-protection -flto
 -fuse-linker-plugin'
 LDFLAGS=-Wl,-O1,--sort-common,--as-needed,-z,relro,-z,now'

Configured features:
ACL CAIRO DBUS FREETYPE GIF GLIB GMP GNUTLS GPM HARFBUZZ JPEG JSON LCMS2
LIBOTF LIBSYSTEMD LIBXML2 M17N_FLT MODULES NATIVE_COMP NOTIFY INOTIFY
PDUMPER PNG RSVG SECCOMP SOUND THREADS TIFF TOOLKIT_SCROLL_BARS X11 XDBE
XIM XPM GTK3 ZLIB

Important settings:
  value of $LC_MESSAGES: C
  value of $LANG: en_GB.UTF-8
  locale-coding-system: utf-8-unix

Major mode: Org

Minor modes in effect:
  magit-todos-mode: t
  global-git-commit-mode: t
  magit-auto-revert-mode: t
  auto-revert-mode: t
  yas-global-mode: t
  yas-minor-mode: t
  persp-mode: t
  minibuffer-depth-indicate-mode: t
  eyebrowse-mode: t
  org-superstar-mode: t
  org-appear-mode: t
  winner-mode: t
  global-anzu-mode: t
  anzu-mode: t
  electric-pair-mode: t
  xterm-mouse-mode: t
  company-prescient-mode: t
  global-company-mode: t
  company-mode: t
  emojify-mode: t
  vimish-fold-mode: t
  global-hl-todo-mode: t
  hl-todo-mode: t
  hl-line-mode: t
  show-paren-mode: t
  savehist-mode: t
  selectrum-prescient-mode: t
  marginalia-mode: t
  page-break-lines-mode: t
  display-line-numbers-mode: t
  projectile-mode: t
  recentf-mode: t
  selectrum-mode: t
  save-place-mode: t
  winum-mode: t
  which-key-mode: t
  global-undo-tree-mode: t
  undo-tree-mode: t
  global-evil-matchit-mode: t
  evil-matchit-mode: t
  global-evil-surround-mode: t
  evil-surround-mode: t
  evil-snipe-mode: t
  evil-snipe-local-mode: t
  evil-traces-mode: t
  flyspell-mode: t
  shell-dirtrack-mode: t
  evil-mode: t
  evil-local-mode: t
  prescient-persist-mode: t
  xclip-mode: t
  general-override-mode: t
  override-global-mode: t
  straight-use-package-mode: t
  straight-package-neutering-mode: t
  straight-live-modifications-mode: t
  tooltip-mode: t
  global-eldoc-mode: t
  eldoc-mode: t
  electric-indent-mode: t
  mouse-wheel-mode: t
  prettify-symbols-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
  size-indication-mode: t
  column-number-mode: t
  line-number-mode: t
  auto-fill-function: yas--auto-fill
  transient-mark-mode: t
  abbrev-mode: t

Load-path shadows:
/home/mohkale/.config/emacs/lisp/straight/build/org/ob-shen hides /home/mohkale/.config/emacs/lisp/straight/build/org-plus-contrib/ob-shen
/home/mohkale/.config/emacs/lisp/straight/build/org/ob-ruby hides /home/mohkale/.config/emacs/lisp/straight/build/org-plus-contrib/ob-ruby
/home/mohkale/.config/emacs/lisp/straight/build/org/ol-eshell hides /home/mohkale/.config/emacs/lisp/straight/build/org-plus-contrib/ol-eshell
/home/mohkale/.config/emacs/lisp/straight/build/org/ob-picolisp hides /home/mohkale/.config/emacs/lisp/straight/build/org-plus-contrib/ob-picolisp
/home/mohkale/.config/emacs/lisp/straight/build/org/org-element hides /home/mohkale/.config/emacs/lisp/straight/build/org-plus-contrib/org-element
/home/mohkale/.config/emacs/lisp/straight/build/org/ob-octave hides /home/mohkale/.config/emacs/lisp/straight/build/org-plus-contrib/ob-octave
/home/mohkale/.config/emacs/lisp/straight/build/org/ol-rmail hides /home/mohkale/.config/emacs/lisp/straight/build/org-plus-contrib/ol-rmail
/home/mohkale/.config/emacs/lisp/straight/build/org/org-entities hides /home/mohkale/.config/emacs/lisp/straight/build/org-plus-contrib/org-entities
/home/mohkale/.config/emacs/lisp/straight/build/org/org-footnote hides /home/mohkale/.config/emacs/lisp/straight/build/org-plus-contrib/org-footnote
/home/mohkale/.config/emacs/lisp/straight/build/org/org-plot hides /home/mohkale/.config/emacs/lisp/straight/build/org-plus-contrib/org-plot
/home/mohkale/.config/emacs/lisp/straight/build/org/org-mouse hides /home/mohkale/.config/emacs/lisp/straight/build/org-plus-contrib/org-mouse
/home/mohkale/.config/emacs/lisp/straight/build/org/ob-ref hides /home/mohkale/.config/emacs/lisp/straight/build/org-plus-contrib/ob-ref
/home/mohkale/.config/emacs/lisp/straight/build/org/org-version hides /home/mohkale/.config/emacs/lisp/straight/build/org-plus-contrib/org-version
/home/mohkale/.config/emacs/lisp/straight/build/org/ox-publish hides /home/mohkale/.config/emacs/lisp/straight/build/org-plus-contrib/ox-publish
/home/mohkale/.config/emacs/lisp/straight/build/org/ol hides /home/mohkale/.config/emacs/lisp/straight/build/org-plus-contrib/ol
/home/mohkale/.config/emacs/lisp/straight/build/org/org-timer hides /home/mohkale/.config/emacs/lisp/straight/build/org-plus-contrib/org-timer
/home/mohkale/.config/emacs/lisp/straight/build/org/ob-comint hides /home/mohkale/.config/emacs/lisp/straight/build/org-plus-contrib/ob-comint
/home/mohkale/.config/emacs/lisp/straight/build/org/org-table hides /home/mohkale/.config/emacs/lisp/straight/build/org-plus-contrib/org-table
/home/mohkale/.config/emacs/lisp/straight/build/org/ol-docview hides /home/mohkale/.config/emacs/lisp/straight/build/org-plus-contrib/ol-docview
/home/mohkale/.config/emacs/lisp/straight/build/org/ol-irc hides /home/mohkale/.config/emacs/lisp/straight/build/org-plus-contrib/ol-irc
/home/mohkale/.config/emacs/lisp/straight/build/org/org-attach hides /home/mohkale/.config/emacs/lisp/straight/build/org-plus-contrib/org-attach
/home/mohkale/.config/emacs/lisp/straight/build/org/ob-table hides /home/mohkale/.config/emacs/lisp/straight/build/org-plus-contrib/ob-table
/home/mohkale/.config/emacs/lisp/straight/build/org/ob-fortran hides /home/mohkale/.config/emacs/lisp/straight/build/org-plus-contrib/ob-fortran
/home/mohkale/.config/emacs/lisp/straight/build/org/org-pcomplete hides /home/mohkale/.config/emacs/lisp/straight/build/org-plus-contrib/org-pcomplete
/home/mohkale/.config/emacs/lisp/straight/build/org/ob-sed hides /home/mohkale/.config/emacs/lisp/straight/build/org-plus-contrib/ob-sed
/home/mohkale/.config/emacs/lisp/straight/build/org/org-clock hides /home/mohkale/.config/emacs/lisp/straight/build/org-plus-contrib/org-clock
/home/mohkale/.config/emacs/lisp/straight/build/org/ob-coq hides /home/mohkale/.config/emacs/lisp/straight/build/org-plus-contrib/ob-coq
/home/mohkale/.config/emacs/lisp/straight/build/org/ol-info hides /home/mohkale/.config/emacs/lisp/straight/build/org-plus-contrib/ol-info
/home/mohkale/.config/emacs/lisp/straight/build/org/org-duration hides /home/mohkale/.config/emacs/lisp/straight/build/org-plus-contrib/org-duration
/home/mohkale/.config/emacs/lisp/straight/build/org/org-protocol hides /home/mohkale/.config/emacs/lisp/straight/build/org-plus-contrib/org-protocol
/home/mohkale/.config/emacs/lisp/straight/build/org/ol-gnus hides /home/mohkale/.config/emacs/lisp/straight/build/org-plus-contrib/ol-gnus
/home/mohkale/.config/emacs/lisp/straight/build/org/ob hides /home/mohkale/.config/emacs/lisp/straight/build/org-plus-contrib/ob
/home/mohkale/.config/emacs/lisp/straight/build/org/org-goto hides /home/mohkale/.config/emacs/lisp/straight/build/org-plus-contrib/org-goto
/home/mohkale/.config/emacs/lisp/straight/build/org/ob-J hides /home/mohkale/.config/emacs/lisp/straight/build/org-plus-contrib/ob-J
/home/mohkale/.config/emacs/lisp/straight/build/org/ob-python hides /home/mohkale/.config/emacs/lisp/straight/build/org-plus-contrib/ob-python
/home/mohkale/.config/emacs/lisp/straight/build/org/ob-awk hides /home/mohkale/.config/emacs/lisp/straight/build/org-plus-contrib/ob-awk
/home/mohkale/.config/emacs/lisp/straight/build/org/ox-odt hides /home/mohkale/.config/emacs/lisp/straight/build/org-plus-contrib/ox-odt
/home/mohkale/.config/emacs/lisp/straight/build/org/org-habit hides /home/mohkale/.config/emacs/lisp/straight/build/org-plus-contrib/org-habit
/home/mohkale/.config/emacs/lisp/straight/build/org/org-crypt hides /home/mohkale/.config/emacs/lisp/straight/build/org-plus-contrib/org-crypt
/home/mohkale/.config/emacs/lisp/straight/build/org/org-num hides /home/mohkale/.config/emacs/lisp/straight/build/org-plus-contrib/org-num
/home/mohkale/.config/emacs/lisp/straight/build/org/org-lint hides /home/mohkale/.config/emacs/lisp/straight/build/org-plus-contrib/org-lint
/home/mohkale/.config/emacs/lisp/straight/build/org/ob-perl hides /home/mohkale/.config/emacs/lisp/straight/build/org-plus-contrib/ob-perl
/home/mohkale/.config/emacs/lisp/straight/build/org/ob-lisp hides /home/mohkale/.config/emacs/lisp/straight/build/org-plus-contrib/ob-lisp
/home/mohkale/.config/emacs/lisp/straight/build/org/org-capture hides /home/mohkale/.config/emacs/lisp/straight/build/org-plus-contrib/org-capture
/home/mohkale/.config/emacs/lisp/straight/build/org/org-macro hides /home/mohkale/.config/emacs/lisp/straight/build/org-plus-contrib/org-macro
/home/mohkale/.config/emacs/lisp/straight/build/org/ol-w3m hides /home/mohkale/.config/emacs/lisp/straight/build/org-plus-contrib/ol-w3m
/home/mohkale/.config/emacs/lisp/straight/build/org/org-src hides /home/mohkale/.config/emacs/lisp/straight/build/org-plus-contrib/org-src
/home/mohkale/.config/emacs/lisp/straight/build/org/ob-css hides /home/mohkale/.config/emacs/lisp/straight/build/org-plus-contrib/ob-css
/home/mohkale/.config/emacs/lisp/straight/build/org/ox-icalendar hides /home/mohkale/.config/emacs/lisp/straight/build/org-plus-contrib/ox-icalendar
/home/mohkale/.config/emacs/lisp/straight/build/org/ob-dot hides /home/mohkale/.config/emacs/lisp/straight/build/org-plus-contrib/ob-dot
/home/mohkale/.config/emacs/lisp/straight/build/org/ob-asymptote hides /home/mohkale/.config/emacs/lisp/straight/build/org-plus-contrib/ob-asymptote
/home/mohkale/.config/emacs/lisp/straight/build/org/ob-mscgen hides /home/mohkale/.config/emacs/lisp/straight/build/org-plus-contrib/ob-mscgen
/home/mohkale/.config/emacs/lisp/straight/build/org/ob-lua hides /home/mohkale/.config/emacs/lisp/straight/build/org-plus-contrib/ob-lua
/home/mohkale/.config/emacs/lisp/straight/build/org/ob-eval hides /home/mohkale/.config/emacs/lisp/straight/build/org-plus-contrib/ob-eval
/home/mohkale/.config/emacs/lisp/straight/build/org/ob-forth hides /home/mohkale/.config/emacs/lisp/straight/build/org-plus-contrib/ob-forth
/home/mohkale/.config/emacs/lisp/straight/build/org/ob-sqlite hides /home/mohkale/.config/emacs/lisp/straight/build/org-plus-contrib/ob-sqlite
/home/mohkale/.config/emacs/lisp/straight/build/org/ob-stan hides /home/mohkale/.config/emacs/lisp/straight/build/org-plus-contrib/ob-stan
/home/mohkale/.config/emacs/lisp/straight/build/org/ob-org hides /home/mohkale/.config/emacs/lisp/straight/build/org-plus-contrib/ob-org
/home/mohkale/.config/emacs/lisp/straight/build/org/org-list hides /home/mohkale/.config/emacs/lisp/straight/build/org-plus-contrib/org-list
/home/mohkale/.config/emacs/lisp/straight/build/org/org-datetree hides /home/mohkale/.config/emacs/lisp/straight/build/org-plus-contrib/org-datetree
/home/mohkale/.config/emacs/lisp/straight/build/org/ob-core hides /home/mohkale/.config/emacs/lisp/straight/build/org-plus-contrib/ob-core
/home/mohkale/.config/emacs/lisp/straight/build/org/ox-ascii hides /home/mohkale/.config/emacs/lisp/straight/build/org-plus-contrib/ox-ascii
/home/mohkale/.config/emacs/lisp/straight/build/org/ob-js hides /home/mohkale/.config/emacs/lisp/straight/build/org-plus-contrib/ob-js
/home/mohkale/.config/emacs/lisp/straight/build/org/org-archive hides /home/mohkale/.config/emacs/lisp/straight/build/org-plus-contrib/org-archive
/home/mohkale/.config/emacs/lisp/straight/build/org/ob-eshell hides /home/mohkale/.config/emacs/lisp/straight/build/org-plus-contrib/ob-eshell
/home/mohkale/.config/emacs/lisp/straight/build/org/ox-texinfo hides /home/mohkale/.config/emacs/lisp/straight/build/org-plus-contrib/ox-texinfo
/home/mohkale/.config/emacs/lisp/straight/build/org/ob-gnuplot hides /home/mohkale/.config/emacs/lisp/straight/build/org-plus-contrib/ob-gnuplot
/home/mohkale/.config/emacs/lisp/straight/build/org/ob-screen hides /home/mohkale/.config/emacs/lisp/straight/build/org-plus-contrib/ob-screen
/home/mohkale/.config/emacs/lisp/straight/build/org/ox-beamer hides /home/mohkale/.config/emacs/lisp/straight/build/org-plus-contrib/ox-beamer
/home/mohkale/.config/emacs/lisp/straight/build/org/ob-shell hides /home/mohkale/.config/emacs/lisp/straight/build/org-plus-contrib/ob-shell
/home/mohkale/.config/emacs/lisp/straight/build/org/ob-ditaa hides /home/mohkale/.config/emacs/lisp/straight/build/org-plus-contrib/ob-ditaa
/home/mohkale/.config/emacs/lisp/straight/build/org/ox-html hides /home/mohkale/.config/emacs/lisp/straight/build/org-plus-contrib/ox-html
/home/mohkale/.config/emacs/lisp/straight/build/org/ob-C hides /home/mohkale/.config/emacs/lisp/straight/build/org-plus-contrib/ob-C
/home/mohkale/.config/emacs/lisp/straight/build/org/ob-latex hides /home/mohkale/.config/emacs/lisp/straight/build/org-plus-contrib/ob-latex
/home/mohkale/.config/emacs/lisp/straight/build/org/org-mobile hides /home/mohkale/.config/emacs/lisp/straight/build/org-plus-contrib/org-mobile
/home/mohkale/.config/emacs/lisp/straight/build/org/ob-io hides /home/mohkale/.config/emacs/lisp/straight/build/org-plus-contrib/ob-io
/home/mohkale/.config/emacs/lisp/straight/build/org/ob-tangle hides /home/mohkale/.config/emacs/lisp/straight/build/org-plus-contrib/ob-tangle
/home/mohkale/.config/emacs/lisp/straight/build/org/org-agenda hides /home/mohkale/.config/emacs/lisp/straight/build/org-plus-contrib/org-agenda
/home/mohkale/.config/emacs/lisp/straight/build/org/ob-exp hides /home/mohkale/.config/emacs/lisp/straight/build/org-plus-contrib/ob-exp
/home/mohkale/.config/emacs/lisp/straight/build/org/org-keys hides /home/mohkale/.config/emacs/lisp/straight/build/org-plus-contrib/org-keys
/home/mohkale/.config/emacs/lisp/straight/build/org/org hides /home/mohkale/.config/emacs/lisp/straight/build/org-plus-contrib/org
/home/mohkale/.config/emacs/lisp/straight/build/org/org-refile hides /home/mohkale/.config/emacs/lisp/straight/build/org-plus-contrib/org-refile
/home/mohkale/.config/emacs/lisp/straight/build/org/ol-eww hides /home/mohkale/.config/emacs/lisp/straight/build/org-plus-contrib/ol-eww
/home/mohkale/.config/emacs/lisp/straight/build/org/ob-hledger hides /home/mohkale/.config/emacs/lisp/straight/build/org-plus-contrib/ob-hledger
/home/mohkale/.config/emacs/lisp/straight/build/org/ob-lob hides /home/mohkale/.config/emacs/lisp/straight/build/org-plus-contrib/ob-lob
/home/mohkale/.config/emacs/lisp/straight/build/org/ob-scheme hides /home/mohkale/.config/emacs/lisp/straight/build/org-plus-contrib/ob-scheme
/home/mohkale/.config/emacs/lisp/straight/build/org/ob-groovy hides /home/mohkale/.config/emacs/lisp/straight/build/org-plus-contrib/ob-groovy
/home/mohkale/.config/emacs/lisp/straight/build/org/ob-makefile hides /home/mohkale/.config/emacs/lisp/straight/build/org-plus-contrib/ob-makefile
/home/mohkale/.config/emacs/lisp/straight/build/org/ob-sql hides /home/mohkale/.config/emacs/lisp/straight/build/org-plus-contrib/ob-sql
/home/mohkale/.config/emacs/lisp/straight/build/org/ob-emacs-lisp hides /home/mohkale/.config/emacs/lisp/straight/build/org-plus-contrib/ob-emacs-lisp
/home/mohkale/.config/emacs/lisp/straight/build/org/ob-ebnf hides /home/mohkale/.config/emacs/lisp/straight/build/org-plus-contrib/ob-ebnf
/home/mohkale/.config/emacs/lisp/straight/build/org/org-loaddefs hides /home/mohkale/.config/emacs/lisp/straight/build/org-plus-contrib/org-loaddefs
/home/mohkale/.config/emacs/lisp/straight/build/org/ob-ledger hides /home/mohkale/.config/emacs/lisp/straight/build/org-plus-contrib/ob-ledger
/home/mohkale/.config/emacs/lisp/straight/build/org/org-faces hides /home/mohkale/.config/emacs/lisp/straight/build/org-plus-contrib/org-faces
/home/mohkale/.config/emacs/lisp/straight/build/org/ox-md hides /home/mohkale/.config/emacs/lisp/straight/build/org-plus-contrib/ox-md
/home/mohkale/.config/emacs/lisp/straight/build/org/org-colview hides /home/mohkale/.config/emacs/lisp/straight/build/org-plus-contrib/org-colview
/home/mohkale/.config/emacs/lisp/straight/build/org/ob-sass hides /home/mohkale/.config/emacs/lisp/straight/build/org-plus-contrib/ob-sass
/home/mohkale/.config/emacs/lisp/straight/build/org/org-inlinetask hides /home/mohkale/.config/emacs/lisp/straight/build/org-plus-contrib/org-inlinetask
/home/mohkale/.config/emacs/lisp/straight/build/org/ob-matlab hides /home/mohkale/.config/emacs/lisp/straight/build/org-plus-contrib/ob-matlab
/home/mohkale/.config/emacs/lisp/straight/build/org/ob-ocaml hides /home/mohkale/.config/emacs/lisp/straight/build/org-plus-contrib/ob-ocaml
/home/mohkale/.config/emacs/lisp/straight/build/org/ob-maxima hides /home/mohkale/.config/emacs/lisp/straight/build/org-plus-contrib/ob-maxima
/home/mohkale/.config/emacs/lisp/straight/build/org/ob-vala hides /home/mohkale/.config/emacs/lisp/straight/build/org-plus-contrib/ob-vala
/home/mohkale/.config/emacs/lisp/straight/build/org/org-indent hides /home/mohkale/.config/emacs/lisp/straight/build/org-plus-contrib/org-indent
/home/mohkale/.config/emacs/lisp/straight/build/org/org-tempo hides /home/mohkale/.config/emacs/lisp/straight/build/org-plus-contrib/org-tempo
/home/mohkale/.config/emacs/lisp/straight/build/org/ob-abc hides /home/mohkale/.config/emacs/lisp/straight/build/org-plus-contrib/ob-abc
/home/mohkale/.config/emacs/lisp/straight/build/org/ob-plantuml hides /home/mohkale/.config/emacs/lisp/straight/build/org-plus-contrib/ob-plantuml
/home/mohkale/.config/emacs/lisp/straight/build/org/ob-haskell hides /home/mohkale/.config/emacs/lisp/straight/build/org-plus-contrib/ob-haskell
/home/mohkale/.config/emacs/lisp/straight/build/org/ox-latex hides /home/mohkale/.config/emacs/lisp/straight/build/org-plus-contrib/ox-latex
/home/mohkale/.config/emacs/lisp/straight/build/org/org-id hides /home/mohkale/.config/emacs/lisp/straight/build/org-plus-contrib/org-id
/home/mohkale/.config/emacs/lisp/straight/build/org/ol-bbdb hides /home/mohkale/.config/emacs/lisp/straight/build/org-plus-contrib/ol-bbdb
/home/mohkale/.config/emacs/lisp/straight/build/org/org-ctags hides /home/mohkale/.config/emacs/lisp/straight/build/org-plus-contrib/org-ctags
/home/mohkale/.config/emacs/lisp/straight/build/org/org-install hides /home/mohkale/.config/emacs/lisp/straight/build/org-plus-contrib/org-install
/home/mohkale/.config/emacs/lisp/straight/build/org/org-feed hides /home/mohkale/.config/emacs/lisp/straight/build/org-plus-contrib/org-feed
/home/mohkale/.config/emacs/lisp/straight/build/org/org-attach-git hides /home/mohkale/.config/emacs/lisp/straight/build/org-plus-contrib/org-attach-git
/home/mohkale/.config/emacs/lisp/straight/build/org/org-macs hides /home/mohkale/.config/emacs/lisp/straight/build/org-plus-contrib/org-macs
/home/mohkale/.config/emacs/lisp/straight/build/org/ob-java hides /home/mohkale/.config/emacs/lisp/straight/build/org-plus-contrib/ob-java
/home/mohkale/.config/emacs/lisp/straight/build/org/ol-mhe hides /home/mohkale/.config/emacs/lisp/straight/build/org-plus-contrib/ol-mhe
/home/mohkale/.config/emacs/lisp/straight/build/org/org-compat hides /home/mohkale/.config/emacs/lisp/straight/build/org-plus-contrib/org-compat
/home/mohkale/.config/emacs/lisp/straight/build/org/ob-calc hides /home/mohkale/.config/emacs/lisp/straight/build/org-plus-contrib/ob-calc
/home/mohkale/.config/emacs/lisp/straight/build/org/ob-clojure hides /home/mohkale/.config/emacs/lisp/straight/build/org-plus-contrib/ob-clojure
/home/mohkale/.config/emacs/lisp/straight/build/org/ob-R hides /home/mohkale/.config/emacs/lisp/straight/build/org-plus-contrib/ob-R
/home/mohkale/.config/emacs/lisp/straight/build/org/ob-processing hides /home/mohkale/.config/emacs/lisp/straight/build/org-plus-contrib/ob-processing
/home/mohkale/.config/emacs/lisp/straight/build/org/ol-bibtex hides /home/mohkale/.config/emacs/lisp/straight/build/org-plus-contrib/ol-bibtex
/home/mohkale/.config/emacs/lisp/straight/build/org/ox-man hides /home/mohkale/.config/emacs/lisp/straight/build/org-plus-contrib/ox-man
/home/mohkale/.config/emacs/lisp/straight/build/org/ob-lilypond hides /home/mohkale/.config/emacs/lisp/straight/build/org-plus-contrib/ob-lilypond
/home/mohkale/.config/emacs/lisp/straight/build/org/ox-org hides /home/mohkale/.config/emacs/lisp/straight/build/org-plus-contrib/ox-org
/home/mohkale/.config/emacs/lisp/straight/build/org/ox hides /home/mohkale/.config/emacs/lisp/straight/build/org-plus-contrib/ox
/home/mohkale/.config/emacs/lisp/straight/build/cmake-mode/cmake-mode hides /usr/share/emacs/site-lisp/cmake-mode
/home/mohkale/.config/emacs/lisp/straight/build/jsonrpc/jsonrpc hides /usr/share/emacs/28.0.50/lisp/jsonrpc
/home/mohkale/.config/emacs/lisp/straight/build/transient/transient hides /usr/share/emacs/28.0.50/lisp/transient
/home/mohkale/.config/emacs/lisp/straight/build/xref/xref hides /usr/share/emacs/28.0.50/lisp/progmodes/xref
/home/mohkale/.config/emacs/lisp/straight/build/project/project hides /usr/share/emacs/28.0.50/lisp/progmodes/project
/home/mohkale/.config/emacs/lisp/straight/build/flymake/flymake hides /usr/share/emacs/28.0.50/lisp/progmodes/flymake
/home/mohkale/.config/emacs/lisp/straight/build/org/ob-shen hides /usr/share/emacs/28.0.50/lisp/org/ob-shen
/home/mohkale/.config/emacs/lisp/straight/build/org/ob-ruby hides /usr/share/emacs/28.0.50/lisp/org/ob-ruby
/home/mohkale/.config/emacs/lisp/straight/build/org/ol-eshell hides /usr/share/emacs/28.0.50/lisp/org/ol-eshell
/home/mohkale/.config/emacs/lisp/straight/build/org/ob-picolisp hides /usr/share/emacs/28.0.50/lisp/org/ob-picolisp
/home/mohkale/.config/emacs/lisp/straight/build/org/org-element hides /usr/share/emacs/28.0.50/lisp/org/org-element
/home/mohkale/.config/emacs/lisp/straight/build/org/ob-octave hides /usr/share/emacs/28.0.50/lisp/org/ob-octave
/home/mohkale/.config/emacs/lisp/straight/build/org/ol-rmail hides /usr/share/emacs/28.0.50/lisp/org/ol-rmail
/home/mohkale/.config/emacs/lisp/straight/build/org/org-entities hides /usr/share/emacs/28.0.50/lisp/org/org-entities
/home/mohkale/.config/emacs/lisp/straight/build/org/org-footnote hides /usr/share/emacs/28.0.50/lisp/org/org-footnote
/home/mohkale/.config/emacs/lisp/straight/build/org/org-plot hides /usr/share/emacs/28.0.50/lisp/org/org-plot
/home/mohkale/.config/emacs/lisp/straight/build/org/org-mouse hides /usr/share/emacs/28.0.50/lisp/org/org-mouse
/home/mohkale/.config/emacs/lisp/straight/build/org/ob-ref hides /usr/share/emacs/28.0.50/lisp/org/ob-ref
/home/mohkale/.config/emacs/lisp/straight/build/org/org-version hides /usr/share/emacs/28.0.50/lisp/org/org-version
/home/mohkale/.config/emacs/lisp/straight/build/org/ox-publish hides /usr/share/emacs/28.0.50/lisp/org/ox-publish
/home/mohkale/.config/emacs/lisp/straight/build/org/ol hides /usr/share/emacs/28.0.50/lisp/org/ol
/home/mohkale/.config/emacs/lisp/straight/build/org/org-timer hides /usr/share/emacs/28.0.50/lisp/org/org-timer
/home/mohkale/.config/emacs/lisp/straight/build/org/ob-comint hides /usr/share/emacs/28.0.50/lisp/org/ob-comint
/home/mohkale/.config/emacs/lisp/straight/build/org/org-table hides /usr/share/emacs/28.0.50/lisp/org/org-table
/home/mohkale/.config/emacs/lisp/straight/build/org/ol-docview hides /usr/share/emacs/28.0.50/lisp/org/ol-docview
/home/mohkale/.config/emacs/lisp/straight/build/org/ol-irc hides /usr/share/emacs/28.0.50/lisp/org/ol-irc
/home/mohkale/.config/emacs/lisp/straight/build/org/org-attach hides /usr/share/emacs/28.0.50/lisp/org/org-attach
/home/mohkale/.config/emacs/lisp/straight/build/org/ob-table hides /usr/share/emacs/28.0.50/lisp/org/ob-table
/home/mohkale/.config/emacs/lisp/straight/build/org/ob-fortran hides /usr/share/emacs/28.0.50/lisp/org/ob-fortran
/home/mohkale/.config/emacs/lisp/straight/build/org/org-pcomplete hides /usr/share/emacs/28.0.50/lisp/org/org-pcomplete
/home/mohkale/.config/emacs/lisp/straight/build/org/ob-sed hides /usr/share/emacs/28.0.50/lisp/org/ob-sed
/home/mohkale/.config/emacs/lisp/straight/build/org/org-clock hides /usr/share/emacs/28.0.50/lisp/org/org-clock
/home/mohkale/.config/emacs/lisp/straight/build/org/ob-coq hides /usr/share/emacs/28.0.50/lisp/org/ob-coq
/home/mohkale/.config/emacs/lisp/straight/build/org/ol-info hides /usr/share/emacs/28.0.50/lisp/org/ol-info
/home/mohkale/.config/emacs/lisp/straight/build/org/org-duration hides /usr/share/emacs/28.0.50/lisp/org/org-duration
/home/mohkale/.config/emacs/lisp/straight/build/org/org-protocol hides /usr/share/emacs/28.0.50/lisp/org/org-protocol
/home/mohkale/.config/emacs/lisp/straight/build/org/ol-gnus hides /usr/share/emacs/28.0.50/lisp/org/ol-gnus
/home/mohkale/.config/emacs/lisp/straight/build/org/ob hides /usr/share/emacs/28.0.50/lisp/org/ob
/home/mohkale/.config/emacs/lisp/straight/build/org/org-goto hides /usr/share/emacs/28.0.50/lisp/org/org-goto
/home/mohkale/.config/emacs/lisp/straight/build/org/ob-J hides /usr/share/emacs/28.0.50/lisp/org/ob-J
/home/mohkale/.config/emacs/lisp/straight/build/org/ob-python hides /usr/share/emacs/28.0.50/lisp/org/ob-python
/home/mohkale/.config/emacs/lisp/straight/build/org/ob-awk hides /usr/share/emacs/28.0.50/lisp/org/ob-awk
/home/mohkale/.config/emacs/lisp/straight/build/org/ox-odt hides /usr/share/emacs/28.0.50/lisp/org/ox-odt
/home/mohkale/.config/emacs/lisp/straight/build/org/org-habit hides /usr/share/emacs/28.0.50/lisp/org/org-habit
/home/mohkale/.config/emacs/lisp/straight/build/org/org-crypt hides /usr/share/emacs/28.0.50/lisp/org/org-crypt
/home/mohkale/.config/emacs/lisp/straight/build/org/org-num hides /usr/share/emacs/28.0.50/lisp/org/org-num
/home/mohkale/.config/emacs/lisp/straight/build/org/org-lint hides /usr/share/emacs/28.0.50/lisp/org/org-lint
/home/mohkale/.config/emacs/lisp/straight/build/org/ob-perl hides /usr/share/emacs/28.0.50/lisp/org/ob-perl
/home/mohkale/.config/emacs/lisp/straight/build/org/ob-lisp hides /usr/share/emacs/28.0.50/lisp/org/ob-lisp
/home/mohkale/.config/emacs/lisp/straight/build/org/org-capture hides /usr/share/emacs/28.0.50/lisp/org/org-capture
/home/mohkale/.config/emacs/lisp/straight/build/org/org-macro hides /usr/share/emacs/28.0.50/lisp/org/org-macro
/home/mohkale/.config/emacs/lisp/straight/build/org/ol-w3m hides /usr/share/emacs/28.0.50/lisp/org/ol-w3m
/home/mohkale/.config/emacs/lisp/straight/build/org/org-src hides /usr/share/emacs/28.0.50/lisp/org/org-src
/home/mohkale/.config/emacs/lisp/straight/build/org/ob-css hides /usr/share/emacs/28.0.50/lisp/org/ob-css
/home/mohkale/.config/emacs/lisp/straight/build/org/ox-icalendar hides /usr/share/emacs/28.0.50/lisp/org/ox-icalendar
/home/mohkale/.config/emacs/lisp/straight/build/org/ob-dot hides /usr/share/emacs/28.0.50/lisp/org/ob-dot
/home/mohkale/.config/emacs/lisp/straight/build/org/ob-asymptote hides /usr/share/emacs/28.0.50/lisp/org/ob-asymptote
/home/mohkale/.config/emacs/lisp/straight/build/org/ob-mscgen hides /usr/share/emacs/28.0.50/lisp/org/ob-mscgen
/home/mohkale/.config/emacs/lisp/straight/build/org/ob-lua hides /usr/share/emacs/28.0.50/lisp/org/ob-lua
/home/mohkale/.config/emacs/lisp/straight/build/org/ob-eval hides /usr/share/emacs/28.0.50/lisp/org/ob-eval
/home/mohkale/.config/emacs/lisp/straight/build/org/ob-forth hides /usr/share/emacs/28.0.50/lisp/org/ob-forth
/home/mohkale/.config/emacs/lisp/straight/build/org/ob-sqlite hides /usr/share/emacs/28.0.50/lisp/org/ob-sqlite
/home/mohkale/.config/emacs/lisp/straight/build/org/ob-stan hides /usr/share/emacs/28.0.50/lisp/org/ob-stan
/home/mohkale/.config/emacs/lisp/straight/build/org/ob-org hides /usr/share/emacs/28.0.50/lisp/org/ob-org
/home/mohkale/.config/emacs/lisp/straight/build/org/org-list hides /usr/share/emacs/28.0.50/lisp/org/org-list
/home/mohkale/.config/emacs/lisp/straight/build/org/org-datetree hides /usr/share/emacs/28.0.50/lisp/org/org-datetree
/home/mohkale/.config/emacs/lisp/straight/build/org/ob-core hides /usr/share/emacs/28.0.50/lisp/org/ob-core
/home/mohkale/.config/emacs/lisp/straight/build/org/ox-ascii hides /usr/share/emacs/28.0.50/lisp/org/ox-ascii
/home/mohkale/.config/emacs/lisp/straight/build/org/ob-js hides /usr/share/emacs/28.0.50/lisp/org/ob-js
/home/mohkale/.config/emacs/lisp/straight/build/org/org-archive hides /usr/share/emacs/28.0.50/lisp/org/org-archive
/home/mohkale/.config/emacs/lisp/straight/build/org/ob-eshell hides /usr/share/emacs/28.0.50/lisp/org/ob-eshell
/home/mohkale/.config/emacs/lisp/straight/build/org/ox-texinfo hides /usr/share/emacs/28.0.50/lisp/org/ox-texinfo
/home/mohkale/.config/emacs/lisp/straight/build/org/ob-gnuplot hides /usr/share/emacs/28.0.50/lisp/org/ob-gnuplot
/home/mohkale/.config/emacs/lisp/straight/build/org/ob-screen hides /usr/share/emacs/28.0.50/lisp/org/ob-screen
/home/mohkale/.config/emacs/lisp/straight/build/org/ox-beamer hides /usr/share/emacs/28.0.50/lisp/org/ox-beamer
/home/mohkale/.config/emacs/lisp/straight/build/org/ob-shell hides /usr/share/emacs/28.0.50/lisp/org/ob-shell
/home/mohkale/.config/emacs/lisp/straight/build/org/ob-ditaa hides /usr/share/emacs/28.0.50/lisp/org/ob-ditaa
/home/mohkale/.config/emacs/lisp/straight/build/org/ox-html hides /usr/share/emacs/28.0.50/lisp/org/ox-html
/home/mohkale/.config/emacs/lisp/straight/build/org/ob-C hides /usr/share/emacs/28.0.50/lisp/org/ob-C
/home/mohkale/.config/emacs/lisp/straight/build/org/ob-latex hides /usr/share/emacs/28.0.50/lisp/org/ob-latex
/home/mohkale/.config/emacs/lisp/straight/build/org/org-mobile hides /usr/share/emacs/28.0.50/lisp/org/org-mobile
/home/mohkale/.config/emacs/lisp/straight/build/org/ob-io hides /usr/share/emacs/28.0.50/lisp/org/ob-io
/home/mohkale/.config/emacs/lisp/straight/build/org/ob-tangle hides /usr/share/emacs/28.0.50/lisp/org/ob-tangle
/home/mohkale/.config/emacs/lisp/straight/build/org/org-agenda hides /usr/share/emacs/28.0.50/lisp/org/org-agenda
/home/mohkale/.config/emacs/lisp/straight/build/org/ob-exp hides /usr/share/emacs/28.0.50/lisp/org/ob-exp
/home/mohkale/.config/emacs/lisp/straight/build/org/org-keys hides /usr/share/emacs/28.0.50/lisp/org/org-keys
/home/mohkale/.config/emacs/lisp/straight/build/org/org hides /usr/share/emacs/28.0.50/lisp/org/org
/home/mohkale/.config/emacs/lisp/straight/build/org/org-refile hides /usr/share/emacs/28.0.50/lisp/org/org-refile
/home/mohkale/.config/emacs/lisp/straight/build/org/ol-eww hides /usr/share/emacs/28.0.50/lisp/org/ol-eww
/home/mohkale/.config/emacs/lisp/straight/build/org/ob-hledger hides /usr/share/emacs/28.0.50/lisp/org/ob-hledger
/home/mohkale/.config/emacs/lisp/straight/build/org/ob-lob hides /usr/share/emacs/28.0.50/lisp/org/ob-lob
/home/mohkale/.config/emacs/lisp/straight/build/org/ob-scheme hides /usr/share/emacs/28.0.50/lisp/org/ob-scheme
/home/mohkale/.config/emacs/lisp/straight/build/org/ob-groovy hides /usr/share/emacs/28.0.50/lisp/org/ob-groovy
/home/mohkale/.config/emacs/lisp/straight/build/org/ob-makefile hides /usr/share/emacs/28.0.50/lisp/org/ob-makefile
/home/mohkale/.config/emacs/lisp/straight/build/org/ob-sql hides /usr/share/emacs/28.0.50/lisp/org/ob-sql
/home/mohkale/.config/emacs/lisp/straight/build/org/ob-emacs-lisp hides /usr/share/emacs/28.0.50/lisp/org/ob-emacs-lisp
/home/mohkale/.config/emacs/lisp/straight/build/org/ob-ebnf hides /usr/share/emacs/28.0.50/lisp/org/ob-ebnf
/home/mohkale/.config/emacs/lisp/straight/build/org/org-loaddefs hides /usr/share/emacs/28.0.50/lisp/org/org-loaddefs
/home/mohkale/.config/emacs/lisp/straight/build/org/ob-ledger hides /usr/share/emacs/28.0.50/lisp/org/ob-ledger
/home/mohkale/.config/emacs/lisp/straight/build/org/org-faces hides /usr/share/emacs/28.0.50/lisp/org/org-faces
/home/mohkale/.config/emacs/lisp/straight/build/org/ox-md hides /usr/share/emacs/28.0.50/lisp/org/ox-md
/home/mohkale/.config/emacs/lisp/straight/build/org/org-colview hides /usr/share/emacs/28.0.50/lisp/org/org-colview
/home/mohkale/.config/emacs/lisp/straight/build/org/ob-sass hides /usr/share/emacs/28.0.50/lisp/org/ob-sass
/home/mohkale/.config/emacs/lisp/straight/build/org/org-inlinetask hides /usr/share/emacs/28.0.50/lisp/org/org-inlinetask
/home/mohkale/.config/emacs/lisp/straight/build/org/ob-matlab hides /usr/share/emacs/28.0.50/lisp/org/ob-matlab
/home/mohkale/.config/emacs/lisp/straight/build/org/ob-ocaml hides /usr/share/emacs/28.0.50/lisp/org/ob-ocaml
/home/mohkale/.config/emacs/lisp/straight/build/org/ob-maxima hides /usr/share/emacs/28.0.50/lisp/org/ob-maxima
/home/mohkale/.config/emacs/lisp/straight/build/org/ob-vala hides /usr/share/emacs/28.0.50/lisp/org/ob-vala
/home/mohkale/.config/emacs/lisp/straight/build/org/org-indent hides /usr/share/emacs/28.0.50/lisp/org/org-indent
/home/mohkale/.config/emacs/lisp/straight/build/org/org-tempo hides /usr/share/emacs/28.0.50/lisp/org/org-tempo
/home/mohkale/.config/emacs/lisp/straight/build/org/ob-abc hides /usr/share/emacs/28.0.50/lisp/org/ob-abc
/home/mohkale/.config/emacs/lisp/straight/build/org/ob-plantuml hides /usr/share/emacs/28.0.50/lisp/org/ob-plantuml
/home/mohkale/.config/emacs/lisp/straight/build/org/ob-haskell hides /usr/share/emacs/28.0.50/lisp/org/ob-haskell
/home/mohkale/.config/emacs/lisp/straight/build/org/ox-latex hides /usr/share/emacs/28.0.50/lisp/org/ox-latex
/home/mohkale/.config/emacs/lisp/straight/build/org/org-id hides /usr/share/emacs/28.0.50/lisp/org/org-id
/home/mohkale/.config/emacs/lisp/straight/build/org/ol-bbdb hides /usr/share/emacs/28.0.50/lisp/org/ol-bbdb
/home/mohkale/.config/emacs/lisp/straight/build/org/org-ctags hides /usr/share/emacs/28.0.50/lisp/org/org-ctags
/home/mohkale/.config/emacs/lisp/straight/build/org/org-install hides /usr/share/emacs/28.0.50/lisp/org/org-install
/home/mohkale/.config/emacs/lisp/straight/build/org/org-feed hides /usr/share/emacs/28.0.50/lisp/org/org-feed
/home/mohkale/.config/emacs/lisp/straight/build/org/org-attach-git hides /usr/share/emacs/28.0.50/lisp/org/org-attach-git
/home/mohkale/.config/emacs/lisp/straight/build/org/org-macs hides /usr/share/emacs/28.0.50/lisp/org/org-macs
/home/mohkale/.config/emacs/lisp/straight/build/org/ob-java hides /usr/share/emacs/28.0.50/lisp/org/ob-java
/home/mohkale/.config/emacs/lisp/straight/build/org/ol-mhe hides /usr/share/emacs/28.0.50/lisp/org/ol-mhe
/home/mohkale/.config/emacs/lisp/straight/build/org/org-compat hides /usr/share/emacs/28.0.50/lisp/org/org-compat
/home/mohkale/.config/emacs/lisp/straight/build/org/ob-calc hides /usr/share/emacs/28.0.50/lisp/org/ob-calc
/home/mohkale/.config/emacs/lisp/straight/build/org/ob-clojure hides /usr/share/emacs/28.0.50/lisp/org/ob-clojure
/home/mohkale/.config/emacs/lisp/straight/build/org/ob-R hides /usr/share/emacs/28.0.50/lisp/org/ob-R
/home/mohkale/.config/emacs/lisp/straight/build/org/ob-processing hides /usr/share/emacs/28.0.50/lisp/org/ob-processing
/home/mohkale/.config/emacs/lisp/straight/build/org/ol-bibtex hides /usr/share/emacs/28.0.50/lisp/org/ol-bibtex
/home/mohkale/.config/emacs/lisp/straight/build/org/ox-man hides /usr/share/emacs/28.0.50/lisp/org/ox-man
/home/mohkale/.config/emacs/lisp/straight/build/org/ob-lilypond hides /usr/share/emacs/28.0.50/lisp/org/ob-lilypond
/home/mohkale/.config/emacs/lisp/straight/build/org/ox-org hides /usr/share/emacs/28.0.50/lisp/org/ox-org
/home/mohkale/.config/emacs/lisp/straight/build/org/ox hides /usr/share/emacs/28.0.50/lisp/org/ox
/home/mohkale/.config/emacs/lisp/straight/build/let-alist/let-alist hides /usr/share/emacs/28.0.50/lisp/emacs-lisp/let-alist
/home/mohkale/.config/emacs/lisp/straight/build/eldoc/eldoc hides /usr/share/emacs/28.0.50/lisp/emacs-lisp/eldoc

Features:
(shadow sort mail-extr emacsbug sendmail +lib-misc tabify magit-todos
pcre2el rxt re-builder async face-remap orgit magit-bookmark
magit-submodule magit-obsolete magit-popup magit-blame magit-stash
magit-reflog magit-bisect magit-push magit-pull magit-fetch magit-clone
magit-remote magit-commit magit-sequence magit-notes magit-worktree
magit-tag magit-merge magit-branch magit-reset magit-files magit-refs
magit-status magit package url-handlers magit-repos magit-apply
magit-wip magit-log which-func magit-diff smerge-mode git-commit
log-edit pcvs-util add-log magit-core magit-autorevert autorevert
magit-margin magit-transient magit-process with-editor magit-mode
transient magit-git magit-section magit-utils hydra-eyebrowse hydra lv
+lib-text-query org-agenda org-refile consult-org markdown-mode go-mode
find-file ffap etags fileloop consult-eglot evil-matchit-simple vc-mtn
vc-hg vc-bzr vc-src vc-sccs vc-svn vc-cvs vc-rcs vc yasnippet eglot
array filenotify jsonrpc ert ewoc debug backtrace flymake-proc flymake
company-yasnippet +lib-text cl-print shortdoc evil-args pulse color
help-fns radix-tree consult-xref xref project mule-util consult-imenu
imenu consult-selectrum consult bookmark pp persp-mode mb-depth
+lib-buffer-control eyebrowse org-link-minor-mode ob-R ob-shell ob-sed
ob-ruby ob-python python tramp-sh tramp tramp-loaddefs trampver
tramp-integration files-x tramp-compat ls-lisp ob-plantuml ob-ditaa
ob-js ob-java ob-latex ob-haskell ob-C cc-mode cc-fonts cc-guess
cc-menus cc-cmds cc-styles cc-align cc-engine cc-vars cc-defs ob-awk
vc-git vc-dispatcher company-bibtex parsebib org-superstar org-appear
org-element avl-tree generator ol-eww eww xdg url-queue mm-url ol-rmail
ol-mhe ol-irc ol-info ol-gnus nnselect gnus-search eieio-opt speedbar
ezimage dframe gnus-art mm-uu mml2015 mm-view mml-smime smime dig
gnus-sum shr kinsoku svg dom browse-url url url-proxy url-privacy
url-expand url-methods url-history url-cookie url-domsuf url-util
url-parse url-vars mailcap gnus-group gnus-undo gnus-start gnus-dbus
dbus xml gnus-cloud nnimap nnmail mail-source utf7 netrc nnoo parse-time
gnus-spec gnus-int gnus-range message rmc puny rfc822 mml mml-sec epa
epg epg-config mm-decode mm-bodies mm-encode mail-parse rfc2231
mailabbrev gmm-utils mailheader gnus-win gnus nnheader gnus-util rmail
rmail-loaddefs auth-source eieio eieio-core eieio-loaddefs
password-cache rfc2047 rfc2045 ietf-drums mail-utils mm-util mail-prsvr
ol-docview doc-view jka-compr image-mode exif +dired-bindings dired
dired-loaddefs ol-bibtex bibtex iso8601 ol-bbdb ol-w3m ol-man org-eldoc
org ob ob-tangle ob-ref ob-lob ob-table ob-exp org-macro org-footnote
org-src ob-comint org-pcomplete org-list org-faces org-entities
time-date noutline outline org-version ob-emacs-lisp ob-core ob-eval
org-table ol org-keys org-compat org-macs org-loaddefs format-spec
cal-menu calendar cal-loaddefs winner evil-anzu anzu persistent-scratch
elec-pair an-old-hope-theme xt-mouse term/tmux company-emoji
company-emoji-list company-prescient company-capf company emojify
apropos tar-mode arc-mode archive-mode ht disp-table paredit vimish-fold
hl-todo rainbow-delimiters hl-line paren savehist selectrum-prescient
selectrum minibuf-eldef crm marginalia editorconfig-core
editorconfig-core-handle editorconfig-fnmatch page-break-lines
display-line-numbers linum whitespace +projectile-project-types
projectile grep compile text-property-search ibuf-ext
all-the-icons-ibuffer ibuffer ibuffer-loaddefs ebib-autoloads
company-bibtex-autoloads auctex-autoloads tex-site
gitattributes-mode-autoloads gitconfig-mode-autoloads
gitignore-mode-autoloads rustic-autoloads xterm-color-autoloads
spinner-autoloads go-mode-autoloads derived typescript-mode-autoloads
xref-js2-autoloads js2-refactor-autoloads multiple-cursors-autoloads
js-doc-autoloads js2-mode-autoloads modern-cpp-font-lock-autoloads
cmake-mode-autoloads gh-md-autoloads markdown-toc-autoloads
logview-autoloads datetime-autoloads extmap-autoloads
ssh-config-mode-autoloads company-shell-autoloads csv-mode-autoloads
yaml-mode-autoloads sqlup-mode-autoloads vimrc-mode-autoloads
json-mode-autoloads json-snatcher-autoloads json-reformat-autoloads
haml-mode-autoloads web-beautify-autoloads company-web-autoloads
web-completion-data-autoloads emmet-mode-autoloads web-mode-autoloads
ruby-electric-autoloads bundler-autoloads ruby-tools-autoloads
inf-ruby-autoloads yapfify-autoloads pip-requirements-autoloads
py-isort-autoloads pyimport-autoloads shut-up-autoloads
paredit-autoloads clojure-mode-autoloads vdiff-autoloads
rainbow-mode-autoloads tree-sitter-langs-autoloads tree-sitter-autoloads
tsc-autoloads skeletor-autoloads forge-autoloads markdown-mode-autoloads
ghub-autoloads treepy-autoloads closql-autoloads
emacsql-sqlite-autoloads magit-gitflow-autoloads magit-popup-autoloads
magit-todos-autoloads link-hint-autoloads flycheck-pos-tip-autoloads
pos-tip-autoloads flycheck json map find-func engine-mode-autoloads
eglot-autoloads project-autoloads xref-autoloads flymake-autoloads
eldoc-autoloads jsonrpc-autoloads edit-server-htmlize-autoloads
edit-server-autoloads nerd-fonts nerd-fonts-data all-the-icons
all-the-icons-faces data-material data-weathericons data-octicons
data-fileicons data-faicons data-alltheicons dashboard dashboard-widgets
time recentf tree-widget wid-edit dashboard-autoloads
consult-flycheck-autoloads flycheck-autoloads embark-consult-autoloads
consult-autoloads embark-autoloads marginalia-autoloads
selectrum-prescient-autoloads selectrum-autoloads vline-autoloads server
saveplace let-alist pcase imenu-anywhere-autoloads imenu-list-autoloads
ibuffer-projectile-autoloads ibuffer-tramp-autoloads
ibuffer-vc-autoloads ibuf-macs all-the-icons-ibuffer-autoloads
flyspell-correct-autoloads dired-git-info-autoloads
all-the-icons-dired-autoloads +comint-bindings auto-yasnippet-autoloads
yasnippet-autoloads winum winum-autoloads which-key which-key-autoloads
visible-mark-autoloads uuidgen-autoloads undo-tree diff queue
undo-tree-autoloads queue-autoloads rainbow-delimiters-autoloads
transpose-frame-autoloads sudo-edit-autoloads real-auto-save-autoloads
projectile-autoloads pkg-info-autoloads epl-autoloads
persp-mode-autoloads pcre2el-autoloads page-break-lines-autoloads
miniedit-autoloads lorem-ipsum-autoloads ialign-autoloads
pretty-hydra-autoloads hl-todo-autoloads hide-mode-line-autoloads
help-fns+-autoloads git-link-autoloads eyebrowse-autoloads
company-emoji-autoloads emojify-autoloads ht-autoloads
drag-stuff-autoloads define-word-autoloads buffer-move-autoloads
nerd-fonts-autoloads all-the-icons-autoloads company-prescient-autoloads
company-autoloads org-appear-autoloads org-link-minor-mode-autoloads
org-ref-autoloads pdf-tools-autoloads tablist-autoloads
key-chord-autoloads hydra-autoloads lv-autoloads ivy-autoloads
helm-bibtex-autoloads bibtex-completion-autoloads biblio-autoloads
biblio-core-autoloads let-alist-autoloads parsebib-autoloads
helm-autoloads helm-core-autoloads popup-autoloads async-autoloads
htmlize-autoloads org-roam-server-autoloads simple-httpd-autoloads
org-roam-autoloads emacsql-sqlite3-autoloads emacsql-autoloads
org-fragtog-autoloads doct-autoloads magit-autoloads
git-commit-autoloads with-editor-autoloads transient-autoloads
org-superstar-mode-autoloads evil-matchit evil-matchit-sdk evil-surround
evil-snipe diff-mode evil-traces evil evil-keybindings evil-integration
evil-maps evil-commands reveal flyspell ispell evil-jumps
evil-command-window evil-types evil-search evil-ex shell pcomplete
comint ansi-color evil-macros evil-repeat evil-states evil-core advice
evil-common windmove calc calc-loaddefs calc-macs thingatpt rect
evil-digraphs evil-vars ring vimish-fold-autoloads
evil-easymotion-autoloads avy-autoloads evil-args-autoloads
evil-traces-autoloads evil-multiedit-autoloads iedit-autoloads
evil-snipe-autoloads evil-numbers-autoloads evil-anzu-autoloads
anzu-autoloads evil-surround-autoloads evil-matchit-autoloads
evil-autoloads goto-chg-autoloads prescient prescient-autoloads
orderless orderless-autoloads editorconfig editorconfig-autoloads
persistent-scratch-autoloads spaceleader-base spaceleader edmacro kmacro
bind-map spaceleader-autoloads bind-map-autoloads xclip xclip-autoloads
term/xterm xterm f f-autoloads s s-autoloads dash dash-autoloads
diminish diminish-autoloads delight comp comp-cstr warnings
delight-autoloads general general-autoloads finder-inf use-package
use-package-ensure use-package-delight use-package-diminish
use-package-bind-key bind-key easy-mmode use-package-core
use-package-autoloads bind-key-autoloads straight-autoloads cl-seq info
cl-extra help-mode seq byte-opt straight cl-macs gv bytecomp
byte-compile cconv cl-loaddefs cl-lib subr-x +config +config-default rx
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 dbusbind
inotify lcms2 dynamic-setting font-render-setting cairo move-toolbar gtk
x-toolkit x multi-tty make-network-process nativecomp emacs)

Memory information:
((conses 16 4306273 1763247)
 (symbols 48 68632 42)
 (strings 32 395800 45423)
 (string-bytes 1 11716731)
 (vectors 16 144429)
 (vector-slots 8 4688964 483778)
 (floats 8 1726 1918)
 (intervals 56 169310 16444)
 (buffers 992 39))




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#48257; Package emacs. (Thu, 06 May 2021 15:49:02 GMT) Full text and rfc822 format available.

Message #8 received at 48257 <at> debbugs.gnu.org (full text, mbox):

From: Eli Zaretskii <eliz <at> gnu.org>
To: mohkale <at> kisara.moe
Cc: 48257 <at> debbugs.gnu.org
Subject: Re: bug#48257: [kisara.moe] 28.0.50;
 Align to right doesn't account for window separator in terminal frames
Date: Thu, 06 May 2021 18:48:04 +0300
> Date: Thu, 06 May 2021 17:16:53 +0200
> From: mohkale <at> kisara.moe
> 
> On terminal frames emacs doesn't account for the window separator when
> right aligning some text.

Only in the mode line, or also in the window's text area?

Your recipe only affects the mode line.

Thanks.




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#48257; Package emacs. (Thu, 06 May 2021 16:44:01 GMT) Full text and rfc822 format available.

Message #11 received at 48257 <at> debbugs.gnu.org (full text, mbox):

From: Eli Zaretskii <eliz <at> gnu.org>
To: mohkale <at> kisara.moe
Cc: 48257 <at> debbugs.gnu.org
Subject: Re: [kisara.moe] Re: [kisara.moe] Re: bug#48257: [kisara.moe] 28.0.50;
 Align to right doesn't account for window separator in terminal frames
Date: Thu, 06 May 2021 19:43:00 +0300
> Date: Thu, 06 May 2021 18:05:04 +0200
> Cc: mohkale <at> kisara.moe, 48257 <at> debbugs.gnu.org
> From: mohkale <at> kisara.moe
> 
> I haven't encountered the issue in regular windows (at least not that I can recall).

Yes, I think this is correct.

> I have encountered something similair when using selectrums new group-title-format.
> where there's a $ shown on the right hand fringe because the input is too long but
> that may be unrelated.

On the right fringe? you mean in GUI frames?  Because there are no
fringes on TTY frames.

I think you mean the "$" truncation glyphs in the mini-window, which
appear because selectrum turns on truncate-lines there.  So this is
unrelated.




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#48257; Package emacs. (Thu, 06 May 2021 17:33:01 GMT) Full text and rfc822 format available.

Message #14 received at 48257 <at> debbugs.gnu.org (full text, mbox):

From: mohkale <at> kisara.moe
To: Eli Zaretskii <eliz <at> gnu.org>
Cc: mohkale <at> kisara.moe, 48257 <at> debbugs.gnu.org
Subject: [kisara.moe] Re: [kisara.moe] Re: bug#48257: [kisara.moe] 28.0.50;
 Align to right doesn't account for window separator in terminal frames
Date: Thu, 06 May 2021 18:05:04 +0200
Eli Zaretskii <eliz <at> gnu.org> wrote:

> > Date: Thu, 06 May 2021 17:16:53 +0200
> > From: mohkale <at> kisara.moe
> > 
> > On terminal frames emacs doesn't account for the window separator when
> > right aligning some text.
> 
> Only in the mode line, or also in the window's text area?
> 
> Your recipe only affects the mode line.
> 
> Thanks.

I haven't encountered the issue in regular windows (at least not that I can recall).
I have encountered something similair when using selectrums new group-title-format.
where there's a $ shown on the right hand fringe because the input is too long but
that may be unrelated.

```lisp
(selectrum-mode +1)
(completing-read "foo: "
                 (cl-loop for i from 1 to 10
                          collect (concat
                                    #("    " 0 4 (face (:strike-through t)))
                                    #(" hello ")
                                    #(" " 0 1 (face (:strike-through t) display (space :align-to right))))))
```

I believe selectrum renders completion candidates onto a virtual buffer so maybe this
is an example of what you described.




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#48257; Package emacs. (Tue, 11 May 2021 16:45:02 GMT) Full text and rfc822 format available.

Message #17 received at 48257 <at> debbugs.gnu.org (full text, mbox):

From: Eli Zaretskii <eliz <at> gnu.org>
To: mohkale <at> kisara.moe
Cc: 48257 <at> debbugs.gnu.org
Subject: Re: bug#48257: [kisara.moe] 28.0.50;
 Align to right doesn't account for window separator in terminal frames
Date: Tue, 11 May 2021 19:44:47 +0300
tags 48257 notabug
thanks

> Date: Thu, 06 May 2021 17:16:53 +0200
> From: mohkale <at> kisara.moe
> 
> On terminal frames emacs doesn't account for the window separator when
> right aligning some text. Many mode-line packages which include both
> left and right hand sections are thus off alignment. I believe this is
> an issue because on GUI frames the separator is a straight line that
> takes up (essentially) no width whereas on terminal frames it takes up a
> full column.
> 
> Reproduction instruction:
> 1. Run `emacs -nw -q`
> 2. Copy the following code block into your scratch buffer and run `M-x eval-buffer`.
> ```lisp
> (defvar left-mode-line-format+
>   '("foo"))
> 
> (defvar right-mode-line-format+
>   '("bar"))
> 
> (defun +align-mode-line (lhs-forms rhs-forms)
>   "Adapted from `doom-modeline-def-modeline'."
>   (let ((left-width (string-width (format-mode-line (cons "" rhs-forms)))))
>     (list lhs-forms
>           (propertize " "
>                       'display `((space :align-to
>                                         (- (+ right right-fringe right-margin)
>                                            ,left-width))))
>           rhs-forms)))
> 
> (setq
>  mode-line-format
>  '((:eval (+align-mode-line left-mode-line-format+
>                             right-mode-line-format+))))
> ```
> 3. Now run `split-window-right`.
> 
> 
> Observe that in the left window the last character in the right aligned
> mode-line section is one character too short (because the window
> separators width isn't accounted for) whereas in the right window this
> isn't an issue.

I've looked into this, and I don't think this behavior is incorrect.

:align-to references the physical dimensions of the screen, so if the
last column of the window is taken by a truncation or a continuation
glyph, or the last column of the mode line is taken by the
vertical-border glyph, the Lisp program which wants to display
something flushed to the right should take this into account, and
enlarge the offset accordingly.  Emacs allows Lisp code to control
what characters are displayed as truncation glyphs, continuation
glyphs, and vertical-border glyphs, so these aren't fixed values that
redisplay should automatically take into account.  Maybe it's somewhat
unexpected, but if you think about what :align-to does, I think (hope)
you will agree that there's no bug here.




Added tag(s) notabug. Request was from Eli Zaretskii <eliz <at> gnu.org> to control <at> debbugs.gnu.org. (Tue, 11 May 2021 16:45:02 GMT) Full text and rfc822 format available.

Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#48257; Package emacs. (Tue, 11 May 2021 17:20:02 GMT) Full text and rfc822 format available.

Message #22 received at 48257 <at> debbugs.gnu.org (full text, mbox):

From: Eli Zaretskii <eliz <at> gnu.org>
To: Mohsin Kaleem <mohkale <at> kisara.moe>
Cc: 48257 <at> debbugs.gnu.org
Subject: Re: [kisara.moe] Re: [kisara.moe] Re: bug#48257: [kisara.moe] 28.0.50;
 Align to right doesn't account for window separator in terminal frames
Date: Tue, 11 May 2021 20:19:49 +0300
[Please use Reply All to keep the bug address on the CC list.]

> From: Mohsin Kaleem <mohkale <at> kisara.moe>
> Date: Tue, 11 May 2021 18:10:03 +0100
> 
> So what would be the recommended approach for mode-line developers
> detect that their not on a rightmost window and then add the extra space
> to prevent the mode-line being truncated?

We have the window-at-side-p function; is that what you want?

> Personally I still think this is a bug because the mode-line doesn't
> control whether the window-separator glyph is shown or not.

It is controlled by the current display-table.

> If the
> mode-line intends to right-align some text it should be right-aligned
> without having to consider corner-cases such as the window position.
> Especially seeing as this isn't an issue on GUI frames, only terminal
> frames. I'd suggest adding a right-separator alongside right-fringe and
> right-margin so that mode-line developers don't have to concern
> themselves with this.
> 
> Alternatively it'd be nice if emacs just took care of spacing and
> alignment itself. With so many mode-lines re-implementing the same
> general logic to right align a segment, a built-in construct might be
> more general and avoid the issue of alignment here. It'll also avoid the
> need to evaluate the right-segment twice (first to get it's width and
> then to actually render it).
> 
> For example vim has a status-line construct (I believe %=) which is
> replaced with the appropriate number of spaces to separate two or more
> groups.
> For example with a window width of 12 and a status-line format of
> "foo%=bar", we'd get a rendered status-line of "foo      bar".
> Similarly with a format of "foo%=bar%=baz" we'd get "foo bar baz".

If someone wants to work on providing patches to support any of your
suggestions, I'm sure it will be welcome, at least as an optional
feature.  TIA.




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#48257; Package emacs. (Tue, 11 May 2021 17:27:02 GMT) Full text and rfc822 format available.

Message #25 received at 48257 <at> debbugs.gnu.org (full text, mbox):

From: Eli Zaretskii <eliz <at> gnu.org>
To: mohkale <at> kisara.moe
Cc: 48257 <at> debbugs.gnu.org
Subject: Re: bug#48257: [kisara.moe] Re: [kisara.moe] Re: bug#48257:
 [kisara.moe] 28.0.50;
 Align to right doesn't account for window separator in terminal frames
Date: Tue, 11 May 2021 20:26:14 +0300
> Date: Tue, 11 May 2021 20:19:49 +0300
> From: Eli Zaretskii <eliz <at> gnu.org>
> Cc: 48257 <at> debbugs.gnu.org
> 
> > Personally I still think this is a bug because the mode-line doesn't
> > control whether the window-separator glyph is shown or not.
> 
> It is controlled by the current display-table.

Oh, and btw: this issue is not limited to the mode line.  If you try
:align-to in the text area of a window on a TTY frame, you will see
that it ignores the column taken by truncation/continuation glyphs,
exactly like the mode line ignores the vertical-border glyph.




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#48257; Package emacs. (Tue, 11 May 2021 17:42:01 GMT) Full text and rfc822 format available.

Message #28 received at 48257 <at> debbugs.gnu.org (full text, mbox):

From: Mohsin Kaleem <mohkale <at> kisara.moe>
To: Eli Zaretskii <eliz <at> gnu.org>
Cc: 48257 <at> debbugs.gnu.org
Subject: [kisara.moe] Re: [kisara.moe] Re: [kisara.moe] Re: [kisara.moe] Re:
 bug#48257:
 [kisara.moe] 28.0.50; Align to right doesn't account for window separator
 in terminal frames
Date: Tue, 11 May 2021 18:40:19 +0100
Eli Zaretskii <eliz <at> gnu.org> writes:

> [Please use Reply All to keep the bug address on the CC list.]
>

Oooh, sorry, I recently started managing email from within emacs (good
excuse to report to the developer mailing list) and I'm still kind of
rusty with all the stuff I used to rely on a dedicated program for.

>
> We have the window-at-side-p function; is that what you want?
>

Oh, yep, that should work. Not the nicest solution because you're
mode-line will be inconsistent if you open the same window in both a
terminal and then a GUI frame but for most use-cases it should be fine.

I believe I tried this back when I first raised the issue with
doom-modeline and ran into some performance issues but it seems to be
working fine now (might've been some other problem in this case).

```lisp
(defun +mode-line-align (left right)
  "Return a string of `window-width' length containing LEFT and RIGHT, aligned respectively."
  (list left
        (propertize " "
                    'display `((space
                                :align-to
                                (- (+ right right-fringe right-margin)
                                   ,(if (and (not (display-graphic-p))
                                             (window-at-side-p nil 'right))
                                        0
                                      1)
                                   ;; WARN: Requires double evaluation of RHS forms for spacing.
                                   ,(string-width (format-mode-line (cons "" right)))))))
        right))

(setq-default mode-line-format `((:eval (+mode-line-align '("foo") '("bar")))))
(setq mode-line-format (default-value 'mode-line-format))
```

Thank you for the suggestion. :-)

>
> It is controlled by the current display-table.
>
>
> If someone wants to work on providing patches to support any of your
> suggestions, I'm sure it will be welcome, at least as an optional
> feature.  TIA.

Nice. I'm not experienced enough to delve into this yet, but I will when I
get a chance.

Thank you for your time and patience :-).

Yours sincerely,
Mohsin K.




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#48257; Package emacs. (Tue, 06 Jul 2021 04:18:01 GMT) Full text and rfc822 format available.

Message #31 received at 48257 <at> debbugs.gnu.org (full text, mbox):

From: Kevin Boulain <kevinboulain <at> gmail.com>
To: 48257 <at> debbugs.gnu.org
Subject: Re: Align to right doesn't account for window separator in terminal
 frames
Date: Mon, 5 Jul 2021 23:04:38 +0200
I believe I have a similar issue (I think this behavior has been
present for a while).
Paste and eval this in the scratch buffer (emacs -Q, running from a terminal):
(global-set-key (kbd "<f10>")
                (lambda ()
                  (interactive)
                  ;; 4 chars margin
                  (setq-local right-margin-width 4)
                  ;; force margin to take effect
                  (set-window-buffer (selected-window) (current-buffer))
                  ;; insert in the margin
                  (insert (propertize " " 'display '((margin
right-margin) "1234") 'default t))
                  ;; split the window, should showcase the issue
                  (split-window-right)))

Then press F10 (doesn't matter where the point is): it will set up a
right margin of width 4, insert "1234" then split the window into two.
The window on the left will only show "123" ("4" is probably hidden
behind the window divider) while the right window correctly shows
"1234".
Some packages try to put information in the right margin, but it gets truncated.




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#48257; Package emacs. (Tue, 06 Jul 2021 12:50:02 GMT) Full text and rfc822 format available.

Message #34 received at 48257 <at> debbugs.gnu.org (full text, mbox):

From: Eli Zaretskii <eliz <at> gnu.org>
To: Kevin Boulain <kevinboulain <at> gmail.com>
Cc: 48257 <at> debbugs.gnu.org
Subject: Re: bug#48257: Align to right doesn't account for window separator in
 terminal frames
Date: Tue, 06 Jul 2021 15:49:42 +0300
> From: Kevin Boulain <kevinboulain <at> gmail.com>
> Date: Mon, 5 Jul 2021 23:04:38 +0200
> 
> I believe I have a similar issue (I think this behavior has been
> present for a while).
> Paste and eval this in the scratch buffer (emacs -Q, running from a terminal):
> (global-set-key (kbd "<f10>")
>                 (lambda ()
>                   (interactive)
>                   ;; 4 chars margin
>                   (setq-local right-margin-width 4)
>                   ;; force margin to take effect
>                   (set-window-buffer (selected-window) (current-buffer))
>                   ;; insert in the margin
>                   (insert (propertize " " 'display '((margin
> right-margin) "1234") 'default t))
>                   ;; split the window, should showcase the issue
>                   (split-window-right)))
> 
> Then press F10 (doesn't matter where the point is): it will set up a
> right margin of width 4, insert "1234" then split the window into two.
> The window on the left will only show "123" ("4" is probably hidden
> behind the window divider) while the right window correctly shows
> "1234".

I don't think it's related, I think it's a separate issue.  Notice how
the truncated "123" string starts 2 columns after the "$" truncation
indicator, whereas the un-truncated "1234" starts only 1 column after
"$".

So I think there's something else at work here, and will take a closer
look soon.

Thanks.




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#48257; Package emacs. (Tue, 06 Jul 2021 17:14:02 GMT) Full text and rfc822 format available.

Message #37 received at 48257 <at> debbugs.gnu.org (full text, mbox):

From: Eli Zaretskii <eliz <at> gnu.org>
To: kevinboulain <at> gmail.com
Cc: 48257 <at> debbugs.gnu.org
Subject: Re: bug#48257: Align to right doesn't account for window separator in
 terminal frames
Date: Tue, 06 Jul 2021 20:13:37 +0300
> Date: Tue, 06 Jul 2021 15:49:42 +0300
> From: Eli Zaretskii <eliz <at> gnu.org>
> Cc: 48257 <at> debbugs.gnu.org
> 
> I don't think it's related, I think it's a separate issue.  Notice how
> the truncated "123" string starts 2 columns after the "$" truncation
> indicator, whereas the un-truncated "1234" starts only 1 column after
> "$".
> 
> So I think there's something else at work here, and will take a closer
> look soon.

Like I suspected, an unrelated problem (and a very old one at that).
Should be fixed now on the master branch.

Thanks.




Reply sent to Eli Zaretskii <eliz <at> gnu.org>:
You have taken responsibility. (Thu, 08 Jul 2021 06:25:02 GMT) Full text and rfc822 format available.

Notification sent to mohkale <at> kisara.moe:
bug acknowledged by developer. (Thu, 08 Jul 2021 06:25:02 GMT) Full text and rfc822 format available.

Message #42 received at 48257-done <at> debbugs.gnu.org (full text, mbox):

From: Eli Zaretskii <eliz <at> gnu.org>
To: Kevin Boulain <kevinboulain <at> gmail.com>
Cc: 48257-done <at> debbugs.gnu.org
Subject: Re: bug#48257: Align to right doesn't account for window separator in
 terminal frames
Date: Thu, 08 Jul 2021 09:24:47 +0300
> From: Kevin Boulain <kevinboulain <at> gmail.com>
> Date: Thu, 8 Jul 2021 00:06:36 +0200
> 
> Thanks!

I'm therefore closing this bug.




bug archived. Request was from Debbugs Internal Request <help-debbugs <at> gnu.org> to internal_control <at> debbugs.gnu.org. (Thu, 05 Aug 2021 11:24:05 GMT) Full text and rfc822 format available.

This bug report was last modified 2 years and 262 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.