LINUX.ORG.RU

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

 ,


0

1

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

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

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

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

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

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

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

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

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

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

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

★★★

Проверено: Shaman007 ()
Последнее исправление: Shaman007 (всего исправлений: 6)
Ответ на: комментарий от GotF

Однозначно. Я б даже сказал, что при должной настройке он зарулит PyCharm не то что PyDev (касаемо вывода типов).

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

Оно лучше ropevim?

Пока нет рефакторингов (вопрос буквально ближайшей недели), а по части дополнения да, лучше, так как можно вмешаться в процесс статического анализа. Плюс еще нет calltips (думаю как реализовать с точки зрения UI), но это тоже в первых пунктах todo.

Вообще, любой функционал ropevim и ropemacs воспроизводим, так как база у нас одна. Вопрос только в нужности тех или иных фич.

baverman ★★★
() автор топика

принципиально нового

предлагаю банить всех, кто от балды вставляет эту фразу )

Andru ★★★★
()

> готова первая версия принципиально нового редактора для программистов на Python

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

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

А номер версии релиза какой, где увидеть?

В смысле в интерфейсе? About диалога и не будет.

Если вообще, то действительно, что-то я даже тэга не завел.

0.3.5

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

snaked-9999.ebuild

# Copyright 1999-2010 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: $

EAPI=3

EGIT_REPO_URI="http://github.com/baverman/snaked.git"

inherit distutils git

DESCRIPTION="Minimalist editor inspired by Scribes"
HOMEPAGE="http://github.com/baverman/snaked"
SRC_URI=""

LICENSE="MIT"
SLOT="0"
KEYWORDS="~x86 ~amd64"
IUSE=""

DEPEND=""
RDEPEND="${DEPEND}
	dev-python/pygtksourceview
	dev-python/rope
	dev-python/pyflakes
"
TOHbl4
()
Ответ на: комментарий от TOHbl4

Ого, а это для любой системы сборки ebuildы представляют удобные обертки? PKGBUILDы, конечно, очень жалко выглядят по части декларативности.

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

На счёт любой не знаю. Для autotools, cmake, distutils, ant есть утилиты. Сам писал ебилды только для своих прог на питоне.

ЗЫ: # snaked ** Message: pygobject_register_sinkfunc is deprecated (GtkWindow) ** Message: pygobject_register_sinkfunc is deprecated (GtkInvisible) ** Message: pygobject_register_sinkfunc is deprecated (GtkObject) You must specify at least one file to edit

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

Полноэкранный режим будет?

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

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

Message: pygobject_register_sinkfunc is deprecated

Это переходная версия pygtk, в 2.22 вычещено.

You must specify at least one file to edit

При запуске нужно указать файл. Или уже созданную сессию. Вообще сценарий такой.

1. Сессии еще нет, тогда snaked -s sesion-name filename. ..... quit. 2. Сессия есть, тогда snaked -s session-name.

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

baverman ★★★
() автор топика

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

  • поиск с заменой с поддержкой регулярных выражений
  • сдвиг выделенного блока на отступ влево/вправо
  • закладки
  • свёртывание (folding)
  • несколько окон для одного файла
  • диалог быстрого открытия изначально пустой, лучше отображать там содержимое каталога
TOHbl4
()
Ответ на: комментарий от TOHbl4

поиск с заменой с поддержкой регулярных выражений

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

сдвиг выделенного блока на отступ влево/вправо

Есть, по Tab/Shift+Tab

Закладки

В смысле на номера строк? Да, в планах.

свёртывание (folding)

Тут только надежда на реализацию в gtksourceview, как только так сразу.

лучше отображать там содержимое каталога

Ok. Вообще планирую recent files при пустом поиске.

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

деление области редактирования по вертикали/горизонтали

Можно юзкейзы? Реализация, буквально в десять строчек будет, но я никогда не пользовался ни в виме ни где было еще, чем вообще отдельные буферы полезны?

baverman ★★★
() автор топика

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

Лучше бы ты сделал это плагином для gedit

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

Лучше бы ты сделал это плагином для gedit

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

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

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

Было б очень неплохо, а то на ноутбуках щас тенденция по вертикали 800/768

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

чем вообще отдельные буферы полезны?

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

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

смотреть как реализовано

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

Как дешевый и сердитый вариант я хотел сделать историю навигации. Чтоб можно было по-быстрому переключаться между нужными местами. По типу эклипсовского <Alt>Q.

Но вообще идея понятна. Одновременное нахождение на экране двух _разных_ буферов. Буду думать.

Спасибо за идеи.

baverman ★★★
() автор топика

есть ещё один момент...

мне нужно работать с двумя проектами одновременно в одном окне. вопрос: как это сделать?

TOHbl4
()

Статический анализатор? Фуууу.

А как же рефлексия, метаобъектный протокол и прочая херня? Или редактор и разрабатываемое приложение работают раздельно, на разных интерпретаторах? Т.е. тут до сих пор работают с бездушным текстом, а не с живыми объектами? Ну и нахрена он такой тогда нужен?

yoghurt ★★★★★
()

Посмотрел на скриншоты. А это точно не гном-терминал с вимом на вкладках?

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

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

Положа руку на сердце, признаю, нужен какой-то механизм для первого открытия файла проекта, с которым еще не работали. Но стандартный gtkшный диалог — это самая лютая вещь на свете, совершенно невозможно работать с клавиатуры.

Пока в поиске, склоняюсь к тому же решению, что и для создания нового файла (<ctrl>N).

Ну а сейчас это делается так:

1. Редактор закрывается.

2. Открывается файл другого проекта (опционально с той-же сессией)

3. Теперь в диалоге быстрого открытия можно выбрать нужный проект. (<alt>Up/<alt>Down) и соответственно найти нужный файл.

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

На скриншоте адовый код

Это gtkшный апи. Зато все понятно.

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

в догонку неплохо бы сделать запуск редатора без параметров, а затем выбор нужной сессии из списка. Ибо в DE удобнее повесить запуск на «горячую» клавишу, чем запускать из терминала

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

А как же рефлексия, метаобъектный протокол и прочая херня?

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

Это не смолтолковский образ со всеми атрибутами — бери-не-хочу.

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

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

Сомнительная сущность.

Сейчас новый проект добавляется в список при первом открытии файла этого проекта. Нужно только придумать как сделать удобное открытие без быстрого поиска. А удаление будет по Delete там же в выборе проекта.

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

Сейчас новый проект добавляется в список при первом открытии файла этого проекта. Нужно только придумать как сделать удобное открытие без быстрого поиска. А удаление будет по Delete там же в выборе проекта.

А я думаю будет удобно:

  • Создаём сессию
  • Добавляем каталоги
  • Работаем

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

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

ещё - запоминание параметров размеров/позиции окна/окон для сессии? А то закрыл развёрнутое, открыл снова - маленькое на четверть экрана... хотя код открыло там где и надо...

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

этот редактор, маленький , и быстрый - если таким останется - то займёт свою нишу, не все хотят учить вим/емакс . Мне например понравился.

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

в догонку неплохо бы сделать запуск редатора без параметров, а затем выбор нужной сессии из списка. Ибо в DE удобнее повесить запуск на «горячую» клавишу, чем запускать из терминала.

Для интерактивного выбора сессии лучше сделать отдельный параметр.

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

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

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

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

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

>чтобы бездумно исполнять любой код.

Так а зачем его исполнять?) Его ведь достаточно подгрузить в интерпретатор, ведь правда?

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

А я думаю будет удобно:

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

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

snaked -s session /project1 /project2

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

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

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

Это задача wm, я со своей стороны могу присваивать окну более детальные instance или class, чтоб облегчить эту задачу. А самому двигать окошки это занятие неблагодарное.

baverman ★★★
() автор топика

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

может сессии тоже в json хранить, как langs.conf? тогда и раширить функциональность проще будет.

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