git.fiddlerwoaroof.com
Raw Blame History
(use-package projectile
  :ensure t
  :config
  (setq
   ;;       projectile-enable-caching t
   projectile-generic-command "rg --files -0"
   )

  (projectile-register-project-type
   'clojure '("project.clj")
   :compile "lein uberjar"
   :test-dir "src/test/")

  (projectile-register-project-type
   'lisp '("*.asd"))

  (projectile-register-project-type
   'npm '("package.json")
   :compile "npm install"
   :test "npm test"
   :run "npm start"
   :test-suffix ".spec")

  (define-key evil-normal-state-map "gf" 'project-aware-ffap)
  (projectile-mode 1)
  )

(use-package org-projectile
  :ensure t
  :after projectile company
  :config
  (progn
    (org-projectile-per-project)
    (setq org-agenda-skip-unavailable-files t)
    (setq org-projectile-per-project-filepath
          "notes/README.org")
    (setq org-agenda-files (append org-agenda-files (org-projectile-todo-files)))
    (push (org-projectile-project-todo-entry) org-capture-templates)
    (define-key projectile-mode-map (kbd "C-c c") 'org-capture))
  :ensure t)

(use-package projectile-ripgrep
  :ensure t
  :after projectile)

(use-package treemacs-projectile
  :after treemacs projectile
  :ensure t)

(use-package org-projectile-helm
  :ensure t
  :after org-projectile helm helm-org
  :config
  (define-key projectile-mode-map (kbd "C-c n p") 'org-projectile-helm-template-or-project))

(use-package helm-projectile
  :after helm projectile
  :ensure t
  :config

  (evil-define-key 'normal 'global (kbd "<leader>f") 'helm-projectile)
  (evil-define-key 'normal 'global (kbd "<leader>S") 'helm-projectile-rg)
  (evil-define-key 'normal 'global (kbd "<leader>h") 'helm-projectile-find-file-dwim))

(defun more-than-one-project-file-p ()
  (= (length (projectile-select-files (projectile-current-project-files)))
     1))

(defun global-find-known-file ())

(defun helm-find-known-file (&optional arg)
  "Use projectile with Helm for finding files in project

With a prefix ARG invalidates the cache first."
  (interactive "P")
  (let ((projectile-enable-caching t))
    (if (projectile-project-p)
        (projectile-maybe-invalidate-cache arg)
      (unless t
        (error "You're not in a project"))))
  (let ((helm-ff-transformer-show-only-basename nil)
        (helm-boring-file-regexp-list nil))
    (helm :sources 'helm-source-projectile-files-in-all-projects-list
          :buffer (concat "*helm projectile: "
                          (projectile-project-name)
                          "*")
          :truncate-lines helm-projectile-truncate-lines
          :prompt (projectile-prepend-project-name "Find file in projects: "))))

(defun project-aware-ffap (&rest args)
  (interactive "F")
  (apply (if (and (projectile-project-p)
                  (more-than-one-project-file-p))
             'helm-projectile-find-file-dwim
           'find-file-at-point)
         args))

(defun edit-init-el ()
  (interactive)
  (let ((default-directory *dotfiles-repo*))
    (helm-projectile-find-file)))

(defun helm-projectile-rg ()
  "Projectile version of `helm-rg'."
  (interactive)
  (if (require 'helm-rg nil t)
      (if (projectile-project-p)
          (let ((helm-rg-prepend-file-name-line-at-top-of-matches nil)
                (helm-rg-include-file-on-every-match-line t))
            (helm-rg (helm-projectile-rg--region-selection)
                     nil
                     (list (projectile-project-root))))
        (error "You're not in a project"))
    (when (yes-or-no-p "`helm-rg' is not installed. Install? ")
      (condition-case nil
          (progn
            (package-install 'helm-rg)
            (helm-projectile-rg))
        (error "`helm-rg' is not available.  Is MELPA in your `package-archives'?")))))