Subject: bug#19905: Provide support for truncation in column data

From: Stefan Monnier <[email-masked]>
Date: Thu, 19 Feb 2015 13:40:44 -0500

Package: Emacs
Version: 25.0.50

There should be a `display' property (call it :truncate-at) to make it
possible to indicate that the covered text should be truncated (with
the rest replaced by an ellipsis or something like that) so as not to go
past some particular position.

This could then be used in things like tabulated-list-mode to get
properly aligned columns even when using proportional fonts.

Most/all the uses I can think of would combine this :truncate-at with
an :align-to, so maybe a combined :truncate-or-align would be even
better, tho usually the two positions aren't equal (we usually want to
preserve a bit of space between the columns).

        Stefan

In GNU Emacs 25.0.50.1 (x86_64-unknown-linux-gnu, X toolkit, Xaw3d scroll bars)
 of 2015-02-15 on pastel
Repository revision: c039902daab2c52ca5df5556dee97ced889eed2a
Windowing system distributor `The X.Org Foundation', version 11.0.11602901
System Description:	Debian GNU/Linux 8.0 (jessie)

Configured using:
 `configure -C --enable-checking --enable-check-lisp-object-type
 'CFLAGS=-Wall -g3 -Og -Wno-pointer-sign'
 PKG_CONFIG_PATH=/home/monnier/lib/pkgconfig'

Configured features:
XAW3D XPM JPEG TIFF GIF PNG SOUND GPM DBUS NOTIFY GNUTLS LIBXML2
FREETYPE M17N_FLT LIBOTF XFT ZLIB

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

Major mode: InactiveMinibuffer

Minor modes in effect:
  semantic-minor-modes-format: ((:eval (if (or semantic-highlight-edits-mode semantic-show-unmatched-syntax-mode semantic-idle-scheduler-mode)  S)))
  shell-dirtrack-mode: t
  diff-auto-refine-mode: t
  c-electric-flag: t
  electric-pair-mode: t
  url-handler-mode: t
  global-reveal-mode: t
  reveal-mode: t
  auto-insert-mode: t
  savehist-mode: t
  minibuffer-electric-default-mode: t
  global-eldoc-mode: t
  electric-indent-mode: t
  mouse-wheel-mode: t
  global-prettify-symbols-mode: t
  menu-bar-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t
  line-number-mode: t

Recent messages:
Hunk already applied
Mark set [2 times]
Saving file /home/monnier/src/emacs/trunk/lisp/ChangeLog...
Wrote /home/monnier/src/emacs/trunk/lisp/ChangeLog
Finding changes in /home/monnier/src/emacs/trunk/lisp/ChangeLog /home/monnier/src/emacs/trunk/lisp/emacs-lisp/eieio-opt.el...done
Mark set
Press C-c C-c when you are done editing.
Enter a change comment.  Type C-c C-c when done
Mark set [4 times]
Checking in /home/monnier/src/emacs/trunk/lisp/ChangeLog /home/monnier/src/emacs/trunk/lisp/emacs-lisp/eieio-opt.el...done

Load-path shadows:
/home/monnier/src/emacs/elpa/packages/ada-mode/ada-ref-man hides /home/monnier/src/emacs/elpa/packages/ada-ref-man/ada-ref-man
/home/monnier/src/emacs/elpa/packages/ada-mode/ada-prj hides /home/monnier/src/emacs/work/lisp/progmodes/ada-prj
/home/monnier/src/emacs/elpa/packages/ada-mode/ada-stmt hides /home/monnier/src/emacs/work/lisp/progmodes/ada-stmt
/home/monnier/src/emacs/elpa/packages/ada-mode/ada-mode hides /home/monnier/src/emacs/work/lisp/progmodes/ada-mode
/home/monnier/src/emacs/elpa/packages/ada-mode/ada-xref hides /home/monnier/src/emacs/work/lisp/progmodes/ada-xref
/home/monnier/src/emacs/elpa/packages/crisp/crisp hides /home/monnier/src/emacs/work/lisp/obsolete/crisp
/home/monnier/src/emacs/work/lisp/emacs-lisp/cl-generic hides /home/monnier/src/emacs/elpa/packages/cl-generic/cl-generic

Features:
(mail-extr emacsbug tramp-cache tramp-sh tramp tramp-compat
tramp-loaddefs trampver descr-text jgraph-mode rect ert-x cal-french
diary-lib diary-loaddefs cal-move cal-menu calendar cal-loaddefs
bbdb-com bbdb timezone inline vc-annotate log-view picture lisp-mnt
epa-file epa derived epg memory-usage sort network-stream nsm starttls
tls mpc eieio-opt speedbar sb-image dframe gud ffap grep dabbrev
log-edit message sendmail rfc822 mml mml-sec mm-decode mm-bodies
mm-encode mail-parse rfc2231 rfc2047 rfc2045 ietf-drums mailabbrev
mail-utils mailheader pcvs-util vc-dir bug-reference add-log skeleton
lmc hexl autorevert filenotify doc-view jka-compr image-mode dired
mule-util whitespace format-spec vc-src vc-sccs vc-svn vc-cvs vc-rcs
reftex-dcr reftex reftex-vars tex-mode compile shell pcomplete latexenc
xscheme warnings unsafep trace testcover shadow scheme re-builder
profiler inf-lisp ielm pp comint ansi-color gmm-utils ert find-func ewoc
debug elp edebug cl-indent vc sgml-mode smerge-mode executable copyright
vc-dispatcher vc-bzr conf-mode etags xref ring misearch multi-isearch
semantic/bovine/c semantic/db-mode semantic/decorate/include
semantic/decorate/mode semantic/decorate pulse semantic/bovine/c-by
semantic/lex-spp semantic/idle semantic/bovine/gcc semantic/dep
semantic/bovine semantic/analyze/refs semantic/db-find semantic/db-ref
semantic/analyze semantic/sort semantic/scope semantic/analyze/fcn
semantic/db eieio-base semantic/ctxt semantic/format ezimage
semantic/tag-ls semantic/find semantic/util-modes semantic/util semantic
semantic/tag semantic/lex semantic/fw mode-local cedet hideif cpp
cmacexp cus-edit cus-start cus-load wid-edit vc-git diff-mode filecache
cc-mode cc-fonts cc-guess cc-menus cc-cmds cc-styles cc-align cc-engine
cc-langs cc-vars cc-defs server noutline outline easy-mmode flyspell
ispell checkdoc thingatpt help-mode load-dir elec-pair url-handlers
url-parse auth-source eieio eieio-core cl-generic byte-opt bytecomp
byte-compile cl-extra seq cconv pcase gnus-util time-date mm-util
mail-prsvr password-cache url-vars reveal autoinsert proof-site
proof-autoloads cl-macs cl gv pg-vars savehist minibuf-eldef disp-table
edmacro kmacro cl-loaddefs cl-lib advice help-fns info easymenu
finder-inf package epg-config bbdb-autoloads agda2 vm-autoloads tooltip
eldoc electric uniquify ediff-hook vc-hooks lisp-float-type mwheel x-win
x-dnd tool-bar dnd fontset image regexp-opt fringe tabulated-list
newcomment elisp-mode lisp-mode prog-mode register page menu-bar
rfn-eshadow timer select scroll-bar mouse jit-lock font-lock syntax
font-core frame cham georgian utf-8-lang misc-lang vietnamese tibetan
thai tai-viet lao korean japanese hebrew greek romanian slovak czech
european ethiopic indian cyrillic chinese case-table epa-hook
jka-cmpr-hook help simple abbrev minibuffer cl-preloaded nadvice
loaddefs button faces cus-face macroexp files text-properties overlay
sha1 md5 base64 format env code-pages mule custom widget
hashtable-print-readable backquote make-network-process dbusbind inotify
dynamic-setting font-render-setting x-toolkit x multi-tty emacs)

Memory information:
((conses 8 815524 115932)
 (symbols 24 47567 0) (miscs 20 15616 1650) (strings 16 127560 19104)
 (string-bytes 1 3562606)
 (vectors 8 76969) (vector-slots 4 2690186 177142) (floats 8 838 953)
 (intervals 28 79452 67)
 (buffers 520 118) (heap 1024 753457 5092))