| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253 |
- ;; Requires:
- ;; aspell
- ;; ----------- Default Variables -----------
- ;; Global variables
- (defvar backup-directory (concat user-emacs-directory "backups"))
- (unless (file-exists-p backup-directory)
- (make-directory backup-directory))
- (setq-default inhibit-startup-screen t
- column-number-mode t
- scroll-error-top-bottom t
- show-paren-delay 0.25
- tab-width 4
- indent-tabs-mode nil
- x-select-enable-clipboard t
- backup-directory-alist `(("." . ,backup-directory))
- delete-old-versions t)
- ;; (global-linum-mode)
- ;; Delete selected text when typing (normal editor behavior)
- (delete-selection-mode t)
- (defun mapcar-dot* (f list)
- (loop for (a . b) on list
- collect (funcall f a)
- unless (listp b)
- collect (funcall f b)))
- ;; ------------- Keybindings -------------
- (defun smart-beginning-of-line ()
- "Move point to first non-whitespace character or beginning-of-line.
- Move point to the first non-whitespace character on this line.
- If point was already at that position, move point to beginning of line."
- (interactive "^")
- ;(if (version< "22" emacs-version) (interactive "^") (interactive))
- (let ((oldpos (point)))
- (beginning-of-line-text); goes to first significant character
- ;(back-to-indentation); goes to first non-whitespace
- (and (= oldpos (point))
- (beginning-of-line))))
- (global-set-key [home] 'smart-beginning-of-line)
- (global-set-key (kbd "C-c /") 'comment-or-uncomment-region)
- (global-set-key (kbd "C-c C-k") 'compile)
- ;; ----------- Package Managing -----------
- ;; The package manager
- (require 'package)
- ;; Add package sources
- (setq package-archives '(("gnu" . "https://elpa.gnu.org/packages/")
- ("org" . "https://orgmode.org/elpa/")
- ("melpa" . "https://melpa.org/packages/")
- ("melpa-stable" . "https://stable.melpa.org/packages/"))
- package-archive-priorities '(("melpa" . 1)))
- (package-initialize)
- (unless (package-installed-p 'use-package)
- (package-refresh-contents)
- (package-install 'use-package))
- (require 'use-package)
- (setq use-package-always-ensure t)
- ;; ---------- Use X11 clipboard -----------
- (use-package xclip
- :if (executable-find "xclip")
- :config (xclip-mode 1))
- ;; ---------- Color Themes ----------
- (use-package color-theme
- :init
- ;; TODO: Fixes error about missing directory. Don't know why.
- (unless (file-exists-p "~/.emacs.d/elpa/color-theme-20070910.1007/themes")
- (make-directory "~/.emacs.d/elpa/color-theme-20070910.1007/themes"))
- :config
- (color-theme-initialize))
- (use-package base16-theme
- :requires color-theme
- :config (load-theme 'base16-tomorrow-night t))
- ;; --------- Parentheses Matching ---------
- (show-paren-mode)
- (use-package highlight-parentheses
- :config
- (define-globalized-minor-mode global-highlight-parentheses-mode
- highlight-parentheses-mode
- (lambda ()
- (highlight-parentheses-mode t)))
- (global-highlight-parentheses-mode t))
- (use-package autopair
- :config
- (autopair-global-mode))
- ;; ------------ xTerm Mouse ------------
- ;; Disable because it became annoying, sounds cool though.
- (use-package mouse
- :disabled
- :config
- (xterm-mouse-mode t))
- ;; ----------- Ensime -----------
- ;; Java/Scala featues. Includes:
- ;; * Inferred types
- ;; * Autocomplete
- ;; * Syntax highlighting
- ;; * Jump to source/docs
- ;; * Refactoring
- ;; * Error detection
- (use-package scala-mode
- :mode "\\.scala\\'")
- (use-package company)
- (use-package ensime
- :if (version<= "24.4" emacs-version)
- :requires company
- :hook (scala-mode java-mode)
- :config (setq ensime-startup-notification nil)
- :pin melpa-stable)
- ; --------- C Syntax checker ---------
- (use-package flycheck-irony
- :hook c-mode
- :mode ("\\.c\\'" "\\.h\\'"))
- ;; ------------ Web Mode ------------
- (use-package multi-web-mode
- :init
- (setq mweb-default-major-mode 'html-mode
- mweb-tags '((php-mode "<\\?php\\|<\\? \\|<\\?=" "\\?>")
- (js-mode "<script[^>]*>" "</script>")
- (css-mode "<style[^>]*>" "</style>"))
- mweb-filename-extensions '("php" "htm" "html" "ctp" "phtml" "php4" "php5"))
- ; :mode (mapcar-dot* (format "\\.%s\\'" ext '("php" "htm" "html" "ctp" "phtml" "php4" "php5")))
- :config
- (multi-web-global-mode 1))
- ;; ------------ Git Mode ------------
- (when (version<= "24.4" emacs-version)
- (use-package magit
- :bind ("C-x g" . magit-status)))
- ;; ----------- Rust Mode ------------
- (use-package rust-mode
- :mode ("\\.rs\\'"))
- (use-package rust-playground
- :requires rust-mode)
- (use-package cargo
- :after rust-mode)
- (use-package flycheck-rust
- :after rust-mode)
- ;; ----------- i3 Support ----------
- (use-package i3wm
- :disabled
- :if (equal (getenv "DESKTOP_SESSION") "i3"))
- ;; --------- Racket Mode ----------
- (use-package racket-mode)
- ;; ---------- C# Mode -------------
- (use-package csharp-mode
- :if (version<= "24.4" emacs-version)
- :mode ("\\.cs\\'"))
- ;; ------- Markdown Mode ----------
- (when (version<= "24.4" emacs-version)
- (use-package markdown-mode
- :mode ("\\.markdown\\'" "\\.md\\'")))
- ;; ---- StackOverflow Client ------
- (use-package sx
- :disabled)
- ;; -------- Spellcheck ------------
- (defun flyspell-detect-ispell-args (&optional run-together)
- (cond ((string-match "aspell$" ispell-program-name)
- (append (list "--sug-mode=ultra" "--lang=en_US") (if run-together '("--run-together" "--run-together-limit=5" "--run-together-min=2"))))
- ((string-match "hunspell$" ispell-program-name)
- "-d en_US")))
- (use-package flyspell-correct-popup
- :bind ("M-s" . ispell-word)
- :hook ((text-mode . flyspell-mode)
- (prog-mode . flyspell-prog-mode)
- ((flyspell-mode flyspell-prog-mode) . flyspell-buffer))
- :config
- (cond
- ((executable-find "aspell")
- (setq ispell-program-name "aspell"))
- ((executable-find "hunspell")
- (setq ispell-program-name "hunspell")
- (setq ispell-local-dictionary "en_US")
- (setq ispell-local-dictionary-alist '(("en_US" "[[:alpha:]]" "[^[:alpha:]]" "[']" nil ("-d" "en_US") nil utf-8))))
- (t
- (setq ispell-program-name nil)))
- (setq-default ispell-extra-args (flyspell-detect-ispell-args t))
- (setq-default flyspell-issue-message-flag nil))
- ;; -------- REST Client ---------
- (use-package restclient
- :commands (restclient-copy-curl-command
- restclient-http-send-current
- restclient-http-send-current-raw
- restclient-http-send-current-stay-in-window
- restclient-jump-next
- restclient-jump-prev
- restclient-mark-current
- restclient-mode
- restclient-narrow-to-current
- restclient-outline-mode
- restclient-toggle-body-visibility
- restclient-toggle-body-visibility-or-indent))
- ;; ------- Highlight TODO -------
- (use-package hl-todo
- :commands (hl-todo-mode
- hl-todo-next
- hl-todo-occur
- hl-todo-previous)
- :hook (prog-mode . hl-todo-mode))
- ;; ---- Printer Integration -----
- (use-package printing
- :bind ("M-p" . print-buffer)
- :commands (print-buffer
- print-region
- lpr-buffer
- lpr-customize
- lpr-region)
- :config
- (pr-update-menus 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.
- '(package-selected-packages
- (quote
- (company xclip hl-todo comment-tags restclient markdown-mode autopair highlight-parentheses flyspell-correct-popup rust-mode rust-playground slime-volleyball use-package multi-web-mode magit ensime color-theme base16-theme))))
- (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.
- )
|