recentpopularlog in


« earlier   
RIP Google Analytics
The Atom community asked us not to send data to Google Analytics anymore and now we're not. Plus, this cleans up a bunch of redundant code in our unit tests, and rips out a now-unncessary dependency.
software  open-source  google  webdev  texteditors 
7 weeks ago by mikael
Use Vim Inside a Unix Pipe Like Sed or AWK | Hacker News
Good point.This argument that domestication lowers intelligence (among other powerful abilities) and that we are unquestionably domesticating ourselves is pretty damn solid. The only argument against it seems to be "... but my ego!".

Obviously there is some interplay with the fact that we develop new mental models and thinking tools to augment intelligence.

Also immersion as children in highly abstract ways of thinking further augments/multiplies raw intelligence (most convincing explanation to the Flynn effect imo).

I've lost the link, but there was an excellent article I read related to the amazing Otzi discovery ( describing how adults of that era (modern humans, primitive societies) would likely have been terrifying to us now in just how much they outclassed us in raw strength, intelligence and stamina. We would be relying a lot on the benefits of childhood nutrition and education to feel superior. This isn't completely convincing, there are a lot of factors in play, but those levels of brutal competition and danger would have a profound effect, especially epigenetically.
vim  texteditors  anthropology  history  forthecomments 
october 2019 by kme
Bare Bones Software | BBEdit Pattern Playgrounds
“The ‘Pattern Playground’ window provides an interactive interface for experimenting with the behavior of Grep patterns (regular expressions). This makes the process of creating complicated patterns much less trial-and-error, since you can see exactly what will match, and how, before committing to any irreversible actions.

“Choose ‘Pattern Playground’ from the Search menu to open a shared window, or make a new pattern tester any time by choosing File => New => Pattern Playground. (You can have multiple pattern playground windows open.)”

bbedit  regex  regexp  2019  software  mac  editors  texteditors 
october 2019 by handcoding / First thoughts (draft manifesto?) for a computer/tablet based writing system for poets
"Keep it simple / reduce friction. Value the individual document, but also the way the individual document dynamically connects to others (metadata). Support easy resequencing (for managing collections, set lists, submission packs) etc. Portable, non-proprietary, application agnostic and robust metadata (tags and keywords in the body of the document). Low level tech vs high level of control so it's easy to fix something when it goes wrong. A system that supports workflows that match the way you think, rather than forcing you into an unintuitive way of working. Respect the throughline from first thought, through first draft and successive edits, to publication and/or performance. ...

Just recently refined my writing/publishing workflows on iOS. It occurs to me that so many tools for writers ignore the needs of poets. Let's talk about Markdown, for example. All the cool kids use Markdown. But it's completely counter-intuitive for me to double-space every time I need to force a line-break. And indents? Forget about it. (Quick hint, Markdown poet: the "pre" tag is your friend, if you don't already know.)

Currently, I write in plain text files, with a bit of Markdown for easy formatting. As my iPad is my primary creation tool, I use Drafts for quick capture and Editorial for any editing or other heavy lifting. In Editorial, I've been able to design workflows that compile collections and set lists or "scripts" for performances from individual documents. But I'm wedded to the idea of devising a set of baseline principles that might support any other poets who struggle trying to find a system that makes sense, or who simply make do with what they've got because they don't have the time or energy to fuss with the tech in order to figure out a potentially better way of doing things..."
jaconsam-larose  howwewrite  computing  ipad  ios  text  poetry  writing  tools  onlinetoolkit  howwework  markdown  formatting  texteditors  poets  metadata  technology  editing  publishing  workflow 
october 2019 by robertogreco
The Craft of Text Editing
The Craft of Text Editing
Emacs for the Modern World
Craig A. Finseth
Copyright 1999 by Craig A. Finseth. Contact the author with questions about distribution rights.

craft cover
This web site contains the full text of the book "The Craft of Text Editing." That book was published in 1991 by Springer-Verlag & Co. By arrangement between the author and the publisher, the book version is now out of print and all rights have been returned to the author. Note that there may be some slight differences in typographic corrections between this version and the printed one.

If you wish to cite this work, please use the following URL:
This book is also available in print form. It has ISBN 978-1-4116-8297-9 (10-digit: 1-4116-8297-1). It is available from Lulu and from

Lulu storefront (PDF version available here)
Amazon page
If you should notice typos or formatting problems, please let me know. I am not, however, planning on revising or updating the book anytime soon. Typo corrections and minor changes will continue to be made indefinitely.

Here is an .epub version that is pretty reasonable. It was created using calibre and appears to display just fine on the calibre viewer, iBooks, and a Kobo e-reader. Note that it does not pass strict epub verification nor does it display well using Stanza (of course, I haven't found anything that displays well using Stanza...).

Here is a .mobi version, again created using calibre.

Here is a .pdf version that contains better bookmarking than the one on Lulu.

Here is a gzip'd .tar file that contains the complete work.

Here is a .gz file that contains a PostScript version of the complete work. This version is frozen as of June 2000 and will not reflect any corrections made after that time. Thanks to Fekete Krisztian for the conversion.

Here is a .gz file that contains a tar file of a LaTeX version version of the complete work. This version is frozen as of June 2000 and will not reflect any corrections made after that time. Thanks to Fekete Krisztian for the conversion.

Quick Contents:
Introduction: What Is Text Editing All About?
One: Users
Two: User Interface Hardware
Three: Implementation Languages
Four: Editing Models
Five: File Formats
Six: The Internal Sub-Editor
Seven: Redisplay
Eight: User-Oriented Commands: The Command Loop
Nine: Command Set Design
Ten: Emacs-Type Editors
Appendix A: A Five-Minute Introduction to C
Appendix B: Emacs Implementations
Appendix C: The Emacs Command Set
Appendix D: The TECO Command Set
Appendix E: ASCII Chart
Book Index

The chapter quotes comprise the verse "Jabberwocky" by Lewis Carroll, from the work Through the Looking Glass.

Annex is a registered trademark of Xylogics.

CP/M is a registered trademark of Digital Research.

DEC, Tops-20, VT52, VT100, VT200 and VAX/VMS are registered trademarks of Digital Equipment Corp.

FinalWord and MINCE are registered trademarks of Mark of the Unicorn.

IBM and IBM PC are registered trademarks of IBM Corp.

Apple ][ is a registered trademark of Apple Computer, Inc.

Macintosh is a trademark licensed to Apple Computer, Inc.

MS/DOS is a registered trademark of Microsoft Corp.

TTY is a registered trademark of Teletype Corp.

UNIX is a registered trademark of AT&T

Table of Contents

Questions to Probe Your Understanding

Introduction: What Is Text Editing All About?

1 The Basic Get_Line

1.1 Version One
1.2 Version Two
1.3 Version Three
1.4 Version Four

2 The Forest
Questions to Probe Your Understanding

One: Users

1.1 User Categories

1.1.1 Amount of Experience
1.1.2 Type of Experience

1.2 "Religion"
1.3 User Goals
1.4 Physiological Constraints
1.5 Applying These Physiological Constraints
1.6 Users Who Have Handicaps
Questions to Probe Your Understanding

Two: User Interface Hardware

2.1 Display Types

2.1.1 TTY and Glass TTY
2.1.2 Basic Displays
2.1.3 Advanced Displays
2.1.4 "Memory Mapped" Displays
2.1.5 Graphics Displays

2.2 Keyboards

2.2.1 Special Function Keys
2.2.2 Extra Shift Keys
2.2.3 Key Placement
2.2.4 Example Keyboards

2.3 Graphical Input

2.3.1 Touch Sensitive Display
2.3.2 Tablet
2.3.3 Mouse
2.3.4 Trackball
2.3.5 Joystick
2.3.6 A Different Mouse
2.3.7 Other Devices
2.3.8 Conclusion

2.4 Communications Path Issues

2.4.1 Speed and Character Format
2.4.2 Flow Control
2.4.3 Echo Negotiation
2.4.4 Fancy Modems

Questions to Probe Your Understanding

Three: Implementation Languages

3.1 General Considerations

3.1.1 Availability and Implementation Quality
3.1.2 Text Handling Power
3.1.3 Support for Extensibility
3.1.4 Large Project Support
3.1.5 Efficiency

3.2 Specific Language Notes

3.2.1 TECO
3.2.2 Lisp
3.2.3 C
3.2.4 PL/1
3.2.5 Other Systems Languages
3.2.6 Fortran
3.2.7 Pascal
3.2.8 Basic
3.2.9 Ada
3.2.10 Sine
3.2.11 Custom Editor Languages

Questions to Probe Your Understanding

Four: Editing Models

4.1 One-Dimensional Array of Bytes
4.2 Two-Dimensional Array of Bytes
4.3 List of Lines
4.4 Paged Models
4.5 Objects
4.6 Dealing with Real Text
Questions to Probe Your Understanding

Five: File Formats

5.1 Text Files

5.1.1 Line Boundaries
5.1.2 Line Contents
5.1.3 End of File

5.2 Binary Files
5.3 Structured Files
5.4 Where to Store the "Extra" Information

5.4.1 In-Band
5.4.2 Out-of-Band
5.4.3 Conclusion

5.5 The Additional Information

5.5.1 Fonts, Sizes, Attributes
5.5.2 Line, Paragraph, Page, and Other Formats
5.5.3 Non-Text Objects

5.6 Internationalization
Questions to Probe Your Understanding

Six: The Internal Sub-Editor

6.1 Basic Concepts and Definitions
6.2 Internal Data Structures
6.3 Procedure Interface Definitions
6.4 Characteristics of Implementation Methods

6.4.1 No Management
6.4.2 Extra Space at the End
6.4.3 Buffer Gap Multiple Gaps and Why They Don't Work The Hidden Second Gap

6.5 Implementation Method Overview
6.6 Buffer Gap
6.7 Linked Line
6.8 Paged Buffer Gap
6.9 Other Methods
6.10 Method Comparisons

6.10.1 Storage
6.10.2 Crash Recovery
6.10.3 Efficiency of Editing
6.10.4 Efficiency of Buffer/File I/O
6.10.5 Efficiency of Searching
6.10.6 Multiple Buffers
6.10.7 Paged Virtual Memory
6.10.8 Conclusions

6.11 Editing Extremely Large Files
6.12 Difference Files
Questions to Probe Your Understanding

Seven: Redisplay

7.1 Constraints
7.2 Procedure Interface Definitions

7.2.1 Editor Procedures
7.2.2 Display Independent Procedures

7.3 Considerations

7.3.1 Status Line
7.3.2 End of the Buffer
7.3.3 Horizontal Scrolling
7.3.4 Line Wrap
7.3.5 Word Wrap
7.3.6 Tabs
7.3.7 Control Characters
7.3.8 Proportionally Spaced Text
7.3.9 Attributes, Fonts, and Scripts
7.3.10 Breaking Out Between Lines
7.3.11 Multiple Windows

7.4 Redisplay Itself

7.4.1 The Framer
7.4.2 The Basic Algorithm
7.4.3 Sub-Editor Interaction
7.4.4 The Advanced Algorithm
7.4.5 Redisplay for Memory-Mapped Displays

Questions to Probe Your Understanding

Eight: User-Oriented Commands: The Command Loop

8.1 The Core Loop: Read, Evaluate, Print

8.1.1 The Evaluate Procedure
8.1.2 Move by a Character
8.1.3 Insert a Character
8.1.4 Second-Level Dispatch
8.1.5 Accept an Argument
8.1.6 Philosophy
8.1.7 A Minimalist Command Set Design

8.2 Errors

8.2.1 Internal Errors
8.2.2 External Errors
8.2.3 Exiting

8.3 Arguments

8.3.1 Numeric (Prefix) Arguments
8.3.2 String (Suffix) Arguments
8.3.3 Positional Arguments
8.3.4 Selection Arguments

8.4 Rebinding

8.4.1 Rebinding Keys
8.4.2 Rebinding Functions

8.5 Modes

8.5.1 Modes and Dynamic Rebinding
8.5.2 Implementing Modes

8.6 Changing Your Mind

8.6.1 Command Set Design
8.6.2 Kill Ring
8.6.3 Undo
8.6.4 An Undo Heresy
8.6.5 Redo

8.7 Macros

8.7.1 Again
8.7.2 Keystroke Recording
8.7.3 Macro Languages
8.7.4 Redisplay Interaction

Questions to Probe Your Understanding

Nine: Command Set Design

9.1 Responsiveness
9.2 Consistency
9.3 Permissiveness
9.4 Progress
9.5 Simplicity
9.6 Uniformity
9.7 Extensibility
9.8 Modes
9.9 Use of Language
9.10 Guideline Summary

9.10.1 Overall
9.10.2 Modes
9.10.3 Use of Language

9.11 Structure Editors
9.12 Programing Assistance
9.13 Command Behavior

9.13.1 Does Down Move the Point or the Text?
9.13.2 Scrolling vs. Paging
9.13.3 Page Breaks
9.13.4 How Many Ways Can You Move by a Word? Moving by Words Deleting by Words

9.13.5 Where Do Sentences and Paragraphs End?
9.13.6 How to Search
9.13.7 Commands to Handle Typos Capitalization Commands Twiddling

Questions to Probe Your Understanding

Ten: Emacs-Type Editors

10.1 "What Do You Mean, 'Emacs-type?' "
10.2 The Command Set
10.3 The Extended Environment
10.4 Extensibility
Questions to Probe Your Understanding


Questions to Probe Your Understanding

Appendix A: A Five-… [more]
Emacs  texteditors  toread 
june 2019 by HM0880
Micro - Home
a modern and intuitive terminal-based text editor
may 2019 by adamvig
[9fans] What operating systems are the google guys using? - Google Groups
Brantley Coile


Given that Google has a critical mass of Plan 9 people working away, and doing great things in my humble opinion, one wonders, what kind of environment are you running? What does the people who created Plan 9 use day to day?

Click here to Reply

Jacob Todd


I think mostly Macs with p9p.
I am a man who does not exist for others.

Attachments (1)

198 B View Download

Lyndon Nerenberg VE6BBM/VE7TFX


> I think mostly Macs with p9p.
The Go(ogle) announcement video combined with running platforms
indicate MacOS.

Russ Cox


The standard set up for a Plan 9 aficionado here seems to
be a Mac or Linux machine running Plan 9 from User Space
to get at sam, acme, and the other tools. Rob, Ken, Dave, and I
use Macs as our desktop machines, but we're a bit of an exception.
Most Google engineers use Linux machines, and I know of
quite a few ex-Bell Labs people who are happy to be using
sam or acme on those machines. My own setup is two
screens. The first is a standard Mac desktop with non-Plan 9
apps and a handful of 9terms, and the second is a full-screen
acme for getting work done. On Linux I do the same but the
first screen is a Linux desktop running rio (formerly dhog's 8½).
More broadly, every few months I tend to get an email from
someone who is happy to have just discovered that sam is still
maintained and available for modern systems. A lot of the time
these are people who only used sam on Unix, never on Plan 9.
The plan9port.tgz file was downloaded from 2,522 unique
IP addresses in 2009, which I suspect is many more than
Plan 9 itself. In that sense, it's really nice to see the tools
getting a much wider exposure than they used to.

I haven't logged into a real Plan 9 system in many years,
but I use 9vx occasionally when I want to remind myself how
a real Plan 9 tool worked. It's always nice to be back,
however briefly.


Philippe Anel


Thanks for this info Russ.
Can you briefly tell us why you (Russ, Rob, Ken and Dave) no longer use
Plan9 ?
Because of missing apps or because of missing driver for your hardware ?
And do you still use venti ?


- show quoted text -

Russ Cox


> Can you briefly tell us why you (Russ, Rob, Ken and Dave)
> no longer use Plan9 ?
> Because of missing apps or because of missing driver for your hardware ?
> And do you still use venti ?
Operating systems and programming languages have
strong network effects: it helps to use the same system
that everyone around you is using. In my group at MIT,
that meant FreeBSD and C++. I ran Plan 9 for the first
few years I was at MIT but gave up, because the lack of
a shared system made it too hard to collaborate.
When I switched to FreeBSD, I ported all the Plan 9 libraries
and tools so I could keep the rest of the user experience.

I still use venti, in that I still maintain the venti server that
takes care of backups for my old group at MIT. It uses
the plan9port venti, vbackup, and vnfs, all running on FreeBSD.
The venti server itself was my last real Plan 9 installation.
It's Coraid hardware, but I stripped the software and had installed
my own Plan 9 kernel to run venti on it directly. But before
I left MIT, the last thing I did was reinstall the machine using
FreeBSD so that others could help keep it up to date.

If I wasn't interacting with anyone else it'd be nice to keep
using Plan 9. But it's also nice to be able to use off the shelf
software instead of reinventing wheels (9fans runs on Linux)
and to have good hardware support done by other people
(I can shut my laptop and it goes to sleep, and even better,
when I open it again, it wakes up!). Being able to get those
things and still keep most of the Plan 9 user experience by
running Plan 9 from User Space is a compromise, but one
that works well for me.


David Leimbach


- show quoted text -
And as you said before, there's always the vx32 port :-). I find it's often a lot more practical for me to run stuff in that or Inferno hosted on Mac OS X as well. I used to keep a Plan 9 box at home, but it released the magic smoke the other day, and I'm afraid that means it's dead.

I've been kicking a few ideas around about replacing it, and maybe trying to make it more useful to the community somehow that I run one, but I've got to get buy in from the wife to invest. (Isn't there some tax write-off for hobbies or something in the US?)


Rob Pike


What Russ says is true but for me it was simpler. I used Plan 9 as my
local operating system for a year or so after joining Google, but it
was just too inconvenient to live on a machine without a C++ compiler,
without good NFS and SSH support, and especially without a web
browser. I switched to Linux but found it very buggy (the main
problem was most likely a bad graphics board and/or driver, but still)
and my main collaborator (Robert Griesemer) had done the ground work
to get a Mac working as a primary machine inside Google, and Russ had
plan9port up, so I pushed plan9port onto the Mac and have been there
ever since, quite happily. Nowadays Apples are officially supported
so it's become easy, workwise.
I miss a lot of what Plan 9 did for me, but the concerns at work override that.


Brantley Coile


Thanks for all the responses. We us a lot of Macs as well. Everyone has a Mac and use plan9ports, drawterm, 9vx, terminals running in Parallels or Fusion, and hosted Inferno. We also, of course, have a real Plan 9 network with a Ken file server using EtherDrive as both the local cache and the worm drives, and a collection of cpu servers for doing development driver work. We get the best of both worlds.
Thanks again.

Peter A. Cejchan


> I haven't logged into a real Plan 9 system in many years,
Oooooh, noooo!!! WHY?!?

As a plain user, a non-techie, I use Plan 9 native as my firs OS on
everyday basis... I log onto linux only for testing things that may be
worth porting, and for compiling the c++ stuff...

Please, do not let the native Plan 9 die...

plan9  Google  sam  texteditors 
january 2019 by HM0880
Etherpad is a highly customizable Open Source online editor providing collaborative editing in really real-time.
january 2019 by adamvig
12 Most Must-Have Free Utilities for Wrangling Text Files | Ponderances of Steve
This page offers a nice collection of lightweight text editors and other power-user goodies for Windows (in the vein of win32pad, Notepad++, and Notepad2).
windows  2012  software  texteditors  editors 
january 2019 by handcoding
This looks to be a decent fork of Notepad2, which is a lightweight text editor for Windows. (One upside of this over win32pad, for instance, is that this app supports Retina.)
windows  software  editors  texteditors  2019 
january 2019 by handcoding
What is the best lightweight text editor? - Quora
This post covers some options for lightweight text editors for Windows.
windows  texteditors  editors  software  2018 
january 2019 by handcoding

Copy this bookmark:

to read