Thứ Bảy, 20 tháng 10, 2012

Cấu hình emacs để chạy Common Lisp

Cấu hình emacs, slime, sbcl để chạy cùng nhau.

Tất cả đều nằm trong file .emacs, nội dung tham khảo như bên dưới:


;;; Common Lisp Mode
;(load (expand-file-name "~/quicklisp/slime-helper.el"))
(setq inferior-lisp-program "/usr/local/bin/sbcl --noinform")
(add-to-list 'load-path "/home/nvntung/softs/slime/")
(add-to-list 'auto-mode-alist '("\\.lisp$" . lisp-mode))
(add-to-list 'auto-mode-alist '("\\.cl$" . lisp-mode))
(add-to-list 'auto-mode-alist '("\\.asd$" . lisp-mode))
(setq slime-net-coding-system 'utf-8-unix)
(set-language-environment "utf-8")
(require 'slime)
(slime-setup '(slime-repl))
;; (eval-after-load "slime"
;;  '(progn
;;     (setq slime-complete-symbol*-fancy t
;;           slime-complete-symbol-function 'slime-fuzzy-complete-symbol
;;           slime-when-complete-filename-expand t
;;           slime-truncate-lines nil
;;           slime-autodoc-use-multiline-p t)
;;     (slime-setup '(slime-fancy slime-asdf))
;;     (define-key slime-repl-mode-map (kbd "C-c ;")
;;       'slime-insert-balanced-comments)
;;     (define-key slime-repl-mode-map (kbd "C-c M-;")
;;       'slime-remove-balanced-comments)
;;     (define-key slime-mode-map (kbd "C-c ;")
;;       'slime-insert-balanced-comments)
;;     (define-key slime-mode-map (kbd "C-c M-;")
;;       'slime-remove-balanced-comments)
;;     (define-key slime-mode-map (kbd "RET") 'newline-and-indent)
;;     (define-key slime-mode-map (kbd "C-j") 'newline)))
;; (add-hook 'lisp-mode-hook (lambda ()
;;                            (cond ((not (featurep 'slime))
;;                                   (require 'slime)
;;                                   (normal-mode)))
;;                            (indent-tabs-mode nil)
;;                            (pair-mode t)))

(custom-set-variables
  ;; custom-set-variables was added by Custom.
  ;; If you edit it by hand, you could mess it up, so be careful.
  ;; Your init file should contain only one such instance.
  ;; If there is more than one, they won't work right.
 '(cua-mode t nil (cua-base))
 '(safe-local-variable-values (quote ((Package . ASDF)))))
(custom-set-faces
  ;; custom-set-faces was added by Custom.
  ;; If you edit it by hand, you could mess it up, so be careful.
  ;; Your init file should contain only one such instance.
  ;; If there is more than one, they won't work right.
 )

(defun kill-emacs-slime ()
  (interactive)
  (when (slime-connected-p)
    (if (equal (slime-machine-instance) "Gregory-Gelfonds-MacBook-Pro.local")
        (slime-quit-lisp)
      (slime-disconnect)))
  (slime-kill-all-buffers)
  (save-buffers-kill-emacs))

(global-set-key (kbd "C-x C-c") 'kill-emacs-slime)

;; highlight text selection (on by default since emacs 23.2)
(transient-mark-mode 1)

;; make typing overwrite text selection
(setq delete-selection-mode 1) ; this turns on transient-mark-mode automatically

;;; Mot so mode
;; turn on highlight matching parens when cursor is on one
(setq show-paren-style 'parenthesis) ; highlight just parens
;(setq show-paren-style 'expression)  ; highlight entire expression
(show-paren-mode 1)

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; (defun toggle-fullscreen ()
;;   (interactive)
;;   (x-send-client-message nil 0 nil "_NET_WM_STATE" 32
;;                  '(2 "_NET_WM_STATE_MAXIMIZED_VERT" 0))
;;   (x-send-client-message nil 0 nil "_NET_WM_STATE" 32
;;                  '(2 "_NET_WM_STATE_MAXIMIZED_HORZ" 0))
;; )
;; (toggle-fullscreen)

(defun set-frame-size-according-to-resolution ()
  (interactive)
  (if window-system
  (progn
    ;; use 120 char wide window for largeish displays
    ;; and smaller 80 column windows for smaller displays
    ;; pick whatever numbers make sense for you
    (if (> (x-display-pixel-width) 1280)
           (add-to-list 'default-frame-alist (cons 'width 120))
           (add-to-list 'default-frame-alist (cons 'width 80)))
    ;; for the height, subtract a couple hundred pixels
    ;; from the screen height (for panels, menubars and
    ;; whatnot), then divide by the height of a char to
    ;; get the height we want
    (add-to-list 'default-frame-alist 
         (cons 'height (/ (- (x-display-pixel-height) 200)
                             (frame-char-height)))))))

(set-frame-size-according-to-resolution)
;;;;; ess-emacs
;;(setq load-path (cons "/usr/share/emacs/site-lisp/ess-5.14/lisp" load-path))
;;(require 'ess-site)

;;http://jekyll.math.byuh.edu/other/howto/R/RE.shtml
(add-to-list 'load-path "/home/nvntung/softs/ess-5.14/lisp/")
(require 'ess-site)

;; (add-to-list 'load-path "/media/Elements/Doctorate/Emacs/")
;; (require 'php-mode)
;; (autoload 'php-mode "php-mode" "Major mode for editing php code." t)
;; (add-to-list 'auto-mode-alist '("\\.php$" . php-mode))
;; (add-to-list 'auto-mode-alist '("\\.inc$" . php-mode))

;; (add-to-list 'load-path "/media/Elements/Doctorate/Emacs/mmm-mode-0.4.8/")
;; (require 'mmm-mode)
;; (setq mmm-global-mode 'maybe)
;; (mmm-add-mode-ext-class nil "\\.php3?\\'" 'html-php)
;; (mmm-add-classes
;;  '((html-php
;;     :submode php-mode
;;     :front "<\\?\\(php\\)?"
;;     :back "\\?>")))
;; (autoload 'php-mode "php-mode" "PHP editing mode" t)
;; (add-to-list 'auto-mode-alist '("\\.php3?\\'" . sgml-html-mode))


Save done!

Không có nhận xét nào:

Đăng nhận xét