LINUX.ORG.RU

Первый релиз Snaked

 ,


0

1

После четырех недель активной разработки готова первая версия нового редактора для программистов на Python.

Snaked задумывался как редактор с минималистичным интерфейсом и возможностью гибкой настройки вывода типов для автодополнения всего и вся (соответственно, это позволит делать более-менее безопасный рефакторинг в дальнейшем).

В качестве статического анализатора используется Rope, поверх которого работает модуль выведения типов на основе пользовательских правил.

Также поддерживается переход к определению символа, как явно объявленного в коде, так и написанного в комментарии или строке. Плюс удобный навигатор по модулю и линтер на основе pyflakes.

Дополнительные возможности, не связанные с редактированием исходников:

  • Ориентирован на работу с клавиатуры.
  • Два вида интерфейса: стандартный с табами и по отдельному окну на каждый редактор.
  • Умное выделение позволяет оперировать с блоками кода: определением класса или функции, группой строк, списком параметров или строковым литералом.
  • Сессии.
  • Диалог быстрого открытия файлов.

В ближайшее время будет реализована поддержка плагинов от GEdit.

Документация и скриншоты

Короткий скринкаст про переопределение типов

Надеюсь на обратную связь от пользователей, мне необходимо расставить приоритеты в дальнейшей разработке.

>>> Подробности

★★★

Проверено: Shaman007 ()

light and minimalist

Перевожу на русский: убогий и кривой. Ну это так, по наблюдениям за поделками, таким образом описывающие себя.

RealSiberianMan ()
Ответ на: комментарий от atommixz

Но как обновить, всё что установлено pip'ом?

Скорее всего никак. Может только поколдовать с

pip freeze | xargs pip install -U

baverman ★★★ ()

>нового редактора для программистов на Python, которые ниасилили emacs.

поправлено.

ugoday ★★★★★ ()
Ответ на: комментарий от baverman

Хочется сохранить возможность создавать сессию буквально из ничего. У меня сессии очень маленькие. В одном проекте их даже несколько — на каждый баг — довольно удобно не восстанавливать контекст, а сразу приступать к работе.

так это можно внутри сессии контексты сохранять, нажал «горячую кнопку», ввёл имя контекста, сохранил.

затем открыл редактор, выбрал сессию, выбрал контекст и вперёд. Для скорости можно recent list из пары <session>-<context> сделать.

TOHbl4 ()
Ответ на: комментарий от tailgunner

А зачем линтер при наличии вывода типов?

Он сейчас тупо быстрее работает. Обход дерева в поисках плохих символов дорогая задача, rope под это не заточен. А так, конечно, незачем.

baverman ★★★ ()
Ответ на: комментарий от baverman

Поэтому возня с каталогами несколько будет напрягать. Если сделать так:

snaked -s session /project1 /project2

То есть явно задать необходимые контексты. А дальше сразу Quick Open и вперед?

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

TOHbl4 ()
Ответ на: комментарий от TOHbl4

может сессии тоже в json хранить, как langs.conf?

Да. Нужно уже дополнительно хранить последний активный таб и все-таки список проектов для каждой сессии должен быть свой.

а почему для сохранения позиций выбран anydbm, сессии и project-roots просто списком в текстовом файле (причём с расширением .db)?

Это тлетворное влияние Scribes, хотя использование bdb для хранения позиции оказалось здравой идеей.

baverman ★★★ ()
Ответ на: комментарий от baverman

>ещё - запоминание параметров размеров/позиции окна/окон для сессии?

Это задача wm,

Это всё же задание самого редактора. Не все ВМ такое делают автоматически. Пробовал на Gnome/Metacity Если я закрываю редактор - то при новом открытии того же проэкта/сессии/файла рабочее место должно восстанавливатся - для тех кому не надо -опцией (включить/отключить сохраниние состояния)

clopomor ()
Ответ на: комментарий от baverman

или вообще упраление этим делом вынести в плагин, что-бы можно было просто заменить, кому понадобится...

TOHbl4 ()
Ответ на: комментарий от RealSiberianMan

Перевожу на русский: убогий и кривой

Все относительно. Для меня это самый прямой и удобный редактор на свете. Ни на что другое уже не пересяду. Хотя, да, пилить и пилить еще.

baverman ★★★ ()
Ответ на: комментарий от yoghurt

Так а зачем его исполнять?

Ну не надо прикалываться. Ты же и сам все прекрасно знаешь?

Более того, есть случаи когда тип объекта будет известен _только_ в рантайме, поэтому даже лучше не мечтать об красивой и простой интроспекции.

baverman ★★★ ()

Насколько я понимаю, автор фанат vim :) Думаю в том же направлении нужно развивать и этот редактор.

Хотелось бы иметь возможность выключить таббар, или вообще сделать как в vim переключением буферов.

sceptik ()

где оно хранит свой конфиг? и как вообще сохранить настройки, а то оно на дефолт постоянно сбрасывает

beria ()
Ответ на: комментарий от baverman

:) Ну ок, ок.

Всё равно полезное дело делаешь!

yoghurt ★★★★★ ()
Ответ на: комментарий от anonymous

Хотелось бы поинтересоваться: в каком месте vim медленный (да еще хуже эклипса)?

На моем нетбуке (Atom N270). Со включенными bracket matching и подсветкой синтаксиса. Лагает ввод, могу напечатать 10 символов, прежде чем они появятся на экране, но это хрен с ним, самое стремное, что тормозит курсор, перемещаться по тексту невозможно. Ситуация исправляется если отключить подсветку скобок, но это для меня мастхев.

Поверь, я люблю вим и набираю в нем все остальное, не касающееся кодинга, но разрабатывать в нем решительно невозможно.

baverman ★★★ ()
Ответ на: комментарий от anonymous

Да, вим тормозная скотинко с включённым :syntax on. Попробуй в нём открыть xml`ину или исходник с длинными строками. Сразу схватишь тормозов. ;)

sceptik ()
Ответ на: комментарий от ptah_alexs

>Опять детище Попова?

Это ты про питон? Не, Дениска, таких грибов в жизни не пробовал

Led ★★★☆☆ ()
Ответ на: комментарий от bornbewild

>блин когда же люди наконец освоят emacs/vim и перестанут пользоваться «велосипедами»

Какие люди? Сабж же для питонофилов

Led ★★★☆☆ ()
Ответ на: комментарий от sceptik

Хотелось бы иметь возможность выключить таббар

snaked -w

Но тогда переключение окон ложиться на wm

baverman ★★★ ()
Ответ на: комментарий от baverman

Может проблема все же в эмуляторе терминала? Дай скриптец, на котором тормозит вим, проверю у себя на нетбуке. Просто не замечал еще, чтобы вим как-то тормозил.

pevzi ★★★★★ ()
Ответ на: комментарий от baverman

> На моем нетбуке (Atom N270). Со включенными bracket matching и подсветкой синтаксиса. Лагает ввод, могу напечатать 10 символов, прежде чем они появятся на экране, но это хрен с ним, самое стремное, что тормозит курсор, перемещаться по тексту невозможно. Ситуация исправляется если отключить подсветку скобок, но это для меня мастхев.

Что ж, вполне допускаю. Хотя сам c этим не сталкивался.

anonymous ()
Ответ на: комментарий от beria

где оно хранит свой конфиг?

~/.local/snaked

как вообще сохранить настройки

Настройки сохраняются при закрытии диалога. Можешь подробнее описать проблему? Может в stdout какие-нибудь трейсы высыпались?

baverman ★★★ ()
Ответ на: комментарий от baverman

Vim - медленный? 0_о

с уродским скриптовым языком

Между прочим там куча биндингов и есть кстати для питона.

По теме, почему было не допилить тот же IDLE, если уж так хочется именно для питона? Зачем опять свой велосипед? Ну осталось ещё принципиально новый и минималистический музыкальный плеер написать и смотрелку картинок.

Блин этого всего, особенно в начальном состоянии, просто дофига уже. И каждый наровит не помочь в развиитии друго проекта, а сделать своё!

pento ★★★★★ ()
Ответ на: комментарий от baverman

Я когда только начинал vim осваивать хапнул проблему, что положил скрипт какого-то дополнения (сейчас уже не помню какого именно) вместо ftplugins в plugins. И периодически получал жуткие тормоза. Помогло только отключение всех плагинов с последующим добавлением их по одному для выявления проблемного скрипта.

anonymous ()
Ответ на: комментарий от pevzi

Дай скриптец, на котором тормозит вим

Любой код с большим количеством скобок. С, python не важно. Примерно три экрана текста чтоб в буфере было.

baverman ★★★ ()
Ответ на: комментарий от iceberk

а дебагер есть?

Нет и не будет. Пиши тесты, вставляй логирование, убирай треды. Или подожди годик, желание само уйдет.

baverman ★★★ ()
Ответ на: комментарий от RommeDeSerieux

Я склоняюсь к мысли, что нужен нормальный режим. Слишком много фишек хочу вимовских, а на всё клавиатуры не хватит.

baverman ★★★ ()
Ответ на: комментарий от baverman

> От того что ты его раскрасил, приятнее он не стал.

А в чем страх заключается? Расскажи, может я тоже испугаюсь и перейду на твой редактор.

anonymous ()
Ответ на: комментарий от baverman

> Хм. Проблем конечно никаких нет, таск себе поставил. Но мне даже мысли такой не пришло, так как область для редактирования это вообще все, что есть и будет из постоянно видимых элементов. Неужели еще надо и панели задействовать?

Полноэкранный режим нужен, у меня, например, экран маленький.

shimon ★★★★★ ()
Ответ на: комментарий от pento

Между прочим там куча биндингов и есть кстати для питона.

И у всех замечательный недостаток: единственный способ вернуть данные из скрипта в Vim — eval. Binding к perl ещё хуже: там нельзя достать ни списки, ни словари, только строки. При попытке достать список он превращается в строку, разделённую «\n». Можно применить workaround и добывать «[[expr]]» вместо просто «expr», но рекурсивных структур вы так не добудете. Судя по всему, такая же фигня с ruby и tcl.

ZyX ()
Ответ на: комментарий от pento

Между прочим там куча биндингов и есть кстати для питона.

Ты пробовал на них что нибудь делать? Они годны только когда надо что-то посчитать и вернуть в вим, а вимскриптом нарисовать результат.

По теме, почему было не допилить тот же IDLE

Я не хочу учить tk.

Зачем опять свой велосипед?

Предпосылки я описал в документации плюс неудачную попытка расширить другой редактор. Так что этот велосипед не спроста.

принципиально новый и минималистический музыкальный плеер

mpd + ncmpcpp

и смотрелку картинок

geeqie

Для счастья мне не хватает только редактора.

baverman ★★★ ()
Ответ на: комментарий от age

>> Ok, давайте теперь по редактору для каждого программиста.

фикс

anonymous ()
Ответ на: комментарий от baverman

> ~/.local/snaked

первым делом там глянул - нету :(

Можешь подробнее описать проблему? Может в stdout какие-нибудь трейсы высыпались?

проблема в том что не сохраняются настройки, в stdout нифига не сыпет по этому поводу, вот такое http://dpaste.com/261891/ сыпит если попытаться воспользоваться автодополнением

beria ()

или вообще управление сессиями вынести в плагин, что-бы можно было просто заменить, кому понадобится...

Да и ещё более радикальная вещь: вынести в плагин собственно редактор snaked.core.editor.EditorManager со товарищи, т.е. в ядре оставить только PluginManager.

TOHbl4 ()
Ответ на: комментарий от ZyX

+1 Вот, товарищ тоже, видать, на практике вкусил эти «байндинги».

baverman ★★★ ()
Ответ на: комментарий от baverman

> Ты пробовал на них что нибудь делать?

Они годны только когда надо что-то посчитать

и вернуть в вим, а вимскриптом нарисовать результат.


Я писал на вимовском языке, но что-то мне подсказывает, что это не сложнее было бы.

Я не хочу учить tk.

Gedit? Geany? Medit? Jedit?...

Предпосылки я описал в документации плюс

неудачную попытка расширить другой редактор.


Так что этот велосипед не спроста.


Надо сказать, что ты выбрал весьма редкий редактор для экспериментов.
Ты так уверен, что твоё творение выйдет дальле 1.0 или даже2.0 версии и будет отличаться в лучшую сторону от http://wiki.python.org/moin/PythonEditors?

pento ★★★★★ ()
Ответ на: комментарий от TOHbl4

Да и ещё более радикальная вещь: вынести в плагин собственно PluginManager, т.е. в ядре оставить только PluginManagerManager.

anonymous ()
Ответ на: комментарий от anonymous

Да и ещё более радикальная вещь: вынести в плагин собственно PluginManager, т.е. в ядре оставить только PluginManagerManager.

молодец, в нужном направлении мыслишь

TOHbl4 ()

ОМГ, неужели мечты сбываются? Наконец-то кто-то взял да написал редактор, почти точь-в-точь похожий на тот, о котором я мечтаю. Да еще и на вопросы отвечает.

Чего я всегда хотел:
— режим, когда у тебя чорный экран, а на нем ничего, кроме редактируемого текста. Как у WriteRoom;
— возможность автоматического сохранения текста при потере окном фокуса, если нет синтаксических ошибок;
— полное сохранение и восстановление состояния при выходе-запуске. Чтобы совсем continuous workflow.

shimon ★★★★★ ()
Ответ на: комментарий от beria

вот такое http://dpaste.com/261891/ сыпит если попытаться воспользоваться автодополнением

Похоже на старую версию rope. Нужно обновить.

По поводу настроек. Что выводят

ls -lad ~/.local
ls -lad ~/.local/snaked

baverman ★★★ ()
Ответ на: комментарий от pento

Ты так уверен, что твоё творение выйдет дальле 1.0 или даже2.0 версии и будет отличаться в лучшую сторону от http://wiki.python.org/moin/PythonEditors

Это было взвешенное решение, поверь. Уже сейчас отличается. По части автодополнения и минималистичности могу посоревноваться с любым. Собственно ради этого все и затевалось.

baverman ★★★ ()
Ответ на: комментарий от shimon

возможность автоматического сохранения текста при потере окном фокуса

Уже пользовался таким, лютый ад. Но

если нет синтаксических ошибок;

Уже интересно. Минус, что для каждого языка нужно реализовывать отдельно. Но для питона очень клевый вариант.

полное сохранение и восстановление состояния при выходе-запуске.

Помимо того что есть, будет сохраняться последний активный таб, что еще нужно?

baverman ★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.