По первому пункту нажатие Enter внутри списка списка надо отфильтровывать. И простой заменой абзаца на <br> не обойтись, проблем больше. Например, при удалении форматирования списков, все элементы помещаются в <p> или разделяются через <br>. Причем абзацы добавляет еще и Opera, поэтому количество кода удвоится, так как задачу придется решать W3C-методами объекта Range для Opera и TextRange – для IE.
Отлавливайте нажатие этой кнопки и заменяйте на <br> параграфы, получая их с помощью все тех же Range/TextRange.
А еще в WebKit есть баг, когда после искуственно вставленного <br /> больше нет символов, то переход на новую строку не будет осуществлен, нужно вставлять еще один <br /> или любой символ.
Вообще лучше использовать абзацы, а от <br /> вообще избавиться. Например, в MS Word нажатие Enter всегда приводит к образованию нового абзаца, никаких разрывов строк нет.
Статья по теме:
Range, TextRange и Selection