- #972: Add toggle for project read only mode:
projectile-toggle-project-read-only
. - New interactive command
projectile-run-ielm
. - Add crystal project type.
- #850: Make it possible to prompt for a project, when you're not in a project, instead of raising an error. (see
projectile-require-project-root
). - #1147: Introduce a faster indexing method -
turbo-alien
.
- Specify project path for
projectile-regenerate-tags
. - Handle files with special characters in
projectile-get-other-files
. - #1260: ignored-*-p: Now they match against regular expressions.
- (Breaking) Remove the default prefix key (
C-c p
) for Projectile. Users now have to pick one themselves. - Deprecate
projectile-keymap-prefix
. - Avoid "No projects needed to be removed." messages in global mode.
- #1278: Add default
test-suffix
tonpm
project. - #1285: Add default
test-suffix
to Python projects. - #1285: Add support for Pipenv-managed Python projects.
- #1232: Stop evaluating code dynamically in the mode-line and switch to a simpler scheme where the mode-line is updated just once using
find-file-hook
. - Make the mode line configurable via
projectile-dynamic-mode-line
andprojectile-mode-line-fn
. - #1205: Check that project directory exists when switching projects.
- Move Projectile's menu out of the "Tools" menu.
- #1255: Add support for function symbols as project default commands
- #1243: Add angular project support.
- #1228: Add support for a prefix argument to
projectile-vc
. - #1221: Modify Ruby and Elixir project settings.
- #1175: Add a command
projectile-configure-command
for running a configuration for build systems that need that. - #1168: Add CMake and Meson project support.
- #1159 Add nix project support.
- #1166: Add
-other-frame
versions of commands that had-other-window
versions. - Consider Ensime configuration file as root marker,
.ensime
. - #1057: Make it possible to disable automatic project tracking via
projectile-track-known-projects-automatically
. - Added ability to specify test files suffix and prefix at the project registration.
- #1154 Use npm install instead of build.
- Added the ability to expire old files list caches via
projectile-projectile-files-cache-expire
. - #1204:
projectile-register-project-type
can now be use to customize the source and test directory via:src-dir
and:test-dir
for projects with custom needs (eg. maven). - #1240: Add some integration with riggrep.
- Add
projectile-project-search-path
, which is auto-searched for projects whenprojectile-mode
starts. - Add
projectile-discover-projects-in-search-path
command which searches for projects inprojectile-project-search-path
. - Auto-cleanup missing known-projects on
projectile-mode
start.
- #1213: Cache project root in non-filed-backed buffers.
- #1175:
projectile-register-project-type
can now set a default compilation directory for build systems that needs to build out-of-tree (eg. meson). - #1175:
projectile-{test,run}-project
now run inside(projectile-compilation-dir)
, just likeprojectile-compile-project
. - #1175:
projectile-{test,run}-project
now stores the default command per directory instead of per project, just likeprojectile-compile-project
. - Cache the root of the current project to increase performance
- #1129: Fix TRAMP issues.
- Add R DESCRIPTION file to
projectile-project-root-files
. - Ignore backup files in
projectile-get-other-files
. - Ignore Ensime cache directory,
.ensime_cache
. - #364:
projectile-add-known-project
can now be used interactively. projectile-mode
is now a global mode.projectile-find-tag
now defaults to xref on Emacs 25.1+.- Add relation between
.h
and.cc
files inprojectile-other-file-alist
. - Cache the name of the current project for mode-line display of the project name.
- #1078: For projectile-grep/ag use default value like grep/rgrep/ag.
- Don't treat
package.json
as a project marker. - #987: projectile-ag ignores ag-ignore-list when projectile-project-vcs is git
- #1119: File search ignores non-root dirs if prefixed with "*"
- Treat members of
projectile-globally-ignored-file-suffixes
as file name suffixes (previous treat as file extensions). - Ensure project roots are added as directory names to avoid near-duplicate projects, e.g. "
/project/" and "/project". - Don't autoload defcustoms.
- (Breaking) Require Emacs 25.1.
- Remove the support for grizzl.
- #1222:
projectile-configure-project
fails for generic project type - #1162:
projectile-ag
causes "Attempt to modify read-only object" error. - #1169:
projectile-compile-project
does not prompt for compilation command. - #1072: Create test files only within the project.
- #1063: Support Fossil checkouts on Windows.
- #1024: Do not cache ignored project files.
- #1022: Scan for Fossil's checkout DB, not its config DB.
- #1007: Make use of
projectile-go-function
. - #1011: Save project files before running project tests.
- #1099: Fix the behaviour of
projectile-purge-dir-from-cache
. - #1067: Don't mess up
default-directory
after switching projects. - #1246: Don't blow away real project file during tests.
- Add elixir project type.
- Add emacs-cask project type.
- Add boot-clj project type.
- Add racket project type.
- Add support for projects using gradlew script.
- Prefer Haskell stack projects over cabal projects.
- Add ability to use elisp functions for test, compile and run commands.
- Consider
TAGS
andGTAGS
root markers. - Add relation between the
.h
,.cxx
,.ixx
and.hxx
files inprojectile-other-file-alist
. - Add relation between the
.hpp
and.cc
files inprojectile-other-file-alist
. - Add support to specify project name either via
.dir-locals.el
or by providing a customizedprojectile-project-name-function
. - Add a command to switch between open projects (
projectile-switch-open-project
). - Add a command to edit the .dir-locals.el file of the project (
projectile-edit-dir-locals
). - Add file local variable
projectile-project-root
, which allows overriding the project root on a per-file basis. This allows navigating a different project from, say, an org file in a another git repository. - Add
projectile-grep-finished-hook
. - Ignore file suffixes listed in
projectile-globally-ignored-file-suffixes
when usingprojectile-grep
andprojectile-ag
. - Add
projectile-replace-regexp
, which supports replacement by regexp within a project.projectile-replace
is now used solely for literal replacements. - New command
projectile-run-shell
(C-c p x s). - New command
projectile-run-eshell
(C-c p x e). - New command
projectile-run-term
(C-c p x t). - Let user unignore files in
.projectile
with the ! prefix. - Add a command to add all projects in a directory to the cache (
projectile-discover-projects-in-directory
). - Add a command to list dirty version controlled projects (
projectile-browse-dirty-projects
).
- Prefer ag's internal .gitignore parsing.
- Added variable to control use of external find-tag implementations.
- Specify
--with-keep.source
argument when installing R projects
- #871: Stop advice for
compilation-find-file
to override other advices. - #557: stack overflow in
projectile-find-tag
. - #955: Error while toggling between test and source file.
- #952: VCS submodules brought in even thought not descendent of project root.
- #576:
projectile-replace
stomps regular expressions. - #957: When opening a specified file from the terminal, do not error inside of
projectile-cache-current-file
. - #984: Error when a project is a symlink that changes target.
- #1013:
projectile-project-buffer-p
may return incorrect result on Windows.
- Add
projectile-before-switch-project-hook
. - Add the ability to specify the project type via
.dir-locals.el
. - Add support for projects using Midje.
- Add the ability to create missing tests automatically (controlled via the
projectile-create-missing-test-files
defcustom). - Add the ability to dynamically decide if a project should be added to
projectile-known-projects
(via newprojectile-ignored-project-function
defcustom). - Add the ability to register new project types dynamically with
projectile-register-project-type
. - Add the ability to specify a project compilation and test commands via
.dir-locals.el
. This is done via the variablesprojectile-project-compilation-cmd
andprojectile-project-test-cmd
. - #489: New interactive command
projectile-run-project
. - Optionally run monky on Mercurial projects.
- Add the ability to specify a project compilation directory relative to the root directory via
.dir-locals.el
with the variableprojectile-project-compilation-dir
. - When there is a selected region, projectile-ag, projectile-grep, projectile-replace and projectile-find-tag uses it's content as a search term instead of symbol at point.
- Rename
projectile-switch-project-hook
toprojectile-after-switch-project-hook
. projectile-compile-project
now offers appropriate completion targets even when called from a subdirectory.- Add an argument specifying the regexp to search to
projectile-grep
. - Use
help-projectile-grep
instead ofhelm-find-file
when selecting a project. - Omit current buffer from
projectile-switch-to-buffer
andprojectile-switch-to-buffer-other-window
choices.
- #721: Remove current buffer from
helm-projectile-switch-project
. - #667 Use
file-truename
when caching filenames to prevent duplicate/symlinked filepaths from appearing when opening a project file. - #625: Ensure the directory has a trailing slash while searching for it.
- #763: Check for
projectile-use-git-grep
inhelm-projectile-grep
- Fix
projectile-parse-dirconfig-file
to parse non-ASCII characters properly.
- Replace Helm equivalent commands in
projectile-commander
when using Helm. - Add replacement commands projectile-grep, projectile-ack and projectile-ag with its Helm version.
- Add virtual directory manager that allows to create/update (add or delete files) a Dired buffer based on Projectile files.
- Add a new Helm command:
helm-projectile-find-file-in-known-projects
that opens all files in all known projects. - Add an action for
helm-projectile-switch-project
to delete multiple marked projects. - Add the ability to retrieve files in all sub-projects under a project root.
- Add
projectile-find-file-dwim
andhelm-projectile-find-file-dwim
commands. - Provide actual Helm commands for common Projectile commands.
- Use existing Helm actions and map in
helm-find-files
that allowshelm-source-projectile-files-list
to behave likehelm-find-files
, such as multifile selection and opening or delete on selected files. - Add compile action to
helm-projectile
. - Allows using Eshell and Magit outside of a project in
helm-projectile
. - Add Helm action for incremental grep in the selected projects.
- Add command projectile-find-other-file Switch between files with the same name but different extensions.
- Add Helm interface to switch project. For more details checkout the file README.md.
- Make the mode line format customizable with
projectile-mode-line
- Add support for
cargo.toml
projects - Try to use projectile to find files in compilation buffers
- Support
helm
as a completion system - New command
projectile-project-info
displays basic info about the current project. - New
defcustom
projectile-globally-ignored-buffers
allows you to ignore buffers by name - New
defcustom
projectile-globally-ignored-file-suffixes
allows you to globally ignore files with particular extensions
- get-other-files returns more accurate results for files with the same name placed under different directories
- Collect search tool (
grep
,ag
,ack
) keybindings under a common keymap prefix (C-c p s
) - Remove
defcustom
projectile-remember-window-configs
in favor ofpersp-projectile.el
. - Progress reporter for the native indexing method.
- Fix
projectile-regenerate-tags
to work in directories that include spaces. - Prevent
projectile-kill-buffers
from trying to kill indirect buffers. - #412: Handle multiple possible targets in
projectile-toggle-between-implementation-or-test
.
- Added support for default file glob pattern to
projectile-grep
- added file existence cache with defcustoms
projectile-file-exists-remote-cache-expire
andprojectile-file-exists-local-cache-expire
. - added new defcustoms
projectile-project-root-files-top-down-recurring
,projectile-project-root-files-bottom-up
andprojectile-project-root-files-functions
. - Added new command
projectile-save-project-buffers
. - Added new command
projectile-cleanup-known-projects
. - Added new commands
projectile-display-buffer
andprojectile-find-dir-other-window
. - Added new interacive function
projectile-project-buffers-other-buffer
which runs newprojectile-project-buffers-non-visible
function, the former is bound toC-c p ESC
. - New variable
projectile-enable-idle-timer
turns on an idle timer which runs the hookprojectile-idle-timer-hook
everyprojectile-idle-timer-seconds
seconds when non-nil. - New defcustom
projectile-remember-window-configs
will makeprojectile-switch-project
restore the most recent window configuration (if any) of the target project. - New command
projectile-run-command-in-root
. - New command
projectile-run-shell-command-in-root
. - New command
projectile-run-async-shell-command-in-root
. - New defcustom
projectile-use-git-grep
will makeprojectile-grep
usegit grep
for git projects. - Added new
projectile-commander
methods ?v and ?R which runprojectile-vc
andprojectile-regenerate-tags
, respectively. projectile-vc
will usemagit-status
if available.- New functions
projectile-find-implementation-or-test
andprojectile-find-implementation-or-test-other-window
, the later is bound toC-c p 4 t
. - New defcustoms
projectile-test-prefix-function
andprojectile-test-suffix-function
allow users to customize how projectile identifies test files by project type. projectile-grep
will ask for a file pattern if invoked with a prefix argument.- Subversion checkouts are now automatically detected.
- CVS checkouts are now automatically detected.
- added
projectile-persp-switch-project
command to make perspective mode work along with projectile. - Changed
projectile-mode-line-lighter
to a defcustom variable to make mode line indicator prefix customizable. - New command
projectile-find-file-in-known-projects
. - New defcustom
projectile-ignored-projects
allows you to specify projects that shouldn't be added to the known projects list. - New command
projectile-remove-current-project-from-known-projects
. - New defcustom
projectile-buffers-filter-function
. - New defcustom
projectile-sort-order
. - New function
projectile-process-current-project-buffers
. - New function
projectile-process-current-project-files
.
- The presence of a
Makefile
is no longer taken as an indicator of the project root by default, since recursive make is unfortunately a common occurrence (affectsprojectile-project-root-files
). - Projectile is now able to find the project pertaining to a symlink pointing to a version-controlled file.
- Drop
projectile-ack-function
defcustom. projectile-command-map
is now the keymap referenced by theprojectile-keymap-prefix
inprojectile-mode-map
. This allows modification of the inner map, and allows additional prefix keys to reference it.
- Modified
projectile-ack
to append toack-and-a-half-arguments
instead of overriding them. - [#229] Fix
projectile-find-file-in-directory
's behavior for project directories projectile-toggle-between-implementation-or-test
shows understandable error if current buffer is not visiting a file.- [#244] Correct folder picked up by
projectile-ack
after project-switch. - [#182] Invalidate project cache if .projectile is modified.
- Added new command
projectile-find-file-other-window
. - Added new command
projectile-switch-to-buffer-other-window
. - Added new command
projectile-find-file-in-directory
that allows you to jump to files in any directory. .projectile
is now always taken into account.projectile-switch-project
's behavior is now customizable viaprojectile-switch-project-action
.- Added support for Gradle projects.
- Added support for
Ag
. - Added new command
projectile-purge-file-from-cache
. - Added new command
projectile-purge-dir-from-cache
. - Added new command
projectile-find-tag
. - Added new command
projectile-commander
. It allows you to quickly run many Projectile commands with a single key. Very useful as a project-switching action. projectile-switch-project
now supports a prefix argument. When it's present the switch action isprojectile-commander
.
- Replaced variable
projectile-use-native-indexing
withprojectile-indexing-method
. - Corrected grammar on error message for not being in a project.
projectile-find-test-file
now properly displays only test files (#145).
projectile-invalidate-cache
now accepts a prefix argument. When present you'll be prompted for the project whose cache to invalidate.- New command
projectile-find-dir
works similar toprojectile-find-file
- displays the project's dirs and opens them withdired
. It's bound toC-c p d
. - Added support for
grizzl
as a completion system. - Added support for
fossil
projects. - Added support for
Symfony 2
project. - New command
projectile-clear-known-projects
removes all known projects. - New command
projectile-remove-known-project
prompts you for a known project to remove.
- Fixed
projectile-replace
, which was broken from the use of relative paths - #103 -
projectile-switch-project
does not require a project to work - Don't show hidden buffers in projectile-project-buffers
- Rebound
projectile-compile-project
to C-c p c - Rebound
projectile-dired
to C-c p D - Reworked
projectile-compile-project
andprojectile-test-project
to be smarter, more configurable and closer in behavior to the stockcompile
command projectile-switch-project
(C-c p s) now runsprojectile-find-file
instead ofdired
.
- Display recentf files in helm-projectile.
- #95 - handle properly missing project root
- Use fast external tools to find project files when possible. This is the default option on all Unices.
- Removed obsolete command
projectile-reindex-project
. - Removed obsolete command
projectile-open
. - Introduced support for finding tests and switching between code and tests.
- Implement basic project type detection.
- Add a simple version reporting command projectile-version.
- Display relative paths to project files instead of disambiguated filenames.
- Directories listed in .projectile file are excluded when tags are generated.
- Remembers visited projects and may switch between them with
projectile-switch-project
. - Supports
lein {compile|test}
in Clojure projects. - Support projects only for subdirs of the project root.
- Add the ability to manually cache files.
- #57 - properly set the current working dir, before invoking shell commands
- #71 - correct regenerate tags keybinding in the README
- Move menu entry under
Tools
- Show indexing message only when doing native project indexing
- Massive performance improvements