* bug of display-table & make-glyph-code @ 2007-08-27 9:32 levin 2007-09-04 16:45 ` Richard Stallman 2007-09-06 5:00 ` Richard Stallman 0 siblings, 2 replies; 84+ messages in thread From: levin @ 2007-08-27 9:32 UTC (permalink / raw) To: emacs-devel To reinvent this bug, please follow: 1. Please save the text below as glyph.org, visit it, and `M-x org-mode' to turn on org mode. 2. Keep the first headline collapsed by pressing TAB (if neccessary) on it. 3. you can expand the second/third headline by press TAB on it. 4. eval the lisp code in the second headline, this CANNOT change "..." display. 5. eval the lisp code in the third headline, this CAN change "..." display. I find out that if make-glyph-code returns a negative int, then the display table does not take effect on "..." display. --------8<-------------8<-------- * Please keep me collapsed by pressing TAB (if neccessary) some info to hide * please eval me, this CANNOT change "..." display (describe-face 'org-warning) (face-id 'org-warning) # mine is 77 here (unless buffer-display-table (setq buffer-display-table (make-display-table))) (set-display-table-slot buffer-display-table 'selective-display (vconcat (mapcar (lambda (c) (make-glyph-code c 'org-warning)) "..."))) * please eval me, this can change ellipse display (describe-face 'tooltip) (face-id 'tooltip) # mine is 54 here (unless buffer-display-table (setq buffer-display-table (make-display-table))) (set-display-table-slot buffer-display-table 'selective-display (vconcat (mapcar (lambda (c) (make-glyph-code c 'tooltip)) "..."))) --------8<-------------8<-------- My environment: In GNU Emacs 23.0.0.2 (i686-pc-linux-gnu) of 2007-08-27 on MagicLinux configured using `configure '--with-x-toolkit=no'' Important settings: value of $LC_ALL: nil value of $LC_COLLATE: nil value of $LC_CTYPE: nil value of $LC_MESSAGES: nil value of $LC_MONETARY: nil value of $LC_NUMERIC: nil value of $LC_TIME: nil value of $LANG: zh_CN.GB18030 value of $XMODIFIERS: nil locale-coding-system: chinese-gb18030-unix default-enable-multibyte-characters: t Major mode: Org Minor modes in effect: encoded-kbd-mode: t menu-bar-mode: t file-name-shadow-mode: t global-font-lock-mode: t font-lock-mode: t global-auto-composition-mode: t auto-composition-mode: t auto-compression-mode: t line-number-mode: t -- Levin ^ permalink raw reply [flat|nested] 84+ messages in thread
* Re: bug of display-table & make-glyph-code 2007-08-27 9:32 bug of display-table & make-glyph-code levin @ 2007-09-04 16:45 ` Richard Stallman 2007-09-04 18:09 ` martin rudalics 2007-09-06 5:00 ` Richard Stallman 1 sibling, 1 reply; 84+ messages in thread From: Richard Stallman @ 2007-09-04 16:45 UTC (permalink / raw) To: emacs-devel; +Cc: levin [I sent this message a week ago but did not get a response.] Would someone please DTRT and ack? From: levin <zslevin@gmail.com> To: emacs-devel@gnu.org Date: Mon, 27 Aug 2007 17:32:22 +0800 MIME-Version: 1.0 Content-Disposition: inline Content-Type: text/plain; charset="gb18030" Subject: bug of display-table & make-glyph-code To reinvent this bug, please follow: 1. Please save the text below as glyph.org, visit it, and `M-x org-mode' to turn on org mode. 2. Keep the first headline collapsed by pressing TAB (if neccessary) on it. 3. you can expand the second/third headline by press TAB on it. 4. eval the lisp code in the second headline, this CANNOT change "..." display. 5. eval the lisp code in the third headline, this CAN change "..." display. I find out that if make-glyph-code returns a negative int, then the display table does not take effect on "..." display. --------8<-------------8<-------- * Please keep me collapsed by pressing TAB (if neccessary) some info to hide * please eval me, this CANNOT change "..." display (describe-face 'org-warning) (face-id 'org-warning) # mine is 77 here (unless buffer-display-table (setq buffer-display-table (make-display-table))) (set-display-table-slot buffer-display-table 'selective-display (vconcat (mapcar (lambda (c) (make-glyph-code c 'org-warning)) "..."))) * please eval me, this can change ellipse display (describe-face 'tooltip) (face-id 'tooltip) # mine is 54 here (unless buffer-display-table (setq buffer-display-table (make-display-table))) (set-display-table-slot buffer-display-table 'selective-display (vconcat (mapcar (lambda (c) (make-glyph-code c 'tooltip)) "..."))) --------8<-------------8<-------- My environment: In GNU Emacs 23.0.0.2 (i686-pc-linux-gnu) of 2007-08-27 on MagicLinux configured using `configure '--with-x-toolkit=no'' Important settings: value of $LC_ALL: nil value of $LC_COLLATE: nil value of $LC_CTYPE: nil value of $LC_MESSAGES: nil value of $LC_MONETARY: nil value of $LC_NUMERIC: nil value of $LC_TIME: nil value of $LANG: zh_CN.GB18030 value of $XMODIFIERS: nil locale-coding-system: chinese-gb18030-unix default-enable-multibyte-characters: t Major mode: Org Minor modes in effect: encoded-kbd-mode: t menu-bar-mode: t file-name-shadow-mode: t global-font-lock-mode: t font-lock-mode: t global-auto-composition-mode: t auto-composition-mode: t auto-compression-mode: t line-number-mode: t -- Levin _______________________________________________ Emacs-devel mailing list Emacs-devel@gnu.org http://lists.gnu.org/mailman/listinfo/emacs-devel ^ permalink raw reply [flat|nested] 84+ messages in thread
* Re: bug of display-table & make-glyph-code 2007-09-04 16:45 ` Richard Stallman @ 2007-09-04 18:09 ` martin rudalics 2007-09-04 19:08 ` Glenn Morris 0 siblings, 1 reply; 84+ messages in thread From: martin rudalics @ 2007-09-04 18:09 UTC (permalink / raw) To: rms; +Cc: levin, emacs-devel > To reinvent this bug, please follow: [...] > 4. eval the lisp code in the second headline, this CANNOT change "..." > display. Here it displays them with org-warning face as expected. [...] > (face-id 'org-warning) # mine is 77 here Evaluates to 142 here. [...] > My environment: > In GNU Emacs 23.0.0.2 (i686-pc-linux-gnu) > of 2007-08-27 on MagicLinux > configured using `configure '--with-x-toolkit=no'' Can someone reproduce the OP's behavior with Emacs 22 ? ^ permalink raw reply [flat|nested] 84+ messages in thread
* Re: bug of display-table & make-glyph-code 2007-09-04 18:09 ` martin rudalics @ 2007-09-04 19:08 ` Glenn Morris 2007-09-05 5:58 ` levin 2007-09-05 6:16 ` Richard Stallman 0 siblings, 2 replies; 84+ messages in thread From: Glenn Morris @ 2007-09-04 19:08 UTC (permalink / raw) To: martin rudalics; +Cc: emacs-devel, rms, levin martin rudalics wrote: > Can someone reproduce the OP's behavior with Emacs 22 ? Neither with Emacs 22 nor the current CVS trunk. ^ permalink raw reply [flat|nested] 84+ messages in thread
* Re: bug of display-table & make-glyph-code 2007-09-04 19:08 ` Glenn Morris @ 2007-09-05 5:58 ` levin 2007-09-05 7:22 ` Glenn Morris 2007-09-05 20:02 ` Richard Stallman 2007-09-05 6:16 ` Richard Stallman 1 sibling, 2 replies; 84+ messages in thread From: levin @ 2007-09-05 5:58 UTC (permalink / raw) To: emacs-devel Glenn Morris wrote: > martin rudalics wrote: > > Can someone reproduce the OP's behavior with Emacs 22 ? > > Neither with Emacs 22 nor the current CVS trunk. I use GNU Emacs 23 CVS. ^ permalink raw reply [flat|nested] 84+ messages in thread
* Re: bug of display-table & make-glyph-code 2007-09-05 5:58 ` levin @ 2007-09-05 7:22 ` Glenn Morris 2007-09-05 8:22 ` Du Jingwu 2007-09-05 20:02 ` Richard Stallman 1 sibling, 1 reply; 84+ messages in thread From: Glenn Morris @ 2007-09-05 7:22 UTC (permalink / raw) To: levin; +Cc: emacs-devel levin wrote: > I use GNU Emacs 23 CVS. That does not mean very much I'm afraid. The relevant information is: which branch of CVS, and when did you update. ^ permalink raw reply [flat|nested] 84+ messages in thread
* Re: bug of display-table & make-glyph-code 2007-09-05 7:22 ` Glenn Morris @ 2007-09-05 8:22 ` Du Jingwu 0 siblings, 0 replies; 84+ messages in thread From: Du Jingwu @ 2007-09-05 8:22 UTC (permalink / raw) To: emacs-devel Glenn Morris: > levin wrote: > > I use GNU Emacs 23 CVS. > > That does not mean very much I'm afraid. The relevant information is: > which branch of CVS, and when did you update. I did a cvs update of emacs-unicode-2 branch just now, bootstrapped it, and the bug still appeared. -- Levin ^ permalink raw reply [flat|nested] 84+ messages in thread
* Re: bug of display-table & make-glyph-code 2007-09-05 5:58 ` levin 2007-09-05 7:22 ` Glenn Morris @ 2007-09-05 20:02 ` Richard Stallman 1 sibling, 0 replies; 84+ messages in thread From: Richard Stallman @ 2007-09-05 20:02 UTC (permalink / raw) To: levin; +Cc: emacs-devel I use GNU Emacs 23 CVS. "Emacs 23" is not well-defined now. Do you use the CVS trunk, or the unicode-2 branch? ^ permalink raw reply [flat|nested] 84+ messages in thread
* Re: bug of display-table & make-glyph-code 2007-09-04 19:08 ` Glenn Morris 2007-09-05 5:58 ` levin @ 2007-09-05 6:16 ` Richard Stallman 2007-09-05 7:21 ` Glenn Morris 2007-09-05 9:15 ` Kim F. Storm 1 sibling, 2 replies; 84+ messages in thread From: Richard Stallman @ 2007-09-05 6:16 UTC (permalink / raw) To: Glenn Morris; +Cc: rudalics, zslevin, emacs-devel > Can someone reproduce the OP's behavior with Emacs 22 ? Neither with Emacs 22 nor the current CVS trunk. If we cannot make it fail, we can cross it off the list. Would you please? ^ permalink raw reply [flat|nested] 84+ messages in thread
* Re: bug of display-table & make-glyph-code 2007-09-05 6:16 ` Richard Stallman @ 2007-09-05 7:21 ` Glenn Morris 2007-09-05 8:08 ` martin rudalics 2007-09-06 5:00 ` Richard Stallman 2007-09-05 9:15 ` Kim F. Storm 1 sibling, 2 replies; 84+ messages in thread From: Glenn Morris @ 2007-09-05 7:21 UTC (permalink / raw) To: rms; +Cc: rudalics, zslevin, emacs-devel Richard Stallman wrote: > If we cannot make it fail, we can cross it off the list. > Would you please? It's not on any list. The only extant Emacs 22 bugs seem to be: eshell external commands KDE maximization getopts_long and etags? static locals and HPUX? ^ permalink raw reply [flat|nested] 84+ messages in thread
* Re: bug of display-table & make-glyph-code 2007-09-05 7:21 ` Glenn Morris @ 2007-09-05 8:08 ` martin rudalics 2007-09-05 8:37 ` Glenn Morris ` (3 more replies) 2007-09-06 5:00 ` Richard Stallman 1 sibling, 4 replies; 84+ messages in thread From: martin rudalics @ 2007-09-05 8:08 UTC (permalink / raw) To: Glenn Morris; +Cc: rms, emacs-devel >>If we cannot make it fail, we can cross it off the list. >>Would you please? > > > It's not on any list. I didn't put it there because I couldn't reproduce it on Emacs 22. > The only extant Emacs 22 bugs seem to be: > > eshell external commands > KDE maximization To me this seems a consequence of the known restriction that Emacs frames can't have arbitrary pixel size. Apparently the OP is the only Emacs user on KDE. > getopts_long and etags? > static locals and HPUX? I think the following two issues should be resolved too: "22.1.1; Frame title no more updated after calling `set-frame-configuration'" first raised 2007-08-30 on emacs-devel, and "dired-warning face not colored on 8-color ttys" first raised 2007-08-30 on bug-gnu-emacs. Please have a look. Finally, the problem reported by davidk "Re: display-buffer change" as from 2007-08-27 on bug-gnu-emacs hasn't been resolved satisfactorily either. ^ permalink raw reply [flat|nested] 84+ messages in thread
* Re: bug of display-table & make-glyph-code 2007-09-05 8:08 ` martin rudalics @ 2007-09-05 8:37 ` Glenn Morris 2007-09-05 9:58 ` martin rudalics 2007-09-05 8:51 ` levin ` (2 subsequent siblings) 3 siblings, 1 reply; 84+ messages in thread From: Glenn Morris @ 2007-09-05 8:37 UTC (permalink / raw) To: martin rudalics; +Cc: rms, emacs-devel martin rudalics wrote: > "dired-warning face not colored on 8-color ttys" > > first raised 2007-08-30 on bug-gnu-emacs. Thought your font-lock-warning-face solution was good. ^ permalink raw reply [flat|nested] 84+ messages in thread
* Re: bug of display-table & make-glyph-code 2007-09-05 8:37 ` Glenn Morris @ 2007-09-05 9:58 ` martin rudalics 2007-09-05 16:44 ` Glenn Morris 0 siblings, 1 reply; 84+ messages in thread From: martin rudalics @ 2007-09-05 9:58 UTC (permalink / raw) To: Glenn Morris; +Cc: rms, emacs-devel >>"dired-warning face not colored on 8-color ttys" >> >>first raised 2007-08-30 on bug-gnu-emacs. > > > Thought your font-lock-warning-face solution was good. > The first feedback I got on this ;-) BTW, the OP suggested to change this for other faces inheriting from font-lock-comment-face as well. Does anyone know a face where this would be useful? ^ permalink raw reply [flat|nested] 84+ messages in thread
* Re: bug of display-table & make-glyph-code 2007-09-05 9:58 ` martin rudalics @ 2007-09-05 16:44 ` Glenn Morris 2007-09-05 17:34 ` martin rudalics 2007-09-05 17:54 ` bug of display-table & make-glyph-code Eli Zaretskii 0 siblings, 2 replies; 84+ messages in thread From: Glenn Morris @ 2007-09-05 16:44 UTC (permalink / raw) To: martin rudalics; +Cc: rms, emacs-devel martin rudalics wrote: > BTW, the OP suggested to change this for other faces inheriting from > font-lock-comment-face as well. Does anyone know a face where this > would be useful? find . -name '*.el' | xargs grep 'inherit.*font-lock-comment-face' change-log-acknowledgement, dired-warning, iswitchb-single-match, outline-5 Haven't looked if it's appropriate to change all of them. ^ permalink raw reply [flat|nested] 84+ messages in thread
* Re: bug of display-table & make-glyph-code 2007-09-05 16:44 ` Glenn Morris @ 2007-09-05 17:34 ` martin rudalics 2007-09-06 5:29 ` Glenn Morris 2007-09-05 17:54 ` bug of display-table & make-glyph-code Eli Zaretskii 1 sibling, 1 reply; 84+ messages in thread From: martin rudalics @ 2007-09-05 17:34 UTC (permalink / raw) To: Glenn Morris; +Cc: rms, emacs-devel >>BTW, the OP suggested to change this for other faces inheriting from >>font-lock-comment-face as well. Does anyone know a face where this >>would be useful? > > > find . -name '*.el' | xargs grep 'inherit.*font-lock-comment-face' > > change-log-acknowledgement, dired-warning, iswitchb-single-match, > outline-5 > > Haven't looked if it's appropriate to change all of them. I think `change-log-acknowledgement' should be left alone. Changing `outline-5' doesn't make much sense since `outline-1' and `outline-4' can't be distinguished any more. A similar argument holds for `iswitchb-single-match' where `iswitchb-current-match' and `iswitchb-virtual-matches' are already indistinguishable. ^ permalink raw reply [flat|nested] 84+ messages in thread
* Re: bug of display-table & make-glyph-code 2007-09-05 17:34 ` martin rudalics @ 2007-09-06 5:29 ` Glenn Morris 2007-09-06 8:49 ` martin rudalics 0 siblings, 1 reply; 84+ messages in thread From: Glenn Morris @ 2007-09-06 5:29 UTC (permalink / raw) To: martin rudalics; +Cc: rms, emacs-devel martin rudalics wrote: > I think `change-log-acknowledgement' should be left alone. Changing > `outline-5' doesn't make much sense since `outline-1' and `outline-4' > can't be distinguished any more. A similar argument holds for > `iswitchb-single-match' where `iswitchb-current-match' and > `iswitchb-virtual-matches' are already indistinguishable. Well, that's easy. :) I say; install your dired-warning fix, and cross this off the list. ^ permalink raw reply [flat|nested] 84+ messages in thread
* Re: bug of display-table & make-glyph-code 2007-09-06 5:29 ` Glenn Morris @ 2007-09-06 8:49 ` martin rudalics 2007-09-07 1:44 ` Glenn Morris 2007-10-11 23:57 ` dired-warning (was: bug of display-table & make-glyph-code) Juri Linkov 0 siblings, 2 replies; 84+ messages in thread From: martin rudalics @ 2007-09-06 8:49 UTC (permalink / raw) To: Glenn Morris; +Cc: rms, emacs-devel > Well, that's easy. :) I say; install your dired-warning fix, and cross > this off the list. Mapping dired-warning to font-lock-warning-face was a bad idea: The latter is already used for marking and flagging. It seems better to use `font-lock-comment-delimiter-face' just for the min-colors 8 case as in the patch below. *** dired.el.~1.359.2.6.~ Tue Aug 7 16:01:52 2007 --- dired.el Thu Sep 6 10:34:06 2007 *************** *** 335,341 **** "Face name used for flagged files.") (defface dired-warning ! '((t (:inherit font-lock-comment-face))) "Face used to highlight a part of a buffer that needs user attention." :group 'dired-faces :version "22.1") --- 335,343 ---- "Face name used for flagged files.") (defface dired-warning ! '((((class color) (min-colors 16)) (:inherit font-lock-comment-face)) ! (((class color) (min-colors 8)) (:inherit font-lock-comment-delimiter-face)) ! (t (:inherit font-lock-comment-face))) "Face used to highlight a part of a buffer that needs user attention." :group 'dired-faces :version "22.1") ^ permalink raw reply [flat|nested] 84+ messages in thread
* Re: bug of display-table & make-glyph-code 2007-09-06 8:49 ` martin rudalics @ 2007-09-07 1:44 ` Glenn Morris 2007-09-07 8:02 ` martin rudalics 2007-10-11 23:57 ` dired-warning (was: bug of display-table & make-glyph-code) Juri Linkov 1 sibling, 1 reply; 84+ messages in thread From: Glenn Morris @ 2007-09-07 1:44 UTC (permalink / raw) To: martin rudalics; +Cc: rms, emacs-devel martin rudalics wrote: > Mapping dired-warning to font-lock-warning-face was a bad idea: The > latter is already used for marking and flagging. Does that matter? The marking and flagging faces seem to be applied to the file name. The warning face seems only to be applied to the permissions. So it's not like they overlap or anything. And I think a warning should be displayed in, umm, a warning face (so it has emphasis), rather than a comment face (so it is subdued). ^ permalink raw reply [flat|nested] 84+ messages in thread
* Re: bug of display-table & make-glyph-code 2007-09-07 1:44 ` Glenn Morris @ 2007-09-07 8:02 ` martin rudalics 2007-09-07 17:48 ` Glenn Morris 2007-09-08 7:00 ` Richard Stallman 0 siblings, 2 replies; 84+ messages in thread From: martin rudalics @ 2007-09-07 8:02 UTC (permalink / raw) To: Glenn Morris; +Cc: rms, emacs-devel >>Mapping dired-warning to font-lock-warning-face was a bad idea: The >>latter is already used for marking and flagging. > > > Does that matter? The marking and flagging faces seem to be applied to > the file name. The warning face seems only to be applied to the > permissions. So it's not like they overlap or anything. Good. > And I think a > warning should be displayed in, umm, a warning face (so it has > emphasis), rather than a comment face (so it is subdued). That's what I thought in the first place. Using `font-lock-warning-face' is an "incompatible" change though, hence I would have to document it in NEWS? ^ permalink raw reply [flat|nested] 84+ messages in thread
* Re: bug of display-table & make-glyph-code 2007-09-07 8:02 ` martin rudalics @ 2007-09-07 17:48 ` Glenn Morris 2007-09-08 8:52 ` martin rudalics 2007-09-08 7:00 ` Richard Stallman 1 sibling, 1 reply; 84+ messages in thread From: Glenn Morris @ 2007-09-07 17:48 UTC (permalink / raw) To: martin rudalics; +Cc: rms, emacs-devel martin rudalics wrote: > That's what I thought in the first place. Using > `font-lock-warning-face' is an "incompatible" change though, hence I > would have to document it in NEWS? Well, an incompatible change only in a default, and a change for the better, IMO. Though changing faces does seem to be a minefield. :( If you wanted to be ultra-cautious, just fix the bug in 22, and change to warning in the trunk? ^ permalink raw reply [flat|nested] 84+ messages in thread
* Re: bug of display-table & make-glyph-code 2007-09-07 17:48 ` Glenn Morris @ 2007-09-08 8:52 ` martin rudalics 0 siblings, 0 replies; 84+ messages in thread From: martin rudalics @ 2007-09-08 8:52 UTC (permalink / raw) To: Glenn Morris; +Cc: rms, emacs-devel > Well, an incompatible change only in a default, and a change for the > better, IMO. Though changing faces does seem to be a minefield. :( Some of the mines are due to changing the `font-lock-comment-face' default for Emacs 22. > If you wanted to be ultra-cautious, just fix the bug in 22, and change > to warning in the trunk? There's no obvious fix. Using `font-lock-comment-delimiter-face' would have to be documented as well and I would have to cross two minefields then ... ^ permalink raw reply [flat|nested] 84+ messages in thread
* Re: bug of display-table & make-glyph-code 2007-09-07 8:02 ` martin rudalics 2007-09-07 17:48 ` Glenn Morris @ 2007-09-08 7:00 ` Richard Stallman 2007-09-12 7:37 ` Glenn Morris 1 sibling, 1 reply; 84+ messages in thread From: Richard Stallman @ 2007-09-08 7:00 UTC (permalink / raw) To: martin rudalics; +Cc: rgm, emacs-devel That's what I thought in the first place. Using `font-lock-warning-face' is an "incompatible" change though, hence I would have to document it in NEWS? Maybe, but I am not sure it actually rises to the threshold where a NEWS entry is needed. ^ permalink raw reply [flat|nested] 84+ messages in thread
* Re: bug of display-table & make-glyph-code 2007-09-08 7:00 ` Richard Stallman @ 2007-09-12 7:37 ` Glenn Morris 2007-09-12 8:28 ` martin rudalics 0 siblings, 1 reply; 84+ messages in thread From: Glenn Morris @ 2007-09-12 7:37 UTC (permalink / raw) To: rms; +Cc: martin rudalics, emacs-devel Richard Stallman wrote: > Using `font-lock-warning-face' is an "incompatible" change > though, hence I would have to document it in NEWS? > > Maybe, but I am not sure it actually rises to the threshold where > a NEWS entry is needed. I really would just make this change and consider this issue dealt with. ^ permalink raw reply [flat|nested] 84+ messages in thread
* Re: bug of display-table & make-glyph-code 2007-09-12 7:37 ` Glenn Morris @ 2007-09-12 8:28 ` martin rudalics 0 siblings, 0 replies; 84+ messages in thread From: martin rudalics @ 2007-09-12 8:28 UTC (permalink / raw) To: Glenn Morris; +Cc: rms, emacs-devel >> Using `font-lock-warning-face' is an "incompatible" change >> though, hence I would have to document it in NEWS? >> >>Maybe, but I am not sure it actually rises to the threshold where >>a NEWS entry is needed. > > > I really would just make this change and consider this issue dealt with. Done. ^ permalink raw reply [flat|nested] 84+ messages in thread
* dired-warning (was: bug of display-table & make-glyph-code) 2007-09-06 8:49 ` martin rudalics 2007-09-07 1:44 ` Glenn Morris @ 2007-10-11 23:57 ` Juri Linkov 2007-10-12 7:06 ` dired-warning martin rudalics 1 sibling, 1 reply; 84+ messages in thread From: Juri Linkov @ 2007-10-11 23:57 UTC (permalink / raw) To: martin rudalics; +Cc: emacs-devel > Mapping dired-warning to font-lock-warning-face was a bad idea: The > latter is already used for marking and flagging. It seems better to use > `font-lock-comment-delimiter-face' just for the min-colors 8 case as in > the patch below. Since this change was synced to the trunk and I see it in action now, I agree it was a bad idea. The primary intention of introducing the dired-warning face was to warn users about possible security holes. But red is too strong color. There are many files and directories where permission to write is correct (especially for groups), but displaying their permissions in red in dired is distracting. This color usually requires an immediate action to fix the problem, but in most cases there are no problems. An analogy for this situation are warnings and errors issued by the compiler: when there is an error, it needs to be fixed, but most warnings are useless. compile.el uses two separate faces for errors and warnings: compilation-error and compilation-warning. compilation-error inherits from font-lock-warning-face, and compilation-warning has its own definition. I propose to add a new face font-lock-error-face, to copy its definition from font-lock-warning-face, and to copy the definition of compilation-warning to font-lock-warning-face. So dired-warning inheriting now from font-lock-warning-face will use the new definition. Making this distinction between two faces font-lock-error-face and font-lock-warning-face will be useful for other packages where error text should be displayed in the strong color, and warnings in more subdued color. PS: This proposal is for the trunk. For Emacs-22 I think we should restore the old color by copying definitions of font-lock-comment-face and font-lock-comment-delimiter-face to dired-warning like: (defface dired-warning '((((class color) (min-colors 88) (background light)) (:foreground "Firebrick")) (((class color) (min-colors 88) (background dark)) (:foreground "chocolate1")) (((class color) (min-colors 8) (background light)) :foreground "red") (((class color) (min-colors 8) (background dark)) :foreground "red1")) "Face used to highlight a part of a buffer that needs user attention." :group 'dired-faces :version "22.1") -- Juri Linkov http://www.jurta.org/emacs/ ^ permalink raw reply [flat|nested] 84+ messages in thread
* Re: dired-warning 2007-10-11 23:57 ` dired-warning (was: bug of display-table & make-glyph-code) Juri Linkov @ 2007-10-12 7:06 ` martin rudalics 2007-10-14 21:21 ` dired-warning Juri Linkov 0 siblings, 1 reply; 84+ messages in thread From: martin rudalics @ 2007-10-12 7:06 UTC (permalink / raw) To: Juri Linkov; +Cc: emacs-devel > Since this change was synced to the trunk and I see it in action now, > I agree it was a bad idea. The problem provoking that change was that with eight colors `font-lock-comment-delimiter-face' usurpated `font-lock-comment-face' leaving the latter without foreground. > I propose to add a new face font-lock-error-face, to copy its definition > from font-lock-warning-face, and to copy the definition of compilation-warning > to font-lock-warning-face. So dired-warning inheriting now from > font-lock-warning-face will use the new definition. > > Making this distinction between two faces font-lock-error-face and > font-lock-warning-face will be useful for other packages where > error text should be displayed in the strong color, and warnings in > more subdued color. Would this fit into an eight colors scheme? > PS: This proposal is for the trunk. For Emacs-22 I think we should > restore the old color by copying definitions of font-lock-comment-face > and font-lock-comment-delimiter-face to dired-warning like: > > (defface dired-warning > '((((class color) (min-colors 88) (background light)) > (:foreground "Firebrick")) > (((class color) (min-colors 88) (background dark)) > (:foreground "chocolate1")) > (((class color) (min-colors 8) (background light)) > :foreground "red") > (((class color) (min-colors 8) (background dark)) > :foreground "red1")) > "Face used to highlight a part of a buffer that needs user attention." > :group 'dired-faces > :version "22.1") dired.el face specs are based on inheriting, hence this might break some people's customizations. ^ permalink raw reply [flat|nested] 84+ messages in thread
* Re: dired-warning 2007-10-12 7:06 ` dired-warning martin rudalics @ 2007-10-14 21:21 ` Juri Linkov 0 siblings, 0 replies; 84+ messages in thread From: Juri Linkov @ 2007-10-14 21:21 UTC (permalink / raw) To: martin rudalics; +Cc: emacs-devel >> Making this distinction between two faces font-lock-error-face and >> font-lock-warning-face will be useful for other packages where >> error text should be displayed in the strong color, and warnings in >> more subdued color. > > Would this fit into an eight colors scheme? We could add appropriate conditions for an eight colors scheme. -- Juri Linkov http://www.jurta.org/emacs/ ^ permalink raw reply [flat|nested] 84+ messages in thread
* Re: bug of display-table & make-glyph-code 2007-09-05 16:44 ` Glenn Morris 2007-09-05 17:34 ` martin rudalics @ 2007-09-05 17:54 ` Eli Zaretskii 1 sibling, 0 replies; 84+ messages in thread From: Eli Zaretskii @ 2007-09-05 17:54 UTC (permalink / raw) To: Glenn Morris; +Cc: emacs-devel > From: Glenn Morris <rgm@gnu.org> > Date: Wed, 05 Sep 2007 12:44:29 -0400 > Cc: rms@gnu.org, emacs-devel@gnu.org > > find . -name '*.el' | xargs grep 'inherit.*font-lock-comment-face' AKA "grep -R 'inherit.*font-lock-comment-face' --include='*.el'" (assuming you are on GNU/Linux, or otherwise have GNU Grep installed). I know: old habits die hard... ^ permalink raw reply [flat|nested] 84+ messages in thread
* Re: bug of display-table & make-glyph-code 2007-09-05 8:08 ` martin rudalics 2007-09-05 8:37 ` Glenn Morris @ 2007-09-05 8:51 ` levin 2007-09-06 4:59 ` Richard Stallman 2007-09-05 10:08 ` frame resizing under KDE (was Re: bug of display-table & make-glyph-code) Stephen Berman 2007-09-06 1:15 ` bug of display-table & make-glyph-code Chong Yidong 3 siblings, 1 reply; 84+ messages in thread From: levin @ 2007-09-05 8:51 UTC (permalink / raw) To: emacs-devel martin rudalics wrote: > > KDE maximization > > To me this seems a consequence of the known restriction that Emacs > frames can't have arbitrary pixel size. Apparently the OP is the > only Emacs user on KDE. hmm, me too, the Emacs user on KDE, experiencing the same maximization problem. -- Levin ^ permalink raw reply [flat|nested] 84+ messages in thread
* Re: bug of display-table & make-glyph-code 2007-09-05 8:51 ` levin @ 2007-09-06 4:59 ` Richard Stallman 0 siblings, 0 replies; 84+ messages in thread From: Richard Stallman @ 2007-09-06 4:59 UTC (permalink / raw) To: levin; +Cc: emacs-devel > > KDE maximization > > To me this seems a consequence of the known restriction that Emacs > frames can't have arbitrary pixel size. Apparently the OP is the > only Emacs user on KDE. hmm, me too, the Emacs user on KDE, experiencing the same maximization problem. If we are sure that this is due to that basic limitation, we can delete it from the pending bug list. Are we sure? ^ permalink raw reply [flat|nested] 84+ messages in thread
* frame resizing under KDE (was Re: bug of display-table & make-glyph-code) 2007-09-05 8:08 ` martin rudalics 2007-09-05 8:37 ` Glenn Morris 2007-09-05 8:51 ` levin @ 2007-09-05 10:08 ` Stephen Berman 2007-09-05 17:42 ` martin rudalics 2007-09-06 1:15 ` bug of display-table & make-glyph-code Chong Yidong 3 siblings, 1 reply; 84+ messages in thread From: Stephen Berman @ 2007-09-05 10:08 UTC (permalink / raw) To: emacs-devel On Wed, 05 Sep 2007 10:08:14 +0200 martin rudalics <rudalics@gmx.at> wrote: >> KDE maximization > > To me this seems a consequence of the known restriction that Emacs > frames can't have arbitrary pixel size. Apparently the OP is the > only Emacs user on KDE. I think I'm the original OP of this bug back in 2005, though not the OP of the recent thread; and someone else admitted to seeing it in KDE too; so there are at least three of us :-). Anyway, I don't think the bug is solely due to the frame size restriction, because it only happens under the GTK+ build. Steve Berman ^ permalink raw reply [flat|nested] 84+ messages in thread
* Re: frame resizing under KDE (was Re: bug of display-table & make-glyph-code) 2007-09-05 10:08 ` frame resizing under KDE (was Re: bug of display-table & make-glyph-code) Stephen Berman @ 2007-09-05 17:42 ` martin rudalics 2007-09-06 6:17 ` frame resizing under KDE (was Re: bug of display-table & make-glyph-code ) Levin 2007-09-06 12:01 ` frame resizing under KDE Stephen Berman 0 siblings, 2 replies; 84+ messages in thread From: martin rudalics @ 2007-09-05 17:42 UTC (permalink / raw) To: Stephen Berman; +Cc: emacs-devel >>>KDE maximization >> >>To me this seems a consequence of the known restriction that Emacs >>frames can't have arbitrary pixel size. Apparently the OP is the >>only Emacs user on KDE. > > > I think I'm the original OP of this bug back in 2005, though not the > OP of the recent thread; and someone else admitted to seeing it in KDE > too; so there are at least three of us :-). Anyway, I don't think the > bug is solely due to the frame size restriction, because it only > happens under the GTK+ build. Could you list here which of your build/manager combinations handle maximization correctly and which don't? Is it possible that some of them incidentally DTRT because the usable screen area is a multiple of the character height? ^ permalink raw reply [flat|nested] 84+ messages in thread
* Re: frame resizing under KDE (was Re: bug of display-table & make-glyph-code ) 2007-09-05 17:42 ` martin rudalics @ 2007-09-06 6:17 ` Levin 2007-09-06 12:01 ` frame resizing under KDE Stephen Berman 1 sibling, 0 replies; 84+ messages in thread From: Levin @ 2007-09-06 6:17 UTC (permalink / raw) To: emacs-devel martin rudalics wrote: > >>>KDE maximization > >> > >>To me this seems a consequence of the known restriction that Emacs > >>frames can't have arbitrary pixel size. Apparently the OP is the > >>only Emacs user on KDE. > > > > I think I'm the original OP of this bug back in 2005, though not the > > OP of the recent thread; and someone else admitted to seeing it in KDE > > too; so there are at least three of us :-). Anyway, I don't think the > > bug is solely due to the frame size restriction, because it only > > happens under the GTK+ build. > > Could you list here which of your build/manager combinations handle > maximization correctly and which don't? Is it possible that some of > them incidentally DTRT because the usable screen area is a multiple of > the character height? > Strange. If I click the maximum button of emacs in KDE repeatedly and fastly, sometimes I can get emacs maximized. Is there any hook or code that will restore the maximized window back to normal one? -- Levin ^ permalink raw reply [flat|nested] 84+ messages in thread
* Re: frame resizing under KDE 2007-09-05 17:42 ` martin rudalics 2007-09-06 6:17 ` frame resizing under KDE (was Re: bug of display-table & make-glyph-code ) Levin @ 2007-09-06 12:01 ` Stephen Berman 1 sibling, 0 replies; 84+ messages in thread From: Stephen Berman @ 2007-09-06 12:01 UTC (permalink / raw) To: emacs-devel On Wed, 05 Sep 2007 19:42:23 +0200 martin rudalics <rudalics@gmx.at> wrote: > Could you list here which of your build/manager combinations handle > maximization correctly and which don't? Is it possible that some of > them incidentally DTRT because the usable screen area is a multiple of > the character height? I currently have a Lucid build of Emacs 22.0.90 and GTK+ builds of 22.0.50, 22.0.90, 22.0.91, 22.0.92, 22.0.93, 22.0.96, 22.0.97, 22.0.98, as well as the released 22.1 and CVS trunk (pre-multi-tty) 22.1.50. Under Gnome all of these maximize correctly. Under KDE, with the non-GTK+ build (GNU Emacs 22.0.90.1 (i686-pc-linux-gnu, X toolkit) of 2006-11-07), frame resizing works as expected (as with all other applications under KDE): 1. Clicking the maximize icon in the title bar with mouse-1 toggles maximization both vertically and horizontally. 2. Clicking with mouse-2 toggles maximization vertically. 3. Clicking with mouse-3 toggles maximization horizontally. In each case the maximization covers the entire screen area in the specified dimensions. With my GTK+ builds of 22.0.50, 22.0.90 and 22.0.91, frame resizing under KDE works as follows: 1. Clicking the maximize icon with mouse-1 resizes the frame vertically and horizontally but not quite maximally, in both dimensions there is space between the frame and the screen edges. Also, the maximize icon is unchanged and its tooltip still says "Maximize" (it should have changed to a double window icon and the tooltip should say "Restore", as it does in the non-GTK+ build). Subsequently clicking mouse-1 makes the frame momentarily expand to cover the entire screen, but it immediately returns to the previous, not quite maximal size. It is not possible to restore the original size by clicking the maximization icon. 2. Clicking the maximize icon with mouse-2 resizes the frame vertically but not quite maximally, and the maximize icon is unchanged and its tooltip still says "Maximize". Clicking again with mouse-2 expands the frame to cover the entire vertical space; this makes the echo area appear to grow, but the scroll bar there does not grow correspondingly. Subseqently clicking the maximize icon with mouse-2 toggles between the not quite and the completely vertically maximized sizes and the icon remains unchanged. 3. Clicking the maximize icon with mouse-3 yields behavior in the horizontal dimension corresponding to that in the vertical dimension with mouse-2. Both the non-GTK+ build of 22.0.90 and the GTK+ builds of 22.0.50, 22.0.90 and 22.0.91 have as default font -Adobe-Courier-Medium-R-Normal--12-120-75-75-M-70-ISO8859-1. (This is what x-fixed-font-alist says.) Starting with Emacs 22.0.92 the default font changed to -*-fixed-medium-r-*--16-*-*-*-*-*-fontset-16. My GTK+ build of this version, and all subsequent builds up to GNU Emacs 22.1.50.11 (i686-pc-linux-gnu, GTK+ Version 2.10.6) of 2007-08-24 (my latest), differ from the above as follows: 3. Clicking the maximize icon with mouse-3 works almost as expected: it toggles between horizontally maximized and the original horizontal size. However, when maximized, the icon still shows a single rather than a double window, and the tooltip still says "Maximize". 2. Clicking the maximize icon with mouse-2 yields the same behavior as in the GTK+ build of 22.0.90. 1. Clicking the maximize icon with mouse-1 yields the same behavior as in the GTK+ build of 22.0.90 except that the horizontal dimension is fully maximized. With all of these builds, changing the font can make the horizontal resizing (mouse-3) behave as in pre-22.0.92 builds. This is the case e.g. with the following fonts from the Font Menu: "7x13", "9x15", "10x20". With the fonts "6x10", "6x12", "6x13", "8x13", "12x24" horizontal resizing works correctly. Steve Berman ^ permalink raw reply [flat|nested] 84+ messages in thread
* Re: bug of display-table & make-glyph-code 2007-09-05 8:08 ` martin rudalics ` (2 preceding siblings ...) 2007-09-05 10:08 ` frame resizing under KDE (was Re: bug of display-table & make-glyph-code) Stephen Berman @ 2007-09-06 1:15 ` Chong Yidong 2007-09-06 9:09 ` martin rudalics 3 siblings, 1 reply; 84+ messages in thread From: Chong Yidong @ 2007-09-06 1:15 UTC (permalink / raw) To: martin rudalics; +Cc: Glenn Morris, rms, emacs-devel martin rudalics <rudalics@gmx.at> writes: > Finally, the problem reported by davidk > > "Re: display-buffer change" > > as from 2007-08-27 on bug-gnu-emacs hasn't been resolved satisfactorily > either. Actually, Stefan has pointed out that the current behavior was implemented to fix a bug, and it matches the documentation. So I don't think there's a problem here. ^ permalink raw reply [flat|nested] 84+ messages in thread
* Re: bug of display-table & make-glyph-code 2007-09-06 1:15 ` bug of display-table & make-glyph-code Chong Yidong @ 2007-09-06 9:09 ` martin rudalics 2007-09-06 14:08 ` Stefan Monnier 2007-09-07 6:32 ` bug of display-table & make-glyph-code Richard Stallman 0 siblings, 2 replies; 84+ messages in thread From: martin rudalics @ 2007-09-06 9:09 UTC (permalink / raw) To: Chong Yidong; +Cc: Glenn Morris, rms, emacs-devel > Actually, Stefan has pointed out that the current behavior was > implemented to fix a bug, and it matches the documentation. So I > don't think there's a problem here. We both agreed on that before. However the bug led the OP to believe that this is Emacs' standard behavior and he wanted to have it back. I suggested to have `display-buffer' not split dedicated windows (unless there's just one) which should fix his problem. If we don't, could someone please tell the OP that we are not going to change this. ^ permalink raw reply [flat|nested] 84+ messages in thread
* Re: bug of display-table & make-glyph-code 2007-09-06 9:09 ` martin rudalics @ 2007-09-06 14:08 ` Stefan Monnier 2007-09-06 14:49 ` martin rudalics 2007-09-07 6:32 ` bug of display-table & make-glyph-code Richard Stallman 1 sibling, 1 reply; 84+ messages in thread From: Stefan Monnier @ 2007-09-06 14:08 UTC (permalink / raw) To: martin rudalics; +Cc: Glenn Morris, Chong Yidong, rms, emacs-devel >> Actually, Stefan has pointed out that the current behavior was >> implemented to fix a bug, and it matches the documentation. So I >> don't think there's a problem here. > We both agreed on that before. However the bug led the OP to believe > that this is Emacs' standard behavior and he wanted to have it back. > I suggested to have `display-buffer' not split dedicated windows > (unless there's just one) which should fix his problem. The case that the OP mentioned seemed like a case where both the old and the new behaviors are acceptable, with no clear favorite. So I think we may as well leave the code alone. Unless I misunderstood or overlooked a detail, of course. > If we don't, could someone please tell the OP that we are not going to > change this. I'm experimenting with a feature that marks some frames as "balanced" such that any window-creation/deletion or frame resizing causes the windows to be rebalanced with balance-windows or balance-windows-area. In such a situation, whether "| a | b |" is split as "|a|c| b |" or as "| a |c|b|" doesn't matter that much, since that'll be rebalanced to something visually identical anyway. Stefan ^ permalink raw reply [flat|nested] 84+ messages in thread
* Re: bug of display-table & make-glyph-code 2007-09-06 14:08 ` Stefan Monnier @ 2007-09-06 14:49 ` martin rudalics 2007-09-06 20:34 ` Stefan Monnier 0 siblings, 1 reply; 84+ messages in thread From: martin rudalics @ 2007-09-06 14:49 UTC (permalink / raw) To: Stefan Monnier; +Cc: Glenn Morris, Chong Yidong, rms, emacs-devel >>I suggested to have `display-buffer' not split dedicated windows >>(unless there's just one) which should fix his problem. > > > The case that the OP mentioned seemed like a case where both the old and the > new behaviors are acceptable, with no clear favorite. So I think we may as > well leave the code alone. > Unless I misunderstood or overlooked a detail, of course. Aren't all your windows dedicated, thus it wouldn't make any difference for you? For other users, a dedicated window might express some kind of desire to not have Emacs touch that window if possible. Personally, I have no preferences here. I'd just wanted to propose the OP a way to get his old behavior back. >>If we don't, could someone please tell the OP that we are not going to >>change this. > > > I'm experimenting with a feature that marks some frames as "balanced" such > that any window-creation/deletion or frame resizing causes the windows to be > rebalanced with balance-windows or balance-windows-area. In such > a situation, whether "| a | b |" is split as "|a|c| b |" or as "| a |c|b|" > doesn't matter that much, since that'll be rebalanced to something visually > identical anyway. Would this clash with `temp-buffer-resize-mode'? ^ permalink raw reply [flat|nested] 84+ messages in thread
* Re: bug of display-table & make-glyph-code 2007-09-06 14:49 ` martin rudalics @ 2007-09-06 20:34 ` Stefan Monnier 2007-09-06 21:08 ` martin rudalics 0 siblings, 1 reply; 84+ messages in thread From: Stefan Monnier @ 2007-09-06 20:34 UTC (permalink / raw) To: martin rudalics; +Cc: Glenn Morris, Chong Yidong, rms, emacs-devel > Aren't all your windows dedicated, thus it wouldn't make any difference > for you? I wasn't talking about my own case. > For other users, a dedicated window might express some kind of desire to > not have Emacs touch that window if possible. Personally, I have no > preferences here. I'd just wanted to propose the OP a way to get his old > behavior back. I understand. But I'd just want a clearer explanation about why that would be a better choice in general (or even in his particular case). >> I'm experimenting with a feature that marks some frames as "balanced" such >> that any window-creation/deletion or frame resizing causes the windows to be >> rebalanced with balance-windows or balance-windows-area. In such >> a situation, whether "| a | b |" is split as "|a|c| b |" or as "| a |c|b|" >> doesn't matter that much, since that'll be rebalanced to something visually >> identical anyway. > Would this clash with `temp-buffer-resize-mode'? I don't think it's incompatible. It may require extra code to handle it well, of course. Stefan ^ permalink raw reply [flat|nested] 84+ messages in thread
* Re: bug of display-table & make-glyph-code 2007-09-06 20:34 ` Stefan Monnier @ 2007-09-06 21:08 ` martin rudalics 2007-09-07 17:45 ` Stefan Monnier 0 siblings, 1 reply; 84+ messages in thread From: martin rudalics @ 2007-09-06 21:08 UTC (permalink / raw) To: Stefan Monnier; +Cc: Glenn Morris, Chong Yidong, rms, emacs-devel > I understand. But I'd just want a clearer explanation about why that would > be a better choice in general (or even in his particular case). He wants a window of the same size display the same buffer in the same area of the same frame, whatever he's doing. ^ permalink raw reply [flat|nested] 84+ messages in thread
* Re: bug of display-table & make-glyph-code 2007-09-06 21:08 ` martin rudalics @ 2007-09-07 17:45 ` Stefan Monnier 2007-09-07 18:30 ` martin rudalics 0 siblings, 1 reply; 84+ messages in thread From: Stefan Monnier @ 2007-09-07 17:45 UTC (permalink / raw) To: martin rudalics; +Cc: Glenn Morris, Chong Yidong, rms, emacs-devel >> I understand. But I'd just want a clearer explanation about why that would >> be a better choice in general (or even in his particular case). > He wants a window of the same size display the same buffer in the same > area of the same frame, whatever he's doing. I must have lost too much context: I do not understand the above description. Can someone spell it out in baby-steps for my poor excuse for a brain? Stefan ^ permalink raw reply [flat|nested] 84+ messages in thread
* Re: bug of display-table & make-glyph-code 2007-09-07 17:45 ` Stefan Monnier @ 2007-09-07 18:30 ` martin rudalics 2007-09-07 20:25 ` Stefan Monnier 0 siblings, 1 reply; 84+ messages in thread From: martin rudalics @ 2007-09-07 18:30 UTC (permalink / raw) To: Stefan Monnier; +Cc: Glenn Morris, Chong Yidong, rms, emacs-devel > I must have lost too much context: I do not understand the > above description. Can someone spell it out in baby-steps for my poor > excuse for a brain? The OP explained it as follows: > Split an emacs frame in two windows showing buffers A and B: > > +-------------+ > | | > | A | > | | > +-------------+ > | | > | B | > | | > +-------------+ > > While in the lower window, run > > (set-window-dedicated-p (selected-window) t) > > Now, in the upper window, run > > (display-buffer "C") > > In Emacs 21, this will be the result: > > +-------------+ > | A | > +-------------+ > | C | > +-------------+ > | | > | B | > | | > +-------------+ > > In Emacs 22, this will be the result: > > +-------------+ > | | > | C | > | | > +-------------+ > | | > | B | > | | > +-------------+ > > In Emacs 22 with split-heigh-threshold=10, this will be the result: > > +-------------+ > | | > | A | > | | > +-------------+ > | B | > +-------------+ > | C | > +-------------+ > What he apparently wants is window B always display the same buffer, stay below all other windows, and not change its size. ^ permalink raw reply [flat|nested] 84+ messages in thread
* Re: bug of display-table & make-glyph-code 2007-09-07 18:30 ` martin rudalics @ 2007-09-07 20:25 ` Stefan Monnier 2007-09-08 9:22 ` display-buffer-change (was Re: bug of display-table & make-glyph-code) martin rudalics 0 siblings, 1 reply; 84+ messages in thread From: Stefan Monnier @ 2007-09-07 20:25 UTC (permalink / raw) To: martin rudalics; +Cc: Glenn Morris, Chong Yidong, rms, emacs-devel >> I must have lost too much context: I do not understand the >> above description. Can someone spell it out in baby-steps for my poor >> excuse for a brain? > The OP explained it as follows: >> Split an emacs frame in two windows showing buffers A and B: >> >> +-------------+ >> | | >> | A | >> | | >> +-------------+ >> | | >> | B | >> | | >> +-------------+ >> >> While in the lower window, run >> >> (set-window-dedicated-p (selected-window) t) >> >> Now, in the upper window, run >> >> (display-buffer "C") >> >> In Emacs 21, this will be the result: >> >> +-------------+ >> | A | >> +-------------+ >> | C | >> +-------------+ >> | | >> | B | >> | | >> +-------------+ >> >> In Emacs 22, this will be the result: >> >> +-------------+ >> | | >> | C | >> | | >> +-------------+ >> | | >> | B | >> | | >> +-------------+ >> >> In Emacs 22 with split-heigh-threshold=10, this will be the result: >> >> +-------------+ >> | | >> | A | >> | | >> +-------------+ >> | B | >> +-------------+ >> | C | >> +-------------+ >> > What he apparently wants is window B always display the same buffer, stay > below all other windows, and not change its size. I guess I see the following problems: 0 - it's not clear to me why Emacs chooses to split B rather than A. It seems unrelated to the split-height-threshold fix, so we need to look into this before being able to determine how best to fix it. 1 - since we're in buffer/window A, it would probably be preferable to place buffer C closer rather than further, so in this case after splitting B display-buffer should prefer using the top window for C and the bottom one for B. 2 - "dedicated" is mostly meant to cause deletion of the buffer to also cause deletion of the window. It says nothing about the window having a fixed size or being non-splittable. 3 - we have window-size-fixed for that. 4 - we don't have window-(un)splittable for that (there's a frame parameter to prevent splitting windows in that frame, tho). -- Stefan ^ permalink raw reply [flat|nested] 84+ messages in thread
* Re: display-buffer-change (was Re: bug of display-table & make-glyph-code) 2007-09-07 20:25 ` Stefan Monnier @ 2007-09-08 9:22 ` martin rudalics 2007-09-09 19:33 ` display-buffer-change Stefan Monnier 2007-09-10 6:48 ` display-buffer-change David Kågedal 0 siblings, 2 replies; 84+ messages in thread From: martin rudalics @ 2007-09-08 9:22 UTC (permalink / raw) To: Stefan Monnier; +Cc: David Kågedal, rms, emacs-devel Stefan Monnier schrieb: >>>I must have lost too much context: I do not understand the >>>above description. Can someone spell it out in baby-steps for my poor >>>excuse for a brain? > > >>The OP explained it as follows: > > >>>Split an emacs frame in two windows showing buffers A and B: >>> >>>+-------------+ >>>| | >>>| A | >>>| | >>>+-------------+ >>>| | >>>| B | >>>| | >>>+-------------+ >>> >>>While in the lower window, run >>> >>>(set-window-dedicated-p (selected-window) t) >>> >>>Now, in the upper window, run >>> >>>(display-buffer "C") >>> >>>In Emacs 21, this will be the result: >>> >>>+-------------+ >>>| A | >>>+-------------+ >>>| C | >>>+-------------+ >>>| | >>>| B | >>>| | >>>+-------------+ >>> >>>In Emacs 22, this will be the result: >>> >>>+-------------+ >>>| | >>>| C | >>>| | >>>+-------------+ >>>| | >>>| B | >>>| | >>>+-------------+ >>> >>>In Emacs 22 with split-heigh-threshold=10, this will be the result: >>> >>>+-------------+ >>>| | >>>| A | >>>| | >>>+-------------+ >>>| B | >>>+-------------+ >>>| C | >>>+-------------+ >>> > > >>What he apparently wants is window B always display the same buffer, stay >>below all other windows, and not change its size. > > > I guess I see the following problems: > 0 - it's not clear to me why Emacs chooses to split B rather than A. > It seems unrelated to the split-height-threshold fix, so we need to look > into this before being able to determine how best to fix it. Fget_largest_window returns the largest window and B could be that window. > 1 - since we're in buffer/window A, it would probably be preferable to place > buffer C closer rather than further, so in this case after splitting B > display-buffer should prefer using the top window for C and the bottom > one for B. With `split-window' the new window is the lower one, we would lose all associations for B if we did that. > 2 - "dedicated" is mostly meant to cause deletion of the buffer to also > cause deletion of the window. It says nothing about the window having > a fixed size or being non-splittable. Agreed. > 3 - we have window-size-fixed for that. David: Could you set that for the buffer of your window B and look whether it gives good results. > 4 - we don't have window-(un)splittable for that (there's a frame parameter > to prevent splitting windows in that frame, tho). Earlier I thought about splitting obey a buffer-local value for `split-height-threshold'. ^ permalink raw reply [flat|nested] 84+ messages in thread
* Re: display-buffer-change 2007-09-08 9:22 ` display-buffer-change (was Re: bug of display-table & make-glyph-code) martin rudalics @ 2007-09-09 19:33 ` Stefan Monnier 2007-09-09 21:42 ` display-buffer-change martin rudalics 2007-09-10 6:48 ` display-buffer-change David Kågedal 1 sibling, 1 reply; 84+ messages in thread From: Stefan Monnier @ 2007-09-09 19:33 UTC (permalink / raw) To: martin rudalics; +Cc: David K?gedal, rms, emacs-devel >> I guess I see the following problems: >> 0 - it's not clear to me why Emacs chooses to split B rather than A. >> It seems unrelated to the split-height-threshold fix, so we need to look >> into this before being able to determine how best to fix it. > Fget_largest_window returns the largest window and B could be that > window. So it's not always going to behave this way, it depends on details of the current layout. A shift by 1 line can change the result? >> 1 - since we're in buffer/window A, it would probably be preferable to place >> buffer C closer rather than further, so in this case after splitting B >> display-buffer should prefer using the top window for C and the bottom >> one for B. > With `split-window' the new window is the lower one, we would lose all > associations for B if we did that. I know. It'a problem. Independent from the current one. >> 2 - "dedicated" is mostly meant to cause deletion of the buffer to also >> cause deletion of the window. It says nothing about the window having >> a fixed size or being non-splittable. > Agreed. >> 3 - we have window-size-fixed for that. > David: Could you set that for the buffer of your window B and look > whether it gives good results. I don't think that's going to help. This variable is almost never used/obeyed :-( And I don't think it'd help the OP anyway because he doesn't want to go a configure such things. And the window shouldn't be fixed-size anyway (you should still be able to resize it with balance-window, for example). >> 4 - we don't have window-(un)splittable for that (there's a frame parameter >> to prevent splitting windows in that frame, tho). > Earlier I thought about splitting obey a buffer-local value for > `split-height-threshold'. That would make a lot of sense. But I don't think it'd help the OP either because it's too detailed a configuration. To get back to the OP's example scenario, starting from >>>+-------------+ >>>| | >>>| A | >>>| | >>>+-------------+ >>>| | >>>| B | >>>| | >>>+-------------+ Why would >>>+-------------+ >>>| A | >>>+-------------+ >>>| C | >>>+-------------+ >>>| | >>>| B | >>>| | >>>+-------------+ be better than >>>+-------------+ >>>| | >>>| A | >>>| | >>>+-------------+ >>>| B | >>>+-------------+ >>>| C | >>>+-------------+ and why should it depend on B being dedicated? Stefan ^ permalink raw reply [flat|nested] 84+ messages in thread
* Re: display-buffer-change 2007-09-09 19:33 ` display-buffer-change Stefan Monnier @ 2007-09-09 21:42 ` martin rudalics 2007-09-10 6:57 ` display-buffer-change David Kågedal 0 siblings, 1 reply; 84+ messages in thread From: martin rudalics @ 2007-09-09 21:42 UTC (permalink / raw) To: Stefan Monnier; +Cc: David K?gedal, rms, emacs-devel >>>0 - it's not clear to me why Emacs chooses to split B rather than A. >>>It seems unrelated to the split-height-threshold fix, so we need to look >>>into this before being able to determine how best to fix it. > > >>Fget_largest_window returns the largest window and B could be that >>window. > > > So it's not always going to behave this way, it depends on details of the > current layout. A shift by 1 line can change the result? If Fget_largest_window doesn't provide a suitable window Fget_lru_window kicks in. Hence we can have all sorts of results. `display-buffer' is very stochastic. >>>1 - since we're in buffer/window A, it would probably be preferable to place >>>buffer C closer rather than further, so in this case after splitting B >>>display-buffer should prefer using the top window for C and the bottom >>>one for B. > > >>With `split-window' the new window is the lower one, we would lose all >>associations for B if we did that. > > > I know. It'a problem. Independent from the current one. It's hardly a problem for the OP. It's a real pain for me. >>>3 - we have window-size-fixed for that. > > >>David: Could you set that for the buffer of your window B and look >>whether it gives good results. > > > I don't think that's going to help. This variable is almost never > used/obeyed :-( I was surprised to find out that it is checked more often than I thought initially. > And I don't think it'd help the OP anyway because he doesn't want to go > a configure such things. Maybe he would. But it's not useful in general (given the default value of `split-height-threshold' I don't think people use that either). > And the window shouldn't be fixed-size anyway > (you should still be able to resize it with balance-window, for example). 100% agreement, but it was your suggestion ;-) >>>4 - we don't have window-(un)splittable for that (there's a frame parameter >>>to prevent splitting windows in that frame, tho). > > >>Earlier I thought about splitting obey a buffer-local value for >>`split-height-threshold'. > > > That would make a lot of sense. But I don't think it'd help the OP either > because it's too detailed a configuration. The OP would do it. It's not useful as a general suggestion and it might be hairy to implement. Strictly spoken, `display-buffer' would have to - whenever it tries to split a window - check the buffer-local value of `split-height-threshold' of the buffer displayed in that window (or should it be the value of the buffer we want to display?). Anyway, just try to convey this in a user manual. > > To get back to the OP's example scenario, starting from > > >>>>+-------------+ >>>>| | >>>>| A | >>>>| | >>>>+-------------+ >>>>| | >>>>| B | >>>>| | >>>>+-------------+ > > > Why would > > >>>>+-------------+ >>>>| A | >>>>+-------------+ >>>>| C | >>>>+-------------+ >>>>| | >>>>| B | >>>>| | >>>>+-------------+ > > > be better than > > >>>>+-------------+ >>>>| | >>>>| A | >>>>| | >>>>+-------------+ >>>>| B | >>>>+-------------+ >>>>| C | >>>>+-------------+ > > > and why should it depend on B being dedicated? I can only speculate: B is my fixed point for compiling, tracing, debugging, observing or controlling the world. It's the area of the screen I'm looking first when I run into troubles. I don't want it to change size or position because I wouldn't find it at its usual place in the shape I got used to. More likely it's because the OP got used to the A / C / B behavior over the years. Maybe he can tell us more. ^ permalink raw reply [flat|nested] 84+ messages in thread
* Re: display-buffer-change 2007-09-09 21:42 ` display-buffer-change martin rudalics @ 2007-09-10 6:57 ` David Kågedal 2007-09-10 8:31 ` display-buffer-change martin rudalics 0 siblings, 1 reply; 84+ messages in thread From: David Kågedal @ 2007-09-10 6:57 UTC (permalink / raw) To: Stefan Monnier, martin rudalics; +Cc: rms, emacs-devel [-- Attachment #1: Type: text/plain, Size: 2048 bytes --] martin rudalics <rudalics@gmx.at> writes: >> To get back to the OP's example scenario, starting from >> >> >>>>>+-------------+ >>>>>| | >>>>>| A | >>>>>| | >>>>>+-------------+ >>>>>| | >>>>>| B | >>>>>| | >>>>>+-------------+ >> >> >> Why would >> >> >>>>>+-------------+ >>>>>| A | >>>>>+-------------+ >>>>>| C | >>>>>+-------------+ >>>>>| | >>>>>| B | >>>>>| | >>>>>+-------------+ >> >> >> be better than >> >> >>>>>+-------------+ >>>>>| | >>>>>| A | >>>>>| | >>>>>+-------------+ >>>>>| B | >>>>>+-------------+ >>>>>| C | >>>>>+-------------+ >> >> >> and why should it depend on B being dedicated? > > I can only speculate: B is my fixed point for compiling, tracing, > debugging, observing or controlling the world. It's the area of the > screen I'm looking first when I run into troubles. I don't want it to > change size or position because I wouldn't find it at its usual place in > the shape I got used to. > > More likely it's because the OP got used to the A / C / B behavior over > the years. Maybe he can tell us more. Exactly. "B" is the "*compilation*" buffer in my case. I need two things from the window: 1) The window should be dedicated to *compilation* 2) The window should stick at the bottom The size isn't really important, since I change it frequently anyway. I agree that window-dedicated-p only promises me the first, but Emacs 21 gave me the second and Emacs 22 doesn't. This make Emacs 22 less useful and I reported the problem. A window-local "unsplittable" flag that I can set could probably help. I'm attaching the actual code I'm using, although the simple test case I gave you shows the change. Put these three files in your load-path and load compile-window. Then run a compilation with M-x compile. You'll get a *compilation* window that you can resize with "C-c ." which sticks to the bottom and stays there. [-- Attachment #2: compile-window.tar --] [-- Type: application/x-tar, Size: 10240 bytes --] [-- Attachment #3: Type: text/plain, Size: 23 bytes --] -- David Kågedal [-- Attachment #4: Type: text/plain, Size: 142 bytes --] _______________________________________________ Emacs-devel mailing list Emacs-devel@gnu.org http://lists.gnu.org/mailman/listinfo/emacs-devel ^ permalink raw reply [flat|nested] 84+ messages in thread
* Re: display-buffer-change 2007-09-10 6:57 ` display-buffer-change David Kågedal @ 2007-09-10 8:31 ` martin rudalics 0 siblings, 0 replies; 84+ messages in thread From: martin rudalics @ 2007-09-10 8:31 UTC (permalink / raw) To: David Kågedal; +Cc: Stefan Monnier, rms, emacs-devel > A window-local "unsplittable" flag that I can set could probably help. Consider using something like `window-unsplittable-p': With David's example, A and B have the same size and B would be unsplittable. If `window-unsplittable-p' is _not_ handled by Fget_largest_window the latter might return B although A would be a perfect alternative. `display-buffer' would decide that there's no sutiable largest window, continue with the LRU one, find out that it can't be split either and stick to some suboptimal solution. Hence, `get-largest-window' and `get-lru-window' would need a third, optional "unsplittable" argument. That argument would be hardly set by anything but `display-buffer'. I earlier suggested to use `window-dedicated-p' to make the window unsplittable because this can be handled by the current code of Fget_largest_window and Fget_lru_window. I'd simply have `display-buffer' call these with the second argument Qnil and be done. Obviously, the semantics of "dedicatedness" would change. ^ permalink raw reply [flat|nested] 84+ messages in thread
* Re: display-buffer-change 2007-09-08 9:22 ` display-buffer-change (was Re: bug of display-table & make-glyph-code) martin rudalics 2007-09-09 19:33 ` display-buffer-change Stefan Monnier @ 2007-09-10 6:48 ` David Kågedal 2007-09-10 8:00 ` display-buffer-change martin rudalics 1 sibling, 1 reply; 84+ messages in thread From: David Kågedal @ 2007-09-10 6:48 UTC (permalink / raw) To: Stefan Monnier, martin rudalics; +Cc: rms, emacs-devel martin rudalics <rudalics@gmx.at> writes: > Stefan Monnier schrieb: >>>>I must have lost too much context: I do not understand the >>>>above description. Can someone spell it out in baby-steps for my poor >>>>excuse for a brain? >> >> >>>The OP explained it as follows: >> >> >>>>Split an emacs frame in two windows showing buffers A and B: >>>> >>>>+-------------+ >>>>| | >>>>| A | >>>>| | >>>>+-------------+ >>>>| | >>>>| B | >>>>| | >>>>+-------------+ >>>> >>>>While in the lower window, run >>>> >>>>(set-window-dedicated-p (selected-window) t) >>>> >>>>Now, in the upper window, run >>>> >>>>(display-buffer "C") >>>> >>>>In Emacs 21, this will be the result: >>>> >>>>+-------------+ >>>>| A | >>>>+-------------+ >>>>| C | >>>>+-------------+ >>>>| | >>>>| B | >>>>| | >>>>+-------------+ Actually, I think that the size of B is diminished somewhat sometimes. >>>>In Emacs 22, this will be the result: >>>> >>>>+-------------+ >>>>| | >>>>| C | >>>>| | >>>>+-------------+ >>>>| | >>>>| B | >>>>| | >>>>+-------------+ >>>> >>>>In Emacs 22 with split-heigh-threshold=10, this will be the result: >>>> >>>>+-------------+ >>>>| | >>>>| A | >>>>| | >>>>+-------------+ >>>>| B | >>>>+-------------+ >>>>| C | >>>>+-------------+ >>>> >> >> >>>What he apparently wants is window B always display the same buffer, stay >>>below all other windows, and not change its size. >> >> >> I guess I see the following problems: >> 0 - it's not clear to me why Emacs chooses to split B rather than A. >> It seems unrelated to the split-height-threshold fix, so we need to look >> into this before being able to determine how best to fix it. > > Fget_largest_window returns the largest window and B could be that > window. > >> 1 - since we're in buffer/window A, it would probably be preferable to place >> buffer C closer rather than further, so in this case after splitting B >> display-buffer should prefer using the top window for C and the bottom >> one for B. > > With `split-window' the new window is the lower one, we would lose all > associations for B if we did that. > > >> 2 - "dedicated" is mostly meant to cause deletion of the buffer to also >> cause deletion of the window. It says nothing about the window having >> a fixed size or being non-splittable. > > Agreed. Having a fixed size is not important for me. The most important property for me is that it remains being fixed at the bottom of the frame. This seemed to hold in Emacs 21, which made me happy. But it might have been unintended. >> 3 - we have window-size-fixed for that. > > David: Could you set that for the buffer of your window B and look > whether it gives good results. No, it gives me an error: "Attempt to split fixed-size window". I think the (short) instructions at the top should be enough for you to reproduce it as well. >> 4 - we don't have window-(un)splittable for that (there's a frame parameter >> to prevent splitting windows in that frame, tho). > > Earlier I thought about splitting obey a buffer-local value for > `split-height-threshold'. > -- David Kågedal ^ permalink raw reply [flat|nested] 84+ messages in thread
* Re: display-buffer-change 2007-09-10 6:48 ` display-buffer-change David Kågedal @ 2007-09-10 8:00 ` martin rudalics 0 siblings, 0 replies; 84+ messages in thread From: martin rudalics @ 2007-09-10 8:00 UTC (permalink / raw) To: David Kågedal; +Cc: Stefan Monnier, rms, emacs-devel > Having a fixed size is not important for me. The most important > property for me is that it remains being fixed at the bottom of the > frame. This seemed to hold in Emacs 21, which made me happy. But it > might have been unintended. > > >>>3 - we have window-size-fixed for that. >> >>David: Could you set that for the buffer of your window B and look >>whether it gives good results. > > > No, it gives me an error: "Attempt to split fixed-size window". > > I think the (short) instructions at the top should be enough for you > to reproduce it as well. Well I thought together with something like (setq split-height-threshold 5) Anyway, this violates the doc-string of `window-size-fixed' Emacs won't change the size of any window displaying that buffer, unless you explicitly change the size, or Emacs has no other choice. and I just noted a similar "Window is not resizable" bug with `temp-buffer-resize-mode'. ^ permalink raw reply [flat|nested] 84+ messages in thread
* Re: bug of display-table & make-glyph-code 2007-09-06 9:09 ` martin rudalics 2007-09-06 14:08 ` Stefan Monnier @ 2007-09-07 6:32 ` Richard Stallman 1 sibling, 0 replies; 84+ messages in thread From: Richard Stallman @ 2007-09-07 6:32 UTC (permalink / raw) To: martin rudalics; +Cc: rgm, cyd, emacs-devel I suggested to have `display-buffer' not split dedicated windows (unless there's just one) which should fix his problem. Whether or not there is a bug, that sounds like a good feature: don't split a dedicated window if there is another convenient alternative. Please try it out. ^ permalink raw reply [flat|nested] 84+ messages in thread
* Re: bug of display-table & make-glyph-code 2007-09-05 7:21 ` Glenn Morris 2007-09-05 8:08 ` martin rudalics @ 2007-09-06 5:00 ` Richard Stallman 2007-09-06 5:27 ` Glenn Morris 1 sibling, 1 reply; 84+ messages in thread From: Richard Stallman @ 2007-09-06 5:00 UTC (permalink / raw) To: Glenn Morris; +Cc: rudalics, zslevin, emacs-devel It's not on any list. The only extant Emacs 22 bugs seem to be: eshell external commands KDE maximization getopts_long and etags? static locals and HPUX? If those are the ones in FOR-RELEASE, I think there are others not in that file. I put them info FOR-RELEASE when I send the third message about a bug. Maybe Martin Rudalics puts them in after the second message. Probably those are all the ones for which I have made several reminders. ^ permalink raw reply [flat|nested] 84+ messages in thread
* Re: bug of display-table & make-glyph-code 2007-09-06 5:00 ` Richard Stallman @ 2007-09-06 5:27 ` Glenn Morris 0 siblings, 0 replies; 84+ messages in thread From: Glenn Morris @ 2007-09-06 5:27 UTC (permalink / raw) To: rms; +Cc: rudalics, zslevin, emacs-devel Richard Stallman wrote: > If those are the ones in FOR-RELEASE, I think there are others not > in that file. No, those are not just the ones in F-R, but all the ones I'm aware of that don't yet have solutions. > Probably those are all the ones for which I have made several reminders. Thanks for the vote of confidence. ;) ^ permalink raw reply [flat|nested] 84+ messages in thread
* Re: bug of display-table & make-glyph-code 2007-09-05 6:16 ` Richard Stallman 2007-09-05 7:21 ` Glenn Morris @ 2007-09-05 9:15 ` Kim F. Storm 2007-09-05 17:38 ` martin rudalics ` (2 more replies) 1 sibling, 3 replies; 84+ messages in thread From: Kim F. Storm @ 2007-09-05 9:15 UTC (permalink / raw) To: rms; +Cc: Glenn Morris, emacs-devel, zslevin, rudalics Richard Stallman <rms@gnu.org> writes: > > Can someone reproduce the OP's behavior with Emacs 22 ? > > Neither with Emacs 22 nor the current CVS trunk. > > If we cannot make it fail, we can cross it off the list. > Would you please? The problem is related to the way we encode face numbers in glyph codes (as an integer). The number of bits left over in a glyph code for the face number is vastly reduced on the unicode-2 branch, so as soon as we merge that to the trunk, the problem will certainly be visible on trunk. The solution is to find some other way to merge a face with a char-code to make a glyph code. We have discussed this some time ago. One suggestion was to use a cons (CHAR . FACE_ID). Hiding such details was the main rationale for introducting the make-glyph-code function in 22.1 -- Kim F. Storm <storm@cua.dk> http://www.cua.dk ^ permalink raw reply [flat|nested] 84+ messages in thread
* Re: bug of display-table & make-glyph-code 2007-09-05 9:15 ` Kim F. Storm @ 2007-09-05 17:38 ` martin rudalics 2007-09-05 20:43 ` Kim F. Storm 2007-09-07 5:11 ` Kenichi Handa 2007-09-10 1:12 ` Richard Stallman 2 siblings, 1 reply; 84+ messages in thread From: martin rudalics @ 2007-09-05 17:38 UTC (permalink / raw) To: Kim F. Storm; +Cc: Glenn Morris, emacs-devel, rms, zslevin > The problem is related to the way we encode face numbers in > glyph codes (as an integer). > > The number of bits left over in a glyph code for the face number > is vastly reduced on the unicode-2 branch, so as soon as we > merge that to the trunk, the problem will certainly be > visible on trunk. > > The solution is to find some other way to merge a face with a > char-code to make a glyph code. We have discussed this some > time ago. > > One suggestion was to use a cons (CHAR . FACE_ID). > > Hiding such details was the main rationale for introducting the > make-glyph-code function in 22.1 We should make sure that this is resolved before merging in the Unicode branch. What would you suggest to do? ^ permalink raw reply [flat|nested] 84+ messages in thread
* Re: bug of display-table & make-glyph-code 2007-09-05 17:38 ` martin rudalics @ 2007-09-05 20:43 ` Kim F. Storm 0 siblings, 0 replies; 84+ messages in thread From: Kim F. Storm @ 2007-09-05 20:43 UTC (permalink / raw) To: martin rudalics; +Cc: Glenn Morris, zslevin, rms, emacs-devel martin rudalics <rudalics@gmx.at> writes: > We should make sure that this is resolved before merging in the Unicode > branch. What would you suggest to do? IMO it can wait until unicode is merged. -- Kim F. Storm <storm@cua.dk> http://www.cua.dk ^ permalink raw reply [flat|nested] 84+ messages in thread
* Re: bug of display-table & make-glyph-code 2007-09-05 9:15 ` Kim F. Storm 2007-09-05 17:38 ` martin rudalics @ 2007-09-07 5:11 ` Kenichi Handa 2007-09-07 8:47 ` Eli Zaretskii 2007-09-07 19:53 ` Richard Stallman 2007-09-10 1:12 ` Richard Stallman 2 siblings, 2 replies; 84+ messages in thread From: Kenichi Handa @ 2007-09-07 5:11 UTC (permalink / raw) To: Kim F. Storm; +Cc: rgm, zslevin, rms, rudalics, emacs-devel In article <87bqch1nhz.fsf@kfs-lx.testafd.dk>, storm@cua.dk (Kim F. Storm) writes: > Richard Stallman <rms@gnu.org> writes: > > > Can someone reproduce the OP's behavior with Emacs 22 ? > > > > Neither with Emacs 22 nor the current CVS trunk. > > > > If we cannot make it fail, we can cross it off the list. > > Would you please? > The problem is related to the way we encode face numbers in > glyph codes (as an integer). > The number of bits left over in a glyph code for the face number > is vastly reduced on the unicode-2 branch, so as soon as we > merge that to the trunk, the problem will certainly be > visible on trunk. > The solution is to find some other way to merge a face with a > char-code to make a glyph code. We have discussed this some > time ago. > One suggestion was to use a cons (CHAR . FACE_ID). I started to study the glyph related codes, and ran into the function create-glyph (disp-table.el). It is a strange function,q and I don't understand how to utilize it. Could someone please explain it? --- Kenichi Handa handa@m17n.org ^ permalink raw reply [flat|nested] 84+ messages in thread
* Re: bug of display-table & make-glyph-code 2007-09-07 5:11 ` Kenichi Handa @ 2007-09-07 8:47 ` Eli Zaretskii 2007-09-07 12:25 ` Kenichi Handa 2007-09-07 19:53 ` Richard Stallman 1 sibling, 1 reply; 84+ messages in thread From: Eli Zaretskii @ 2007-09-07 8:47 UTC (permalink / raw) To: Kenichi Handa; +Cc: zslevin, emacs-devel > From: Kenichi Handa <handa@m17n.org> > Date: Fri, 07 Sep 2007 14:11:35 +0900 > Cc: rgm@gnu.org, zslevin@gmail.com, rms@gnu.org, rudalics@gmx.at, > emacs-devel@gnu.org > > I started to study the glyph related codes, and ran into the > function create-glyph (disp-table.el). It is a strange > function, and I don't understand how to utilize it. Could > someone please explain it? I'm not sure what is there to explain, since the code looks quite self-explanatory, if read in together with the "Glyphs" node in the ELisp manual. Perhaps I'm missing something; if the below doesn't help, please ask specific questions. `create-glyph' is used on a character terminal to create a glyph that is displayed instead of some character C. The way you use it is like this: (aset standard-display-table c (vector (create-glyph (concat "\e(0" (char-to-string gc) "\e(B"))))) This sets up the slot for C in standard-display-table to send to the terminal the string `(concat "\e(0" (char-to-string gc) "\e(B")))' (where GC is a code of some other character). standard-display-table needs an integer code of a glyph to put in the slot used to display C. Therefore, `create-glyph' returns such an integer, which is an index into a glyph table. In the glyph table, the first 256 slots are left unused, to avoid affecting the ASCII and unibyte non-ASCII ranges. Starting from entry #256 (zero-based), `create-glyph' adds a new entry for its argument (which is a string to be sent to the terminal when a specific character is displayed), and stores that string argument in glyph-table. Thereafter, when character C is to be displayed, Emacs will look it up in standard-display-table and see that its slot has a glyph index. Emacs will then look up that index's slot in glyph-table, fetch the string stored at that slot, and send the string to the terminal. Presumably, the string uses character terminal escape sequences to produce the desired effect, such as underlining the character etc. Did I manage to answer your question? ^ permalink raw reply [flat|nested] 84+ messages in thread
* Re: bug of display-table & make-glyph-code 2007-09-07 8:47 ` Eli Zaretskii @ 2007-09-07 12:25 ` Kenichi Handa 2007-09-07 18:37 ` Eli Zaretskii 2007-09-08 7:00 ` Richard Stallman 0 siblings, 2 replies; 84+ messages in thread From: Kenichi Handa @ 2007-09-07 12:25 UTC (permalink / raw) To: Eli Zaretskii; +Cc: zslevin, emacs-devel In article <uabryuaju.fsf@gnu.org>, Eli Zaretskii <eliz@gnu.org> writes: > > From: Kenichi Handa <handa@m17n.org> > > Date: Fri, 07 Sep 2007 14:11:35 +0900 > > Cc: rgm@gnu.org, zslevin@gmail.com, rms@gnu.org, rudalics@gmx.at, > > emacs-devel@gnu.org > > > > I started to study the glyph related codes, and ran into the > > function create-glyph (disp-table.el). It is a strange > > function, and I don't understand how to utilize it. Could > > someone please explain it? > I'm not sure what is there to explain, since the code looks quite > self-explanatory, if read in together with the "Glyphs" node in the > ELisp manual. Perhaps I'm missing something; if the below doesn't > help, please ask specific questions. Thank you very much for the detailed explanation. That is exactly what I just understood from the code. But, then, it seems that the design is broken (or got broken because of introduction of multibyte characters). It grows glyph-table one by one. So, at some point a glyph code is simply a character code, but after several calls of create-glyph, that same glyph code becomes an index into glyph-table, and is displayed differently. That means that we can't reliably store a vector of non-ASCII characters (>= U+100) in a slot of display-table. In addition, the docstring of buffer-display-table says that each element is a vector of characters (or nil). It doesn't say that contents of the vector is actually regarded as a glyph code. The Glyphs node of info says this: ---------------------------------------------------------------------- A glyph is represented in Lisp as a "glyph code". A glyph code can be "simple" or it can be defined by the "glyph table". A simple glyph code is just a way of specifying a character and a face to output it in. *Note Faces::. The following functions are used to manipulate simple glyph codes: -- Function: make-glyph-code char &optional face This function returns a simple glyph code representing char CHAR with face FACE. ---------------------------------------------------------------------- But, for instance, the return value of (make-glyph-code 256) is a simple glyph or not depending on the current length of glyph-table. --- Kenichi Handa handa@m17n.org > `create-glyph' is used on a character terminal to create a glyph that > is displayed instead of some character C. The way you use it is like > this: > (aset standard-display-table c > (vector (create-glyph (concat "\e(0" (char-to-string gc) "\e(B"))))) > This sets up the slot for C in standard-display-table to send to the > terminal the string `(concat "\e(0" (char-to-string gc) "\e(B")))' > (where GC is a code of some other character). > standard-display-table needs an integer code of a glyph to put in the > slot used to display C. Therefore, `create-glyph' returns such an > integer, which is an index into a glyph table. In the glyph table, > the first 256 slots are left unused, to avoid affecting the ASCII and > unibyte non-ASCII ranges. Starting from entry #256 (zero-based), > `create-glyph' adds a new entry for its argument (which is a string to > be sent to the terminal when a specific character is displayed), and > stores that string argument in glyph-table. > Thereafter, when character C is to be displayed, Emacs will look it up > in standard-display-table and see that its slot has a glyph index. > Emacs will then look up that index's slot in glyph-table, fetch the > string stored at that slot, and send the string to the terminal. > Presumably, the string uses character terminal escape sequences to > produce the desired effect, such as underlining the character etc. > Did I manage to answer your question? > _______________________________________________ > Emacs-devel mailing list > Emacs-devel@gnu.org > http://lists.gnu.org/mailman/listinfo/emacs-devel ^ permalink raw reply [flat|nested] 84+ messages in thread
* Re: bug of display-table & make-glyph-code 2007-09-07 12:25 ` Kenichi Handa @ 2007-09-07 18:37 ` Eli Zaretskii 2007-09-08 7:00 ` Richard Stallman 1 sibling, 0 replies; 84+ messages in thread From: Eli Zaretskii @ 2007-09-07 18:37 UTC (permalink / raw) To: Kenichi Handa; +Cc: zslevin, emacs-devel > From: Kenichi Handa <handa@m17n.org> > CC: zslevin@gmail.com, emacs-devel@gnu.org > Date: Fri, 07 Sep 2007 21:25:41 +0900 > > But, then, it seems that the design is broken (or got broken > because of introduction of multibyte characters). It quite possibly is. disp-table.el was introduced before multibyte characters, and most commands in it should not be used in multibyte buffers, as they assume unibyte characters. We know for a long time that glyph codes and glyph tables should be redesigned. Specifying a face by high-order bits of a character code is an ugly kludge. ^ permalink raw reply [flat|nested] 84+ messages in thread
* Re: bug of display-table & make-glyph-code 2007-09-07 12:25 ` Kenichi Handa 2007-09-07 18:37 ` Eli Zaretskii @ 2007-09-08 7:00 ` Richard Stallman 2007-09-10 2:43 ` Kenichi Handa 2007-09-10 3:18 ` Eli Zaretskii 1 sibling, 2 replies; 84+ messages in thread From: Richard Stallman @ 2007-09-08 7:00 UTC (permalink / raw) To: Kenichi Handa; +Cc: eliz, zslevin, emacs-devel But, then, it seems that the design is broken (or got broken because of introduction of multibyte characters). It grows glyph-table one by one. So, at some point a glyph code is simply a character code, but after several calls of create-glyph, that same glyph code becomes an index into glyph-table, and is displayed differently. Those codes are meaningless as characters. They start at 256. Meaningful Mule characters codes are much larger. If you were to define thousands of glyph codes, you might get into the range of meaningful Mule characters. Then indeed things would break. So there is a bug, in that this could happen. But it is not the case that all use of create-glyph is broken. I am not sure whether create-glyph is very useful nowadays. Maybe it is obsolete, due to Mule. Who still ses it and why does he use it? But, for instance, the return value of (make-glyph-code 256) is a simple glyph or not depending on the current length of glyph-table. Code 256 is useful only if you have defined it as an entry in the glyph table. ^ permalink raw reply [flat|nested] 84+ messages in thread
* Re: bug of display-table & make-glyph-code 2007-09-08 7:00 ` Richard Stallman @ 2007-09-10 2:43 ` Kenichi Handa 2007-09-10 3:18 ` Eli Zaretskii 1 sibling, 0 replies; 84+ messages in thread From: Kenichi Handa @ 2007-09-10 2:43 UTC (permalink / raw) To: rms; +Cc: eliz, zslevin, emacs-devel In article <E1ITuJE-00036K-BZ@fencepost.gnu.org>, Richard Stallman <rms@gnu.org> writes: > But, then, it seems that the design is broken (or got broken > because of introduction of multibyte characters). It grows > glyph-table one by one. So, at some point a glyph code is > simply a character code, but after several calls of > create-glyph, that same glyph code becomes an index into > glyph-table, and is displayed differently. > Those codes are meaningless as characters. They start at 256. > Meaningful Mule characters codes are much larger. The current problem is with emacs-unicode-2, and in it, 256 is a valid Unicode character codes for U+0100 (LATIN CAPITAL LETTER A WITH MACRON). > If you were to define thousands of glyph codes, you might get into the > range of meaningful Mule characters. Then indeed things would break. > So there is a bug, in that this could happen. But it is not the case > that all use of create-glyph is broken. > I am not sure whether create-glyph is very useful nowadays. > Maybe it is obsolete, due to Mule. Who still ses it > and why does he use it? I want to know that too. --- Kenichi Handa handa@m17n.org ^ permalink raw reply [flat|nested] 84+ messages in thread
* Re: bug of display-table & make-glyph-code 2007-09-08 7:00 ` Richard Stallman 2007-09-10 2:43 ` Kenichi Handa @ 2007-09-10 3:18 ` Eli Zaretskii 1 sibling, 0 replies; 84+ messages in thread From: Eli Zaretskii @ 2007-09-10 3:18 UTC (permalink / raw) To: rms; +Cc: emacs-devel, zslevin, handa > From: Richard Stallman <rms@gnu.org> > Date: Sat, 08 Sep 2007 03:00:48 -0400 > Cc: eliz@gnu.org, zslevin@gmail.com, emacs-devel@gnu.org > > I am not sure whether create-glyph is very useful nowadays. > Maybe it is obsolete, due to Mule. Not only due to Mule, but also because we now support faces on character terminals. ^ permalink raw reply [flat|nested] 84+ messages in thread
* Re: bug of display-table & make-glyph-code 2007-09-07 5:11 ` Kenichi Handa 2007-09-07 8:47 ` Eli Zaretskii @ 2007-09-07 19:53 ` Richard Stallman 1 sibling, 0 replies; 84+ messages in thread From: Richard Stallman @ 2007-09-07 19:53 UTC (permalink / raw) To: Kenichi Handa; +Cc: rgm, rudalics, emacs-devel, zslevin, storm I started to study the glyph related codes, and ran into the function create-glyph (disp-table.el). It is a strange function,q and I don't understand how to utilize it. Could someone please explain it? This is meant for text terminals. The idea is that you know a sequence to send to the terminal to display a certain glyph. You call create-glyph to allocate a glyph code to represent that glyph. Redisplay will display that glyph by sending the sequence. Does that clear it up? ^ permalink raw reply [flat|nested] 84+ messages in thread
* Re: bug of display-table & make-glyph-code 2007-09-05 9:15 ` Kim F. Storm 2007-09-05 17:38 ` martin rudalics 2007-09-07 5:11 ` Kenichi Handa @ 2007-09-10 1:12 ` Richard Stallman 2007-09-10 4:15 ` Kenichi Handa 2 siblings, 1 reply; 84+ messages in thread From: Richard Stallman @ 2007-09-10 1:12 UTC (permalink / raw) To: Kim F. Storm; +Cc: rgm, emacs-devel, zslevin, rudalics The number of bits left over in a glyph code for the face number is vastly reduced on the unicode-2 branch, so as soon as we merge that to the trunk, the problem will certainly be visible on trunk. The solution is to find some other way to merge a face with a char-code to make a glyph code. We have discussed this some time ago. I asked Handa if he could please work on this in unicode-2. ^ permalink raw reply [flat|nested] 84+ messages in thread
* Re: bug of display-table & make-glyph-code 2007-09-10 1:12 ` Richard Stallman @ 2007-09-10 4:15 ` Kenichi Handa 2007-09-10 5:50 ` Stefan Monnier ` (2 more replies) 0 siblings, 3 replies; 84+ messages in thread From: Kenichi Handa @ 2007-09-10 4:15 UTC (permalink / raw) To: emacs-devel In article <E1IUXpV-00077c-2d@fencepost.gnu.org>, Richard Stallman <rms@gnu.org> writes: > The number of bits left over in a glyph code for the face number > is vastly reduced on the unicode-2 branch, so as soon as we > merge that to the trunk, the problem will certainly be > visible on trunk. > The solution is to find some other way to merge a face with a > char-code to make a glyph code. We have discussed this some > time ago. > I asked Handa if he could please work on this > in unicode-2. I'll work on it. I think we anyway need some backward imcompatible change, and require rewriting of old codes that utilize glyph-table. And, if so, it seems that deleting glyph-table (and create-glyph) is the easiet solution. Shall I go ahead along that line? --- Kenichi Handa handa@m17n.org ^ permalink raw reply [flat|nested] 84+ messages in thread
* Re: bug of display-table & make-glyph-code 2007-09-10 4:15 ` Kenichi Handa @ 2007-09-10 5:50 ` Stefan Monnier 2007-09-10 6:29 ` Kenichi Handa 2007-09-10 11:51 ` Kim F. Storm 2007-09-10 19:40 ` Eli Zaretskii 2007-09-10 23:54 ` Richard Stallman 2 siblings, 2 replies; 84+ messages in thread From: Stefan Monnier @ 2007-09-10 5:50 UTC (permalink / raw) To: Kenichi Handa; +Cc: emacs-devel >> The number of bits left over in a glyph code for the face number >> is vastly reduced on the unicode-2 branch, so as soon as we >> merge that to the trunk, the problem will certainly be >> visible on trunk. >> The solution is to find some other way to merge a face with a >> char-code to make a glyph code. We have discussed this some >> time ago. >> I asked Handa if he could please work on this >> in unicode-2. > I'll work on it. > I think we anyway need some backward imcompatible change, > and require rewriting of old codes that utilize glyph-table. > And, if so, it seems that deleting glyph-table (and > create-glyph) is the easiet solution. > Shall I go ahead along that line? Grepping Emacs's source code and Googling emacswiki shows the following uses of glyph-create: - in disp-table: standard-display-g1, standard-display-graphic, standard-display-underline. The last one is probably better off using make-glyph-code. I don't know how to mimck the other two using other features. But neither do I know why anybody would want to use those. It seems that using the utf-8 encoding in current xterms makes those hacks completely useless. `standard-display-g1' seems to only be used in obsolete/iso-swed.el (and maybe in W3). `standard-display-graphic' seems not to be used anywhere. - in some Gnus threading display hack which also would be better off using make-glyph-code (http://www.emacswiki.org/cgi-bin/emacs/GnusFormatting). So I think we can just drop this feature altogether. Stefan ^ permalink raw reply [flat|nested] 84+ messages in thread
* Re: bug of display-table & make-glyph-code 2007-09-10 5:50 ` Stefan Monnier @ 2007-09-10 6:29 ` Kenichi Handa 2007-09-10 11:51 ` Kim F. Storm 1 sibling, 0 replies; 84+ messages in thread From: Kenichi Handa @ 2007-09-10 6:29 UTC (permalink / raw) To: Stefan Monnier; +Cc: emacs-devel In article <jwvabrv9ixx.fsf-monnier+emacs@gnu.org>, Stefan Monnier <monnier@iro.umontreal.ca> writes: > > I think we anyway need some backward imcompatible change, > > and require rewriting of old codes that utilize glyph-table. > > And, if so, it seems that deleting glyph-table (and > > create-glyph) is the easiet solution. > > Shall I go ahead along that line? > Grepping Emacs's source code and Googling emacswiki shows the following uses of > glyph-create: > - in disp-table: standard-display-g1, standard-display-graphic, > standard-display-underline. The last one is probably better off using > make-glyph-code. I don't know how to mimck the other two using > other features. But neither do I know why anybody would want to > use those. It seems that using the utf-8 encoding in current xterms > makes those hacks completely useless. > `standard-display-g1' seems to only be used in obsolete/iso-swed.el > (and maybe in W3). `standard-display-graphic' seems not to be > used anywhere. > - in some Gnus threading display hack which also would be better off using > make-glyph-code (http://www.emacswiki.org/cgi-bin/emacs/GnusFormatting). > So I think we can just drop this feature altogether. Thank you for investigating that. Are there any objections to dropping them? --- Kenichi Handa handa@m17n.org ^ permalink raw reply [flat|nested] 84+ messages in thread
* Re: bug of display-table & make-glyph-code 2007-09-10 5:50 ` Stefan Monnier 2007-09-10 6:29 ` Kenichi Handa @ 2007-09-10 11:51 ` Kim F. Storm 2007-09-10 14:20 ` Leo ` (2 more replies) 1 sibling, 3 replies; 84+ messages in thread From: Kim F. Storm @ 2007-09-10 11:51 UTC (permalink / raw) To: Stefan Monnier; +Cc: emacs-devel, Kenichi Handa Stefan Monnier <monnier@iro.umontreal.ca> writes: > So I think we can just drop this feature altogether. Isn't it used if you want to put a face on e.g. the vertical window separator on a text terminal (or if you have no scroll-bars). -- Kim F. Storm <storm@cua.dk> http://www.cua.dk ^ permalink raw reply [flat|nested] 84+ messages in thread
* Re: bug of display-table & make-glyph-code 2007-09-10 11:51 ` Kim F. Storm @ 2007-09-10 14:20 ` Leo 2007-09-11 12:49 ` Stefan Monnier 2007-09-11 20:30 ` Richard Stallman 2 siblings, 0 replies; 84+ messages in thread From: Leo @ 2007-09-10 14:20 UTC (permalink / raw) To: emacs-devel On 2007-09-10 12:51 +0100, Kim F. Storm wrote: > Isn't it used if you want to put a face on e.g. the vertical window > separator on a text terminal (or if you have no scroll-bars). While we are on this topic, how to configure the vertical separator for emacs running in text terminal? For example, I want to change "|" to ":". Thanks, -- .: Leo :. [ sdl.web AT gmail.com ] .: [ GPG Key: 9283AA3F ] :. => "(require 'cl) considered harmful" considered harmful => http://dto.freeshell.org/blog/blog-2007-09-07-2323.html ^ permalink raw reply [flat|nested] 84+ messages in thread
* Re: bug of display-table & make-glyph-code 2007-09-10 11:51 ` Kim F. Storm 2007-09-10 14:20 ` Leo @ 2007-09-11 12:49 ` Stefan Monnier 2007-09-11 20:30 ` Richard Stallman 2 siblings, 0 replies; 84+ messages in thread From: Stefan Monnier @ 2007-09-11 12:49 UTC (permalink / raw) To: Kim F. Storm; +Cc: Kenichi Handa, emacs-devel >> So I think we can just drop this feature altogether. > Isn't it used if you want to put a face on e.g. the vertical window > separator on a text terminal (or if you have no scroll-bars). No: the feature I'm talking about is linked to `create-glyph', whereas the one you're talking about is linked to `make-glyph-code'. Stefan ^ permalink raw reply [flat|nested] 84+ messages in thread
* Re: bug of display-table & make-glyph-code 2007-09-10 11:51 ` Kim F. Storm 2007-09-10 14:20 ` Leo 2007-09-11 12:49 ` Stefan Monnier @ 2007-09-11 20:30 ` Richard Stallman 2007-09-11 21:50 ` Kim F. Storm 2 siblings, 1 reply; 84+ messages in thread From: Richard Stallman @ 2007-09-11 20:30 UTC (permalink / raw) To: Kim F. Storm; +Cc: handa, monnier, emacs-devel Isn't it used if you want to put a face on e.g. the vertical window separator on a text terminal (or if you have no scroll-bars). I don't think create-glyph was ever used for that. You could use make-glyph-code, but that's different. ^ permalink raw reply [flat|nested] 84+ messages in thread
* Re: bug of display-table & make-glyph-code 2007-09-11 20:30 ` Richard Stallman @ 2007-09-11 21:50 ` Kim F. Storm 0 siblings, 0 replies; 84+ messages in thread From: Kim F. Storm @ 2007-09-11 21:50 UTC (permalink / raw) To: rms; +Cc: emacs-devel, monnier, handa Richard Stallman <rms@gnu.org> writes: > Isn't it used if you want to put a face on e.g. the vertical window > separator on a text terminal (or if you have no scroll-bars). > > I don't think create-glyph was ever used for that. > You could use make-glyph-code, but that's different. You are right - I confused the two issues (make-glyph-code also need to be updated for unicode.) -- Kim F. Storm <storm@cua.dk> http://www.cua.dk ^ permalink raw reply [flat|nested] 84+ messages in thread
* Re: bug of display-table & make-glyph-code 2007-09-10 4:15 ` Kenichi Handa 2007-09-10 5:50 ` Stefan Monnier @ 2007-09-10 19:40 ` Eli Zaretskii 2007-09-11 0:28 ` Kenichi Handa 2007-09-11 20:31 ` Richard Stallman 2007-09-10 23:54 ` Richard Stallman 2 siblings, 2 replies; 84+ messages in thread From: Eli Zaretskii @ 2007-09-10 19:40 UTC (permalink / raw) To: Kenichi Handa; +Cc: emacs-devel > From: Kenichi Handa <handa@m17n.org> > Date: Mon, 10 Sep 2007 13:15:19 +0900 > > And, if so, it seems that deleting glyph-table (and > create-glyph) is the easiet solution. > > Shall I go ahead along that line? If after deleting them one can still set up the display table to send a string when a certain character needs to be displayed, I'm okay with that change. (Just don't forget to mention it in NEWS.) ^ permalink raw reply [flat|nested] 84+ messages in thread
* Re: bug of display-table & make-glyph-code 2007-09-10 19:40 ` Eli Zaretskii @ 2007-09-11 0:28 ` Kenichi Handa 2007-09-12 8:45 ` Richard Stallman 2007-09-11 20:31 ` Richard Stallman 1 sibling, 1 reply; 84+ messages in thread From: Kenichi Handa @ 2007-09-11 0:28 UTC (permalink / raw) To: Eli Zaretskii; +Cc: emacs-devel In article <u4pi2qpgk.fsf@gnu.org>, Eli Zaretskii <eliz@gnu.org> writes: > > From: Kenichi Handa <handa@m17n.org> > > Date: Mon, 10 Sep 2007 13:15:19 +0900 > > > > And, if so, it seems that deleting glyph-table (and > > create-glyph) is the easiet solution. > > > > Shall I go ahead along that line? > If after deleting them one can still set up the display table to send > a string when a certain character needs to be displayed, I'm okay with > that change. (Just don't forget to mention it in NEWS.) I think we can allow one to store a unibyte-string directly in the display table for that purpose. --- Kenichi Handa handa@m17n.org ^ permalink raw reply [flat|nested] 84+ messages in thread
* Re: bug of display-table & make-glyph-code 2007-09-11 0:28 ` Kenichi Handa @ 2007-09-12 8:45 ` Richard Stallman 0 siblings, 0 replies; 84+ messages in thread From: Richard Stallman @ 2007-09-12 8:45 UTC (permalink / raw) To: Kenichi Handa; +Cc: eliz, emacs-devel > If after deleting them one can still set up the display table to send > a string when a certain character needs to be displayed, I'm okay with > that change. (Just don't forget to mention it in NEWS.) I think we can allow one to store a unibyte-string directly in the display table for that purpose. It looks like this is possible; it does not conflict with the other uses of the display table. However, why does one want to do this nowadays? ^ permalink raw reply [flat|nested] 84+ messages in thread
* Re: bug of display-table & make-glyph-code 2007-09-10 19:40 ` Eli Zaretskii 2007-09-11 0:28 ` Kenichi Handa @ 2007-09-11 20:31 ` Richard Stallman 2007-09-12 6:55 ` Eli Zaretskii 1 sibling, 1 reply; 84+ messages in thread From: Richard Stallman @ 2007-09-11 20:31 UTC (permalink / raw) To: Eli Zaretskii; +Cc: emacs-devel, handa If after deleting them one can still set up the display table to send a string when a certain character needs to be displayed, I'm okay with that change. create-glyph is the feature used for that. We're thinking of deleting create-glyph because the feature seems to be obsolete and not really useful or used. Do you use that feature? If so, what do you use it for? As a separate feature, you can use display-table to display a character code as a series of glyphs. But each of those glyphs is supposed to occupy one space on the screen. But if you want to send a series of characters to display one glyph, the way you do that is with create-glyph. ^ permalink raw reply [flat|nested] 84+ messages in thread
* Re: bug of display-table & make-glyph-code 2007-09-11 20:31 ` Richard Stallman @ 2007-09-12 6:55 ` Eli Zaretskii 2007-09-13 16:30 ` Richard Stallman 0 siblings, 1 reply; 84+ messages in thread From: Eli Zaretskii @ 2007-09-12 6:55 UTC (permalink / raw) To: rms; +Cc: emacs-devel, handa > From: Richard Stallman <rms@gnu.org> > CC: handa@m17n.org, emacs-devel@gnu.org > Date: Tue, 11 Sep 2007 16:31:12 -0400 > > If after deleting them one can still set up the display table to send > a string when a certain character needs to be displayed, I'm okay with > that change. > > create-glyph is the feature used for that. > Do you use that feature? If so, what do you use it for? term/internal.el uses multi-character glyphs to display characters that are not supported by the available character set. But it doesn't use create-glyph, it sets up display-table so that some characters are displayed as strings of other characters. > As a separate feature, you can use display-table to display a > character code as a series of glyphs. But each of those glyphs > is supposed to occupy one space on the screen. It works as expected even if they occupy more than one screen space. So I think create-glyph is not important for internal.el. ^ permalink raw reply [flat|nested] 84+ messages in thread
* Re: bug of display-table & make-glyph-code 2007-09-12 6:55 ` Eli Zaretskii @ 2007-09-13 16:30 ` Richard Stallman 0 siblings, 0 replies; 84+ messages in thread From: Richard Stallman @ 2007-09-13 16:30 UTC (permalink / raw) To: Eli Zaretskii; +Cc: emacs-devel, handa term/internal.el uses multi-character glyphs to display characters that are not supported by the available character set. But it doesn't use create-glyph, it sets up display-table so that some characters are displayed as strings of other characters. That is a different feature. It has nothing to do with create-glyph. > As a separate feature, you can use display-table to display a > character code as a series of glyphs. But each of those glyphs > is supposed to occupy one space on the screen. It works as expected even if they occupy more than one screen space. I think that is a misunderstanding. The sequence of glyphs will naturally use up more than one screen space, but on a tty each glyph is supposed to use just one, right? But that detail is not crucial. So I think create-glyph is not important for internal.el. Correct. ^ permalink raw reply [flat|nested] 84+ messages in thread
* Re: bug of display-table & make-glyph-code 2007-09-10 4:15 ` Kenichi Handa 2007-09-10 5:50 ` Stefan Monnier 2007-09-10 19:40 ` Eli Zaretskii @ 2007-09-10 23:54 ` Richard Stallman 2007-09-11 0:09 ` Drew Adams 2 siblings, 1 reply; 84+ messages in thread From: Richard Stallman @ 2007-09-10 23:54 UTC (permalink / raw) To: Kenichi Handa; +Cc: emacs-devel I think we anyway need some backward imcompatible change, and require rewriting of old codes that utilize glyph-table. And, if so, it seems that deleting glyph-table (and create-glyph) is the easiet solution. It is surely the easiest. The question is whether the glyph table feature is still useful. Based on Stefan's info, I think we can delete it. Thanks, Stefan, for investigating. ^ permalink raw reply [flat|nested] 84+ messages in thread
* RE: bug of display-table & make-glyph-code 2007-09-10 23:54 ` Richard Stallman @ 2007-09-11 0:09 ` Drew Adams 2007-09-11 0:33 ` Kenichi Handa 0 siblings, 1 reply; 84+ messages in thread From: Drew Adams @ 2007-09-11 0:09 UTC (permalink / raw) To: emacs-devel > I think we anyway need some backward imcompatible change, > and require rewriting of old codes that utilize glyph-table. > And, if so, it seems that deleting glyph-table (and > create-glyph) is the easiet solution. > > It is surely the easiest. The question is whether the glyph table > feature is still useful. > > Based on Stefan's info, I think we can delete it. Thanks, Stefan, for > investigating. I haven't followed all of this. I grepped my code for glyph-table and create-glyph, and I don't use them. However, I do use what is essentially Kim's `make-glyph-code' (which I thought was going to be added to Emacs for version 23), so I hope glyphs are not being removed altogether. (I use `make-glyph-code' to provide replacement text for "^L" for inserted form-feed chars.) ^ permalink raw reply [flat|nested] 84+ messages in thread
* Re: bug of display-table & make-glyph-code 2007-09-11 0:09 ` Drew Adams @ 2007-09-11 0:33 ` Kenichi Handa 2007-09-11 1:24 ` Drew Adams 0 siblings, 1 reply; 84+ messages in thread From: Kenichi Handa @ 2007-09-11 0:33 UTC (permalink / raw) To: Drew Adams; +Cc: emacs-devel In article <BNELLINCGFJLDJIKDGACEEHOCCAA.drew.adams@oracle.com>, "Drew Adams" <drew.adams@oracle.com> writes: > However, I do use what is essentially Kim's `make-glyph-code' (which I > thought was going to be added to Emacs for version 23), so I hope glyphs are > not being removed altogether. (I use `make-glyph-code' to provide > replacement text for "^L" for inserted form-feed chars.) I don't intend to delete the concept of "glyph". I'm just going to change the Lispy representation of "glyph" from integer to something like (CHAR . FACE-ID). But if we do that, we can't keep backward compatibility about glyph-table. So I suggest to delete it if not that useful now. --- Kenichi Handa handa@m17n.org ^ permalink raw reply [flat|nested] 84+ messages in thread
* RE: bug of display-table & make-glyph-code 2007-09-11 0:33 ` Kenichi Handa @ 2007-09-11 1:24 ` Drew Adams 0 siblings, 0 replies; 84+ messages in thread From: Drew Adams @ 2007-09-11 1:24 UTC (permalink / raw) To: Kenichi Handa; +Cc: emacs-devel > > However, I do use what is essentially Kim's `make-glyph-code' (which I > > thought was going to be added to Emacs for version 23), so I > hope glyphs are > > not being removed altogether. (I use `make-glyph-code' to provide > > replacement text for "^L" for inserted form-feed chars.) > > I don't intend to delete the concept of "glyph". I'm just > going to change the Lispy representation of "glyph" from > integer to something like (CHAR . FACE-ID). But if we do > that, we can't keep backward compatibility about > glyph-table. So I suggest to delete it if not that useful > now. Hmm. It sounds like that change would necessitate a change to Kim's function. Since I use his definition without really understanding it ;-), I would appreciate a version that will work after your changes. And I'd like to know what I can test in my code to know which version to use (for use with different Emacs versions). Here is the definition I am using now (Emacs 22.1): (defun make-glyph-code (char &optional face) "Return a glyph code representing char CHAR with face FACE." (if face (logior char (lsh (face-id face) (if (<= emacs-major-version 22) 19 22))) char)) Thanks. ^ permalink raw reply [flat|nested] 84+ messages in thread
* Re: bug of display-table & make-glyph-code 2007-08-27 9:32 bug of display-table & make-glyph-code levin 2007-09-04 16:45 ` Richard Stallman @ 2007-09-06 5:00 ` Richard Stallman 1 sibling, 0 replies; 84+ messages in thread From: Richard Stallman @ 2007-09-06 5:00 UTC (permalink / raw) To: handa; +Cc: emacs-devel He says this fails in the latest unicode-2 sources. Would you please DTRT? Would someone please DTRT and ack? From: levin <zslevin@gmail.com> To: emacs-devel@gnu.org Date: Mon, 27 Aug 2007 17:32:22 +0800 MIME-Version: 1.0 Content-Disposition: inline Content-Type: text/plain; charset="gb18030" Subject: bug of display-table & make-glyph-code To reinvent this bug, please follow: 1. Please save the text below as glyph.org, visit it, and `M-x org-mode' to turn on org mode. 2. Keep the first headline collapsed by pressing TAB (if neccessary) on it. 3. you can expand the second/third headline by press TAB on it. 4. eval the lisp code in the second headline, this CANNOT change "..." display. 5. eval the lisp code in the third headline, this CAN change "..." display. I find out that if make-glyph-code returns a negative int, then the display table does not take effect on "..." display. --------8<-------------8<-------- * Please keep me collapsed by pressing TAB (if neccessary) some info to hide * please eval me, this CANNOT change "..." display (describe-face 'org-warning) (face-id 'org-warning) # mine is 77 here (unless buffer-display-table (setq buffer-display-table (make-display-table))) (set-display-table-slot buffer-display-table 'selective-display (vconcat (mapcar (lambda (c) (make-glyph-code c 'org-warning)) "..."))) * please eval me, this can change ellipse display (describe-face 'tooltip) (face-id 'tooltip) # mine is 54 here (unless buffer-display-table (setq buffer-display-table (make-display-table))) (set-display-table-slot buffer-display-table 'selective-display (vconcat (mapcar (lambda (c) (make-glyph-code c 'tooltip)) "..."))) --------8<-------------8<-------- My environment: In GNU Emacs 23.0.0.2 (i686-pc-linux-gnu) of 2007-08-27 on MagicLinux configured using `configure '--with-x-toolkit=no'' Important settings: value of $LC_ALL: nil value of $LC_COLLATE: nil value of $LC_CTYPE: nil value of $LC_MESSAGES: nil value of $LC_MONETARY: nil value of $LC_NUMERIC: nil value of $LC_TIME: nil value of $LANG: zh_CN.GB18030 value of $XMODIFIERS: nil locale-coding-system: chinese-gb18030-unix default-enable-multibyte-characters: t Major mode: Org Minor modes in effect: encoded-kbd-mode: t menu-bar-mode: t file-name-shadow-mode: t global-font-lock-mode: t font-lock-mode: t global-auto-composition-mode: t auto-composition-mode: t auto-compression-mode: t line-number-mode: t -- Levin _______________________________________________ Emacs-devel mailing list Emacs-devel@gnu.org http://lists.gnu.org/mailman/listinfo/emacs-devel ^ permalink raw reply [flat|nested] 84+ messages in thread
end of thread, other threads:[~2007-10-14 21:21 UTC | newest] Thread overview: 84+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2007-08-27 9:32 bug of display-table & make-glyph-code levin 2007-09-04 16:45 ` Richard Stallman 2007-09-04 18:09 ` martin rudalics 2007-09-04 19:08 ` Glenn Morris 2007-09-05 5:58 ` levin 2007-09-05 7:22 ` Glenn Morris 2007-09-05 8:22 ` Du Jingwu 2007-09-05 20:02 ` Richard Stallman 2007-09-05 6:16 ` Richard Stallman 2007-09-05 7:21 ` Glenn Morris 2007-09-05 8:08 ` martin rudalics 2007-09-05 8:37 ` Glenn Morris 2007-09-05 9:58 ` martin rudalics 2007-09-05 16:44 ` Glenn Morris 2007-09-05 17:34 ` martin rudalics 2007-09-06 5:29 ` Glenn Morris 2007-09-06 8:49 ` martin rudalics 2007-09-07 1:44 ` Glenn Morris 2007-09-07 8:02 ` martin rudalics 2007-09-07 17:48 ` Glenn Morris 2007-09-08 8:52 ` martin rudalics 2007-09-08 7:00 ` Richard Stallman 2007-09-12 7:37 ` Glenn Morris 2007-09-12 8:28 ` martin rudalics 2007-10-11 23:57 ` dired-warning (was: bug of display-table & make-glyph-code) Juri Linkov 2007-10-12 7:06 ` dired-warning martin rudalics 2007-10-14 21:21 ` dired-warning Juri Linkov 2007-09-05 17:54 ` bug of display-table & make-glyph-code Eli Zaretskii 2007-09-05 8:51 ` levin 2007-09-06 4:59 ` Richard Stallman 2007-09-05 10:08 ` frame resizing under KDE (was Re: bug of display-table & make-glyph-code) Stephen Berman 2007-09-05 17:42 ` martin rudalics 2007-09-06 6:17 ` frame resizing under KDE (was Re: bug of display-table & make-glyph-code ) Levin 2007-09-06 12:01 ` frame resizing under KDE Stephen Berman 2007-09-06 1:15 ` bug of display-table & make-glyph-code Chong Yidong 2007-09-06 9:09 ` martin rudalics 2007-09-06 14:08 ` Stefan Monnier 2007-09-06 14:49 ` martin rudalics 2007-09-06 20:34 ` Stefan Monnier 2007-09-06 21:08 ` martin rudalics 2007-09-07 17:45 ` Stefan Monnier 2007-09-07 18:30 ` martin rudalics 2007-09-07 20:25 ` Stefan Monnier 2007-09-08 9:22 ` display-buffer-change (was Re: bug of display-table & make-glyph-code) martin rudalics 2007-09-09 19:33 ` display-buffer-change Stefan Monnier 2007-09-09 21:42 ` display-buffer-change martin rudalics 2007-09-10 6:57 ` display-buffer-change David Kågedal 2007-09-10 8:31 ` display-buffer-change martin rudalics 2007-09-10 6:48 ` display-buffer-change David Kågedal 2007-09-10 8:00 ` display-buffer-change martin rudalics 2007-09-07 6:32 ` bug of display-table & make-glyph-code Richard Stallman 2007-09-06 5:00 ` Richard Stallman 2007-09-06 5:27 ` Glenn Morris 2007-09-05 9:15 ` Kim F. Storm 2007-09-05 17:38 ` martin rudalics 2007-09-05 20:43 ` Kim F. Storm 2007-09-07 5:11 ` Kenichi Handa 2007-09-07 8:47 ` Eli Zaretskii 2007-09-07 12:25 ` Kenichi Handa 2007-09-07 18:37 ` Eli Zaretskii 2007-09-08 7:00 ` Richard Stallman 2007-09-10 2:43 ` Kenichi Handa 2007-09-10 3:18 ` Eli Zaretskii 2007-09-07 19:53 ` Richard Stallman 2007-09-10 1:12 ` Richard Stallman 2007-09-10 4:15 ` Kenichi Handa 2007-09-10 5:50 ` Stefan Monnier 2007-09-10 6:29 ` Kenichi Handa 2007-09-10 11:51 ` Kim F. Storm 2007-09-10 14:20 ` Leo 2007-09-11 12:49 ` Stefan Monnier 2007-09-11 20:30 ` Richard Stallman 2007-09-11 21:50 ` Kim F. Storm 2007-09-10 19:40 ` Eli Zaretskii 2007-09-11 0:28 ` Kenichi Handa 2007-09-12 8:45 ` Richard Stallman 2007-09-11 20:31 ` Richard Stallman 2007-09-12 6:55 ` Eli Zaretskii 2007-09-13 16:30 ` Richard Stallman 2007-09-10 23:54 ` Richard Stallman 2007-09-11 0:09 ` Drew Adams 2007-09-11 0:33 ` Kenichi Handa 2007-09-11 1:24 ` Drew Adams 2007-09-06 5:00 ` Richard Stallman
Code repositories for project(s) associated with this public inbox https://git.savannah.gnu.org/cgit/emacs.git This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).