I hate you all

Steven D'Aprano steve+comp.lang.python at pearwood.info
Mon Apr 8 22:51:22 EDT 2013


On Mon, 08 Apr 2013 19:43:51 +0100, Nobody wrote:

> On Sun, 07 Apr 2013 01:30:45 +0000, Steven D'Aprano wrote:
> 
>> Am I the only one here who has used a typewriter?
>> 
>> Tab stops were set manually, to a physical distance into the page,
>> using a mechanical stop. This long predates the "rule" that tab stops
>> are every 8 characters.
> 
> And your point is?
> 
> Typewriters don't have a tab "character". The information regarding tab
> stops is conveyed out-of-band from the typist to the typewriter, and
> doesn't need to persist beyond the time taken to type the document.

Both text editors and typewriters encode information about tab settings 
out of band. Editors encode that information in some combination of 
program configuration, command-line switches, environment variables, and 
embedded mode lines in the document itself. Typewriters encode that 
information in the typists' memory, or failing that, in the actual 
physical space left on the page. That's a difference that makes no 
difference.

My point is that there were well-established semantics for what a tab 
should do, and the "8 character tab" is not that. Pressing the tab key on 
a keyboard while entering text ought to instruct the editor to advance to 
a specified tab stop capable of being set anywhere on the page. Word 
processors use that model: the word processor stores the positions of the 
tab stops out of band, usually in the "paragraph formatting" or "style 
sheet", but in principle they could keep the position of the tab stops 
global to the document or even global to the application.

Good text editors also support this model. Some versions of Vim, for 
example, include a feature called "variable tabstops". Emacs includes a 
variable called tab-stop-list which can set variable tab stops[1]. Even 
the Linux command "less" supports variable width tabs, with the -x option.

In case you think this is only for Unix editors, the Windows "Boxer Text 
Editor" also supports variable tab stops.

There may, or may not be, good reasons for an eight character default 
setting for tab stops. But eight characters is not, and never has been, 
the One True Way of setting tab stops.




[1] Although what happens when you press the tab key in Emacs is so 
complicated that only three people in the world have ever understood it 
fully. The first is Richard Stallman, then second is dead, and the third 
has gone mad.


-- 
Steven



More information about the Python-list mailing list