my emacs configuration

modified from https://github.com/flyingmachine/emacs-for-clojure

;;;;
;; Packages
;;;;

;; Define package repositories
(require ‘package)
(add-to-list ‘package-archives
             ‘("marmalade" . "http://marmalade-repo.org/packages/") t)
(add-to-list ‘package-archives
             ‘("tromey" . "http://tromey.com/elpa/") t)
(add-to-list ‘package-archives
             ‘("melpa" . "http://melpa.milkbox.net/packages/") t)

;; (setq package-archives ‘(("gnu" . "http://elpa.gnu.org/packages/")
;;                          ("marmalade" . "http://marmalade-repo.org/packages/")
;;                          ("melpa" . "http://melpa-stable.milkbox.net/packages/")))

;; Load and activate emacs packages. Do this first so that the
;; packages are loaded before you start trying to modify them.
;; This also sets the load path.
(package-initialize)

;; Download the ELPA archive description if needed.
;; This informs Emacs about the latest versions of all packages, and
;; makes them available for download.
(when (not package-archive-contents)
  (package-refresh-contents))

;; The packages you want installed. You can also install these
;; manually with M-x package-install
;; Add in your own as you wish:
(defvar my-packages
  ‘(;; makes handling lisp expressions much, much easier
    ;; Cheatsheet: http://www.emacswiki.org/emacs/PareditCheatsheet
    paredit

    ;; key bindings and code colorization for Clojure
    ;; https://github.com/clojure-emacs/clojure-mode
    clojure-mode

    ;; extra syntax highlighting for clojure
    clojure-mode-extra-font-locking

    ;; integration with a Clojure REPL
    ;; https://github.com/clojure-emacs/cider
    cider

    ;; allow ido usage in as many contexts as possible. see
    ;; customizations/navigation.el line 23 for a description
    ;; of ido
    ido-ubiquitous

    ;; Enhances M-x to allow easier execution of commands. Provides
    ;; a filterable list of possible commands in the minibuffer
    ;; http://www.emacswiki.org/emacs/Smex
    smex

    ;; project navigation
    projectile

    ;; colorful parenthesis matching
    rainbow-delimiters

    ;; edit html tags like sexps
    ;; tagedit

    ;; git integration
    ;;magit
    ))

(dolist (p my-packages)
  (when (not (package-installed-p p))
    (package-install p)))

;; Place downloaded elisp files in ~/.emacs.d/vendor. You‘ll then be able
;; to load them.
;;
;; For example, if you download yaml-mode.el to ~/.emacs.d/vendor,
;; then you can add the following code to this file:
;;
;; (require ‘yaml-mode)
;; (add-to-list ‘auto-mode-alist ‘("\\.yml$" . yaml-mode))
;;
;; Adding this code will make Emacs enter yaml mode whenever you open
;; a .yml file
(add-to-list ‘load-path "~/.emacs.d/vendor")

;; change default start up directory
(setq default-directory "C:/Users/hello/")

;; Go straight to scratch buffer on startup
(setq inhibit-startup-message t)

;; "When several buffers visit identically-named files,
;; Emacs must give the buffers distinct names. The usual method
;; for making buffer names unique adds ‘’, ‘’, etc. to the end
;; of the buffer names (all but one of them).
;; The forward naming method includes part of the file‘s directory
;; name at the beginning of the buffer name
;; https://www.gnu.org/software/emacs/manual/html_node/emacs/Uniquify.html
(require ‘uniquify)
(setq uniquify-buffer-name-style ‘forward)

;; Turn on recent file mode so that you can more easily switch to
;; recently edited files when you first start emacs
(setq recentf-save-file (concat user-emacs-directory ".recentf"))
(require ‘recentf)
(recentf-mode 1)
(setq recentf-max-menu-items 40)

;; ido-mode allows you to more easily navigate choices. For example,
;; when you want to switch buffers, ido presents you with a list
;; of buffers in the the mini-buffer. As you start to type a buffer‘s
;; name, ido will narrow down the list of buffers to match the text
;; you‘ve typed in
;; http://www.emacswiki.org/emacs/InteractivelyDoThings
(ido-mode t)
;; This allows partial matches, e.g. "tl" will match "Tyrion Lannister"
(setq ido-enable-flex-matching t)
;; Turn this behavior off because it‘s annoying
(setq ido-use-filename-at-point nil)
;; Don‘t try to match file across all "work" directories; only match files
;; in the current directory displayed in the minibuffer
(setq ido-auto-merge-work-directories-length -1)
;; Includes buffer names of recently open files, even if they‘re not
;; open now
(setq ido-use-virtual-buffers t)
;; This enables ido in all contexts where it could be useful, not just
;; for selecting buffer and file names
(ido-ubiquitous-mode 1)
;; Shows a list of buffers
(global-set-key (kbd "C-x C-b") ‘ibuffer)

;; Enhances M-x to allow easier execution of commands. Provides
;; a filterable list of possible commands in the minibuffer
;; http://www.emacswiki.org/emacs/Smex
(setq smex-save-file (concat user-emacs-directory ".smex-items"))
(smex-initialize)
(global-set-key (kbd "M-x") ‘smex)

;; projectile everywhere!
(projectile-global-mode)

;; turn on menu bar
(menu-bar-mode 1)

;; Show line numbers
(global-linum-mode)

;; You can uncomment this to remove the graphical toolbar at the top. After
;; awhile, you won‘t need the toolbar.
;; (when (fboundp ‘tool-bar-mode)
;;   (tool-bar-mode -1))

;; Don‘t show native OS scroll bars for buffers because they‘re redundant
(when (fboundp ‘scroll-bar-mode)
  (scroll-bar-mode -1))

;; Color Themes
;; Read http://batsov.com/articles/2012/02/19/color-theming-in-emacs-reloaded/
;; for a great explanation of emacs color themes.
;; https://www.gnu.org/software/emacs/manual/html_node/emacs/Custom-Themes.html
;; for a more technical explanation.
(add-to-list ‘custom-theme-load-path "~/.emacs.d/themes")
(add-to-list ‘load-path "~/.emacs.d/themes")
(load-theme ‘tomorrow-night-bright t)

;; increase font size for better readability
(set-face-attribute ‘default nil :height 120)

;; These settings relate to how emacs interacts with your operating system
(setq ;; makes killing/yanking interact with the clipboard
      x-select-enable-clipboard t

      ;; I‘m actually not sure what this does but it‘s recommended?
      x-select-enable-primary t

      ;; Save clipboard strings into kill ring before replacing them.
      ;; When one selects something in another program to paste it into Emacs,
      ;; but kills something in Emacs before actually pasting it,
      ;; this selection is gone unless this variable is non-nil
      save-interprogram-paste-before-kill t

      ;; Shows all options when running apropos. For more info,
      ;; https://www.gnu.org/software/emacs/manual/html_node/emacs/Apropos.html
      apropos-do-all t

      ;; Mouse yank commands yank at point instead of at click.
      mouse-yank-at-point t)

;; enable cursor blinking
(blink-cursor-mode 1)

;; full path in title bar
(setq-default frame-title-format "%b (%f)")

;; don‘t pop up font menu
(global-set-key (kbd "s-t") ‘(lambda () (interactive)))

;; uncomment to disable bell
;; (setq ring-bell-function ‘ignore)

;; Highlights matching parenthesis
(show-paren-mode 1)

;; Highlight current line
(global-hl-line-mode 1)

;; When you visit a file, point goes to the last place where it
;; was when you previously visited the same file.
;; http://www.emacswiki.org/emacs/SavePlace
(require ‘saveplace)
(setq-default save-place t)
;; keep track of saved places in ~/.emacs.d/places
(setq save-place-file (concat user-emacs-directory "places"))

;; Emacs can automatically create backup files. This tells Emacs to
;; put all backups in ~/.emacs.d/backups. More info:
;; http://www.gnu.org/software/emacs/manual/html_node/elisp/Backup-Files.html
(setq backup-directory-alist `(("." . ,(concat user-emacs-directory
                                               "backups"))))
(setq auto-save-default nil)

;; yay rainbows!
(global-rainbow-delimiters-mode t)

(setq electric-indent-mode 1)

;; For editing lisps
;; Automatically load paredit when editing a lisp file
;; More at http://www.emacswiki.org/emacs/ParEdit
(autoload ‘enable-paredit-mode "paredit" "Turn on pseudo-structural editing of Lisp code." t)
(add-hook ‘emacs-lisp-mode-hook       #‘enable-paredit-mode)
(add-hook ‘eval-expression-minibuffer-setup-hook #‘enable-paredit-mode)
(add-hook ‘ielm-mode-hook             #‘enable-paredit-mode)
(add-hook ‘lisp-mode-hook             #‘enable-paredit-mode)
(add-hook ‘lisp-interaction-mode-hook #‘enable-paredit-mode)
(add-hook ‘scheme-mode-hook           #‘enable-paredit-mode)

;; eldoc-mode shows documentation in the minibuffer when writing code
;; http://www.emacswiki.org/emacs/ElDoc
(add-hook ‘emacs-lisp-mode-hook ‘turn-on-eldoc-mode)
(add-hook ‘lisp-interaction-mode-hook ‘turn-on-eldoc-mode)
(add-hook ‘ielm-mode-hook ‘turn-on-eldoc-mode)

;;;;
;; Clojure
;;;;

;; Enable paredit for Clojure
(add-hook ‘clojure-mode-hook ‘enable-paredit-mode)

;; This is useful for working with camel-case tokens, like names of
;; Java classes (e.g. JavaClassName)
(add-hook ‘clojure-mode-hook ‘subword-mode)

;; A little more syntax highlighting
(require ‘clojure-mode-extra-font-locking)

;;;;
;; Cider
;;;;

;; provides minibuffer documentation for the code you‘re typing into the repl
(add-hook ‘cider-mode-hook ‘cider-turn-on-eldoc-mode)

;; go right to the REPL buffer when it‘s finished connecting
(setq cider-repl-pop-to-buffer-on-connect t)

;; When there‘s a cider error, show its buffer and switch to it
(setq cider-show-error-buffer t)
(setq cider-auto-select-error-buffer t)

;; Where to store the cider history.
(setq cider-repl-history-file "~/.emacs.d/cider-history")

;; Wrap when navigating history.
(setq cider-repl-wrap-history t)

;; enable paredit in your REPL
(add-hook ‘cider-repl-mode-hook ‘paredit-mode)
时间: 2024-08-02 09:22:57

my emacs configuration的相关文章

Emacs 自动补全插件 ycmd

Emacs 自动补全,最好的插件当属 ycmd.以下记录我的安装过程. 1. 安装 ycmd server github 官方地址: https://github.com/Valloric/ycmd - git 克隆 ycmd 到本地 ~/ycmd $ git clone https://github.com/Valloric/ycmd.git ~/ycmd - 安装必要的编译工具和库 $ sudo apt-get install build-essential cmake python-dev

Emacs for Go

In this post I'm going to explore customizing Emacs to make hacking on Go a little more fluid. This is a living document and will probably be updated as I discover new modes and tools. The Emacs modes I currently use are: go-mode, oracle, goflymake,

Emacs for All, All for Emacs

*/--> Emacs for All, All for Emacs Table of Contents 1. How to enable Chinese input in emacs? 2. Is it possible to use version control tools like svn, git, cvs…? 3. How do I make emacs recognize the version-controlled files? 4. How to use latex in em

Emacs 中的coding system

.title { text-align: center; margin-bottom: .2em } .subtitle { text-align: center; font-size: medium; font-weight: bold; margin-top: 0 } .todo { font-family: monospace; color: red } .done { font-family: monospace; color: green } .priority { font-fami

Emacs阅读chm文档

.title { text-align: center; margin-bottom: .2em } .subtitle { text-align: center; font-size: medium; font-weight: bold; margin-top: 0 } .todo { font-family: monospace; color: red } .done { font-family: monospace; color: green } .priority { font-fami

Control rhythmbox inside Emacs

*/--> Control rhythmbox inside Emacs It is until recently that I came across a configuration option that emacs can send shell command to other applications such as rhythmbox, so I created a simple file to make this work inside emacs. The rhythmbox co

Emacs 降魔篇 ——制作 Python IDE

个人的武装配置比较搓.希望大神指正下. 我们先去这里收集主人公闯关道具 -- 昊天塔 emacs for windows:http://ftp.gnu.org/gnu/emacs/windows/ 我使用的是冥界版 24.3. 释放 emacs 的灵压,将其解压在你需要的目录下,在生成的 bin 目录下,点击 addpm.exe, 会在 "C:\Users\Administrator\AppData\Roaming" 目录下生产 ".emacs.d" 子目录. 接着

使用Emacs来编程

.title { text-align: center; margin-bottom: .2em } .subtitle { text-align: center; font-size: medium; font-weight: bold; margin-top: 0 } .todo { font-family: monospace; color: red } .done { font-family: monospace; color: green } .priority { font-fami

Linux 下配置 Python IDE——Emacs

工欲善其事,必先利其器.Python作为高级语言,因为其简介.灵活已经被越来越多的程序员所青睐.在尝试了众多IDE之后,终于找到了自己的挚爱.废话少说,下面开始说一下如何在linux下安装配置Emacs. 1. 安装Emacs sudo apt-get install emacs24 接下来安装pip,很好用的Python包管理工具,用来安装Python模块. sudo apt-get install python-pip #Python2 sudo apt-get install python