• 我的emacs配置


    我的emacs配置文件

    ;; .emacs
    ;; ============================== Basic Configure START =====================================
    ;; set TAB=4 for C
    ;;(setq c-basic-offset 4)
    ;;
    ;; show colume number
    ;;(setq column-number-mode t)
    
    ;; kill the buffer imediate
    (global-set-key (kbd "C-x k") 'kill-this-buffer)
    
    ;; hide tool bar
    (tool-bar-mode -1)
    
    ;; hide menu bar
    (menu-bar-mode -1)
    
    ;;hide scroll bar
    (scroll-bar-mode -1)
    
    ;;Move line by text line
    (setq line-move-visual nil)
    ;;
    (setq use-dialog-box nil)
    
    ;;不要在鼠标点击的那个地方插入剪贴板内容。我不喜欢那样,经常把我的文档搞的一团糟。我觉得先用光标定位,然后鼠标
    (setq mouse-yank-at-point t)
    
    ;;让 Emacs 可以直接打开和显示图片。
    (setq auto-image-file-mode t)
    
    ;;当你在shell、telnet、w3m等模式下时,必然碰到过要输入密码的情况,此时加密显出你的密码
    (add-hook 'comint-output-filter-functions
          'comint-watch-for-password-prompt)
    
    ;;允许emacs和外部其他程序的粘贴
    (setq x-select-enable-clipboard t)
    
    ;;使用鼠标中键可以粘贴
    (setq mouse-yank-at-point t)
    
    ;;设置有用的个人信息,这在很多地方有用。
    (setq user-full-name "lkong")
    (setq user-mail-address "lkong@redhat.com")
    
    ;; 自动的在文件末增加一新行
    (setq require-final-newline t)
    
    ;;设置F9快捷键指定Emacs 的日历系统
    (global-set-key [f9] 'calendar)
    
    ;;设置F10 快速察看日程安排
    (global-set-key [f10] 'list-bookmarks)
    
    ;;让 dired 可以递归的拷贝和删除目录。
    (setq dired-recursive-copies 'top)
    (setq dired-recursive-deletes 'top)
    
    ;;设置[C-f9]为调用dired命令
    ;;(global-set-key [C-f9] 'dired)
    
    ;;取消control+space键设为mark
    (global-set-key (kbd "C-SPC") 'nil)
    
    ;;这样 我就不用按 C-@ 来 setmark 了, C-@ 很不好按。
    ;;(global-set-key (kbd "M-<SPC>") 'set-mark-command)
    (global-set-key [?S- ] 'set-mark-command)
    
    ;; 设置备份目录。
    (setq backup-directory-alist '(("." . "~/emacs_backup")))
    
    ;; 不备份文件,不推荐
    ;;(setq make-backup-files nil)
    
    ;; 设置光标为竖线
    (setq-default cursor-type 'box)
    ;; 设置光标为方块
    ;; (setq-default cursor-type 'box)
    
    ;; 关闭起动时的那个“开机画面”
    (setq inhibit-startup-message t)
    
    ;; 加亮选中部分
    (transient-mark-mode t)
    
    ;; 滚轮支持
    (setq mouse-wheel-mode t)
    
    ;; 显示列号
    (setq column-number-mode t)
    ;; 显示行号
    (global-linum-mode 1)
    
    
    ;; 用一个很大的 kill ring
    (setq kill-ring-max 200)
    
    ;; 把 fill-column 设为 60. 这样的文字更好读
    (setq default-fill-column 60)
    
    ;; 括号匹配时显示另外一边的括号,而不是烦人的跳到另一个括号
    ;;(show-paren-mode t)
    ;;(setq show-paren-style 'parentheses)
    
    ;; 在标题栏显示buffer的名字,而不是 emacs@wangyin.com 这样没用的提示
    (setq frame-title-format "emacs@%b")
    
    ;; 把这些缺省禁用的功能打开
    (put 'set-goal-column 'disabled nil)
    (put 'narrow-to-region 'disabled nil)
    (put 'upcase-region 'disabled nil)
    (put 'downcase-region 'disabled nil)
    (put 'LaTeX-hide-environment 'disabled nil)
    ;; 让 dired 可以递归的拷贝和删除目录
    (setq dired-recursive-copies 'top)
    (setq dired-recursive-deletes 'top)
    
    ;; auto enter new line
    (add-hook 'org-mode-hook (lambda () (setq truncate-lines nil)))
    
    ;; set key f11 to switch to full
    (global-set-key [f11] 'my-fullscreen) ;; full screen
    
    (fset 'yes-or-no-p'y-or-n-p)
    
    ;; statment highlight
    (global-font-lock-mode t)
    
    ;; use a large kill ring
    (setq kill-ring-max 1024)
    
    ;; Show the corse in which function
    (which-function-mode t)
    
    ;; set default tab width
    (setq default-tab-width 4)
    
    ;; use space to instead TAB
    (setq-default indent-tabs-mode nil)
    
    ;; enable global line number
    ;;(global-linum-mode 1)
    
    ;;设置M-g为goto-line
    (global-set-key (kbd "M-g") 'goto-line)
    
    ;; No backup
    ;;(setq backup-inhibited t)
    
    ;; set color theme
    (add-to-list 'load-path "~/.emacs.d/elpa/color-theme-20080305.34/")
    (require 'color-theme)
    (color-theme-initialize)
    ;;(color-theme-dark-laptop)
    ;;(color-theme-kingsajz)
    ;;(load-file "~/.emacs.d/plugins/color-theme-wombat+.el")
    ;;(color-theme-wombat+)
    
    ;;(load-file "~/.emacs.d/plugins/color-theme-active.el")
    ;;(color-theme-active)
    (load-file "~/.emacs.d/plugins/color-theme-colorful-obsolescence.el")
    (color-theme-colorful-obsolescence)
    
    
    (defun my-fullscreen ()
    (interactive)
    (x-send-client-message
      nil 0 nil "_NET_WM_STATE" 32
      '(2 "_NET_WM_STATE_FULLSCREEN" 0))
    )
    ;; let emacs to max frame
    (add-to-list 'load-path "~/.emacs.d/elpa/maxframe-20120725.639/")
    (require 'maxframe)
    (add-hook 'window-setup-hook 'maximize-frame t)
    
    ;;#yum install wqy-microhei-fonts.noarch first
    ;;(set-default-font "WenQuanYi Micro Hei Mono-19.5")
    (set-default-font "WenQuanYi Zen Hei Mono-22")
    ;;(set-fontset-font (frame-parameter nil 'font) 'han      "WenQuanYi Zen Hei Mono-24")
    ;;(set-fontset-font (frame-parameter nil 'font) 'gb18030  "WenQuanYi Zen Hei Mono-24")
    ;;(set-fontset-font (frame-parameter nil 'font) 'bopomofo "WenQuanYi Zen Hei Mono-24")
    ;;(set-fontset-font (frame-parameter nil 'font) 'cjk-misc "WenQuanYi Zen Hei Mono-24")
    ;;(set-fontset-font (frame-parameter nil 'font) 'nil      "WenQuanYi Zen Hei Mono-24")
    ;;(set-fontset-font (frame-parameter nil 'font) 'symbol   "WenQuanYi Zen Hei Mono-24")
    ;;(set-fontset-font (frame-parameter nil 'font) 'kana     "WenQuanYi Micro Hei Mono-24")
    
    ;; transparent set
    (global-set-key [(f8)] 'loop-alpha)  ;;注意这行中的F8 , 可以改成你想要的按键
    
    (setq alpha-list '((85 55) (100 100)))
    
    (defun loop-alpha ()
      (interactive)
      (let ((h (car alpha-list)))
        ((lambda (a ab)
           (set-frame-parameter (selected-frame) 'alpha (list a ab))
           (add-to-list 'default-frame-alist (cons 'alpha (list a ab)))
           ) (car h) (car (cdr h)))
        (setq alpha-list (cdr (append alpha-list (list h))))
        )
    )
    (loop-alpha)
    
    ;; ============================== Basic Configure END ======================================
    
    
    ;; ============================== Color Setting START ======================================
    ;; ============================== Color Setting END ========================================
    
    ;; ============================== Python IDE Configure START ===============================
    
    ;; yasnippet
    (add-to-list 'load-path "~/.emacs.d/elpa/yasnippet-0.8.0/")
    (require 'yasnippet)
    (yas-global-mode 1)
    
    ;; auto-completion.el
    (add-to-list 'load-path "~/.emacs.d/elpa/popup-20140815.629/")
    (require 'popup)
    
    (add-to-list 'load-path "~/.emacs.d/elpa/auto-complete-20140824.1658/")
    (require 'auto-complete-config)
    (add-to-list 'ac-dictionary-directories "~/.emacs.d/elpa/auto-complete-20140824.1658/dict/")
    (ac-config-default)
    
    ;; python-mode
    (add-to-list 'load-path "~/.emacs.d/elpa/python-mode-6.1.3")
    (require 'python-mode)
    
    ;; ipython
    (add-to-list 'load-path "~/.emacs.d/elpa/ipython-2927/")
    (require 'ipython)
    
    ;; python document -- start
    (setq pylookup-dir "~/.emacs.d/plugins/pylookup")
    (add-to-list 'load-path pylookup-dir)
    (require 'pylookup)
    
    ;; load pylookup when compile time
    (setq pylookup-program (concat pylookup-dir "/pylookup.py"))
    (setq pylookup-db-file (concat pylookup-dir "/pylookup.db"))
    
    ;; set search option if you want
    (setq pylookup-search-options '("--insensitive" "0" "--desc" "0"))
    
    ;; to speedup, just load it on demand
    (autoload 'pylookup-lookup "pylookup"
                "Lookup SEARCH-TERM in the Python HTML indexes." t)
    
    (autoload 'pylookup-update "pylookup"
                "Run pylookup-update and create the database at `pylookup-db-file'." t)
    (global-set-key "C-ch" 'pylookup-lookup)
    
    (setq browse-url-browser-function  'w3m-browse-url)
    ;; python document -- end
    
    ;; anything
    (add-to-list 'load-path "~/.emacs.d/elpa/anything-config-0.4.1/")
    ;;(require 'anything-config)
    ;;(add-to-list 'load-path "~/.emacs.d/elpa/anything-ipython-0.1.2009/")
    ;;(require 'anything-ipython)
    ;;(when (require 'anything-show-completion nil t)
    ;;     (use-anything-show-completion 'anything-ipython-complete
    ;;     '(length initial-pattern)))
    
    ;; other compeletion methon
    (add-to-list 'load-path "~/.emacs.d/elpa/pylint-20140729.1117/")
    (require 'pylint)
    (add-to-list 'load-path "~/.emacs.d/elpa/pep8-1.2/")
    (require 'pep8)
    (require 'tramp)
    
    ;; 保存时自动清除行尾空格及文件结尾空行
    (add-hook 'before-save-hook 'delete-trailing-whitespace)
    
    ;; cscope -- start
    (add-to-list 'load-path "~/.emacs.d/elpa/xcscope-20140510.1437")
    (require 'xcscope)
    (cscope-setup)
    ;; C-c s a             设定初始化的目录,一般是你代码的根目录
    ;; C-s s I             对目录中的相关文件建立列表并进行索引
    ;; C-c s s             序找符号
    ;; C-c s g             寻找全局的定义
    ;; C-c s c             看看指定函数被哪些函数所调用
    ;; C-c s C             看看指定函数调用了哪些函数
    ;; C-c s e             寻找正则表达式
    ;; C-c s f             寻找文件
    ;; C-c s i             看看指定的文件被哪些文件include
    ;; cscope -- end
    
    
    ;; ============================== Python IDE Configure END ===============================
    
    
    ;; ============================== C/C++ IDE Configure END ===============================
    ;; 设置另外一些颜色:语法高亮显示的背景和主题,区域选择的背景和主题,二次选择的背景和选择
    (set-face-foreground 'highlight "white")
    (set-face-background 'highlight "blue")
    (set-face-foreground 'region "cyan")
    (set-face-background 'region "blue")
    (set-face-foreground 'secondary-selection "skyblue")
    (set-face-background 'secondary-selection "darkblue")
    ;; ============================== C/C++ IDE Configure END ===============================
    
    
    
    
    ;; ============================ Other Configure for emacs START ===============================
    ;;http://elpa.gnu.org/ Default. Official GNU Emacs package repository. This repository contains the minimal set, and are FSF signed.
    ;;http://tromey.com/elpa/ ELPA (being phased out as of 2012-07-03).
    ;;http://marmalade-repo.org/ Marmalade. More extensive number of packages.
    ;;http://melpa.milkbox.net/ MELPA. As of 2012-10-18, MELPA has most packages, and updated daily.
    
    ;;(when (>= emacs-major-version 24)
    ;;    (require 'package)
    ;;    (package-initialize)
        ;;(add-to-list 'package-archives '("melpa" . "http://melpa.milkbox.net/packages/") t)
        ;;(add-to-list 'package-archives '("melpa" . "http://tromey.com/elpa/packages/") t)
        ;;(add-to-list 'package-archives '("melpa" . "http://elpa.gnu.org/packages/") t)
        ;;(add-to-list 'package-archives '("melpa" . "http://marmalade-repo.org/packages/") t)
    ;;    (add-to-list 'package-archives '("marmalade" . "http://marmalade-repo.org/packages/"))
    ;;    )
    ;; All packages repo
    (setq package-archives '(("gnu" . "http://elpa.gnu.org/packages/")
                            ("marmalade" . "http://marmalade-repo.org/packages/")
                            ("melpa" . "http://melpa.milkbox.net/packages/")))
    
    ;; ============================== ECB Configure START  ===============================
    (add-to-list 'load-path "~/.emacs.d/elpa/ecb-20140215.114/")
    (setq ecb-tip-of-the-day nil)
    (require 'ecb)
    (require 'ecb-autoloads)
    (setq ecb-auto-activate t)
    (global-set-key [M-left] 'windmove-left)
    (global-set-key [M-right] 'windmove-right)
    (global-set-key [M-up] 'windmove-up)
    (global-set-key [M-down] 'windmove-down)
    
    (define-key global-map [(control f1)] 'ecb-hide-ecb-windows)
    (define-key global-map [(control f2)] 'ecb-show-ecb-windows)
    ;;(define-key global-map [(control f3)] 'ecb-change-layout "left2")
    ;;(define-key global-map [(control f3)] 'ecb-change-layout)
    ;;(define-key global-map "C-c3" 'ecb-change-layout)
    
    (define-key global-map "C-c1" 'ecb-maximize-window-directories)
    (define-key global-map "C-c2" 'ecb-maximize-window-sources)
    (define-key global-map "C-c3" 'ecb-maximize-window-methods)
    (define-key global-map "C-c4" 'ecb-maximize-window-history)
    (define-key global-map "C-c`" 'ecb-restore-default-window-sizes)
    (global-set-key [f12] 'ecb-activate) ;; ecb activate
    ;;(define-key global-map "C-c1" 'ecb-maximize-window-methods)
    ;;(define-key global-map "C-c2" 'ecb-maximize-window-history)
    ;;(define-key global-map "C-c`" 'ecb-restore-window-sizes)
    
    ;; Disable buckets so that history buffer can display more entries
    (setq ecb-history-make-buckets 'never)
    
    (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.
     '(ecb-create-layout-frame-height 10)
     '(ecb-create-layout-frame-width 50)
     '(ecb-layout-name "lkong")
     '(ecb-layout-window-sizes nil)
     '(ecb-options-version "2.40")
     '(ecb-primary-secondary-mouse-buttons (quote mouse-1--mouse-2))
     '(ecb-toggle-layout-sequence (quote ("lkong2" "lkong")))
     '(ecb-windows-width 0.225))
    
    
    ;;不显示ecbTip
    ;;(set-foreground-color "grey")
    (set-foreground-color "grey")
    (set-background-color "black")
    ;;(setq ecb-layout-name "left10")
    (setq ecb-history-make-buckets 'never)
    (setq ecb-fix-window-size t)
    (ecb-activate)
    
    ;; Ecb的操作:
    ;; C-c . g d 目录列表窗口
    ;; C-c . g s 源码窗口
    ;; C-c . g m 方法和变量窗口
    ;; C-c . g h 历史窗口
    ;; C-c . g l 最后选择过的编辑窗口
    ;; C-c . g 1 编辑窗口1
    ;; C-c . g n 编辑窗口n
    ;; C-c . l c 选择版面
    ;; C-c . l r 重画版面
    ;; C-c . l t switch layout
    ;; C-c . l w 拴牢可见的ecb窗口
    ;; C-c . /   拴牢编绎窗口
    ;; C-c . e: jump to the eshell buffer
    ;; C-c . n: histroy back
    ;; C-c . p: histroy forwad
    ;; C-c .h: Show ECB help pager
    ;; left2: directory + source
    ;; left6: source + method + history
    ;; left8: directory + source + method + history
    ;; ============================== ECB Configure END  ===============================
    (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.
     )
    
    ;; ============================ Org-mode Configure START =================================
    (require 'org-install)
    (require 'org-publish)
    (add-to-list 'auto-mode-alist '("\.org\'" . org-mode))
    (add-hook 'org-mode-hook 'turn-on-font-lock)
    (add-hook 'org-mode-hook
              (lambda () (setq truncate-lines nil)))
    
    (global-set-key "C-cl" 'org-store-link)
    (global-set-key "C-ca" 'org-agenda)
    (global-set-key "C-cb" 'org-iswitchb)
    (global-set-key "C-cc" 'org-remember)
    (add-to-list 'auto-mode-alist '("\.org\'" . org-mode))
    
    ;; GTD -- start
    (setq org-todo-keywords
    (quote ((sequence "TODO(t)" "NEXT(n)" "|" "DONE(d)")
            (sequence "SOMEDAY(s@/!)" "HOLD(h@/!)" "|" "CANCELLED(c@/!)"))))
    
    (setq org-todo-keyword-faces
          (quote (("TODO" :foreground "red" :weight bold)
                  ("NEXT" :foreground "blue" :weight bold)
                  ("DONE" :foreground "forest green" :weight bold)
                  ("SOMEDAY" :foreground "orange" :weight bold)
                  ("HOLD" :foreground "magenta" :weight bold)
                  ("CANCELLED" :foreground "forest green" :weight bold))))
    
    (setq org-todo-state-tags-triggers
          (quote (("CANCELLED" ("CANCELLED" . t))
                  ("SOMEDAY" ("SOMEDAY" . t))
                  ("HOLD" ("SOMEDAY" . t) ("HOLD" . t))
                  (done ("SOMEDAY") ("HOLD"))
                  ("TODO" ("SOMEDAY") ("CANCELLED") ("HOLD"))
                  ("NEXT" ("SOMEDAY") ("CANCELLED") ("HOLD"))
                  ("DONE" ("SOMEDAY") ("CANCELLED") ("HOLD")))))
    (setq org-directory "~/Org-mode")
    
    (global-set-key (kbd "C-c c") 'org-capture)
    (setq org-capture-templates
          (quote (("t" "todo" entry (file "~/Org-mode/todo.org")
                   ;;"* TODO %?
    %a
    " :clock-in t :clock-resume t)
                   "* TODO %?")
                  ("i" "idea" entry (file+datetree "~/Org-mode/idea.org")
                   "* %? 
    ")
                  ("s" "someday" entry (file "~/Org-mode/someday.org")
                   "* SOMEDAY %? :SOMEDAY:
    %a
    " :clock-in t :clock-resume t)
                  ("n" "note" entry (file "~/Org-mode/diary.org")
                   "* %? :NOTE:
    %a
    " :clock-in t :clock-resume t)
                  ("w" "org-protocol" entry (file "~/Org-mode/refile.org")
                   "* TODO Review %c
    %U
    " :immediate-finish t))))
    
    ;;(setq org-tag-alist '(("office" . ?o) ("home" . ?h) ("notes" . ?n) ("slide" . ?s)))
    ;; GTD -- end
    
    ;; Only show the last star
    ;;(setq org-hide-leading-stars t)
    
    ;;org mode 自动折行
    (add-to-list 'auto-mode-alist '("\.org\'" . org-mode))
    (add-hook 'org-mode-hook 'turn-on-font-lock)
    (add-hook 'org-mode-hook
              (lambda () (setq truncate-lines nil)))
    
    ;; Remove empty LOGBOOK drawers on clock out
    (defun bh/remove-empty-drawer-on-clock-out ()
      (interactive)
      (save-excursion
        (beginning-of-line 0)
        (org-remove-empty-drawer-at "LOGBOOK" (point))))
    
    (add-hook 'org-clock-out-hook 'bh/remove-empty-drawer-on-clock-out 'append)
    (defun gtd ()
      (interactive)
      (find-file "~/Org-mode/todo.org")
             )
    
    (global-set-key (kbd "<f12>") 'list-bookmarks)
    
    
    (defun insert-current-time ()
      "Insert the current time"
      (interactive "*")
      ;;(insert (format-time-string "%Y/%m/%d %H:%M:%S" (current-time))))
      (insert (format-time-string "%Y-%m-%d" (current-time))))
    ;;(insert (format-time-string "%H:%M:%S" (current-time))))
    (global-set-key "C-xt" 'insert-current-time)
    ;; ============================ Org-mode Configure  END =================================
    
    
    ;; ============================ GTD Configure START ================================
    ;; ============================ GTD Configure END ==================================
    
    
    ;; ============================ Bugzilla Configure END ==================================
    
    ;; ============================ Org-jekyll Configure START ================================
    (add-to-list 'load-path "~/.emacs.d/elpa/org-jekyll-20130508.239/")
    (require 'org-jekyll)
    
    (setq org-publish-project-alist
          '(
    
      ("org-ianbarton"
              ;; Path to your org files.
              :base-directory "~/WorkSpace/dev-github/org/"
              :base-extension "org"
    
              ;; Path to your Jekyll project.
              :publishing-directory "~/WorkSpace/dev-github/jekyll/"
              :recursive t
              :publishing-function org-publish-org-to-html
              :headline-levels 4
              :html-extension "html"
              :body-only t ;; Only export section between <body> </body>
        )
    
        ("org-static-ian"
              :base-directory "~/WorkSpace/dev-github/org/"
              :base-extension "css\|js\|png\|jpg\|gif\|pdf\|mp3\|ogg\|swf\|php"
              :publishing-directory "~/WorkSpace/dev-github/"
              :recursive t
              :publishing-function org-publish-attachment)
    
        ("ian" :components ("org-ianbarton" "org-static-ian"))
    ))
  • 相关阅读:
    Graphviz安装配置
    固定ip
    机器学习基础
    研究生入学感悟
    复试临时练习
    复试临时练习
    Dev-C++回文数遇到的小麻烦
    单例模式
    工厂方法模式
    Spark的checkpoint详解
  • 原文地址:https://www.cnblogs.com/zlzxc/p/6129428.html
Copyright © 2020-2023  润新知