Для начала — книга http://www.finseth.com/craft/  (англ.)
Не смотря на наличие на обложке фразы "A cook book for an Emacs" книга не является емаксоспецифичной. Просто в емаксе многие вещи сложились эволюционным путём.

Итак.

Специфичное для текстового редактора:

~ лёгкость (не требовать для свой работы более 256Mb оперативной памяти)
~ настраиваемость (должен иметь возможность настройки "под себя" горячих клавиш, внешнего вида и т.д. )
~ надёжность (автосохранение и автовосстановление в случае крэша)
~ Расширяемость (обсуждалось)
~ обладать возможностью автодополнения слов, как вводимых в тексте ранее, так и по словарю
~ интроспекция (представление о структуре текста и действия над этой структурой).
~ подсветка синтаксиса (да-да, определённо должна быть такая возможность)
~ возможность использования без мыши (вообще)
~ возможность вставки заранее подготовленных участков текста, в том числе автоматической
~ возможность работы с большим количеством файлов одновременно и навигации по тексту.

В целом для любого приложения (все пункты не обязательны, однако чем больше утвердительных ответов, тем лучше). На каждом пункте при желании можно остановиться подробней.

~ Все ли способы возможного ввода данных определены?
~ Определена ли необходимость сетевой работы?
~ Определён ли минимальный список задач?
~ Определено ли ожидаемое время реакций для всех необходимых операций?
~ Определена ли необходимая надёжность системы, следствие сбоев и т.д.?
~ Определены ли минимальные требования к аппаратным ресурсам?
~ Есть ли требование успешного завершения проекта?
~ Продуманы ли все аспекты удобства? Определены ли требования к ним?
~ Определена ли способность адаптироваться к изменениям ОС, связанных приложений и т.д.?
~ Изложены ли требования понятным языком?
~ Нет ли взаимоисключающих требований?
~ Определены ли относительные сроки проекта?
~ Приемлемое равновесие между параметрами-антогонистами.
~ Согласован ли уровень детальности всех требований?
~ Указаны ли недостающие требования, которые нельзя определить до появления пробного продукта?
~ Описана ли общая организация программы?
~ Есть ли выделение самых важных компонентов? Самых незначительных?
~ Определены ли вопросы взаимодействия программы с другими программами?
~ Продумана ли стратегия интернационализации/локализации?
~ Не зависим ли проект от платформы и языка? Если зависим — обосновано ли это в достаточной степени?
~ Указаны ли мотивы всех решений?
~ Рассмотрены ли все факторы риска в случае неудачи?
~ Решено ли, какую часть проекта необходимо создать в первую очередь?
~ Определено ли, сколько внимания нужно уделать быстродействию приложения?
~ Нужно ли разрабатывать тесты для кода?
~ Выбран ли инструмент управления версиями?
~ Выбран ли язык(или несколько языков), версия языка и версия компилятора(опционально)?
~ И, наконец, последний вопрос: все ли требования продуманы достаточно хорошо?