;;; init.el -*- lexical-binding: t; -*-
;;; Volker Edelmann, based on Patrick Thomson's Emacs setup.
;;
;;; Commentary:
;; This file loads use-package, org-mode and compiles and executes
;; my emacs org configuration
;;
;;; Code:
;;
(load-file (concat user-emacs-directory "/environment-setup.el"))
(message "loading init.el")

(require 'package)
(add-to-list 'package-archives '("melpa"  . "https://melpa.org/packages/") t)
(add-to-list 'package-archives '("gnu"    . "http://elpa.gnu.org/packages/") t)
(setq package-archive-priorities '(("melpa"  . 100)
                                   ("gnu"    .  50)
				   ("nongnu" .  25)
				   )
)
(setq package-native-compile t)
;;(setq use-package-always-ensure t)
(package-initialize)

(eval-when-compile
  (require 'use-package)
  (require 'ob-tangle))

(defun reload-config ()
  "Reload the literate config from several files"
  (interactive)
  (message "Reloading my configuration")
  (toggle-debug-on-error)
  (org-babel-load-file (concat user-emacs-directory "/my-functions.org"))
  (org-babel-load-file (concat user-emacs-directory "/basic-setup.org"))
  (org-babel-load-file (concat user-emacs-directory "/editing.org"))
  (org-babel-load-file (concat user-emacs-directory "/text_gtd-setup.org"))

  (org-babel-load-file (concat user-emacs-directory "/programming-setup.org"))
  (org-babel-load-file (concat user-emacs-directory "/proglang-rudimentary-setup.org"))

  (org-babel-load-file (concat user-emacs-directory "/proglang-clojure-setup.org"))
  (org-babel-load-file (concat user-emacs-directory "/proglang-d-setup.org"))
  (org-babel-load-file (concat user-emacs-directory "/proglang-elisp-setup.org"))
  (org-babel-load-file (concat user-emacs-directory "/proglang-java-setup.org"))
  (org-babel-load-file (concat user-emacs-directory "/proglang-julia-setup.org"))

  (org-babel-load-file (concat user-emacs-directory "/proglang-python-setup.org"))
  ;; (org-babel-load-file (concat user-emacs-directory "/proglang-kotlin-setup.org"))
  (org-babel-load-file (concat user-emacs-directory "/proglang-rust-setup.org"))
  (org-babel-load-file (concat user-emacs-directory "/proglang-sql-setup.org"))
  (org-babel-load-file (concat user-emacs-directory "/proglang-tcltk-setup.org"))
  (org-babel-load-file (concat user-emacs-directory "/proglang-xml-setup.org"))
  (org-babel-load-file (concat user-emacs-directory "/tool-ai-setup.org"))
  (org-babel-load-file (concat user-emacs-directory "/keybindings.org"))
  (load-file (concat user-emacs-directory "/post-init.el"))
  )


(add-to-list 'load-path (concat user-emacs-directory "/ve"))
(let ((default-directory (concat user-emacs-directory "/ve")))
  (normal-top-level-add-subdirs-to-load-path))
(add-to-list 'load-path (concat (getenv "HOME") "/secrets"))

(print "Load Path:")
(princ (mapconcat #'identity load-path "\n"))

(reload-config)


(with-demoted-errors "Error (personal info): %S"
  (load-library "personal")
  (setq user-full-name my-full-name)
  (setq user-mail-address my-email-address))

(require 'server)
(unless (server-running-p)
  (server-start))

;; show bookmarks
(require 'bookmark+)
(bookmark-bmenu-list)
(setq initial-buffer-choice (lambda () (get-buffer "*Bookmark List*")))

(provide 'init)
;;; init.el ends here
(put 'narrow-to-region 'disabled nil)