diff options
Diffstat (limited to 'configs/rcs')
-rw-r--r-- | configs/rcs/emacs.d/init.el | 254 |
1 files changed, 186 insertions, 68 deletions
diff --git a/configs/rcs/emacs.d/init.el b/configs/rcs/emacs.d/init.el index 7f4ae6c..61dbd80 100644 --- a/configs/rcs/emacs.d/init.el +++ b/configs/rcs/emacs.d/init.el @@ -1,6 +1,11 @@ ;; Initialise the package system first of all. (require 'package) -(add-to-list 'package-archives '("melpa" . "http://melpa.org/packages/") t) + +(setq package-archives + '(("gnu" . "https://elpa.gnu.org/packages/") + ("melpa" . "https://melpa.org/packages/") + ("elpy" . "https://jorgenschaefer.github.io/packages/") + ("org" . "http://orgmode.org/elpa/"))) (defvar fcuny-path-emacs-var (expand-file-name "var" user-emacs-directory) "Path to some files for Emacs.") @@ -8,6 +13,9 @@ (defvar fcuny-path-emacs-elpa (expand-file-name "elpa" fcuny-path-emacs-var) "Path to elpa's local files.") +(defvar fcuny-projects-ignored-dirs '(".git" ".svn" "target" "elpa") + "Ignore the following directories when browsing with projectile.") + ;; where to store the packages (setq package-user-dir fcuny-path-emacs-elpa) @@ -24,9 +32,6 @@ (defvar fcuny-path-home (getenv "HOME") "Path to the user's home directory.") -(defvar fcuny-projects-ignored-dirs '(".git" ".svn" "target" "elpa") - "Ignore the following directories when browsing with projectile.") - (defvar fcuny-bookmarks-dir (expand-file-name "bookmarks" fcuny-path-emacs-var) "Path to save the bookmarks") @@ -63,28 +68,25 @@ ;; alias yes-or-no to y-or-n (fset 'yes-or-no-p 'y-or-n-p) -(setq auto-save-default nil) ;; don't auto save files -(setq auto-save-list-file-prefix nil) ;; no backups -(setq create-lockfiles nil) ;; don't use a lock file -(setq custom-file fcuny-custom-settings) ;; where to save custom settings -(setq make-backup-files nil) ;; really no backups -(setq minibuffer-message-timeout 0.5) ;; How long to display an echo-area message -(setq next-screen-context-lines 5) ;; scroll 5 lines at a time -(setq require-final-newline t) ;; ensure newline exists at the end of the file -(setq ring-bell-function 'ignore) ;; really no bell -(setq tab-always-indent 'complete) ;; when using TAB, always indent -(setq visible-bell nil) ;; no bell -(setq column-number-mode t) ;; show column number in the mode line -(setq use-package-always-ensure t) ;; always ensure packages are present -(setq-default indent-tabs-mode nil) ;; turn off tab indentation -(setq-default cursor-type 'hbar) ;; cursor is a horizontal bar - -(set-face-attribute 'default nil :height 130 :weight 'normal :width 'normal) - -(fringe-mode '(8 . 8)) ;; size of the fringe - -(global-set-key (kbd "M-j") 'join-line) ;; Remap join-line to M-j where it's easier to get to. -(global-set-key (kbd "<s-return>") 'toggle-frame-fullscreen) ;; Shift-Return switch to full-screen +(setq auto-save-default nil) ;; don't auto save files +(setq auto-save-list-file-prefix nil) ;; no backups +(setq create-lockfiles nil) ;; don't use a lock file +(setq custom-file fcuny-custom-settings) ;; where to save custom settings +(setq make-backup-files nil) ;; really no backups +(setq minibuffer-message-timeout 0.5) ;; How long to display an echo-area message +(setq next-screen-context-lines 5) ;; scroll 5 lines at a time +(setq require-final-newline t) ;; ensure newline exists at the end of the file +(setq ring-bell-function 'ignore) ;; really no bell +(setq tab-always-indent 'complete) ;; when using TAB, always indent +(setq visible-bell nil) ;; no bell +(setq column-number-mode t) ;; show column number in the mode line +(setq use-package-always-ensure t) ;; always ensure packages are present +(setq-default indent-tabs-mode nil) ;; turn off tab indentation +(setq-default cursor-type 'hbar) ;; cursor is a horizontal bar +(setq bookmark-default-file fcuny-bookmarks-dir) ;; where to save bookmarks +(setq bookmark-save-flag 1) ;; save bookmarks when emacs qui + +(fringe-mode '(8 . 8)) ;; size of the fringe (custom-set-variables '(tool-bar-mode nil) @@ -96,9 +98,19 @@ '(inhibit-startup-message t) '(inhibit-startup-echo-area-message t)) -;; when using darwin, I don't want to use the native fullscreen mode (it opens a new workspace) -(when (eq system-type 'darwin) - (setq ns-use-native-fullscreen nil)) +(use-package personal + :ensure nil + :bind (("M-j" . join-line) + ("C-c m m" . emacs-toggle-size))) + +(use-package recentf + :commands (recentf-mode + recentf-add-file + recentf-apply-filename-handlers) + :config + (recentf-mode 1) + (setq recentf-max-saved-items 500 + recentf-save-file (expand-file-name "var/recentf" user-emacs-directory))) (use-package auto-package-update :custom @@ -108,10 +120,12 @@ :hook (after-init . auto-package-update-maybe)) -(use-package bookmark - :custom - (bookmark-default-file fcuny-bookmarks-dir) - (bookmark-save-flag 1)) +(use-package beacon + :ensure t + :diminish + :commands beacon-mode + :config + (beacon-mode t)) (use-package midnight :config @@ -123,25 +137,14 @@ (setq auto-revert-verbose nil) (global-auto-revert-mode t)) -(use-package recentf - :config - (setq recentf-save-file (expand-file-name "var/recentf" user-emacs-directory))) - (use-package server - :if window-system - :init - (add-hook 'after-init-hook 'server-start)) + :no-require + :hook (after-init . server-start)) (use-package hl-line :config (global-hl-line-mode t)) -(use-package whitespace - :custom - (whitespace-style '(face trailing)) - (show-trailing-whitespace t) - :hook (whitespace-mode)) - (use-package ag :bind (:map ag-mode-map ("p" . compilation-previous-error) @@ -156,7 +159,8 @@ (use-package dired :ensure nil :defer t - :bind ("C-x C-d" . dired) + :bind (("C-x C-d" . dired)) + :diminish dired-omit-mode :init (setq-default dired-dwim-target t) (setq dired-recursive-deletes 'always) @@ -165,9 +169,23 @@ (let ((gls (executable-find "/opt/twitter/bin/gls"))) (when gls (setq insert-directory-program gls)))) +(use-package dired-toggle + :bind ("C-c ~" . dired-toggle) + :preface + (defun my-dired-toggle-mode-hook () + (interactive) + (visual-line-mode 1) + (setq-local visual-line-fringe-indicators '(nil right-curly-arrow)) + (setq-local word-wrap nil)) + :hook (dired-toggle-mode . my-dired-toggle-mode-hook)) + (use-package ibuffer :bind ("C-x C-b" . ibuffer)) +(use-package magit + :bind (("C-x g" . magit-status)) + :hook (magit-mode . hl-line-mode)) + (use-package ispell :config (when (executable-find "aspell") @@ -189,13 +207,41 @@ (unless (getenv var) (exec-path-from-shell-copy-env var))))) -(electric-pair-mode 1) - -(use-package paren +(use-package counsel + :ensure t + :after (projectile ivy) + :bind + (("M-x" . counsel-M-x) + ("C-s" . counsel-grep-or-swiper) + ("C-x C-f" . counsel-find-file) + ("C-x C-r" . counsel-recentf) + ("C-c f" . counsel-git) + ("C-c s" . counsel-git-grep) + ("C-c /" . counsel-ag)) :custom - (show-paren-delay 0) + (counsel-find-file-at-point t) :config - (show-paren-mode 1)) + (use-package swiper :ensure t) + (use-package counsel-projectile + :ensure t + :config + (counsel-projectile-mode))) + +(use-package projectile + :ensure t + :diminish projectile-mode + :bind-keymap ("C-c p" . projectile-command-map) + :init + (add-hook 'after-init-hook #'projectile-mode) + :config + (setq projectile-switch-project-action 'projectile-dired + projectile-enable-caching t + projectile-completion-system 'ivy + projectile-known-projects-file (expand-file-name "var/projectile-bookmarks.eld" user-emacs-directory) + projectile-cache-file (expand-file-name "var/projectile.cache" user-emacs-directory) + projectile-globally-ignored-directories (append fcuny-projects-ignored-dirs + projectile-globally-ignored-directories) + projectile-globally-ignored-files (append projectile-globally-ignored-files))) (use-package lisp-mode :ensure f @@ -234,19 +280,27 @@ (add-hook 'sh-mode-hook 'set-sh-mode-indent) (add-hook 'after-save-hook 'executable-make-buffer-file-executable-if-script-p)) +(use-package docker + :bind ("C-c d" . docker) + :diminish) + +(use-package docker-compose-mode + :mode "docker-compose.*\.yml\\'") + +(use-package docker-tramp + :after tramp + :defer 5) + (use-package dockerfile-mode - :ensure t) + :mode "Dockerfile[a-zA-Z.-]*\\'") -(use-package puppet-mode - :ensure t - :mode ("\\.pp\\'" . puppet-mode)) +(use-package gitconfig-mode + :defer 5) + +(use-package puppet-mode :ensure t) (use-package yaml-mode - :ensure t - :after (flyspell) - :mode (("\\.yml?\\'" . yaml-mode) - ("\\.yaml?\\'" . yaml-mode)) - :hook ((yaml-mode . flyspell-prog-mode))) + :ensure t) (use-package json-mode :ensure t @@ -259,14 +313,78 @@ (if (fc/check-work-machine-p) (add-to-list 'auto-mode-alist '("\\.workflow$" . json-mode)))) -(use-package thrift - :ensure t - :after (flyspell) - :custom - (thrift-indent-level 2) - :hook ((thrift . flyspell-prog-mode))) - (use-package protobuf-mode :ensure t :after (flyspell) :hook ((protobuf-mode . flyspell-prog-mode))) + +(use-package whitespace + :custom + (whitespace-style '(face trailing)) + (show-trailing-whitespace t) + :hook (whitespace-mode)) + +(use-package electric-pair-mode + :ensure nil + :commands electric-pair-mode + :init (add-hook 'prog-mode-hook 'electric-pair-mode)) + +(use-package paren + :custom + (show-paren-delay 0) + :config + (show-paren-mode 1)) + +;; layout +;; when using darwin, I don't want to use the native fullscreen mode (it opens a new workspace) +(when (eq system-type 'darwin) + (setq ns-use-native-fullscreen nil)) + +(defconst display-name + (pcase (display-pixel-width) + (`1440 'macbook-pro))) + +(defconst emacs-min-top 23) + +(defconst emacs-min-left + (pcase display-name + (`macbook-pro 200))) + +(defconst emacs-min-height + (pcase display-name + (`macbook-pro 47))) + +(defconst emacs-min-width + (pcase display-name + (`macbook-pro 100))) + +(defconst emacs-min-font + (pcase display-name + (_ "-*-DejaVu Sans Mono-normal-normal-normal-*-18-*-*-*-m-0-iso10646-1"))) + +(defun emacs-min () + (interactive) + (cl-flet ((set-param (p v) (set-frame-parameter (selected-frame) p v))) + (set-param 'fullscreen nil) + (set-param 'vertical-scroll-bars nil) + (set-param 'horizontal-scroll-bars nil)) + (set-frame-position (selected-frame) emacs-min-left emacs-min-top) + (set-frame-height (selected-frame) emacs-min-height) + (set-frame-width (selected-frame) emacs-min-width) + (set-frame-font emacs-min-font)) + +(defun emacs-max () + (interactive) + (cl-flet ((set-param (p v) (set-frame-parameter (selected-frame) p v))) + (set-param 'fullscreen 'fullboth) + (set-param 'vertical-scroll-bars nil) + (set-param 'horizontal-scroll-bars nil)) + (set-frame-font emacs-min-font)) + +(defun emacs-toggle-size () + (interactive) + (if (alist-get 'fullscreen (frame-parameters)) + (emacs-min) + (emacs-max))) + +(add-hook 'emacs-startup-hook #'emacs-min t) |