LINUX.ORG.RU

Посоветуйте редактор кода по слоям

 ,


1

1

Функционал:

  • Переключение между слоями (например, Alt+1, Alt+2).

  • Возможность видеть слои как отдельно, так и вместе.

  • Сохранять слои как один и/или несколько файлов.


Если речь не о ASCII-art, то как в растровых редакторах накладывать слои не получится. С текстом это так не работает, в отличии от пикселей текст не фиксирован и может смещаться. Вообще для этого используются системы управления версиями.

Если нужна продвинутая работа с буферами текста, то для этого есть Emacs/Vim и им подобные.

Dr64h ★★★★
()

layer1:

1
 1
  1

layer2:

  2
 2
2

code:

paste -d '|' layer* | 9 awk -F '|' '{
	s = ""
	if (length($1) > length($2)) n = length($1)
	else n = length($2)
	for (i = 1; i <= n; i++) {
		c1 = substr($1, i, 1)
		c2 = substr($2, i, 1)
		if (c1 == "") s = s c2
		else if (c2 == "") s = s c1
		else if (c2 != " ") s = s c2
		else s = s c1
	}
	print s
}'

result:

1 2
 2
2 1
kaldeon ★★
()
Последнее исправление: kaldeon (всего исправлений: 1)
Ответ на: комментарий от temak

Ты бы лучше объяснил, чего именно ты хочешь. Я по-началу подумал, это я один такой тёмный, а остальные давно знают, как это редактировать код «по слоям», но судя по ответам я такой далеко не один.

Можно какой-нибудь пример (не знаю, под другую ОС может), или скриншот, или мокап скриншота, или описание как это должно работать?

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

print(«Пока, мир!»)

И?

И в СИЗО за пропаганду всякого нехорошего…


Но вообще я тоже нифига не понял. Если это слои как в графике, то типа print("Пока, мир!")") получится.

Если слои абстракции (типа в одном файле родительский класс, в другом потомки, например), то это любой текстовый редактор умеет, который просто умеет несколько файлов в разных «вкладках».

CrX ★★★★★
()
Последнее исправление: CrX (всего исправлений: 1)
Ответ на: комментарий от dataman

Пример

Как в примере, текст верхнего слоя не должен перекрывать текст нижнего, иначе это тупо вкладки с отдельными файлами.

Короче, представьте себе блокнот исписанный синими и «невидимыми» чернилами.

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

Я заглянул в астрал и прозрел в варпе что хотел автор. Слои — это обобщение над функциональными линзами. Код это предсталение абстрактно синтаксического дерева. Дерево — тривиальная рекурсивная структура данных, на которою можно повесить композицию линз (т.е. слой), предоставляющую некую выборку элементов дерева.

Автору нужен хороший редактор для хаскеля. Например, emacs.

ugoday ★★★★★
()

HTML+CSS может посмотреть

<div class="laeyer1">Слой 1</div>
<div class="laeyer2">Слой 1</div>
<div class="laeyer3">Слой 1</div>

Скрывать слои через display:none, сохранять браузером как текст.

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

Он хочет «цветное» наследование, т.е. визуализацию наследования. Нас ждёт вкус инкапсуляции и фактура полиморфизма.

Шик и блеск, все что бы не ехать, а шашечки придумывать.

ИМХО, тут просто нужно на месяцок уехать на свежий воздух что бы дурью не маяться.

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

Что-то я не понял, у меня есть man vimdiff из пакета vim-common но самого vimdiff нет.

А, нашёл, надо было apt-get install vim сделать, но vimdiff там не файлом а в виде настройки alternatives и поэтому поиском по репе не находится. И даже поиском по файлу после установки

whereis vimdiff
vimdiff: /usr/bin/vimdiff /usr/share/man/man1/vimdiff.1.gz
dpkg -S /usr/bin/vimdiff
dpkg-query: не найден путь, подходящий под шаблон /usr/bin/vimdiff

firkax ★★★★★
()
Последнее исправление: firkax (всего исправлений: 2)
Ответ на: комментарий от temak

блокнот исписанный синими и «невидимыми» чернилами.

И чтоб можно было нарисовать семь синих перпендикулярных линий (при этом одну розовым цветом, а одну — невидимым)!

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

Короче, представьте себе блокнот исписанный синими и «невидимыми» чернилами.

Раньше из экономии бумаги на одном листе писали горизонтально, вертикально и по диагонали. https://siarchives.si.edu/blog/writing-cross-purposes Но как это связать с кодом программы непонятно.

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

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

А, ну если так, то почти любой. Большинство полноценных редакторов умеют сворачивать блоки, в vim можно хоть на основе синтаксиса, хоть на основе маркеров, хоть на основе отступов.

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

блокнот исписанный синими и «невидимыми» чернилами.

И чтоб можно было нарисовать семь синих перпендикулярных линий (при этом одну розовым цветом, а одну — невидимым)!

«Я художник — я так вижу!»

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

Лол, я угадал

синими и «невидимыми» чернилами.

В форме котёнка

Хоть желание и упоротое при взгляде со стороны, но такой редактор есть, GIMP называется. Там можно писать текст, на слоях. Буквально.

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

LINUX-ORG-RU ★★★★★
()
Последнее исправление: LINUX-ORG-RU (всего исправлений: 1)
Ответ на: комментарий от goingUp

Если это редактор кода, то такие штуки делаются редактированием кода. Абстракции там, разбиение на уровни, вот это вот всё.

Единственное (и дикое) применение которое пока приходит в голову: вести переписку в комментариях, чтоб разные люди свои замечания разным цветом оставляли. Но это всё равно наркомания.

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

Знатно ты упоролся, конечно.
А для чего такое нужно, если не секрет?
Ну и ты же понимаешь, что с вероятностью 100% получится каша, а не то, что ты ожидаешь?


Уж не подсветку ли кода ты хочешь, мил человек? (это меня цвета на картинке стриггерили)

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

Да, скорее всего он хочет именно подсветку, типа тык на зелёную кнопку и пишется зелёным, тык на розовую розовым. А затем по другим кнопкам например выключать текст который зелёный или сохранять тот который только красный.

Редактирование же в слоях, прям независимых, либо потребует специального формата хранения, либо индексного файла который будет хранить наборы диапазонов данных принадлежащих тому или иному слою, текст будет обычный, но при загрузке распределяться по «слоям» тупо цветам, если нужно сделать некий слой/цвет невидимым, всем кусочкам текста задаётся цвет равный цвету фона. Если нужно сохранить в 1 файл только выбранные слои, то сохраняется всё просто как текст, но выключеный слой/цвет будет заменять символы на пробелы, таким образом сохраняя общее форматирование и как бы получается вырезан слой.

И упорото и прикольно

Сначала попробовал упороться и начал делать (взял какой-то примитивный редактор на гтк как базу). Но составив список из 12 проблем которые надо решить, бросил. :D Ну его нахер может потом

LINUX-ORG-RU ★★★★★
()
Ответ на: комментарий от Zhbert

В случае с переменными, я сам упёрся в банальное ограничение архитектуры линукса/юникса, глобальное окружение, это максимум значения из /etc/environment или составленный systemd список, который выдаёт команда env.

Нельзя просто так подхватить все существующие пути и их сокращения из более локальных мест, например по тому же freedesktop стандарту, типа $XDG_*

Целесообразности мало такое делать; костыль. Проще прописать все свои личные пути в /etc/environment и сверить с возможными в системе переменными окружения из стандарта, при обнаружении добавить в pathi или как-то так.

Задумка была интересней изначально.

temak
() автор топика
Ответ на: комментарий от LINUX-ORG-RU

Сначала попробовал упороться и начал делать (взял какой-то примитивный редактор на гтк как базу). Но составив список из 12 проблем которые надо решить, бросил. :D Ну его нахер может потом

Надо лучше подумать какой редактор взять за основу.

temak
() автор топика
Ответ на: комментарий от LINUX-ORG-RU

На YT канале Computerphile был занимательный ролик «Writing a Text Editor», там про разбор устройства модели памяти текстовых редакторов. Жаль перезаливов толком нет, там много уникальных роликов.

Dr64h ★★★★
()
Последнее исправление: Dr64h (всего исправлений: 1)
Ответ на: комментарий от temak

Да любой, к которому доступны исходники, в идеале наличие системы плагинов. Сначала нужно ТЗ, ну или хотя бы чёткое видение, того как это должно работать, запись, удаление, перемещение каретки, переключение, сохранение, смена режима отображения, и десятки перекрёстных условий если это то вон то. Базовая идея то понятна, если смотреть поверхностно, но сама концепция независимых текстовых слоев, которые тем не менее подразумевают общее линейное форматирование слово второго слоя идёт после слова первого и до третьего слова третьего слоя, порождает целые кучи проблем, вернее мультиусловий, что делать если второе слое статанет длинее, сдвинуть третье слово третьего слоя, если так то данные слоя выравниваются не только относительно набора, но и редактирования, если так то слои не независимы, если они не независимы, то нет никаких слоёв. Если слой можно заблокировать от редактирования, то он заблокирует все другие слои, так как запрещено наслоение текста на текст. Базово, можно тяп ляп, просто сделать скрытие слоёв в зависимости от цвета текста, тоже самое с сохранением, можно сделать выбор что сохранять, а что нет. Но целом, сама идея как бы независмых слоёв, но учитывающих друг друга, для исключения наслоения, порождает много тупиковых сиутаций. И надо сначала сесть и скурпулёзно во всех мелочах описать желаемое. (МНЕ НЕ НАДО! Я ВЫШЕ ПРОСТО ТАК ПО ПРИКОЛУ!)

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

LINUX-ORG-RU ★★★★★
()
Ответ на: комментарий от Dr64h

Ну, полноценный, текстовый редактор да, не так просто написать. Чтобы был и быстрым и гибким, отзывчивым. Я не смотрел, но в общих чертах представляю. Банально реализация скопировать текст и вставить его в середину другого, может быть реализована в лоб, а может эффективно, где текст изначально разбит на чанки/области/строки/диапазоны/областью отображения. Тема интересная заниматься этим можно хоть всю жизнь и всегда будет что делать, хотя казалось бы текстовый редактор.

LINUX-ORG-RU ★★★★★
()
Ответ на: комментарий от goingUp

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

Если они действительно несущественные, то вопрос решается многострочными комментариями, IDE часто позволяют их сворачивать (например, Qt Creator с шапками комментариев в коде на C++).

Другое дело, если не ясно, какая из «штук» в итоге окажется несущественной, и до какого-то момента они равноправны. Тут, наверное, ближе к истине оказываются люди, посоветовавшие git (с активным использованием веток и переключения между ними, видимо).

Впрочем, ТС пока всё равно не подтвердил, верно ли ты понял его коварный замысел.

hobbit ★★★★★
()