• This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn more.

How to? How do you escape the escape character?

Sep 15, 2013
5
0
#1
TCC LE 13.06.77 x64 Windows 7 [Version 6.1.7601]

How can I escape the escape character "^". I can't seem to change it because everything in the Option | Advanced | Special Character group is dimmed and won't let me change anything.

I need to specify a regular expression that uses "^" as an arg to a program, but without being able to escape the ^ I'm stuck.
 
#2
In general, escape it thus: ^^

Various situations (depending on how many times TCC is going to parse it) might require ^^^^ or ^^^^^^^^.

Parentheses can protect it, and depending on how the program gets its args, the parentheses may stay or go. The usual "C" argc/argv mechanism will remove them.

Code:
v:\> u:\EchoArgs.exe ^^ foo
u:\EchoArgs.exe
^
foo

v:\> u:\EchoArgs.exe "^" foo
u:\EchoArgs.exe
^
foo
 

Charles Dye

Super Moderator
Staff member
May 20, 2008
3,497
45
Albuquerque, NM
prospero.unm.edu
#3
How can I escape the escape character "^". I can't seem to change it because everything in the Option | Advanced | Special Character group is dimmed and won't let me change anything.
That's odd; I wonder whether it's intentional.

You can change the escape character temporarily with SETDOS /E. If you change it to something weird, you may also want to create a keystroke alias, to make it easier to type:

Code:
rem  Set escape character to the currency symbol:
setdos /e0xa4
alias @alt-e=%@char[0xff]%@char[0xa4]
(Edit: Doesn't work quite the way I remember. For some reason which I don't understand, you need an editor escape (hex FF) before the syntax escape....)
 
Last edited:
#4
That's odd; I wonder whether it's intentional.
I thought so too, but the help page for the option dialog's "Advanced" tab says, of special characters, "Not in LE".

Neither does the "EscapeChar" INI directive work.

I also noticed that in TCC 16, the Option\Advanced\SpecialCharacters dialog won't let you specify a key combination; it only accepts a single keystroke. But the "EscapeChar" directive works. I successfully made it Ctrl-g but I couldn't (oddly) make it Ctrl-x. TCC 16 seems to completely ignore Ctrl-x. With 4NTv8, Ctrl-x gives the up-arrow symbol and EscapeChar=Ctrl-x works. I'll ask about that in the support forum.
 

Charles Dye

Super Moderator
Staff member
May 20, 2008
3,497
45
Albuquerque, NM
prospero.unm.edu
#7
It works in LE? Can you "EscapeChar=Ctrl-X" in LE or even v16?
Much to my amazement, I can! ....Once I remembered how to put a control character into a text file. (Use ye olde EDIT.COM; press Control-P, then Control-X.)

But in retrospect, I guess it makes sense that that is allowed. 4DOS used Control-X as its escape, didn't it?
 
#8
Much to my amazement, I can! ....Once I remembered how to put a control character into a text file. (Use ye olde EDIT.COM; press Control-P, then Control-X.)

But in retrospect, I guess it makes sense that that is allowed. 4DOS used Control-X as its escape, didn't it?
My v16 inifile is unicode. I just hex-edited it, changing 0x5E00 (^) to 0x1800 (char 24, Ctrl-x). That didn't work.
 
Sep 15, 2013
5
0
#10
You can change the escape character temporarily with SETDOS /E. If you change it to something weird, you may also want to create a keystroke alias, to make it easier to type:
Code:
rem  Set escape character to the currency symbol:
setdos /e0xa4
alias @alt-e=%@char[0xff]%@char[0xa4]
Okay, thanks. I did:
Code:
setdos /e0x18
alias @alt-e=%@char[0xff]%@char[0x18]
to use Ctrl+x instead, and that seems to work.

I also happened to read "Command Line Editing" in the Help file which mentions the ALT-255 method of entering special chars. However, when I try entering ALT0255 I get a Ġ ? If I do ALT255 I get a space.

If I do ALT0164 I do get the ¤ symbol.

If I do ALT024 I get nothing?
 

Charles Dye

Super Moderator
Staff member
May 20, 2008
3,497
45
Albuquerque, NM
prospero.unm.edu
#11
I also happened to read "Command Line Editing" in the Help file which mentions the ALT-255 method of entering special chars. However, when I try entering ALT0255 I get a Ġ ? If I do ALT255 I get a space.

If I do ALT0164 I do get the ¤ symbol.

If I do ALT024 I get nothing?
This is Windows doing this. Your Alt-keypad number is interpreted differently, depending on whether or not you enter a leading zero. Without a leading zero, the number is interpreted according to the current console code page (probably 437, if you're in the U.S.) With a leading zero, the number is ... Unicode? Or the current Windows code page? I forget.
 
Top Bottom