 ;;;; Load user-specific configuration file (1 of 2)
 
 (radian-load-user-config "init.before.local.el")
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;;; Process user-specific configuration
+
+;; Normalize configuration variables.
+
+(unless (member radian-customize-completion-mechanism
+                '(helm-ido ivy))
+  (lwarn
+   '(radian) :error
+   "%s is not a valid setting for radian-customize-completion-mechanism, setting to helm-ido"
+   radian-customize-completion-mechanism)
+  (setq radian-customize-completion-mechanism 'helm-ido))
+
+;; If the user has selected `helm-ido' as their completion framework,
+;; then we should disable Ivy and friends. If the user has selected
+;; `ivy', then we should disable Helm and friends. Note that this is
+;; just for convenience, and the user can override it by using
+;; `radian-reenable-package' in their init.before.local.el (because
+;; `radian-disable-package' and `radian-reenable-package' are
+;; commutative).
+
+(when (equal radian-customize-completion-mechanism 'helm-ido)
+  (radian-disable-package 'flx 'ivy 'counsel 'counsel-projectile 'swiper))
+
+(when (equal radian-customize-completion-mechanism 'ivy)
+  (radian-disable-package 'helm 'helm-projectile 'helm-smex))
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;;;; Startup


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;; Dired

;; Suppress the 'ls does not support --dired' warning. Doing this instead
;; of installing a dired-compatibile ls is much easier, although it may

(defvar radian-customize-tweak-colors nil)
(setq radian-customize-tweak-colors t)

;; Control completion mechanisms. If this is `helm-ido', then Helm is
;; used for most completions and IDO is used for finding files. If it
;; is `ivy', then Ivy and Counsel are used for most completions. By
;; default, this also enables Swiper for Isearches. You can disable
;; this functionality by placing (radian-disable-package 'swiper) in
;; your init.before.local.el. Note that selecting `helm-ido' or `ivy'
;; automatically disables the packages for the other completion
;; system.
(defvar radian-customize-completion-mechanism nil)
(setq radian-customize-completion-mechanism 'helm-ido)

;; Override package archives. If this is non-nil, then it is used as
;; the value of `package-archives' instead of the Radian default (GNU
;; plus MELPA).
