-
리습(Lisp)을 위한 SyntaxHighlighter 3.0 플러그인 작성Programmer/Programming 2015. 3. 17. 00:50
SyntaxHighlighter는 프로그래밍 언어의 문법에 따른 색상을 강조하는 프로그램이다. 1
자바스크립트(Javascript)와 CSS로 작성하였다.
블로그에 개발에 관련한 글을 쓰다보면 종종 소스 코드를 포함한다.
그럴 때마다 이 프로그램의 고마움을 많이 느꼈다.공식 배포본에는 리습(Lisp)용 플러그인이 없다.
다행이도 누군가 리습을 위한 플러그인을 만들어서 올려놓았다. 2
썩 마음에 들지는 않지만, 그냥 저냥 사용하기에는 큰 무리는 없었다.그러던 중, 눈에 거슬리는 버그 하나를 발견했다.
(defun my-save (fname) (with-open-file (*standard-output* fname :direction :output :if-exists :supersede) (my-write)))
위 소스 코드를 보면, 키워드 변수인 ":if-exists"의 "if"를 특별한 의미로 해석했음을 볼 수 있다.
이 플러그인을 고쳐보려다가 아래 몇가지 이유로 다시 작성하기로 마음을 먹었다.
- 내가 쓰고 있는 SyntaxHighlighter는 버젼이 3.0.83인데, 이 플러그인은 2.0 기반이다.
따라서, 3.0 기반으로 변경할 필요가 생겼다. - 이맥스(Emacs)의 리습 모드(Lisp Mode)의 폰트락(Font Lock)과 유사하게 동작하게 만들고 싶었다. 3
기존 플러그인이 리습 코드를 해석하는 것을 보면, 작성자가 리습에 대한 이해가 좀 부족한 듯 하다.
새로 작성한 플러그인은 다음과 같이 나온다.
(defun my-save (fname) (with-open-file (*standard-output* fname :direction :output :if-exists :supersede) (my-write)))
문제의 버그를 깔끔하게 고쳤다.
더불어, 이맥스처럼 my-save를 함수명으로 인식하여 색상을 강조한다.이 블로그에 적용된 리습을 위한 SyntaxHighlighter 3.0 플러그인은 내 깃허브(Github)에서 내려받을 수 있다. 4
이후로도 Scheme, Clojure 등 Lisp 계열 언어를 꾸준히 추가했다.
'Programmer > Programming' 카테고리의 다른 글
Lisp에서 lexical과 dynamic 변수 타입 (0) 2016.02.18 Lisp 비교 : 암호 문자열 감추기 문제 풀이 (1) 2016.01.13 초반에는 문제의 원인을 충분히 넓게 잡아라. (1) 2014.07.15 리스프 개발 팁: 명령창 결과 저장하기 (0) 2014.06.27 리습의 개발 방법을 배우자: 함수의 구현 (0) 2014.06.26 댓글
- 내가 쓰고 있는 SyntaxHighlighter는 버젼이 3.0.83인데, 이 플러그인은 2.0 기반이다.