CentOS6U5 64位编译安装最新版本的Emacs编辑器

通过yum的安装方式,安装的版本比较旧(好像是21版本,没有亲自确认)。小白喜欢用最新版的Emacs,所以就准备编译安装。


环境准备,

操作系统:CentOS6U5 64bit
软件环境:Basic环境"Development Tools"环境


以下为安装步骤:

   

1.安装EPEL源

rpm -ivh http://mirrors.ustc.edu.cn/fedora/epel//6/x86_64/epel-release-6-8.noarch.rpm

2. 下载Emacs最新版本,这里使用的最新版本为24.5

3. 安装Emacs的依赖包

# yum install -y ncurses-devel
# ----------以下为非必须----------
# 如果在图形化界面下使用Emacs可以安装下面的几个包,
# 主要目的是让Emacs可以显示图片
# yum install -y libpng-devel libjpeg-devel libtiff-devel

4. 编译安装Emacs

# cd /usr/local/src/
# tar -xf emacs-24.5.tar.gz
# cd emacs-24.5
# ./configure
# make
# src/emacs -Q ; 测试make后的Emacs是否可用,非必须
# make install

5. 准备配置文件

# cat ~/.emacs
(global-set-key "\C-h" 'backward-delete-char-untabify)
(global-set-key "\d" 'delete-char)
  
;; disable the startup info
(setq inhibit-startup-message t)
  
(setq-default tab-width 4)
  
(setq fill-column 70)
  
  ;; Display settings
  (display-time-mode t)
  (column-number-mode t)
  
  ;; 高亮显示选中块
  (transient-mark-mode t)
  
  ;; 支持外部复制粘贴
  (setq x-select-enable-clipboard t)
  
  ;; Show the patern parentheses
  ;; 显示括号匹配
  (show-paren-mode t)
  (setq show-paren-style 'parentheses)
  
  ;; multi windows settings
  ;;(require 'window-numbering)
  ;;(window-numbering-mode 1)
  ;; Time settings
  ;; 设置显示底边栏(时间,行列号),字体
  ;; (setq display-time-day-and-date t)
  (display-time-mode 1)
  (setq display-time-24hr-format t)
  (setq display-time-use-mail-icon t) ;; 邮件设置图标
  (setq frame-title-format "LavenLiu@%b")
  ;; GDB设置,多窗口GDB
  (setq gdb-many-windows t)
  
  ;; Syntax highlight
  (global-font-lock-mode t)
  
  ;; y|n represents yes|no
  ;; 设置用'y'或'n'代替'yes'或'no'
  (fset 'yes-or-no-p 'y-or-n-p)
  
  ;;;; yasnippet setting
  (add-to-list 'load-path "~/.emacs.d/elpa/yasnippet")
  (require 'yasnippet)
  (yas/global-mode 1)
  ;; stop auto save
  (setq auto-save-default nil)
  (setq make-backup-files nil)
  
  
  ;; turn on ruler
  ;;(ruler-mode 1)
  
  ;;这两句是我的全局配置,避免出现多语言混乱。
  ;; Encoding style
  (set-buffer-file-coding-system 'utf-8)
  (set default-buffer-file-coding-system 'utf-8)
  (set-terminal-coding-system 'utf-8)
  (set-language-environment 'UTF-8)
  (set-locale-environment "UTF-8")
  ;;
  (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.
  '(ansi-color-faces-vector
  [default default default italic underline success warning error])
  '(ansi-color-names-vector
  ["black" "red3" "ForestGreen" "yellow3" "blue" "magenta3" "DeepSkyBlue" "gray50"])
  '(auto-image-file-mode t)
  '(auto-save-default nil)
  '(c-label-minimum-indentation 4)
  '(column-number-mode t)
  '(compile-command "gcc -g -o")
  '(current-language-environment "UTF-8")
  '(custom-enabled-themes (quote (light-blue)))
  '(display-time-mode t)
  '(ede-auto-add-method (quote always))
  '(emms-lyrics-coding-system (quote gb2312))
  '(emms-lyrics-display-buffer t)
  '(emms-lyrics-display-on-minibuffer t)
  '(emms-player-list
  (quote
      (emms-player-mpg321 emms-player-ogg123 emms-player-mplayer)))
  '(global-semantic-highlight-edits-mode t)
  '(global-semantic-highlight-func-mode t)
  '(global-semantic-idle-completions-mode t nil (semantic/idle))
  '(image-animate-loop t)
  '(jde-jdk-registry (quote (("1.7.0_75" . "/usr/lib/jdk1.7.0_75"))))
  '(make-backup-files nil)
  '(mew-addrbook-file "~/Mail/Addrbook")
  '(mew-mail-domain "163.com")
  '(mew-name "xxxxxxxx")
  '(mew-smtp-server "smtp.163.com")
  '(mew-use-auto-alias t)
  '(mew-user "xxxxxxxx")
  '(org-agenda-files (quote ("~/Desktop/iGTD/iGTD.org")))
  '(org-completion-use-ido t)
  '(org-modules
  (quote
      (org-bbdb org-bibtex org-ctags org-docview org-gnus org-info org-irc org-mhe org-rmail org-w3m org-eshell org-mew org-toc)))
  '(org-startup-with-inline-images t)
  '(org-use-fast-todo-selection t)
  '(package-archives
  (quote
      (("gnu" . "http://elpa.gnu.org/packages/")
      ("melpa" . "http://melpa.org/packages/"))))
  '(safe-local-variable-values (quote ((TeX-master . t))))
  '(semantic-default-submodes
  (quote
      (global-semantic-decoration-mode global-semantic-idle-completions-mode global-semantic-idle-scheduler-mode global-semanticdb-minor-mode global-semantic-idle-summary-mode global-semantic-mru-bookmark-mode)))
  '(semantic-idle-scheduler-idle-time 3)
  '(send-mail-function (quote smtpmail-send-it))
  '(show-paren-mode t)
  '(smtpmail-smtp-server "smtp.163.com")
  '(smtpmail-smtp-service 25)
  '(vc-annotate-color-map
  (quote
      ((20 . "#ab4642")
      (50 . "#dc9656")
      (80 . "#f7ca88")
      (110 . "#a1b56c")
      (140 . "#86c1b9")
      (170 . "#7cafc2")
      (200 . "#ba8baf")
      (230 . "#a16046")
      (260 . "#181818")
      (290 . "#282828")
      (320 . "#383838")
      (350 . "#585858"))))
  '(vc-annotate-very-old-color "#585858"))
  (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.
  '(default ((t (:family #("新宋体" 0 3 (charset chinese-gbk)) :foundry "outline" :slant normal :weight normal :height 120 :width normal)))))
  
  ;; E-Mail settings
  (add-to-list 'load-path
             (expand-file-name "~/.emacs.d/elpa/mew-20140901.1737/"))
  (autoload 'mew "mew" nil t)
  (autoload 'mew-send "mew" nil t)
  
  (if (boundp 'read-mail-command)
      (setq read-mail-command 'mew))
  
  (autoload 'mew-user-agent-compose "mew" nil t)
  (if (boundp 'mail-user-agent)
      (setq mail-user-agent 'mew-user-agent))
  (if (fboundp 'define-mail-user-agent)
      (define-mail-user-agent
      'mew-user-agent
      'mew-user-agent-compose
      'mew-draft-send-message
      'mew-draft-kill
      'mew-send-hook))
  ;; Highlight the selected region
  (transient-mark-mode t)
  
  ;; 设置光标和指针颜色
  (set-cursor-color "red")
  (set-mouse-color "goldenrod")
  
  ;; 设置选中区域的颜色
  (set-face-background 'region "yellow")
  
  ;; Add a blank line at the end of the file
  ;; 在文件末尾添加一空白行
  (setq require-final-newline t)
  (setq track-eol t)
  
  (add-to-list 'load-path "~/.emacs.d/elpa/pde/lisp")
  (load "pde-load")
  ;; ditaa block for org mode
  (org-babel-do-load-languages
  'org-babel-load-languages
  '((ditaa . t) ; this line activates ditaa
  (plantuml . t)
  (awk . t)
  (python . t)
  (perl . t)
  (ruby . t)
  (R . t)
  (sh . t)
  (gnuplot . t)
  (org . t)
  (java . t)
  (emacs-lisp . t)
  (calc . t)
  (sql . t)
  (dot . t)
  ))
  (setq org-ditta-jar-path (expand-file-name "~/.emacs.d/elpa/contrib/scripts/ditta.jar"))
  (setq org-plantuml-jar-path (expand-file-name "~/.emacs.d/elpa/contrib/scripts/plantuml.jar"))
  ;; org mode do not prompt me
  (setq org-confirm-babel-evaluate nil)
  (setq org-src-fontify-natively t)
  
  ;; ===============================================
  ;; my own functions
  (defun gtd ()
  (interactive)
  (find-file "~/Desktop/iGTD/iGTD.org")
  )
  
  ;; my own shortcuts
  (global-set-key "\C-cx" 'gtd)
  (global-set-key (kbd "M-g") 'goto-line)
  (global-set-key "\C-\\" 'set-mark-command)
  
  (defun read-only-if-symlink ()
  (if (file-symlink-p buffer-file-name)
      ((progn )
       (setq buffer-read-only t)
       (message "File is a symlink"))))
  (add-hook 'find-file-hook 'read-only-if-symlink)
  
  (add-hook 'local-write-file-hooks 'update-writestamps)
  
  (defun update-writestamps ()
  "Find writestamps and replace them with the current time."
  (save-excursion
      (save-restriction
      (save-match-data
        (widen)
        (goto-char (point-min))
        (while (search-forward "WRITESTAMP((" nil t)
          (let ((start (point)))
            (search-forward "))")
            (delete-region start (- (point) 2))
            (goto-char start)
            (insert-date))))))
  nil)
  
  ;;; 自动补全设置
  (add-to-list 'load-path "~/.emacs.d/elpa/auto-complete")
  (require 'auto-complete)
  
  ;;; Python的编程环境配置
  (add-to-list 'load-path "~/.emacs.d/elpa/python-environment")
  (add-to-list 'load-path "~/.emacs.d/elpa/jedi")
  (add-to-list 'load-path "~/.emacs.d/elpa/jedi-core")
  (add-to-list 'load-path "~/.emacs.d/elpa/virtualenv")
  (add-to-list 'load-path "~/.emacs.d/elpa/ctable")
  (add-to-list 'load-path "~/.emacs.d/elpa/concurrent")
  (add-to-list 'load-path "~/.emacs.d/elpa/deferred")
  (add-to-list 'load-path "~/.emacs.d/elpa/epc")
  (add-to-list 'load-path "~/.emacs.d/elpa/popup")
  (require 'popup)
  (require 'ctable)
  (require 'concurrent)
  (require 'epc)
  (add-hook 'python-mode-hook 'jedi:setup)
  (autoload 'jedi:setup "jedi" nil t)
  (setq jedi:complete-on-dot t)
  (require 'cedet)
  (global-ede-mode 1)
  
  ;; My Own settings
  ;; easy keys for split windows
  (global-set-key (kbd "M-3") 'delete-other-windows) ; [Alt+] unsplit all
  (global-set-key (kbd "M-4") 'split-window-below)
  (global-set-key (kbd "M-$") 'split-window-right)
  (global-set-key (kbd "M-RET") 'other-window) ; [Alt+Return] move cursor to next pane
  (global-set-key (kbd "M-0") 'delete-window)  ; remove current pane

6. 把.emacs.d目录放置到当前用户的家目录

7. 安装与Python相关的依赖包jedi

yum install -y python-pip
pip install ecdsa
pip install epc
pip install jedi

以上几个步骤,已经完成Emacs的安装及Python编程环境的配置,接下来Enjoy!


你可能感兴趣的:(centos,emacs,编译)