Подтвердить что ты не робот

Пропорциональный шрифт IDE

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

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

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

4b9b3361

Ответ 1

Мне бы хотелось, чтобы популярный редактор или среда IDE реализовали эластичные tabstops.

Ответ 2

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

Ответ 3

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

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

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

Символ, называемый Roedy Green (известный его как для написания статей, не поддающихся оценке, написал о теоретическом редакторе/языке на основе Java и назвал Bali. Он не включал в себя непропорциональные шрифты точно, но он включал идею наличия неравномерных размеров шрифта.

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

Ответ 4

@Томас Оуэнс

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

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

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

Но рассмотрим этот пример с оригинального плаката. Его легче заметить комментарии во втором, по моему мнению.

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];
}

Ответ 5

@Томас Оуэнс

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

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

Ответ 6

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

пропорциональный шрифт IDE

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

установить вкладки для моих отступов

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

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

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

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

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

полужирный и курсив

Eclipse имеет это.

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

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

Ответ 7

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

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

Ответ 8

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

Ответ 9

@Brian Ensink: я не нахожу код, отформатированный таким образом, чтобы читать легче.

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

против

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

Я считаю, что первые строки легче читать, чем вторая строка.

Ответ 10

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

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

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

enter image description here

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

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

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

Ответ 11

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

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

т

iiii_space_Foo

xxxx_space_Foo

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

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

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

Ответ 12

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

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

Их аргумент заключался в том, что вы не видите, был ли x массив, список или любой другой IEnumerable. Или какой тип у. На мой взгляд, нечеткость не возникла из-за использования 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

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

  • int daysSinceStartup = 1;//включая первый
  • int freeDaysPerWeek = 2;
  • int workingHoursPerWeek = 38;

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

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

  • var regionsWithIncrease =
    • из результата GetRegionalElectionResults()
    • где result.TotalCount > result > PreviousTotalCount && & &
      • result.PreviousTotalCount > 0//только новые регионы
    • выберите result.Region;
  • foreach (область var в регионахWithIncrease)
  • {
    • Write (область);
  • }

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

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

Ответ 13

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

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

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

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

В монослое шрифта = и ; все выстраиваются в линию.

Теперь, если этот текст закодирован в Word и отображается с использованием пропорционального шрифта, текст превращается в это:

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

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

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

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