`eval-buffer` will evaluate (defvar ...) in the normal way, which does
*nothing* if the variable is already defined.
Aaaah, with your explanations it clicked. I tested with "emacs -Q" and though tabulated-list was not loaded before my eval-buffer, but I just checked and it is.
So we have a problem in the sense that we cannot actually tweak this character through the defcustom like it is done currently:
(defcustom tabulated-list-sort-icon-asc ?▼)
(defcustom tabulated-list-glyphless-sort-icon-asc ?v)
(let ((table (make-char-table 'glyphless-char-display nil)))
(aset table tabulated-list-sort-icon-asc (cons nil (char-to-string tabulated-list-glyphless-sort-icon-asc)))
I can imagine two solutions: either we make `tabulated-list-glyphless-char-display` "dynamic" everytime it is accessed (is that even possible?) or we do some magic that resets it whenever the custom value changes.
Feel free to point me to "the right thing" I have no clue.
So I suspect that "re-eval the whole ..." above meant to use C-M-x which
has special support for `defvar` to force re-evaluation.
Yes this is what I used, ok thanks for the explanation a lot of other weirdnesses make sense now :-)
> Should `make-char-table` purpose really be 'glyphless-char-display?
Of course, that's what it's for. This "purpose" should be thought
of as a type.