MathGroup Archive 2009

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: Add syntax highlighting to own command

  • To: mathgroup at smc.vnet.net
  • Subject: [mg101630] Re: Add syntax highlighting to own command
  • From: earthnut at web.de (Bastian Erdnuess)
  • Date: Fri, 10 Jul 2009 23:28:41 -0400 (EDT)
  • References: <200907090600.CAA17547@smc.vnet.net> <h3766u$f9h$1@smc.vnet.net>

Leonid Shifrin <lshifr at gmail.com> wrote:

> While I won't be able to authoritatively answer most of  your questions,
> I would not place your function into a System` context. What
> I would do is to place your function into a separate package with its
> own context, and make that package autoloadable. I am not a big expert
> on this, I am pretty sure you will get great advice from other people here.

It's probably a good idea to make a MyToolBox` context and put things
like that in there.  "Autoload Package" was a good key word, with this I
think I can figure out how to do what I want to do.

> As for the highlighting, I would also very much like to learn if this can be
> extended to user-defined functions.

Probably, a Mathematica developer can tell how Mathematica handles
syntax highlighting internally and if there is any kind of interface to
it.

> Regarding your code, I think it is a very clever piece. I don't know why
> you would want to improve it - it seems quite a piece of art to me.

I'm glad you like it.  I changed the ReplaceAll (/.) to a Replace.  It
seems that it doesn't do so, but i fear the ReplaceAll could mess
something up in a call like

  Let[
    {
      a = { "A", "B", "C" },
      b = { "X", "Y", "Z" }
    },
    Print[ "done" ];
  ]

> I was first somewhat surprised that it works.

I'm still.  I tried different things and I have actually no clue why
only exactly this one was working.

> I think it very cleverly uses the
> fact that  RuleDelayed, being a scoping construct, does not respect the
> possible colliding variables in inner scoping constructs (like With here)
> and in this respect is different from other scoping constructs such as
> Module, Block, With, or Function (thus your substitution works as intended,
> instead of internal variables simply being renamed).

Interesting.  I need to try to understand how RuleDelayed works.
Probably, I can then try to understand my own code, too.

Bastian


  • Prev by Date: Re: Help with FindRoot
  • Next by Date: Re: Symbolic summation
  • Previous by thread: Re: Add syntax highlighting to own command
  • Next by thread: Re: Add syntax highlighting to own command