Subject: bug#26909: 25.1; A face for margins

From: Yuri Khan <[email-masked]>
Date: Sat, 13 May 2017 21:07:03 +0700

$ emacs -Q

Observed behavior: *scratch* buffer with two lines of text and an empty line.

M-x linum-mode RET

(Note: Linum is only used as a demonstration example. Other modes that
enable margins are affected similarly.)

Observed behavior: A margin appears on the left of the fringe. The
margin is white, the fringe is light gray. Line numbers 1, 2, and 3
are displayed in the margin.

Desired behavior: I would like to make the margin background the same
color as the fringe, and different from the default background.

M-: (set-face-attribute 'linum nil :inherit '(shadow fringe default)) RET

Observed behavior: Line numbers 1, 2, and 3 are displayed over light
gray background. Empty space below line number 3 is displayed in
default background color.

<up> <up> DEL

Observed behavior: Lines formerly numbered 1 and 2 are joined into a
long line. It is wrapped over so there is a gap between line numbers 1
and 2. The gap is displayed in default background color.

The last two actions demonstrate that customizing the faces of
whatever is displayed in the margin is not sufficient. A mechanism is
needed that will allow customization of the margin where nothing is
displayed. A new face would serve nicely.

In GNU Emacs 25.1.1 (x86_64-pc-linux-gnu, GTK+ Version 3.18.9)
 of 2016-12-13, modified by Debian built on lgw01-55
Windowing system distributor 'The X.Org Foundation', version 11.0.11804000
System Description:    Ubuntu 16.04.2 LTS

Configured using:
 'configure --build x86_64-linux-gnu --prefix=/usr
 --sharedstatedir=/var/lib --libexecdir=/usr/lib
 --localstatedir=/var/lib --infodir=/usr/share/info
 --mandir=/usr/share/man --with-pop=yes
 --enable-locallisppath=/etc/emacs25:/etc/emacs:/usr/local/share/emacs/25.1/site-lisp:/usr/local/share/emacs/site-lisp:/usr/share/emacs/25.1/site-lisp:/usr/share/emacs/site-lisp
 --with-sound=alsa --build x86_64-linux-gnu --prefix=/usr
 --sharedstatedir=/var/lib --libexecdir=/usr/lib
 --localstatedir=/var/lib --infodir=/usr/share/info
 --mandir=/usr/share/man --with-pop=yes
 --enable-locallisppath=/etc/emacs25:/etc/emacs:/usr/local/share/emacs/25.1/site-lisp:/usr/local/share/emacs/site-lisp:/usr/share/emacs/25.1/site-lisp:/usr/share/emacs/site-lisp
 --with-sound=alsa --with-x=yes --with-x-toolkit=gtk3
 --with-toolkit-scroll-bars 'CFLAGS=-g -O2 -fstack-protector-strong
 -Wformat -Werror=format-security -Wall' 'CPPFLAGS=-Wdate-time
 -D_FORTIFY_SOURCE=2' 'LDFLAGS=-Wl,-Bsymbolic-functions -Wl,-z,relro''

Configured features:
XPM JPEG TIFF GIF PNG RSVG IMAGEMAGICK SOUND GPM DBUS GCONF GSETTINGS
NOTIFY ACL LIBSELINUX GNUTLS LIBXML2 FREETYPE M17N_FLT LIBOTF XFT ZLIB
TOOLKIT_SCROLL_BARS GTK3 X11

Important settings:
  value of $LC_MONETARY: en_RU.UTF-8
  value of $LC_NUMERIC: en_RU.UTF-8
  value of $LC_TIME: en_RU.UTF-8
  value of $LANG: en_US.UTF-8
  locale-coding-system: utf-8-unix

Major mode: Lisp Interaction

Minor modes in effect:
  linum-mode: t
  tooltip-mode: t
  global-eldoc-mode: t
  electric-indent-mode: t
  mouse-wheel-mode: t
  tool-bar-mode: t
  menu-bar-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  blink-cursor-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t
  line-number-mode: t
  transient-mark-mode: t

Recent messages:
Back to top level
Type C-x 1 to delete the help window.
mouse-2, RET: describe this symbol

nil [2 times]
C-c C-g is undefined
Quit [2 times]
Type C-x 1 to delete the help window, C-M-v to scroll help.
C-x <down> is undefined
Mark saved where search started [2 times]
scroll-down-command: Beginning of buffer

Load-path shadows:
None found.

Features:
(shadow sort mail-extr misearch multi-isearch emacsbug message dired
format-spec rfc822 mml mml-sec password-cache epg epg-config gnus-util
mm-decode mm-bodies mm-encode mail-parse rfc2231 mailabbrev gmm-utils
mailheader sendmail rfc2047 rfc2045 ietf-drums mm-util mail-prsvr
mail-utils cl-extra thingatpt help-fns help-mode easymenu cl-loaddefs
pcase cl-lib debug linum time-date mule-util tooltip eldoc electric
uniquify ediff-hook vc-hooks lisp-float-type mwheel x-win
term/common-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 facemenu font-core frame 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 charscript 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
dbusbind inotify dynamic-setting system-font-setting font-render-setting
move-toolbar gtk x-toolkit x multi-tty make-network-process emacs)

Memory information:
((conses 16 91665 11380)
 (symbols 48 19957 0)
 (miscs 40 93 221)
 (strings 32 15138 4640)
 (string-bytes 1 432034)
 (vectors 16 12162)
 (vector-slots 8 438633 9404)
 (floats 8 169 186)
 (intervals 56 736 16)
 (buffers 976 20)
 (heap 1024 47507 1126))