Регистрация | Войти
Lisp — программируемый язык программирования
RSS
Вставка кусков кода в сообщения форум
archimag - 09.05.2010 22:26, Сообщений - 29
Многие просили и вот свершилось: вставлять код в сообщения можно легко с помощь крайне-правой кнопки на панели инструментов.

Далее, пара тестов: 

(define-route colorize-code ("colorize"
                             :method :post
                             :render-method 'identity
)

  (let ((code (hunchentoot:post-parameter "code"))
        (lang (hunchentoot:post-parameter "lang"))
)

    (colorize::html-colorization (or (find-symbol lang :keyword)
                                     (error "Unknow coloring type: ~A" lang)
)

                                 code
)
)
)

И ещё один 

@staticmethod
def myWonderfulMethod():
    return "Некоторый метод"

Просьба в этом топике протестировать новую возможность ;)
[#]
Хм.


myfun([A|B]) ->
 myfun(A) ++ myfun(B).

Erlang, сломана раскраска видимо.
Victor - 09.05.2010 22:36
[#] Ответ на комментарий от Victor 09.05.2010 22:36
> Erlang, сломана раскраска видимо.

Хм, Colorize данный код никак не подсвечивает. А что тут можно подсвечивать то? Вообще, лучше всего подсвечивается Common Lisp ;)

И ещё, в момент редактирования раскраски не будет (по крайней мере, пока). Но в самом сообщении она в итоге появится.
archimag - 09.05.2010 23:06
[#] Ответ на комментарий от Victor 09.05.2010 22:36

package test;

import java.util.*;
import static java.util.Math.*;

public class Test{
    public static void main(String args[]){
        final int n=0;
        System.out.println(n);
    
}

}
anton0xf - 09.05.2010 23:08
[#]

(defmacro build-moves/conditions (coord moves &key (lower-bound 0) upper-bound)
 ``(,,@(let ((x `(car ,coord)) (y `(cdr ,coord)))
         (iter (for (dx . dy) in moves)
               (collect `(if (and (<= ,lower-bound (+ ,x ,dx) ,upper-bound)
                                  (<= ,lower-bound (+ ,y ,dy) ,upper-bound)
)

                             (cons (+ ,x ,dx) (+ ,y ,dy))
)
)
)
)
)
)
Ander Skirnir - 10.05.2010 03:07
[#] Ответ на комментарий от Ander Skirnir 10.05.2010 03:07
Работает вполне ок :)
Еще было б хорошо подкраску &key, &optional, &rest, ..., <=
Ander Skirnir - 10.05.2010 03:12
[#] Ответ на комментарий от Ander Skirnir 10.05.2010 03:12
> Еще было б хорошо подкраску &key, &optional, &rest, ..., <=

Для этого надо colorize патчить, исходный код здесь ;)
archimag - 10.05.2010 03:32
[#] Ответ на комментарий от archimag 10.05.2010 03:32
ок
Ander Skirnir - 10.05.2010 03:52
[#] Ответ на комментарий от archimag 10.05.2010 03:32
Правильно ли я понял, что символы лежать где-то на сервере в "Data/Map_Sym.txt" ?
Ander Skirnir - 12.05.2010 15:59
[#] Ответ на комментарий от Ander Skirnir 12.05.2010 15:59
> Правильно ли я понял, что символы лежать где-то на сервере в "Data/Map_Sym.txt" ?

Какие символы? Яснее, пожалуйста, ещё яснее ;)
archimag - 12.05.2010 16:14
[#] Ответ на комментарий от archimag 12.05.2010 16:14
А, да надо разбираться, я глубоко не вникал в работу этой штуки.
archimag - 12.05.2010 16:15
[#] Ответ на комментарий от archimag 12.05.2010 16:15

(defparameter *hyperspec-map-file*
  (merge-pathnames "Data/Map_Sym.txt" *hyperspec-pathname*)
)


(with-open-file (s *hyperspec-map-file* :if-does-not-exist nil)
   ;; populate the table with the symbols from the Map file
  ;; this bit is easy and portable.
  ...
   (do ((symbol-name (read-line s nil s) (read-line s nil s))
          (url (read-line s nil s) (read-line s nil s))
)

         ((eq url s) 'done)
     (set-symbol symbol-name (concatenate 'string *hyperspec-root* (subseq url 3)))
)
)


То есть, чтобы &key, &optional, &rest, ..., <= разукрашивались, нужно вместе с ссылками закинуть в этот файл (предположительно). Беда в том, что именно этого файла на гитхабе нету.
Ander Skirnir - 12.05.2010 16:25
[#] Ответ на комментарий от Ander Skirnir 12.05.2010 16:25
> Беда в том, что именно этого файла на гитхабе нету.

Этот файл из hyperspec, а путь к hyperspec задаётся с помощью *heperspec-pathname*. Его менять не стоит ;)
archimag - 12.05.2010 16:57
[#] Ответ на комментарий от archimag 12.05.2010 16:57
Ой, точно :)
Ander Skirnir - 12.05.2010 17:57
[#] Ответ на комментарий от Ander Skirnir 12.05.2010 17:57
Все эти символы там есть. Так что проблема не в этом.
Ander Skirnir - 12.05.2010 18:00
[#] Ответ на комментарий от Ander Skirnir 12.05.2010 18:00
Есть предположение, что проблема в парсере символов - если начинается не с буквы - не подкрашивает.
Ander Skirnir - 12.05.2010 18:02
[#] Ответ на комментарий от Ander Skirnir 12.05.2010 18:02
> Есть предположение, что проблема в парсере символов - если начинается не с буквы - не подкрашивает.

Ну, дык, в этом суть патчинга: сначала понять, а потом исправить ;)
archimag - 12.05.2010 18:07
[#] Ответ на комментарий от archimag 12.05.2010 18:07
Ну это я на всякий случай сказал - Вы же патчили scan-string, вдруг бы сразу вспомнили что-то :)
Ander Skirnir - 13.05.2010 02:43
[#] Ответ на комментарий от Ander Skirnir 13.05.2010 02:43
Пофиксил, но с git - ужас какой-то. Никак не могу разобраться, как закоммитить.
Ander Skirnir - 22.05.2010 17:55
[#] Ответ на комментарий от Ander Skirnir 22.05.2010 17:55
> Никак не могу разобраться, как закоммитить.

Закоммитить куда? Тебе надо форкнуть colorize с моей страницы и внести в неё изменения. Я посмотрю и если все хорошо, то смежру в свою версию и обновлю на сайте.
archimag - 22.05.2010 19:02
[#] Ответ на комментарий от archimag 22.05.2010 19:02
Вроде получилось.
Ander Skirnir - 24.05.2010 19:51
[#] Ответ на комментарий от Ander Skirnir 24.05.2010 19:51
> Вроде получилось.

А можешь ещё сделать, что бы оно не парсило Hyperspec каждый раз при компиляции? А то из-за этого пришлось памяти на данном сервере добавлять - в свап уходило. Т.е. нужно распарсенную инфу сохранять в файл, который будет самостоятельно грузится, так сделано для Scheme.
archimag - 25.05.2010 11:30
[#] Ответ на комментарий от archimag 25.05.2010 11:30
Ок, будет время - попробую.
Ander Skirnir - 25.05.2010 12:11
[#] Ответ на комментарий от archimag 25.05.2010 11:30
Сделал.
Ander Skirnir - 29.05.2010 04:13
[#] Ответ на комментарий от Ander Skirnir 29.05.2010 04:13
> Сделал.

Хм, я не понял что :(
  • Я не понял, как изменился способ подсвечивания кода - запустил и не увидел разницы, как смотреть?
  • Не понял, что ты сделал с зависимость от Hyperspec?
  • Основная часть видимых изменений - не имеющее отношения к делу переформатирование и т.п. Т.е. просматривая изменения я не могу увидеть реальных изменений, ибо они растворяются на фоне ничего не значащих мелочей. Это плохая практика - внося изменения для подготовки патча не следует изменять без нужны оригинальное форматирование и т.п. - все изменения должны быть по существу.
archimag - 31.05.2010 13:21
[#] Ответ на комментарий от archimag 31.05.2010 13:21
> Я не понял, как изменился способ подсвечивания кода - запустил и не увидел разницы, как смотреть?
Начали подсвечиваться lambda-list-keywords (&key, &rest ...) и функции с <,=,>

> Не понял, что ты сделал с зависимость от Hyperspec?
Теперь таблички грузятся с файла. Если его нет, грузятся с гиперспеки и дампаются в файл.
Вообще, есть мысль полностью убрать загрузку с гиперспеки. Не думаю, что там часто уж что-то меняется.

> Основная часть видимых изменений - не имеющее отношения к делу переформатирование и т.п.
Окей, учту.
Ander Skirnir - 01.06.2010 07:09
[#] Ответ на комментарий от Ander Skirnir 01.06.2010 07:09
> Начали подсвечиваться lambda-list-keywords (&key, &rest ...) и функции с <,=,>

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

> Теперь таблички грузятся с файла. Если его нет, грузятся с гиперспеки и дампаются в файл

Нет, это же ничего не даёт. Оно и так парсилось только тогда, когда .fasl-файлов не было. Там вообще не нужна зависимость от hyperspec. Надо парсинг и сохранение в файл выделить в отдельный модуль. А файл, который получается в результате парсинга включить в состав пакета и использовать его непосредственно. Т.е. тут две цели: избавиться от зависимости от Hyperspec - это упростит распространение, избавиться от парсинга на этапе компиляции - слабые машины с ограниченным размером доступной памяти (например, виртуалки) перестанут вляпываться в свап.
archimag - 01.06.2010 17:49
[#] Ответ на комментарий от archimag 01.06.2010 17:49
Сейчас завал, после сессии буду разбираться. Идея выделить загрузку в отдельный модуль мне уже кажется интуитивной, но почему-то в прошлый раз решил оставить ближе к оригиналу.

Пару вопросов:
  • когда на гитхубе делаешь merge файла X с каким-то коммитом Y, он учитывает все предыдущие (Y) вплоть до совпадающей с данным X версии? (наверное, глупый вопрос, но вдруг нет)
  • нету ведь ничего плохого в рефакторинге: нужно просто разделять чисто-рефакторинги и патчи в разных коммитах ?
Ander Skirnir - 04.06.2010 06:45
[#] Ответ на комментарий от Ander Skirnir 04.06.2010 06:45
> когда на гитхубе делаешь merge

Во-первых, гитхуб это всего лишь хостинг ;) Во-вторых, да. Но зачем ты делаешь merge? 

> нету ведь ничего плохого в рефакторинге: нужно просто разделять чисто-рефакторинги и патчи в разных коммитах ?

Есть. Если ты собираешься серьёзно заниматься разработкой библиотеки и её текущее состояние мешает этому, то, конечно, рефакторинг нужен. Но если ты хочешь сделать всего несколько изменений - то нет. Ибо, возможно в будущем придёться объединять с какой-нибудь другой версией (например, с той, что используется на paste.lisp.org) и в этом случае, лучше если различия будут минимальны. 
archimag - 04.06.2010 11:02
[#]
Хотелось бы подсвечивание разными цветами уровни вложенности скобок при наведении курсора мыши. Сам бы пофиксил, но в JavaScript --- ноль.
lithp - 12.06.2010 06:04
@2009-2010 lisper.ru