• Stars
    star
    322
  • Rank 125,929 (Top 3 %)
  • Language
    Emacs Lisp
  • Created over 8 years ago
  • Updated 7 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Helm UI for Projectile

License GPL 3 MELPA MELPA Stable Patreon

Helm Projectile

Projectile can be integrated with Helm via helm-source-projectile-projects, helm-source-projectile-files-list, helm-source-projectile-buffers-list and helm-source-projectile-recentf-list sources (available in helm-projectile.el). There is also an example function for calling Helm with the Projectile file source. You can call it like this:

M-x helm-projectile

or even better - invoke the key binding h in Projectile's keymap. Assuming you've opted for one of the recommended keymap prefixes (C-c p or s-p), that would mean C-c p h or s-p h.

See Projectile's installation docs for more details.

Installation

The recommended way to install helm-projectile is via package.el.

package.el

MELPA

You can install a snapshot version of helm-projectile from the MELPA repository. The version of Projectile there will always be up-to-date, but it might be unstable (albeit rarely).

MELPA Stable

You can install the last stable version of helm-projectile from the MELPA Stable repository.

el-get

helm-projectile is also available for installation from the el-get package manager.

Emacs Prelude

helm-projectile is naturally part of the Emacs Prelude. If you're a Prelude user - helm-projectile is already properly configured and ready for action.

Debian and Ubuntu

Users of Debian 9 or later or Ubuntu 16.04 or later may apt install elpa-helm-projectile.

Usage

For those who prefer helm to ido/ivy, the command helm-projectile-switch-project can be used to replace projectile-switch-project to switch project. Please note that this is different from simply setting projectile-completion-system to helm, which just enables projectile to use the Helm completion to complete a project name. The benefit of using helm-projectile-switch-project is that on any selected project we can fire many actions, not limited to just the "switch to project" action, as in the case of using helm completion by setting projectile-completion-system to helm. Currently, there are five actions: "Switch to project", "Open Dired in project's directory", "Open project root in vc-dir or magit", "Switch to Eshell" and "Grep project files". We will add more and more actions in the future.

helm-projectile is capable of opening multiple files by marking the files with C-SPC or mark all files with M-a. Then, press RET, all the selected files will be opened.

Note that the helm grep is different from projectile-grep because the helm grep is incremental. To use it, select your projects (select multiple projects by pressing C-SPC), press "C-s" (or "C-u C-s" for recursive grep), and type your regexp. As you type the regexp in the mini buffer, the live grep results are displayed incrementally.

helm-projectile also provides Helm versions of common Projectile commands. Currently, these are the supported commands:

  • helm-projectile-switch-project
  • helm-projectile-find-file
  • helm-projectile-find-file-in-known-projects
  • helm-projectile-find-file-dwim
  • helm-projectile-find-dir
  • helm-projectile-recentf
  • helm-projectile-switch-to-buffer
  • helm-projectile-grep (can be used for both grep or ack)
  • helm-projectile-ag
  • helm-projectile-rg
  • Replace Helm equivalent commands in projectile-commander
  • A virtual directory manager that is unique to Helm Projectile

Why should you use these commands compared with the normal Projectile commands, even if the normal commands use helm as projectile-completion-system? The answer is, Helm specific commands give more useful features. For example, helm-projectile-switch-project allows opening a project in Dired, Magit or Eshell. helm-projectile-find-file reuses actions in helm-find-files (which is plenty) and able to open multiple files. Another reason is that in a large source tree, helm-projectile could be slow because it has to open all available sources.

If you want to use these commands, you have to activate it to replace the normal Projectile commands:

;; (setq helm-projectile-fuzzy-match nil)
(require 'helm-projectile)
(helm-projectile-on)

If you already activate helm-projectile key bindings and you don't like it, you can turn it off and use the normal Projectile bindings with command helm-projectile-off. Similarly, if you want to disable fuzzy matching in Helm Projectile (it is enabled by default), you must set helm-projectile-fuzzy-match to nil before loading helm-projectile.

To fully learn Helm Projectile and see what it is capable of, you should refer to this guide: Exploring large projects with Projectile and Helm Projectile.

Obviously you need to have Helm installed for this to work. :-)

Helm-Projectile Screenshot

Project Status

The project is currently looking for more maintainers. I (Bozhidar) don't use Helm myself and don't have much time for the project, so I would definitely appreciate some help with it.

Contact me via e-mail or twitter if you'd like to become a co-maintainer.

Known issues

Check out the project's issue list a list of unresolved issues. By the way - feel free to fix any of them and sent me a pull request. :-)

Contributors

Here's a list of all the people who have contributed to the development of Projectile.

Changelog

A fairly extensive changelog is available here.

Note: We started keeping track of changes there after version 1.0.

License

Copyright © 2011-2020 Bozhidar Batsov and contributors.

Distributed under the GNU General Public License, version 3

More Repositories

1

prelude

Prelude is an enhanced Emacs 25.1+ distribution that should make your experience with Emacs both more pleasant and more powerful.
Emacs Lisp
5,014
star
2

clojure-style-guide

A community coding style guide for the Clojure programming language
3,978
star
3

projectile

Project Interaction Library for Emacs
Emacs Lisp
3,851
star
4

emacs-lisp-style-guide

A community-driven Emacs Lisp style guide
1,053
star
5

zenburn-emacs

The Zenburn colour theme ported to Emacs
Emacs Lisp
951
star
6

crux

A Collection of Ridiculously Useful eXtensions for Emacs
Emacs Lisp
807
star
7

solarized-emacs

The Solarized colour theme, ported to Emacs.
Emacs Lisp
739
star
8

super-save

Save Emacs buffers when they lose focus
Emacs Lisp
273
star
9

powerpack

Some useful extensions to the core Ruby classes
Ruby
270
star
10

emacs.d

My personal Emacs configuration
Emacs Lisp
204
star
11

persp-projectile

Projectile integration for perspective.el
Emacs Lisp
110
star
12

guru-mode

Learn to use Emacs the way it was meant to be used (the Emacs guru way)
Emacs Lisp
100
star
13

emacs-dev-kit

An advanced self-contained Emacs configuration suitable for many software developers (deprecated)
Emacs Lisp
95
star
14

beamer-torino-theme

Torino, a pretty theme for LaTex Beamer
Emacs Lisp
38
star
15

lein-annotations

Display comment annotations in your project
Clojure
12
star
16

emacsredux

Emacs Redux is a blog dedicated to the One True Editor
HTML
11
star
17

cv

My professional CV in LaTeX
TeX
10
star
18

cl-99-problems

Solutions to the 99 Lisp problems in Common Lisp
Common Lisp
10
star
19

activerecord-extra-validators

Some nice additional validators for ActiveRecord
Ruby
9
star
20

java-in-action-lectures

The lectures from the "Java in Action" programming course
9
star
21

advent-of-code2021

Advent of Code 2021, Clojure Edition
Clojure
8
star
22

legacy-octopress-blog

My personal blog
HTML
8
star
23

batsov.com

My personal blog
Ruby
7
star
24

metaredux

HTML
7
star
25

master-thesis

My Master university degree thesis
Emacs Lisp
5
star
26

zshrc

My personal zsh setup
5
star
27

docs.projectile.mx

Projectile's documentation site
Handlebars
4
star
28

hard-cider

A demo projecto to showcase CIDER
Clojure
3
star
29

presentations

Presentations I created for various occasions
2
star
30

blog

My personal blog
Ruby
2
star
31

emacsredux-legacy

Emacs Redux
HTML
1
star
32

praxis

Praxis makes perfect!
OCaml
1
star