:feature was a "catch-all" category. Many of its modules fit better in other categories, so they've been moved: - feature/debugger -> tools/debugger - feature/evil -> editor/evil - feature/eval -> tools/eval - feature/lookup -> tools/lookup - feature/snippets -> editor/snippets - feature/file-templates -> editor/file-templates - feature/workspaces -> ui/workspaces More potential changes in the future: - A new :term category for terminal emulation modules (eshell, term and vterm). - A new :os category for modules dedicated to os-specific functionality. The :tools macos module would fit here, but so would modules for nixos and arch. - A new :services category for web-service integration, like wakatime, twitter, elfeed, gist and pastebin services.
70 lines
3.2 KiB
EmacsLisp
70 lines
3.2 KiB
EmacsLisp
;; -*- no-byte-compile: t; -*-
|
|
;;; editor/evil/test/test-evil.el
|
|
|
|
(describe "feature/evil"
|
|
:var (resv project-root)
|
|
(before-all
|
|
(require! :editor evil)
|
|
(require 'evil)
|
|
(load! "../autoload/evil"))
|
|
(after-all
|
|
(unload-feature 'evil t))
|
|
(before-each
|
|
(fset 'resv #'+evil*resolve-vim-path)
|
|
(spy-on 'doom-project-root :and-call-fake (lambda () project-root)))
|
|
|
|
;; `evil-ex-replace-special-filenames' / `+evil*resolve-vim-path'
|
|
(describe "file modifiers"
|
|
(it "supports basic vim file modifiers"
|
|
(let ((buffer-file-name "~/.emacs.d/test/modules/feature/test-evil.el")
|
|
(default-directory "~/.emacs.d/test/modules/")
|
|
(project-root "~/.emacs.d/"))
|
|
(expect (resv "%") :to-equal "feature/test-evil.el")
|
|
(expect (resv "%:r") :to-equal "feature/test-evil")
|
|
(expect (resv "%:r.elc") :to-equal "feature/test-evil.elc")
|
|
(expect (resv "%:e") :to-equal "el")
|
|
(expect (resv "%:p") :to-equal (expand-file-name buffer-file-name))
|
|
(expect (resv "%:h") :to-equal "feature")
|
|
(expect (resv "%:t") :to-equal "test-evil.el")
|
|
(expect (resv "%:.") :to-equal "feature/test-evil.el")
|
|
(expect (resv "%:~") :to-equal "~/.emacs.d/test/modules/feature/test-evil.el")
|
|
(expect (file-truename (resv "%:p"))
|
|
:to-equal (file-truename buffer-file-name))))
|
|
|
|
(it "supports nested vim file modifiers"
|
|
(let ((buffer-file-name "~/vim/src/version.c")
|
|
(default-directory "~/vim/")
|
|
(project-root "~/vim/"))
|
|
(expect (resv "%:p") :to-equal (expand-file-name "~/vim/src/version.c"))
|
|
(expect (resv "%:p:.") :to-equal "src/version.c")
|
|
(expect (resv "%:p:~") :to-equal "~/vim/src/version.c")
|
|
(expect (resv "%:h") :to-equal "src")
|
|
(expect (resv "%:p:h") :to-equal (expand-file-name "~/vim/src"))
|
|
(expect (resv "%:p:h:h") :to-equal (expand-file-name "~/vim"))
|
|
(expect (resv "%:t") :to-equal "version.c")
|
|
(expect (resv "%:p:t") :to-equal "version.c")
|
|
(expect (resv "%:r") :to-equal "src/version")
|
|
(expect (resv "%:p:r") :to-equal (expand-file-name "~/vim/src/version"))
|
|
(expect (resv "%:t:r") :to-equal "version")))
|
|
|
|
(it "cleans up empty file modifiers"
|
|
(let (buffer-file-name default-directory)
|
|
(expect (resv "%") :to-equal "")
|
|
(expect (resv "%:r") :to-equal "")
|
|
(expect (resv "%:e") :to-equal "")
|
|
(expect (resv "%:h") :to-equal "")
|
|
(expect (resv "%:t") :to-equal "")
|
|
(expect (resv "%:.") :to-equal "")
|
|
(expect (resv "%:~") :to-equal "")
|
|
(expect (resv "%:P") :to-equal "")))
|
|
|
|
(it "supports substitution modifiers"
|
|
(let ((buffer-file-name "~/.emacs.d/test/modules/feature/test-evil.el")
|
|
(default-directory "~/.emacs.d/test/modules/"))
|
|
(expect (resv "%:s?e?x?") :to-equal "fxature/test-evil.el")
|
|
(expect (resv "%:gs?e?x?") :to-equal "fxaturx/txst-xvil.xl")))
|
|
|
|
(it "cleans up empty substitution modifiers"
|
|
(let (buffer-file-name default-directory)
|
|
(expect (resv "%:s?e?x?") :to-equal "")
|
|
(expect (resv "%:gs?e?x?") :to-equal "")))))
|