.emacs-defs
author Oleksandr Gavenko <gavenkoa@gmail.com>
Mon, 25 Dec 2023 20:15:49 +0200
changeset 1772 d97be992a1f9
parent 1717 3c60aeba5004
permissions -rw-r--r--
Introduced Org state FAILED.

;; -*- mode: emacs-lisp; coding: utf-8; fill-column: 78; no-byte-compile: t; -*-

(defvar my-profiler-enabled nil
  "Switch for enabling startup profiling.

Put value to '~/.emacs.d/.emacs-pre' which isn't overridden on installation.")

(defvar my-lisp-usr-home-dir
  (expand-file-name "~/usr/share/emacs/site-lisp")
  "There is a place for additional lisp packages installed via 'DIST=~/usr make install'.")

(defvar my-lisp-dir
  (expand-file-name (concat user-emacs-directory "mylisp/"))
  "Here live my lisp packages.")
(add-to-list 'load-path my-lisp-dir)

(defvar my-org-dir "~/my/gtd"
  "Root directory for my Org files.")

(defvar my-lisp-autoload (concat my-lisp-dir "loaddefs.el")
  "Path to autoload for mode files.")
(defvar my-lisp-auth (concat user-emacs-directory ".emacs-auth")
  "Path to auth info for Emacs.")
(defvar my-lisp-autogen (concat user-emacs-directory ".emacs-autogen")
  "Path to automatically generated config file. It content depend on
  installation environment and it was overridden on install.")
(defvar my-lisp-pre (concat user-emacs-directory ".emacs-pre")
  "Path to file with pre-settings. Intended for local modifications.")
(defvar my-lisp-dotemacs (concat user-emacs-directory ".emacs-my")
  "Path to file with settings. Overwritten on install.")
(defvar my-lisp-post (concat user-emacs-directory ".emacs-post")
  "Path to file with post-settings. Intended for local modifications.")

(setq custom-file (concat user-emacs-directory ".emacs-custom"))
(setq save-place-file (concat user-emacs-directory ".emacs-places"))
(setq bookmark-default-file (concat user-emacs-directory "bookmarks"))
(setq ido-save-directory-list-file (concat user-emacs-directory ".ido.last"))

(setq
 package-archives
 '(("gnu" . "https://elpa.gnu.org/packages/")
   ("melpa-stbl" . "https://stable.melpa.org/packages/")
   ("melpa" . "https://melpa.org/packages/"))
 package-archive-priorities
 '(("gnu" . 10)
   ("melpa-stbl" . 5)
   ("melpa" . 0)) )

(setq
 package-selected-packages
 '(adoc-mode
   apache-mode
   dockerfile-mode
   groovy-mode
   markdown-mode
   terraform-mode
   web-mode
   yaml-mode
   expand-region
   helm
   ))

(defun my-lisp--install-external-packages ()
  ;; (package-initialize)
  ;; Update `package-archive-contents'.
  (advice-add #'y-or-n-p :override (lambda (prompt) t))
  (package-refresh-contents)
  ;; (package-install 'yaml-mode)
  (package-install-selected-packages))

(defun my-lisp--load-pre ()
  (mapc (lambda (f)
          (when (file-exists-p f)
            (load f nil nil t)))
        (list custom-file my-lisp-autogen my-lisp-auth my-lisp-pre my-lisp-autoload)))

(defun my-lisp--load-usr-home ()
  "Add hierarchy `my-lisp-usr-home-dir' to `load-path'."
  (when (file-directory-p my-lisp-usr-home-dir)
    (add-to-list 'load-path my-lisp-usr-home-dir)
    (let ((default-directory my-lisp-usr-home-dir))
      (normal-top-level-add-subdirs-to-load-path))))

(defun my-lisp--load-all ()
  "Load everything to help during byte compilation to spot errors
better. Not for regular use but for the Makefile."
  (my-lisp--load-usr-home)
  (my-lisp--load-pre))

(defmacro my--eval-after-load (feature &rest forms)
  (declare (indent defun))
  `(,(if (or (not (boundp 'byte-compile-current-file))
             (not byte-compile-current-file)
             (if (symbolp feature)
                 (require feature nil :no-error)
               (load feature :no-message :no-error)))
         'progn
       (message "my--eval-after-load: cannot find %s" feature)
       'with-no-warnings)
    (eval-after-load ',feature
      '(funcall (lambda () ,@forms)))))