(require 'server) ;; Start a server if (server-running-p) does not return t (e.g. if it ;; returns nil or :other) (or (eq (server-running-p) t) (server-start)) ;; PACKAGE (require 'package) (let* ((no-ssl (and (memq system-type '(windows-nt ms-dos)) (not (gnutls-available-p)))) (proto (if no-ssl "http" "https"))) (when no-ssl (warn "\ Your version of Emacs does not support SSL connections, which is unsafe because it allows man-in-the-middle attacks. There are two things you can do about this warning: 1. Install an Emacs version that does support SSL and be safe. 2. Remove this warning from your init file so you won't see it again.")) ;; Comment/uncomment these two lines to enable/disable MELPA and MELPA Stable as desired (add-to-list 'package-archives (cons "melpa" (concat proto "://melpa.org/packages/")) t) ;;(add-to-list 'package-archives (cons "melpa-stable" (concat proto "://stable.melpa.org/packages/")) t) (when (< emacs-major-version 24) ;; For important compatibility libraries like cl-lib (add-to-list 'package-archives (cons "gnu" (concat proto "://elpa.gnu.org/packages/"))))) (package-initialize) ;; OS SETTINGS (when (eq system-type 'gnu/linux) (setq custom-file "~/.emacs.d/bundle/custom_gnu.el")) (when (eq system-type 'windows-nt) (setq custom-file "~/.emacs.d/bundle/custom_win32.el") (add-to-list 'load-path (expand-file-name "~/AppData/Roaming/__secrets")) (cd "~/opt") (when (string= (system-name) "EVG02667NB") (add-to-list 'Info-default-directory-list "~/Info") (setq custom-file "~/.emacs.d/bundle/custom_win32_EVG02667NB.el")) (when (string= (system-name) "XPS-8930"))) ;; CUSTOM_FILE (load custom-file :noerror) ;; DISPLAY SETTINGS ;; General userinterface and appearance (global-font-lock-mode t) ; Color enabled (global-prettify-symbols-mode t) ; Prettify symbols (global-hl-line-mode 1) ; Highlight cursor line (global-whitespace-mode -1) ; Show whitespace globally (show-paren-mode 1) ; Visual matching parens (global-display-line-numbers-mode -1) ; Display line numbers ;; Mode line specific (column-number-mode 1) ; Display column number in the mode line (size-indication-mode -1) ; Display buffer size in the mode line (line-number-mode 1) ; Display line number in the mode line (display-battery-mode -1) ; Display battery status in the mode line (display-time-mode 1) ; Display time in the mode line ;; (load-theme 'nord t) (require 'color-theme-sanityinc-tomorrow) ;; GLOBAL KEYS (global-set-key (kbd "C-c l") 'org-store-link) (global-set-key (kbd "C-c a") 'org-agenda) (global-set-key (kbd "C-c c") 'org-capture) (global-set-key (kbd "C-c b") 'org-switchb) ;; (global-set-key (kbd "C-c C-x m") 'org-pomodoro) (global-set-key (kbd "C-x g") 'magit-status) (global-set-key (kbd "C-x M-g") 'magit-dispatch) (global-set-key (kbd "M-i") 'imenu) (global-set-key (kbd "C-c n") 'newsticker-start) (global-set-key (kbd "M-o") 'ace-window) ;; UTF-8 FTW (prefer-coding-system 'utf-8) (set-default-coding-systems 'utf-8) (set-terminal-coding-system 'utf-8) (set-keyboard-coding-system 'utf-8) (setq default-buffer-file-coding-system 'utf-8) (defalias 'yes-or-no-p 'y-or-n-p) ;; PACKAGES (use-package company :ensure t :init (global-company-mode)) (use-package ivy :ensure t :init (ivy-mode 1)) (use-package nov :ensure t :config (setq nov-text-width 80)) (use-package projectile :ensure t :init (projectile-mode +1)) (define-key projectile-mode-map (kbd "s-p") 'projectile-command-map) (define-key projectile-mode-map (kbd "C-c p") 'projectile-command-map) (use-package elpy :ensure t) (use-package eglot :ensure t :hook ((python-mode . eglot-ensure))) (use-package js2-mode :ensure t :interpreter (("node" . js2-mode)) :bind (:map js2-mode-map ("C-c C-p" . js2-print-json-path)) :mode "\\.\\(js\\|json\\)$" :config (add-hook 'js-mode-hook 'js2-minor-mode) (setq js2-basic-offset 2 js2-highlight-level 3 js2-mode-show-parse-errors nil js2-mode-show-strict-warnings nil)) (use-package web-mode :ensure t :mode "\\.html?\\'" :init (dolist (hook '(emmet-mode ac-emmet-html-setup ac-emmet-css-setup)) (add-hook 'web-mode-hook hook)) :config (setq web-mode-markup-indent-offset 2 web-mode-css-indent-offset 2 web-mode-code-indent-offset 2 web-mode-enable-auto-pairing nil web-mode-enable-auto-closing t web-mode-enable-current-element-highlight t web-mode-enable-current-column-highlight t web-mode-ac-sources-alist '(("css" . (ac-source-css-property ac-source-emmet-css-snippets)) ("html" . (ac-source-emmet-html-aliases ac-source-emmet-html-snippets)))) (add-hook 'web-mode-before-auto-complete-hooks '(lambda () (let ((web-mode-cur-language (web-mode-language-at-pos))) (if (string= web-mode-cur-language "css") (setq emmet-use-css-transform t) (setq emmet-use-css-transform nil)))))) (use-package slime :ensure t :config (setq inferior-lisp-program (executable-find "sbcl"))) (add-to-list 'auto-mode-alist '("\\.epub\\'" . nov-mode)) (use-package org :ensure t :config (setq org-agenda-dim-blocked-tasks nil org-agenda-inhibit-startup nil org-babel-shell-names (quote ("sh" "bash" "csh" "ash" "dash" "ksh" "mksh" "posh")) org-clock-persist t org-confirm-babel-evaluate nil org-html-doctype "html5" org-html-html5-fancy t org-log-done (quote time) org-startup-folded t org-startup-truncated nil org-todo-keywords (quote ((sequence "TODO" "FEEDBACK" "VERIFY" "|" "DONE" "DELEGATED"))) org-use-property-inheritance nil)) (org-clock-persistence-insinuate) ;; HOOKS (add-hook 'diary-display-hook 'fancy-diary-display) (add-hook 'today-visible-calendar-hook 'calendar-mark-today) (add-hook 'write-file-hooks 'delete-trailing-whitespace) (defun me/org-mode () "My custom configuration for 'org-mode'." (olivetti-mode) (olivetti-set-width 82)) ;; (add-hook 'org-mode-hook 'me/org-mode) (add-hook 'org-mode-hook 'turn-on-auto-fill) (add-hook 'rst-mode-hook 'turn-on-orgstruct) (add-hook 'newsticker-mode-hook 'imenu-add-menubar-index) (add-to-list 'auto-mode-alist '("\\.tmpl\\'" . web-mode)) ;; DIARY (setq cal-html-directory "~/Documents/Diary" view-diary-entries-initially t mark-diary-entries-in-calendar t number-of-diary-entries 7 calendar-date-style (quote iso) calendar-week-start-day 1) (setq calendar-intermonth-text (quote (propertize (format "%2d" (car (calendar-iso-from-absolute (calendar-absolute-from-gregorian (list month day year))))) (quote font-lock-face) (quote font-lock-function-name-face)))) (when (string= (system-name) "EVG02667NB") (unless (file-directory-p (expand-file-name "~/Documents")) (let ((docs-path (getenv "DOCS_PATH"))) (setq cal-html-directory (concat docs-path "\\Diary") diary-file (concat docs-path "\\Diary\\diary") timeclock-file (concat docs-path "\\Diary\\timelog"))))) (provide 'calendar-settings) (put 'narrow-to-region 'disabled nil) (put 'narrow-to-page 'disabled nil) ;; SBCL (defun win-set-sbcl () ;; %USERPROFILE%\AppData\Local\Programs\emacs-26.2-x86_64\bin\emacsclientw.exe -c -n -a runemacs.exe ;; (setq inferior-lisp-program (executable-find "sbcl")) (setq sbcl-exe (expand-file-name "~/AppData/Local/Programs/Steel Bank Common Lisp/1.4.14/sbcl.exe") sbcl-core (expand-file-name "~/AppData/Local/Programs/Steel Bank Common Lisp/1.4.14/sbcl.core") inferior-lisp-program "sbcl" slime-lisp-implementations `((sbcl (,sbcl-exe "--core" ,sbcl-core))))) (when (eq system-type 'windows-nt) (win-set-sbcl)) (defun mk-write-mode-enable () (setq olivetti-body-width 73) (setq mode-line-format nil) (olivetti-mode)) (defun mk-write-mode-disable () (setq mode-line-format '(("-" mode-line-mule-info mode-line-modified mode-line-frame-identification mode-line-buffer-identification " " mode-line-position mode-line-modes (which-func-mode ("" which-func-format "--")) (global-mode-string ("--" global-mode-string)) "-%-"))) (olivetti-mode) (defvar mode-line-format-current (symbol-value 'mode-line-format)))