* how is emacs lisp syntax colored in emacs-lisp-mode? @ 2009-03-10 12:45 Xah Lee 2009-03-10 13:43 ` Tassilo Horn ` (2 more replies) 0 siblings, 3 replies; 10+ messages in thread From: Xah Lee @ 2009-03-10 12:45 UTC (permalink / raw) To: help-gnu-emacs when coding elisp, lately i find myself using camelCase style for my own function and variable names. Because i find that easier to distinguish from built-in function/var/keywords. on thinking about this, i thought it would not be necessary if emacs- lisp-mode would just color all built in functions and variables. However, the way it is syntax colored seems strange, unlike in most major modes for langs where each class of keywords gets one color. for example, these keywords would be colored purple by default: defun, lambda, while, if, progn, save-restriction, ... while the following built-in keywords are uncolored (black): narrow-to-region, mapc, goto-char, point-min, search-forward, car, nil, replace-match ... etc. is there a principle of how the keywords are colored? thanks Xah ∑ http://xahlee.org/ ☄ ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: how is emacs lisp syntax colored in emacs-lisp-mode? 2009-03-10 12:45 how is emacs lisp syntax colored in emacs-lisp-mode? Xah Lee @ 2009-03-10 13:43 ` Tassilo Horn 2009-03-10 20:59 ` Xah Lee 2009-03-10 20:06 ` Nikolaj Schumacher [not found] ` <mailman.2878.1237105097.31690.help-gnu-emacs@gnu.org> 2 siblings, 1 reply; 10+ messages in thread From: Tassilo Horn @ 2009-03-10 13:43 UTC (permalink / raw) To: help-gnu-emacs Xah Lee <xahlee@gmail.com> writes: Hi Xah, > on thinking about this, i thought it would not be necessary if emacs- > lisp-mode would just color all built in functions and variables. > However, the way it is syntax colored seems strange, unlike in most > major modes for langs where each class of keywords gets one color. > > for example, these keywords would be colored purple by default: > > defun, lambda, while, if, progn, save-restriction, ... That's the case, isn't it? > while the following built-in keywords are uncolored (black): > narrow-to-region, mapc, goto-char, point-min, search-forward, car, > nil, replace-match ... etc. Function names like the ones you listed aren't colored in function calls unless they're one of the special forms you mentioned before. > is there a principle of how the keywords are colored? Yes, see the elisp manual: ,----[ (info "(elisp)Levels of Font Lock") ] | Many major modes offer three different levels of fontification. You | can define multiple levels by using a list of symbols for KEYWORDS in | `font-lock-defaults'. Each symbol specifies one level of | fontification; it is up to the user to choose one of these levels, | normally by setting `font-lock-maximum-decoration' (*note Font Lock: | (emacs)Font Lock.). The chosen level's symbol value is used to | initialize `font-lock-keywords'. | | Here are the conventions for how to define the levels of | fontification: | | * Level 1: highlight function declarations, file directives (such as | include or import directives), strings and comments. The idea is | speed, so only the most important and top-level components are | fontified. | | * Level 2: in addition to level 1, highlight all language keywords, | including type names that act like keywords, as well as named | constant values. The idea is that all keywords (either syntactic | or semantic) should be fontified appropriately. | | * Level 3: in addition to level 2, highlight the symbols being | defined in function and variable declarations, and all builtin | function names, wherever they appear. `---- Bye, Tassilo ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: how is emacs lisp syntax colored in emacs-lisp-mode? 2009-03-10 13:43 ` Tassilo Horn @ 2009-03-10 20:59 ` Xah Lee 2009-03-10 22:01 ` W Dan Meyer 0 siblings, 1 reply; 10+ messages in thread From: Xah Lee @ 2009-03-10 20:59 UTC (permalink / raw) To: help-gnu-emacs Xah Lee <xah...@gmail.com> wrote: > on thinking about this, i thought it would not be necessary if emacs- > lisp-mode would just color all built in functions and variables. > However, the way it is syntax colored seems strange, unlike in most > major modes for langs where each class of keywords gets one color. > for example, these keywords would be colored purple by default: > defun, lambda, while, if, progn, save-restriction, ... > while the following built-in keywords are uncolored (black): > narrow-to-region, mapc, goto-char, point-min, search-forward, car, > nil, replace-match ... etc. On Mar 10, 6:43 am, Tassilo Horn <tass...@member.fsf.org> wrote: > Function names like the ones you listed aren't colored in function calls > unless they're one of the special forms you mentioned before. I see. Thanks. > > is there a principle of how the keywords are colored? > > Yes, see the elisp manual: > > ,----[ (info "(elisp)Levels of Font Lock") ] > | Many major modes offer three different levels of fontification... > ... does emacs-lisp-mode support more than level 1? i have my emacs set to level 2. I tried customize-group on emacs-lisp- mode but that doesn't seem available. I tried to set font-lock-maximum- decoration to 3 but that doesn't seems to have effect. Xah ∑ http://xahlee.org/ ☄ ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: how is emacs lisp syntax colored in emacs-lisp-mode? 2009-03-10 20:59 ` Xah Lee @ 2009-03-10 22:01 ` W Dan Meyer 0 siblings, 0 replies; 10+ messages in thread From: W Dan Meyer @ 2009-03-10 22:01 UTC (permalink / raw) To: help-gnu-emacs Xah Lee <xahlee@gmail.com> writes: > Xah Lee <xah...@gmail.com> wrote: >> on thinking about this, i thought it would not be necessary if emacs- >> lisp-mode would just color all built in functions and variables. >> However, the way it is syntax colored seems strange, unlike in most >> major modes for langs where each class of keywords gets one color. > >> for example, these keywords would be colored purple by default: > >> defun, lambda, while, if, progn, save-restriction, ... >> while the following built-in keywords are uncolored (black): >> narrow-to-region, mapc, goto-char, point-min, search-forward, car, >> nil, replace-match ... etc. > > On Mar 10, 6:43 am, Tassilo Horn <tass...@member.fsf.org> wrote: >> Function names like the ones you listed aren't colored in function calls >> unless they're one of the special forms you mentioned before. > > I see. Thanks. > >> > is there a principle of how the keywords are colored? >> >> Yes, see the elisp manual: >> >> ,----[ (info "(elisp)Levels of Font Lock") ] >> | Many major modes offer three different levels of fontification... >> ... > > does emacs-lisp-mode support more than level 1? > > i have my emacs set to level 2. I tried customize-group on emacs-lisp- > mode but that doesn't seem available. I tried to set font-lock-maximum- > decoration to 3 but that doesn't seems to have effect. Yes, because font-lock-maximum-decoration is usually set (as for my CVS Emacs) to t, which indicate the highest possible level. W Dan > > Xah > ∑ http://xahlee.org/ > > ☄ ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: how is emacs lisp syntax colored in emacs-lisp-mode? 2009-03-10 12:45 how is emacs lisp syntax colored in emacs-lisp-mode? Xah Lee 2009-03-10 13:43 ` Tassilo Horn @ 2009-03-10 20:06 ` Nikolaj Schumacher 2009-03-11 17:51 ` Johan Bockgård [not found] ` <mailman.2878.1237105097.31690.help-gnu-emacs@gnu.org> 2 siblings, 1 reply; 10+ messages in thread From: Nikolaj Schumacher @ 2009-03-10 20:06 UTC (permalink / raw) To: Xah Lee; +Cc: help-gnu-emacs Xah Lee <xahlee@gmail.com> wrote: > for example, these keywords would be colored purple by default: > > defun, lambda, while, if, progn, save-restriction, ... > > while the following built-in keywords are uncolored (black): > narrow-to-region, mapc, goto-char, point-min, search-forward, car, > nil, replace-match ... etc. Those aren't emacs lisp "keywords". Those are ordinary functions. They are called "built-in", because they happen to be written in C instead of Lisp. But that is hardly relevant, and can even change over time. defun, lambda and while are not functions, but special forms. They are part of the language. save-*, with-* and others are macros based on special forms. They aren't keywords either, but probably colored (and indented) differently for convenience. If you want to highlight symbols that are "shipped" with Emacs (to whatever extend) you'll need to add a matcher function to the font lock keywords that checks whether, and in which files, symbols have been defined > is there a principle of how the keywords are colored? regards, Nikolaj Schumacher ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: how is emacs lisp syntax colored in emacs-lisp-mode? 2009-03-10 20:06 ` Nikolaj Schumacher @ 2009-03-11 17:51 ` Johan Bockgård 0 siblings, 0 replies; 10+ messages in thread From: Johan Bockgård @ 2009-03-11 17:51 UTC (permalink / raw) To: help-gnu-emacs Nikolaj Schumacher <me@nschum.de> writes: > defun, lambda and while are not functions, but special forms. lambda isn't. ^ permalink raw reply [flat|nested] 10+ messages in thread
[parent not found: <mailman.2878.1237105097.31690.help-gnu-emacs@gnu.org>]
* Re: how is emacs lisp syntax colored in emacs-lisp-mode? [not found] ` <mailman.2878.1237105097.31690.help-gnu-emacs@gnu.org> @ 2009-03-16 23:54 ` Xah Lee 2009-03-17 2:41 ` Xah Lee ` (2 more replies) 0 siblings, 3 replies; 10+ messages in thread From: Xah Lee @ 2009-03-16 23:54 UTC (permalink / raw) To: help-gnu-emacs On Mar 10, 1:06 pm, Nikolaj Schumacher <m...@nschum.de> wrote: > If you want to highlight symbols that are "shipped" with Emacs (to > whatever extend) you'll need to add a matcher function to the font lock > keywords that checks whether, and in which files, symbols have been defined doesn't anyone see this as a defect? namely, the fact that only parts of keywords are syntax colored in emacs-lisp-mode. This behavior is contrary to all other major modes. i haven't coded Common or Scheme lisp. Does major modes for those only color only a subset of the lang's keywords? (i.e. if so, maybe this is a lisp lang tradition) Xah ∑ http://xahlee.org/ ☄ ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: how is emacs lisp syntax colored in emacs-lisp-mode? 2009-03-16 23:54 ` Xah Lee @ 2009-03-17 2:41 ` Xah Lee 2009-03-17 8:41 ` Nikolaj Schumacher [not found] ` <mailman.3385.1237279326.31690.help-gnu-emacs@gnu.org> 2 siblings, 0 replies; 10+ messages in thread From: Xah Lee @ 2009-03-17 2:41 UTC (permalink / raw) To: help-gnu-emacs I've cleaned up and placed this writing here: • Emacs Lisp Mode Syntax Coloring Problem http://xahlee.org/emacs/modernization_elisp_syntax_color.html also filed a bug report, #2630. http://groups.google.com/group/gnu.emacs.bug/browse_frm/thread/76ae27dffbd356a6 Xah ∑ http://xahlee.org/ ☄ ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: how is emacs lisp syntax colored in emacs-lisp-mode? 2009-03-16 23:54 ` Xah Lee 2009-03-17 2:41 ` Xah Lee @ 2009-03-17 8:41 ` Nikolaj Schumacher [not found] ` <mailman.3385.1237279326.31690.help-gnu-emacs@gnu.org> 2 siblings, 0 replies; 10+ messages in thread From: Nikolaj Schumacher @ 2009-03-17 8:41 UTC (permalink / raw) To: Xah Lee; +Cc: help-gnu-emacs Xah Lee <xahlee@gmail.com> wrote: > On Mar 10, 1:06 pm, Nikolaj Schumacher <m...@nschum.de> wrote: > >> If you want to highlight symbols that are "shipped" with Emacs (to >> whatever extend) you'll need to add a matcher function to the font lock >> keywords that checks whether, and in which files, symbols have been defined > > doesn't anyone see this as a defect? namely, the fact that only parts > of keywords are syntax colored in emacs-lisp-mode. This behavior is > contrary to all other major modes. What do you mean? If I write printf in C-mode, it isn't colored, either. printf isn't a keyword, it's a library function, just as "message" is in elisp. Why is it interesting to highlight functions that shipped with Emacs, say erc-.*? You use the word "keyword" as in font-lock-keywords, but please not that the name has additional meanings. In C, reserved words are named keywords, in Emacs Lisp they are things like :foo and :bar. To avoid confusion, maybe you should call them symbols. regards, Nikolaj Schumacher ^ permalink raw reply [flat|nested] 10+ messages in thread
[parent not found: <mailman.3385.1237279326.31690.help-gnu-emacs@gnu.org>]
* Re: how is emacs lisp syntax colored in emacs-lisp-mode? [not found] ` <mailman.3385.1237279326.31690.help-gnu-emacs@gnu.org> @ 2009-03-17 9:53 ` Xah Lee 0 siblings, 0 replies; 10+ messages in thread From: Xah Lee @ 2009-03-17 9:53 UTC (permalink / raw) To: help-gnu-emacs On Mar 17, 1:41 am, Nikolaj Schumacher <m...@nschum.de> wrote: > Xah Lee <xah...@gmail.com> wrote: > > On Mar 10, 1:06 pm, Nikolaj Schumacher <m...@nschum.de> wrote: > > >> If you want to highlight symbols that are "shipped" with Emacs (to > >> whatever extend) you'll need to add a matcher function to the font lock > >> keywords that checks whether, and in which files, symbols have been defined > > > doesn't anyone see this as a defect? namely, the fact that only parts > > of keywords are syntax colored in emacs-lisp-mode. This behavior is > > contrary to all other major modes. > > What do you mean? > If I write printf in C-mode, it isn't colored, either. > > printf isn't a keyword, it's a library function, just as "message" > is in elisp. Why is it interesting to highlight functions that shipped > with Emacs, say erc-.*? > > You use the word "keyword" as in font-lock-keywords, but please not that > the name has additional meanings. In C, reserved words are named > keywords, in Emacs Lisp they are things like :foo and :bar. To avoid > confusion, maybe you should call them symbols. I think there are 2 basic issues that indicates its' a problem. A: it seems to be it is not clear, or consist, the way emacs color some of the lisp symbols but not others. B: emacs-lisp-mode does not support font-lock-maximum-decoration for progressive levels of font coloring. On this elisp manual page: • What Is a Function - GNU Emacs Lisp Reference Manual http://xahlee.org/elisp/What-Is-a-Function.html it lists: function, primitive, lambda expression, special form, macro, command, and others. the way emacs-lisp-mode color'd symbols, doesn't seem to me to be a particular class of the above. it appears to me, the way it chooses symbol to color, is not based on some strict technicality, but rather chosen for functions that are likely to open a significant block of code. e.g. let, lambda, if, when, while, progn, cond, condition-case, save-excursion, with- current-buffer. Note that it also colors with-selected-window, with- output-to-temp-buffer, with-selected-window, unless. Note that it doesn't color for example: eq, or, setq, cons. Xah ∑ http://xahlee.org/ ☄ ^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2009-03-17 9:53 UTC | newest] Thread overview: 10+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2009-03-10 12:45 how is emacs lisp syntax colored in emacs-lisp-mode? Xah Lee 2009-03-10 13:43 ` Tassilo Horn 2009-03-10 20:59 ` Xah Lee 2009-03-10 22:01 ` W Dan Meyer 2009-03-10 20:06 ` Nikolaj Schumacher 2009-03-11 17:51 ` Johan Bockgård [not found] ` <mailman.2878.1237105097.31690.help-gnu-emacs@gnu.org> 2009-03-16 23:54 ` Xah Lee 2009-03-17 2:41 ` Xah Lee 2009-03-17 8:41 ` Nikolaj Schumacher [not found] ` <mailman.3385.1237279326.31690.help-gnu-emacs@gnu.org> 2009-03-17 9:53 ` Xah Lee
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).