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

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

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

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

18.08.2008 12:17:12
Я строю прототип для визуализации кода Python с нуля. Несмотря на то, что в теории это выглядит как простая задача, могут потребоваться месяцы / годы, чтобы превратить ее в настоящего редактора. Но я уверен, что мне не понадобится курсив или что-то кроме символов ASCII. Для меня самое главное, он должен быть независимым от системных шрифтов, и поэтому я могу создавать / редактировать шрифт без специального программного обеспечения. Это также требует новых определений самого шрифта и так далее. Я даже не говорю о многих других вещах, таких как подсветка синтаксиса ...
Mikhail V 10.07.2016 00:07:38
13 ОТВЕТОВ
РЕШЕНИЕ

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

16
18.08.2008 12:24:55
Вот это да! Я никогда не видел этого раньше, и я уже хочу это в каждой IDE, которую я использую.
Mike B 23.01.2009 01:07:02

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

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

1
18.08.2008 12:21:23

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

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

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

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

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

4
18.08.2008 12:26:12

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

1
18.08.2008 12:27:56

@ Томас Оуэнс

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

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

2
18.08.2008 13:24:39

@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

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

1
18.08.2008 13:27:14

@ Томас Оуэнс

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

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

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

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

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];
}
3
18.08.2008 15:00:02
Отличный пример - комментарий 'link' теряется в первом примере. Случайное сканирование кода может полностью пропустить его.
slim 20.10.2008 08:37:35
Это не хороший пример для меня, наши стандарты требуют, чтобы комментарии имели свою собственную линию, и они в любом случае имеют другой цвет. Я предпочел бы иметь больше символов в строке.
dwidel 21.02.2012 22:43:33

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

5
20.10.2008 07:05:11
Это очень красиво. Мне бы очень хотелось увидеть полноценную интегрированную среду разработки, построенную на основе пакета для обработки текста, с автоматическими функциями интеллектуального анализа кода, такими как intellisense и расширенные функции интеллектуального анализа и поиска кода, поддержкой компиляции / запуска / отладки, к которым пришла большая часть программистов. ожидать от IDE
Roland Tepp 18.05.2011 09:27:02

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

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

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

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;

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

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

-1
20.10.2008 07:46:28
В своем вопросе я утверждаю, что «я хочу установить табуляцию для своих отступов и выстраивать сигнатуры функций и строки операторов присваивания». Пропорциональный редактор может (опционально) быть умным при преобразовании в / из фиксированного пространства при копировании / вставке и перемещении курсора (вниз всегда будет оставаться в одном столбце)
Mark Cidade 20.10.2008 08:00:49
В приведенном мной примере псевдокода нет только вкладок и одного пробела, так что никакое количество остановок не приведет к выравниванию текста на экране. Расположение; будет варьироваться от строки к строке, и, по крайней мере, для меня и способа, которым я кодирую, это ограничитель показа.
jussij 20.10.2008 08:19:23
"=" И ";" персонажи больше не выстраиваются в ряд: это правда, но я думаю, что это не хороший пример. Реально, как часто у вас есть много строк операторов присваивания, в которых все имена переменных имеют одинаковую длину, а все остальные операторы также имеют одинаковую длину? Если они имеют разную длину, и вы хотите, чтобы символы «=» выстраивались в линию, вы можете использовать вкладку, как он пожелает, и все работает в любом случае. (И если вы проводите время, выстраивая в очередь свои «;», терминаторы строки ... ну, ваше время, вероятно, лучше провести в другом месте.)
Beska 19.06.2009 14:32:28
извините, полужирный -1. Тот факт, что некоторые вещи не совпадают, как вы ожидаете, означает только то, что вы по какой-то причине привлекаете к этому слишком много внимания, и больше ничего.
Mikhail V 25.03.2017 00:29:22

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

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

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

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

В Eclipse вы можете настроить автоматический отступ, включая настройку «Только вкладки».

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

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

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

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

жирный и курсив

Затмение имеет это.

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

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

2
20.10.2008 08:12:04
Принятый ответ наиболее близок к тому, что я хочу («Кто-нибудь знает лучший способ начать его создание?»). Я не хочу просто вставлять вкладки фиксированной длины. Мне нужны вкладки переменной длины для каждой строки, как в текстовом редакторе. Я не хочу, чтобы среда IDE делала для меня отступы - мои отступы сложны
Mark Cidade 20.10.2008 08:20:50
Ах. :) Я не понял этого из твоего изображения, для меня это выглядит просто как старый абзац.
myplacedk 20.10.2008 12:35:31

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

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

то есть:

iiii_space_Foo

xxxx_space_Foo

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

Назовите это упругими пространствами. а не табуляция.

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

0
19.06.2010 19:04:24
Это, к сожалению, не позволит использовать шрифт пропорциональной ширины. Просто попробуйте сделать это, это будет труднее читать, чем шрифт фиксированной ширины.
Karl 28.07.2011 18:25:25
Это очень похоже на то, что Macintosh делал при печати документов в черновом режиме на Imagewriter; он будет печатать с использованием моноширинных шрифтов, но добавит пробелы, чтобы слова в печатном документе находились примерно в одном и том же месте, как это было бы с пропорциональным шрифтом. Результаты могут быть описаны только как отвратительные.
supercat 27.12.2011 06:07:55

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

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

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

введите описание изображения здесь

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

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

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

1
13.09.2011 07:01:43

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

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

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

  • int daysSinceStartup = 1; // в том числе первый
  • int freeDaysPerWeek = 2;
  • int workingHoursPerWeek = 38;

Если вам нужен комментарий к КАЖДОЙ ЛИНИИ, вы делаете что-то не так. «Но вам все равно нужно выровнять ЦЕННОСТИ», не так ли? при чем тут 38?

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

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

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

  • Большой:; , так что вы можете ясно увидеть разницу
  • Ясно отчетливый 0Oo и различный Il |
0
2.09.2014 22:36:24