My (friend's) Emacs config

Emacs-icon.sh.png

Introduction

Như mọi người đã biết, Emacs là 1 công cụ hỗ trợ lập trình rất tốt có thể chạy trên mọi OS. Đối với một người gắn bó với Sublime lâu và là một newbie Emacs như tôi thì tôi tự hỏi tại sao không gọi Emacs là 1 text editor? Một người bạn đã bảo với tôi vì đơn giản Emacs có thể làm nhiều hơn thế. Emacs có thể là IDE mạnh mẽ như bao IDE khác, có thể là 1 công cụ thông báo lịch, todo list, có thể là file manager như Nautilus quen thuộc trên Ubuntu. Thấy được sức mạnh của nó nên tôi đã đi tìm hiểu Emacs. Hãy bắt đầu từ config.

Config Emacs nằm ở đâu?

Sẽ có 2 nơi chứa config của Emacs: ~/.emacs và ~/.emacs.d. Theo thứ tự khi Emacs khởi động sẽ load ~/.emacs trước nếu không tồn tại Emacs sẽ tìm và load tiếp ~/.emacs.d/init.el. My (friend's) Emacs config Cách cài đặt

  1. Cài Emacs (version >= 24)
  2. Cài đặt Cask https://github.com/cask/cask
  3. Clone my repo https://github.com/harryct229/emacs_config vào folder ~/.emacs.d (hoặc tạo symlink)
  4. Chạy cask install trong folder ~/.emacs.d
  5. Chạy emacs

Chi tiết config

Vì config quá dài nên tôi chỉ nêu 1 vài điểm tôi đã tìm hiểu

Theme adwaita

(load-theme 'adwaita t)

Xóa bớt các toolbar vì thường programer chúng ta thường dùng phím tắt mà 😄

(when (fboundp 'tool-bar-mode)
  (tool-bar-mode -1))
(when (fboundp 'scroll-bar-mode)
  (scroll-bar-mode -1))
(unless (and (eq system-type 'darwin) (display-graphic-p))
  (when (fboundp 'menu-bar-mode)
    (menu-bar-mode -1)))

Tắt chế độ nháy của trỏ chuột

(when (fboundp 'blink-cursor-mode)
  (blink-cursor-mode -1))

Màu sắc

(use-package rainbow-mode
  :commands rainbow-turn-on
  :init
  (add-hook 'prog-mode-hook 'rainbow-turn-on))

Syntax checking

(use-package flycheck
  :commands (global-flycheck-mode flycheck-mode)
  :config
  (setq-default flycheck-disabled-checkers
     '(html-tidy go-build emacs-lisp-checkdoc)))

Tắt tiếng bíp khi gõ sai lệnh của Emacs

(setq ring-bell-function 'ignore)

Hay như thêm lời chào khi vào Emacs 😄

(setq inhibit-startup-screen t)
(setq initial-scratch-message
  (concat ";; Hello, Tung.\n"
          ";; Kẻ thất bại chỉ có một loại,\n"
          ";; chính là loại người từ bỏ trước khi đạt tới thành công.\n"))

Không cần trả lời đầy đủ yes hoặc no nữa

(defalias 'yes-or-no-p 'y-or-n-p)

Programing Cho Emacs biết các định dạng file viết bằng Ruby

(use-package ruby-mode
  :mode (("\\.rake$" . ruby-mode)
         ("\\.gemspec$" . ruby-mode)
         ("\\.ru$" . ruby-mode)
         ("Rakefile$" . ruby-mode)
         ("Gemfile$" . ruby-mode)
         ("Capfile$" . ruby-mode)
         ("Puppetfile$" . ruby-mode)
         ("Guardfile$" . ruby-mode)
         ("Vagrantfile$" . ruby-mode)))

Tương tự với các ngôn ngữ khác như JS, Python, …

Và đây là giao diện Emacs sau khi config

2015-09-27-214020_1280x800_scrot.png

Hy vọng mọi người tìm hiểu thêm về Emacs vì tôi cũng đang dần thích Emacs rồi đấy 😃