Визуализация уценки в буфере Emacs

Из MSDN

В следующем примере кода показана поддержка ковариации и контравариантности для групп методов

static object GetObject() { return null; }
static void SetObject(object obj) { }

static string GetString() { return ""; }
static void SetString(string str) { }

static void Test()
{
    // Covariance. A delegate specifies a return type as object, 
    // but you can assign a method that returns a string.
    Func del = GetString;

    // Contravariance. A delegate specifies a parameter type as string, 
    // but you can assign a method that takes an object.
    Action del2 = SetObject;
}
 

45
задан Markus Hallmann 11 August 2010 в 10:58
поделиться

3 ответа

Думаю, вы можете использовать исходный код latex-preview для вдохновения или pretty-lambda (гораздо более простая программа).

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

В Emacs возможно все, но не все легко достигается: -)

6
ответ дан 26 November 2019 в 19:54
поделиться

Если речь идет только о рендеринге, воспользуйтесь предложением Божидара и выполните преобразование Markdown в HTML, а затем отобразите HTML в буфере W3. markdown-mode содержит код для вызова внешней команды Markdown с несколькими плюсами.

Но если вы действительно хотите делать все в Emacs Lisp, вам придется сначала написать парсер Markdown.

1
ответ дан 26 November 2019 в 19:54
поделиться

Поскольку я не знаю ни об одном парсере Markdown на базе emacs, я должен сказать, что вам придется написать его с нуля. Возможно, этот вопрос SO может навести вас на некоторые мысли.

Если вы решите пойти по пути только Emacs, то Semantic - отличный API для этой работы (он предлагает вам лексер, парсер-генератор и парсер; он существует уже более десяти лет, и у него есть документация!) После создания парсера языка вам нужно будет сделать несколько функций рендеринга для каждого типа токенов. И таким образом вы сможете настроить все под себя.

Хотя это было бы познавательно, я бы все же предпочел использовать существующий конвертер Markdown->html в отдельном фоновом процессе, а затем использовать w3(m) для предварительного просмотра в emacs (как предложил Божидар). Это поможет выполнить работу, и сделать это гораздо проще. Никаких серьезных проблем с производительностью тоже нет - вы должны запускать этот инструмент довольно редко, так что вы легко можете выделить несколько лишних миллисекунд).

Смешанным решением было бы заставить парсер Markdown генерировать HTML напрямую, и просматривать его в буфере w3(m) (это снимает с ваших плеч всю нагрузку по рендерингу, вам нужно только транслитерировать Markdown в html, и это кажется довольно простым с Semantic).

3
ответ дан 26 November 2019 в 19:54
поделиться
Другие вопросы по тегам:

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