diff options
author | Jesús <heckyel@hyperbola.info> | 2018-07-29 20:12:28 -0500 |
---|---|---|
committer | Jesús <heckyel@hyperbola.info> | 2018-07-29 20:12:28 -0500 |
commit | d172fb6e48fe4e342f0d94eade1b108bed91cc00 (patch) | |
tree | 032559458aeda1cf45e9fc0f6561d742237b5b03 /lisp | |
download | emacs-personal-d172fb6e48fe4e342f0d94eade1b108bed91cc00.tar.lz emacs-personal-d172fb6e48fe4e342f0d94eade1b108bed91cc00.tar.xz emacs-personal-d172fb6e48fe4e342f0d94eade1b108bed91cc00.zip |
Initial commit
Diffstat (limited to 'lisp')
-rw-r--r-- | lisp/init-editing-utils.el | 31 | ||||
-rw-r--r-- | lisp/init-elpa.el | 48 | ||||
-rw-r--r-- | lisp/init-flycheck.el | 2 | ||||
-rw-r--r-- | lisp/init-gui.el | 59 | ||||
-rw-r--r-- | lisp/init-markdown.el | 35 | ||||
-rw-r--r-- | lisp/init-modeline.el | 46 | ||||
-rw-r--r-- | lisp/init-nlinum.el | 76 | ||||
-rw-r--r-- | lisp/init-pkgbuild.el | 6 | ||||
-rw-r--r-- | lisp/init-theme.el | 10 | ||||
-rw-r--r-- | lisp/init-utils.el | 24 | ||||
-rw-r--r-- | lisp/lib/myemacs.el | 18 | ||||
-rw-r--r-- | lisp/lib/sachachua.el | 39 |
12 files changed, 394 insertions, 0 deletions
diff --git a/lisp/init-editing-utils.el b/lisp/init-editing-utils.el new file mode 100644 index 0000000..0319519 --- /dev/null +++ b/lisp/init-editing-utils.el @@ -0,0 +1,31 @@ +;; Delete trailing whitespace before saving fil +(add-hook 'before-save-hook 'delete-trailing-whitespace) + +;; Automatic pairs open symbols (, {, [... +;; Disable for default. +;; Uncomment the next 4 lines if you want to enable the pairs-mode +;;(when (fboundp 'electric-pair-mode) +;; (electric-pair-mode)) +;;(when (eval-when-compile (version< "24.4" emacs-version)) +;; (electric-indent-mode 1)) + +;;---------------------------------------------------------------------------- +;; Show matching parens +;;---------------------------------------------------------------------------- +(show-paren-mode 1) + +;;---------------------------------------------------------------------------- +;; More useful things - only one line +;;---------------------------------------------------------------------------- +(set-default 'truncate-lines t) +(setq show-trailing-whitespace nil) +(setq site-lisp-path (file-name-as-directory (expand-file-name "site-lisp/" user-emacs-directory))) + +;;---------------------------------------------------------------------------- +;; Some basic preferences +;;---------------------------------------------------------------------------- +(setq-default + indent-tabs-mode nil) + +(myemacs/elapsed-time) +(provide 'init-editing-utils) diff --git a/lisp/init-elpa.el b/lisp/init-elpa.el new file mode 100644 index 0000000..1a889b8 --- /dev/null +++ b/lisp/init-elpa.el @@ -0,0 +1,48 @@ +;;; Find and load the correct package.el +;; When switching between Emacs 23 and 24, we always use the bundled package.el in Emacs 24 +(let ((package-el-site-lisp-dir + (expand-file-name "site-lisp/package" user-emacs-directory))) + (when (and (file-directory-p package-el-site-lisp-dir) + (> emacs-major-version 23)) + (message "Removing local package.el from load-path to avoid shadowing bundled version") + (setq load-path (remove package-el-site-lisp-dir load-path)))) + +(require 'package) + +;; Repositories +;; ================ +(setq package-archives + '(("melpa" . "https://melpa.org/packages/") + ;;("melpa-stable" . "https://stable.melpa.org/packages/") + ("gnu" . "https://elpa.gnu.org/packages/") + ("org" . "https://orgmode.org/elpa/"))) + +(setq package-archive-priorities + '(("melpa" . 4) + ("melpa-stable" . 0) + ("gnu" . 1) + ("org" . 3))) +;; ================= + +;;; Find packages if not installed +;; ================================ +;;; On-demand installation of packages +(defun require-package (package &optional min-version no-refresh) + "Install given PACKAGE, optionally requiring MIN-VERSION. +If NO-REFRESH is non-nil, the available package lists will not be +re-downloaded in order to locate PACKAGE." + (if (package-installed-p package min-version) + t + (if (or (assoc package package-archive-contents) no-refresh) + (if (boundp 'package-selected-packages) + ;; Record this as a package the user installed explicitly + (package-install package nil) + (package-install package)) + (progn + (package-refresh-contents) + (require-package package min-version t))))) +;; ================================ + +(package-initialize) + +(provide 'init-elpa) diff --git a/lisp/init-flycheck.el b/lisp/init-flycheck.el new file mode 100644 index 0000000..a3f6c37 --- /dev/null +++ b/lisp/init-flycheck.el @@ -0,0 +1,2 @@ +(require-package 'flycheck) +(provide 'init-flycheck) diff --git a/lisp/init-gui.el b/lisp/init-gui.el new file mode 100644 index 0000000..ccc0786 --- /dev/null +++ b/lisp/init-gui.el @@ -0,0 +1,59 @@ +;;----------------------- +;; Remove some GUI stuff +;;----------------------- +(setq use-file-dialog nil) +(setq use-dialog-box nil) +(setq inhibit-startup-screen t) +(setq inhibit-startup-echo-area-message t) +(tool-bar-mode 0) +(set-scroll-bar-mode nil) +(menu-bar-mode 0) +(setq make-backup-files nil) + +;;---------------------------------------------------------------------------- +;; Editor configuration +;;---------------------------------------------------------------------------- +(setq indicate-empty-lines t) + +(let ((no-border '(internal-border-width . 0))) + (add-to-list 'default-frame-alist no-border) + (add-to-list 'initial-frame-alist no-border)) + +(setq frame-title-format + '((:eval (if (buffer-file-name) + (abbreviate-file-name (buffer-file-name)) + "%b")))) +;; Non-zero values for `line-spacing' can mess up ansi-term and co, +;; so we zero it explicitly in those cases. +(add-hook 'term-mode-hook + (lambda () + (setq line-spacing 0))) + +;; Font theme (Monospace, or DejaVu Sans Mono if Monospace is not +;; present) +(condition-case nil + (set-frame-font "Monospace-9") + (error (set-frame-font "DejaVu Sans Mono-10"))) + +;;---------------------------------------------------------------------------- +;; Configure keys +;;---------------------------------------------------------------------------- +(global-unset-key (kbd "C-z")) ; Stops C-z from minimizing window +(global-set-key (kbd "M-<down>") (lambda () (interactive) (sanityinc/adjust-opacity nil -2))) ; M-down less visibility +(global-set-key (kbd "M-<up>") (lambda () (interactive) (sanityinc/adjust-opacity nil 2))) ; M-up more visibility +(global-set-key (kbd "M-0") (lambda () (interactive) (modify-frame-parameters nil '((alpha . 100))))) ; M-0 standard visibility +(global-set-key (kbd "<f11>") 'myemacs/toggle-fullscreen) ; F11 FullScreen +(global-set-key (kbd "s-C-+") 'sacha/increase-font-size) ; C-+ increase font size +(global-set-key (kbd "s-C--") 'sacha/decrease-font-size) ; C-- decrease font size +(global-set-key (kbd "<f12>") 'revert-buffer-no-confirm) +(global-set-key (kbd "s-h") 'global-hl-line-mode) ; Highlight current line + + +;;---------------------------------------------------------------------------- +;; clock +;;---------------------------------------------------------------------------- + +(setq display-time-day-and-date t) +(display-time) + +(provide 'init-gui) diff --git a/lisp/init-markdown.el b/lisp/init-markdown.el new file mode 100644 index 0000000..47ca803 --- /dev/null +++ b/lisp/init-markdown.el @@ -0,0 +1,35 @@ +;;---------------------------------------------------------------------------- +;; Markdown mode +;;---------------------------------------------------------------------------- +(require-package 'markdown-mode) + +(autoload 'markdown-mode "markdown-mode" + "Major mode for editing Markdown files" t) +(add-to-list 'auto-mode-alist '("\\.markdown\\'" . markdown-mode)) +(add-to-list 'auto-mode-alist '("\\.md\\'" . markdown-mode)) + +;;---------------------------------------------------------------------------- +;; Generated HTML 5 and UTF-8 with Markdown +;;---------------------------------------------------------------------------- +(eval-after-load "markdown-mode" + '(defalias 'markdown-add-xhtml-header-and-footer 'as/markdown-add-xhtml-header-and-footer)) + +(defun as/markdown-add-xhtml-header-and-footer (title) + "Wrap XHTML header and footer with given TITLE around current buffer." + (goto-char (point-min)) + (insert "<!DOCTYPE html>\n" + "<html>\n" + "<head>\n<title>") + (insert title) + (insert "</title>\n") + (insert "<meta charset=\"utf-8\" />\n") + (when (> (length markdown-css-paths) 0) + (insert (mapconcat 'markdown-stylesheet-link-string markdown-css-paths "\n"))) + (insert "\n</head>\n\n" + "<body>\n\n") + (goto-char (point-max)) + (insert "\n" + "</body>\n" + "</html>\n")) + +(provide 'init-markdown) diff --git a/lisp/init-modeline.el b/lisp/init-modeline.el new file mode 100644 index 0000000..b0db030 --- /dev/null +++ b/lisp/init-modeline.el @@ -0,0 +1,46 @@ +;;---------------------------------------------------------------------------- +;; Modeline configuration +;;---------------------------------------------------------------------------- + +(require-package 'smart-mode-line) +(require-package 'smart-mode-line-powerline-theme) +(require-package 'sml-modeline) +;; Show number of occurrences when searching +(require-package 'anzu) + +(setq sml/theme 'powerline) + +(setq sml/no-confirm-load-theme t) +(setq sml/shorten-modes t) +;; Show EOL mode +(setq sml/show-eol t) +;; Show remote buffers +(setq sml/show-remote t) + +(sml/setup) +(add-to-list 'sml/replacer-regexp-list '("^~/Proyectos/git/" ":Git:") t) +(add-to-list 'sml/replacer-regexp-list '("^~/www/" ":www:") t) + +(sml-modeline-mode t) + +(custom-set-variables + '(anzu-search-threshold 1000) + '(anzu-replace-threshold 1000) + '(anzu-deactivate-region t) + '(anzu-input-idle-delay 0.1) + '(anzu-replace-to-string-separator " => ")) +(global-anzu-mode +1) +(set-face-attribute 'anzu-mode-line nil + :foreground "yellow" :weight 'bold) + +(define-key isearch-mode-map [remap isearch-query-replace] #'anzu-isearch-query-replace) +(define-key isearch-mode-map [remap isearch-query-replace-regexp] #'anzu-isearch-query-replace-regexp) + +;;---------------------------------------------------------------------------- +;; Keyboard shortcuts in Anzu Mode +;;---------------------------------------------------------------------------- +(global-set-key (kbd "M-%") 'anzu-query-replace) +(global-set-key (kbd "s-<SPC>") 'anzu-query-replace) + +(myemacs/elapsed-time) +(provide 'init-modeline) diff --git a/lisp/init-nlinum.el b/lisp/init-nlinum.el new file mode 100644 index 0000000..0e61eab --- /dev/null +++ b/lisp/init-nlinum.el @@ -0,0 +1,76 @@ +;;---------------------------------------------------------------------------- +;; Line numbers +;;---------------------------------------------------------------------------- +;; Linum snippets from: https://www.emacswiki.org/emacs/LineNumbers +(require-package 'nlinum) +(require 'linum) +(require 'hl-line) + +(defface my-linum-hl + `((t :inherit linum :background ,(face-background 'hl-line nil t))) + "Face for the current line number." + :group 'linum) +(add-hook 'linum-before-numbering-hook 'my-linum-get-format-string) + +(defun my-linum-get-format-string () + (let* ((width (1+ (length (number-to-string + (count-lines (point-min) (point-max)))))) + (format (concat "%" (number-to-string width) "d \u2502"))) + (setq my-linum-format-string format))) + +(defvar my-linum-current-line-number 0) + +(defun my-linum-format (line-number) + (propertize (format my-linum-format-string line-number) 'face + (if (eq line-number my-linum-current-line-number) + 'my-linum-hl + 'linum))) +(setq linum-format 'my-linum-format) + +(defadvice linum-update (around my-linum-update) + (let ((my-linum-current-line-number (line-number-at-pos))) + ad-do-it)) +(ad-activate 'linum-update) + +(defvar *linum-mdown-line* nil) + +(defun line-at-click () + (save-excursion + (let ((click-y (cdr (cdr (mouse-position)))) + (line-move-visual-store line-move-visual)) + (setq line-move-visual t) + (goto-char (window-start)) + (next-line (1- click-y)) + (setq line-move-visual line-move-visual-store) + ;; If you are using tabbar substitute the next line with + ;; (line-number-at-pos)))) + (1+ (line-number-at-pos))))) + +(defun md-select-linum () + (interactive) + (goto-line (line-at-click)) + (set-mark (point)) + (setq *linum-mdown-line* + (line-number-at-pos))) + +(defun mu-select-linum () + (interactive) + (when *linum-mdown-line* + (let (mu-line) + ;; (goto-line (line-at-click)) + (setq mu-line (line-at-click)) + (goto-line (max *linum-mdown-line* mu-line)) + (set-mark (line-end-position)) + (goto-line (min *linum-mdown-line* mu-line)) + (setq *linum-mdown* + nil)))) + +(global-set-key (kbd "<left-margin> <down-mouse-1>") 'md-select-linum) +(global-set-key (kbd "<left-margin> <mouse-1>") 'mu-select-linum) +(global-set-key (kbd "<left-margin> <drag-mouse-1>") 'mu-select-linum) + +(add-hook 'find-file-hook (lambda () (linum-mode 1))) +(linum-mode) +(setq global-linum-mode t) + +(provide 'init-nlinum) diff --git a/lisp/init-pkgbuild.el b/lisp/init-pkgbuild.el new file mode 100644 index 0000000..10ce393 --- /dev/null +++ b/lisp/init-pkgbuild.el @@ -0,0 +1,6 @@ +(require-package 'pkgbuild-mode) + +(autoload 'pkgbuild-mode "pkgbuild-mode.el" "PKGBUILD mode." t) +(setq auto-mode-alist (append '(("/PKGBUILD$" . pkgbuild-mode)) auto-mode-alist)) + +(provide 'init-pkgbuild) diff --git a/lisp/init-theme.el b/lisp/init-theme.el new file mode 100644 index 0000000..f3407dc --- /dev/null +++ b/lisp/init-theme.el @@ -0,0 +1,10 @@ +(require-package 'sublime-themes) +(load-theme 'spolsky t) + +;; Fix linum current-line highlight. Doesn't looks good with this theme +(defface my-linum-hl + '((t :background "gray30" :foreground "gold")) + "Face for the currently active Line number" + :group 'linum) + +(provide 'init-theme) diff --git a/lisp/init-utils.el b/lisp/init-utils.el new file mode 100644 index 0000000..64dadc6 --- /dev/null +++ b/lisp/init-utils.el @@ -0,0 +1,24 @@ +;; Loads functions from libs +(defun load-directory (dir) + (let ((load-it (lambda (f) + (load-file (concat (file-name-as-directory dir) f))) + )) + (mapc load-it (directory-files dir nil "\\.el$")))) + +;; Load lib functions +(load-directory (expand-file-name "~/.emacs.d/lisp/lib/" user-emacs-directory)) + +;; This is borrowed from https://github.com/purcell/emacs.d/blob/master/lisp/init-utils.el by Steve Purcell but I have added some stuff. + +(if (fboundp 'with-eval-after-load) + (defalias 'after-load 'with-eval-after-load) + (defmacro after-load (feature &rest body) + "After FEATURE is loaded, evaluate BODY." + (declare (indent defun)) + '(eval-after-load ,feature + '(progn ,@body)))) + +;; Elapsed time +(myemacs/elapsed-time) + +(provide 'init-utils) diff --git a/lisp/lib/myemacs.el b/lisp/lib/myemacs.el new file mode 100644 index 0000000..6846bdc --- /dev/null +++ b/lisp/lib/myemacs.el @@ -0,0 +1,18 @@ +;;---------------------------------------------------------------------------- +;; Some cool functions +;;---------------------------------------------------------------------------- +;; These functions are made by me (Quitter: @heckyel) or +;; heavily modified by me + +;;---------------------------------------------------------------------------- +;; Toggles fullscreen +;;---------------------------------------------------------------------------- +(defun myemacs/toggle-fullscreen () + (interactive) + (x-send-client-message nil 0 nil "_NET_WM_STATE" 32 + '(2 "_NET_WM_STATE_FULLSCREEN" 0))) + +(defun myemacs/elapsed-time () + (let ((elapsed (float-time (time-subtract (current-time) + emacs-start-time)))) + (message "[STARTUP] Loading %s ... done (%.3fs)" load-file-name elapsed)))
\ No newline at end of file diff --git a/lisp/lib/sachachua.el b/lisp/lib/sachachua.el new file mode 100644 index 0000000..c862223 --- /dev/null +++ b/lisp/lib/sachachua.el @@ -0,0 +1,39 @@ +;; Increase-decrease functions from Sacha Chua +(defun sacha/increase-font-size () + (interactive) + (set-face-attribute 'default + nil + :height + (ceiling (* 1.10 + (face-attribute 'default :height))))) +(defun sacha/decrease-font-size () + (interactive) + (set-face-attribute 'default + nil + :height + (floor (* 0.9 + (face-attribute 'default :height))))) + +;; Not original from Sacha. Taken from: http://emacsredux.com/blog/2013/05/22/smarter-navigation-to-the-beginning-of-a-line/ +(defun sacha/smarter-move-beginning-of-line (arg) + "Move point back to indentation of beginning of line. + +Move point to the first non-whitespace character on this line. +If point is already there, move to the beginning of the line. +Effectively toggle between the first non-whitespace character and +the beginning of the line. + +If ARG is not nil or 1, move forward ARG - 1 lines first. If +point reaches the beginning or end of the buffer, stop there." + (interactive "^p") + (setq arg (or arg 1)) + + ;; Move lines first + (when (/= arg 1) + (let ((line-move-visual nil)) + (forward-line (1- arg)))) + + (let ((orig-point (point))) + (back-to-indentation) + (when (= orig-point (point)) + (move-beginning-of-line 1)))) |