Вопрос

Мне бы очень хотелось увидеть IDE с пропорциональным шрифтом, даже если мне придется создавать ее самому (возможно, как расширение для Visual Studio).В основном я имею в виду редактирование кода в стиле MS Word, которое выглядит как типографский стиль в Книга по языку программирования C ++.

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

Кто-нибудь видел что-нибудь подобное или знает, как лучше всего начать его создавать?

Это было полезно?

Решение

Я все еще хотел бы увидеть реализацию популярного редактора или IDE эластичные накладки.

Другие советы

Стильное мышление предлагает использовать ваше любимое программное обеспечение для работы с текстом, такое как Word или Writer.Создайте свой программный код в расширенном формате XML и извлеките разделы, относящиеся к компилятору, с помощью XSLT.Программное обеспечение "Office" предоставит все расширенные функции работы с текстом и форматирования.

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

Основное преимущество традиционного требования к "непропорциональному" шрифту в редакторах кода заключается в облегчении выполнения форматирования кода.

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

Персонаж по имени Рыжевато - Зеленый (знаменит своим 'как написать недостижимый код статьи) написал о теоретическом редакторе / языке, основанном на Java и называемом Бали.Он не включал в себя непропорциональные шрифты в точном смысле этого слова, но он включал идею наличия неравномерных размеров шрифта.

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

@Томас Оуэнс

Я не нахожу код, отформатированный таким образом, более удобным для чтения.

Это нормально, это просто личные предпочтения, и мы можем не соглашаться.Отформатируйте его так, как вы считаете нужным, и я буду уважать это.Я часто спрашиваю себя: "Как мне следует отформатировать ту или иную вещь?" Мой ответ всегда заключается в том, чтобы отформатировать ее для улучшения читаемости, что, я признаю, может быть субъективным.

Что касается вашего примера, мне просто нравится иметь этот красиво выровненный столбец с правой стороны, это своего рода быстрый "индекс" в коде слева.Сказав это, я бы, вероятно, в любом случае избегал комментировать каждую строку подобным образом, потому что сам код не должен нуждаться в таких подробных объяснениях.И если это происходит, я обычно пишу абзац над кодом.

Но рассмотрим этот пример с оригинального плаката.На мой взгляд, легче распознать комментарии во втором разделе.

for (size-type i = 0; i<v.size(); i++) { // rehash:
    size-type ii = has(v[i].key)%b.size9); // hash
    v[i].next = b[ii]; // link
    b[ii] = &v[i];
}

for (size-type i = 0; i<v.size(); i++) {     // rehash:
    size-type ii = has(v[i].key)%b.size9);   // hash
    v[i].next = b[ii];                       // link
    b[ii] = &v[i];
}

@Томас Оуэнс

Но действительно ли люди так выстраивают комментарии ?...Я никогда не пытаюсь выстраивать декларации, комментарии или что угодно еще, и единственное место, где я когда-либо видел это, - в учебниках.

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

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

среда разработки пропорционального шрифта

В Eclipse вы можете выбрать любой шрифт в вашей системе.

установите табуляцию для моих отступов

В Eclipse вы можете настроить автоматический отступ, в том числе установить для него значение "только вкладки".

выстраивание сигнатур функций и строк операторов присваивания

В Eclipse это делает автоматическое отступление.

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

Извините, я не думаю, что Eclipse сможет вам здесь помочь.Но это с открытым исходным кодом.;-)

выделено жирным шрифтом и курсивом

У Eclipse это есть.

Различные размеры шрифтов и даже таблицы стилей были бы классными

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

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

Это выглядело круто, но код был определенно сложнее для чтения...

Сорен:Это довольно мило, ИМО.Но действительно ли люди выстраивают комментарии подобным образом?Для моих комментариев в конце строки я всегда использую один пробел, затем // или /* или эквивалент, в зависимости от языка, который я использую.Я никогда не пытаюсь выстраивать декларации, комментарии или что-то в этом роде, и единственное место, где я когда-либо видел это, - в учебниках.

@Брайан Энсинк:Я не нахожу код, отформатированный таким образом, более удобным для чтения.

int var1 = 1 //Comment
int longerVar = 2 //Comment
int anotherVar = 4 //Command

против

int var2       = 1 //Comment
int longerVar  = 2 //Comment
int anotherVar = 4 //Comment

Лично я нахожу, что первые строки читать легче, чем вторые.

Часть вашего вопроса с отступами выполняется сегодня в реальном продукте, хотя, возможно, с еще большим уровнем автоматизации, чем вы себе представляли, продукт, о котором я упоминаю, является XSLT IDE, но те же принципы форматирования будут работать с большинством (но не со всеми) обычных синтаксисов кода.

Это действительно нужно видеть в Видео чтобы получить представление обо всем этом (извините за музыкальный бэк-трек).Существует также дополнительный продукт light XML editor, Запрос XMLQuire, который служит демонстратором технологии.

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

enter image description here

Чтобы подчеркнуть эту концепцию форматирования, все символы были выделены, чтобы показать, где проходит левое поле для сохранения отступа.Я использую этот термин Виртуальное форматирование чтобы описать это - это не похоже на эластичные табуляторы, потому что там просто нет табуляций, только информация о полях, которая является частью форматирования "абзаца" (здесь используются коды RTF).Синтаксический анализатор переформатируется непрерывно, за тот же проход, что и синтаксическая раскраска.

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

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

Все люди жалуются на то, что комментарии не выстраиваются в очередь.

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

т. е.:

Ііі_пространство_foo

xxxx_space_Foo

выстроил бы в линию букву "Foo", причем пробел после буквы "i" был бы намного шире, чем после буквы "x".

Так что назовите это эластичными пространствами.вместо табуляций.

Если вы умный редактор, относитесь к комментариям особо, но это всего лишь подливка

Позвольте мне напомнить аргументы об использовании ключевого слова 'var' в C #.Люди ненавидели это и думали, что это сделает код менее понятным.Например, вы не могли бы знать тип в чем-то вроде:

var x = GetResults("Main");
foreach(var y in x)
{
   WriteResult(x);
}

Их аргумент заключался в том, что вы не могли видеть, является ли x массивом, списком или любым другим IEnumerable.Или что это был за тип y.На мой взгляд, неясность возникла не из-за использования var, а из-за выбора неясных имен переменных.Почему бы просто не набрать:

var electionResults = GetRegionalElactionResults("Main");
foreach(var result in electionResults)
{
   Write(result); // you can see what you're writing!!
}

"Но вы по-прежнему не видите результатов выборов!" - действительно ли это имеет значение?Если вы хотите изменить возвращаемый тип GetRegionalElectionResults, вы можете это сделать.Подойдет любое IEnumerable.

Перенесемся в настоящее время.Люди хотят выровнять комментарии по похожему коду:

int var2       =  1; //The number of days since startup, including the first
int longerVar  =  2; //The number of free days per week
int anotherVar = 38; //The number of working hours per week

Так что без комментария все непонятно.И если вы не выровняете значения, вы не сможете отделить их от переменных.Но знаете ли вы?Как насчет этого (не обращайте внимания на пули, пожалуйста)

  • int daysSinceStartup = 1;// включая первый
  • int freeDaysPerWeek = 2;
  • количество рабочих часов в неделю = 38;

Если вам нужен комментарий к КАЖДОЙ СТРОКЕ, вы делаете что-то неправильно."Но вам все равно нужно выровнять ЗНАЧЕНИЯ" - не так ли?какое отношение 38 имеет к 2?

В C # Большинство блоков кода можно легко выровнять, используя только символы табуляции (или, как правило, кратные четырем пробелам).:

  • области var увеличиваются =
    • из результата в GetRegionalElectionResults()
    • где результат.Итоговый счет > результат > Предыдущий итоговый счет &&
      • Результат.Предыдущий показатель > 0 // только новые регионы
    • выберите результат.Регион;
  • foreach (переменная область в увеличивающихся регионах)
  • {
    • Написать(регион);
  • }

Вы никогда не должны использовать межстрочные комментарии, и вам редко нужно выравнивать объекты по вертикали.Редко, но не никогда.Так что я пойму, если кто-то из вас, ребята, предпочитает моноширинный шрифт.Я предпочитаю удобочитаемость шрифта Noto без или Source без Pro.Эти шрифты свободно доступны в Google и напоминают Calibri, но предназначены для программирования и, следовательно, обладают всеми необходимыми характеристиками:

  • Большой :;., чтобы вы могли ясно видеть разницу
  • Четко различимый 0Oo и отчетливый Il|

Основная проблема с пропорциональными шрифтами заключается в том, что они нарушают вертикальное выравнивание кода, а это довольно серьезная потеря, когда дело доходит до написания кода.

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

В качестве примера рассмотрим этот фрагмент кода:

a1 = a111;
B2 = aaaa;
c3 = AAAA;
w4 = wwWW;
W4 = WWWW;

Шрифтом с однострочным интервалом = и тот ; всем построиться.

Теперь, если этот текст помещен в Слово и отображать с помощью пропорциональный шрифт текст фактически превращается в это:

ПРИМЕЧАНИЕ: Добавлено дополнительное пустое пространство, чтобы показать, как = и ; больше не выстраивайтесь в очередь:

a1 = a1 1 1;
B2  = aaaa;
c3 = A A A A;
w4 = w w W  W;
W4  = W W W  W;

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top