Получите поверхность шрифта под курсором в Emacs

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

Muaahahahaa!

мне нравится основное (игра слов intented) утверждения рецензента:

  • ошибки Kernighan
  • печально известный факт
  • сбои для соответствия поведению большинства других языков

Для меня это пахнет кем-то, кто никогда не следовал за освоением C основной features/philosphy.

Введение

, Поскольку я все еще изучал физику в университете, я нашел, что C (т.е. подобный языкам C) должны были стать моим предпочтительным языком, когда я обнаружил C для [1 134] цикл.

Так, по-видимому, отказ стиля является чьим-либо успехом стиля. Это закончит субъективную часть этого обсуждения.

, Возможно, Kernigan для нужно было назвать циклом?

Просто ребячество? Возможно, нет.

автор обзора, по-видимому, решил, что каждая конструкция языка должна иметь то же поведение через языки. Так переименовывая для [1 135] как [1 136] цикл упростил бы его дискомфорт.

проблема состоит в том, что автору не удается понять, что C для [1 137] является расширением [1 138] в то время как , не различный цикл. Это означает , в то время как синтаксическая сахарная облегченная версия [1 140] для [1 140], вместо , в то время как другие языки, где для [1 142], возможно, кастрировался вниз.

C для действительно необходимого?

Заключение в кавычки автора обзора, он делает следующие утверждения [приблизительно 1 143] для [1 143] и в то время как :

  • для [1 145] для постоянных циклов, с начала к концу
  • , в то время как для циклов, оценивая условие при каждом повторении

, Имеющими ортогональными функциями является хорошая вещь, когда можно объединить их. Но на всех языках я знаю, нет никакого способа объединиться и для [1 147] и в то время как вместе.

Пример: Что, если для языка рецензента Вам нужен цикл, идущий с начала в конец (как для [1 149]), но все еще способный оценить при каждом повторении цикла (как в то время как ): Вы могли должны быть найти в подмножестве контейнера (не целый контейнер), значение согласно некоторому тесту с сохранением информации?

В подобном языку C, Вы используете для [1 151]. На идеальном языке рецензента Вы просто, ну, в общем, взламываете некоторый ужасный код, крича, потому что Вы не имеете цикл for_while (или C для [1 153] цикл).

Заключение

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

Заключение в кавычки Bjarne Stroustrup:

существует только два вида языков: те, которые люди жалуются на и те, никто не использует.

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

^_^

94
задан Drew 13 January 2014 в 04:32
поделиться

4 ответа

Вы можете определить лицо с помощью этого кода:

(defun what-face (pos)
  (interactive "d")
  (let ((face (or (get-char-property (pos) 'read-face-name)
                  (get-char-property (pos) 'face))))
    (if face (message "Face: %s" face) (message "No face at %d" pos))))

После этого

M-x what-face

напечатает лицо, найденное в текущей точке.

(Спасибо на thedz за указание на то, что what-face не встроен.)

41
ответ дан 24 November 2019 в 05:59
поделиться

what-cursor-position с аргументом префикса показывает лицо под точкой, среди другой информации.

Сочетание клавиш: Cu Cx =

Пример вывода ( свойство face показано в последнем абзаце):

             position: 5356 of 25376 (21%), column: 4
            character: r (displayed as r) (codepoint 114, #o162, #x72)
    preferred charset: ascii (ASCII (ISO646 IRV))
code point in charset: 0x72
               syntax: w    which means: word
             category: .:Base, L:Left-to-right (strong), a:ASCII, l:Latin, r:Roman
          buffer code: #x72
            file code: #x72 (encoded by coding system undecided-unix)
              display: by this font (glyph code)
    nil:-apple-Monaco-medium-normal-normal-*-12-*-*-*-m-0-iso10646-1 (#x55)

Character code properties: customize what to show
  name: LATIN SMALL LETTER R
  general-category: Ll (Letter, Lowercase)
  decomposition: (114) ('r')

There are text properties here:
  face                 org-level-2
  fontified            t

[back]
169
ответ дан 24 November 2019 в 05:59
поделиться

Какое лицо Трея на правильном пути. Это привело меня к электронному письму в списке рассылки, в котором было следующее:

(defun what-face (pos)
    (interactive "d")
        (let ((face (or (get-char-property (point) 'read-face-name)
            (get-char-property (point) 'face))))
    (if face (message "Face: %s" face) (message "No face at %d" pos))))
8
ответ дан 24 November 2019 в 05:59
поделиться

Mx description-face

63
ответ дан 24 November 2019 в 05:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: