I'm trying to move from el-get to use-package. I am having trouble with smart-mode-line-powerline-theme. Emacs complains at startup time with

(error "Unable to find theme file for ‘smart-mode-line-powerline’")

Here is a minimialized version of a startup file that tries to get the relevant bits to work:

(require 'package)
(setq package-enable-at-startup nil)
(add-to-list 'package-archives '("melpa"     . "http://melpa.org/packages/"))
(add-to-list 'package-archives '("marmalade" . "http://marmalade-repo.org/packages/"))
(add-to-list 'package-archives '("gnu"       . "http://elpa.gnu.org/packages/"))

(unless (package-installed-p 'use-package)
  (package-install 'use-package))

  (require 'use-package))
(require 'diminish)
(require 'bind-key)

(setq use-package-always-ensure t)
(put 'use-package 'lisp-indent-function 1)

(use-package powerline) ; seems to be required for smart-mode-line powerline theme

(use-package smart-mode-line
  :config (progn
            (require 'smart-mode-line)
            (setq sml/theme 'respectful)
            (sml/apply-theme 'powerline)))

el-get creates a directory emacs.d/el-get/smart-mode-line containing a git clone of the smart-mode-line repository, including a themes directory which contains smart-mode-line-powerline-theme.el (and a light variant).

use-package creates a directory emacs.d/elpa/smart-mode-line-20170708.1317 which contains the standard sml themes, but without the themes subdirectory in which the powerline themes live.

How can I get around this glitch?


have you tried that for example:

(use-package smart-mode-line-powerline-theme
   :ensure t
   :after powerline
   :after smart-mode-line
    (sml/apply-theme 'powerline)

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.