- #1964: Implement
project-nameandproject-buffersmethods for theproject.elintegration, so that code usingproject.elAPIs returns correct results for Projectile-managed projects. - #1837: Add
eatproject terminal commands with keybindingsx xandx 4 x. - Add keybinding
A(in the projectile command map) and a menu entry forprojectile-add-known-project.
- Fix
projectile-files-via-ext-commandexecuting empty string as shell command for non-git VCS sub-projects. - Fix
projectile-select-filescrashing on filenames with regexp metacharacters by usingstring-searchinstead ofstring-match. - Fix
projectile-find-referencesusing internalxref--show-xrefsAPI whose signature changed across Emacs versions. - Fix
projectile-determine-find-tag-fnfalling back tofind-tagwhich was removed in Emacs 29; now falls back toxref-find-definitions. - Fix
projectile-files-to-ensureexpanding wildcards relative to the current buffer instead of the project root. - Fix
projectile-ignored-project-pfailing to match abbreviated paths against truename-resolved ignored projects list. - Fix
projectile-edit-dir-localssaving partial.dir-locals.elcontent when the user aborts skeleton insertion withC-g. - Fix
projectile--other-extension-filessort comparator ignoring its second argument, producing undefined ordering; replaced with a stable partition. - Fix
projectile-toggle-project-read-onlyoperating on the wrong buffer afteradd-dir-local-variableby wrapping insave-selected-window. - Fix
projectile-cache-current-filecallingprojectile-project-roottwice instead of reusing the already-resolved value. - Fix
projectile-load-project-cachestoring nil in cache on corrupt/empty cache files, preventing future reload attempts. - Fix
projectile--cmake-command-presetsusingmapcarinstead ofmapcan, producing nested lists for included presets. - Fix
projectile--eatignoring thenew-processargument when generating buffer names. - Fix
projectile-check-vcs-statushanging indefinitely by adding a 30-second timeout to its busy-wait loop. - Fix
projectile-sort-by-modification-timeandprojectile-sort-by-access-timecrashing on deleted files (nilfile-attributes). - Fix
projectile-recentf-filesfailing to match files when the project root contains symlinks. - Fix
projectile--run-project-cmdpassing nil tocompilewhen no command is configured andcompilation-read-commandis nil — now signals a clearuser-error. - Fix
projectile--merge-related-files-fnsusing destructivenconcwhich could corrupt shared data and silently drop values when the existing list was nil. - Fix
projectile-configure-commandformat call passing an unusedcompile-dirargument. - Fix
projectile-update-project-typeresetting the project type cache with wrong hash table:test(used defaulteqlinstead ofequalfor string keys). - Fix
projectile-find-file-hook-functionrunningprojectile-maybe-limit-project-file-bufferson TRAMP buffers, causing potential hangs on slow connections. - Use
expand-file-nameinstead offile-truenameinprojectile-compilation-dirto avoid unnecessary symlink resolution (and TRAMP network round-trips). - Use non-destructive
appendinstead ofnconcinprojectile-get-all-sub-projectsto avoid mutating caller data. - Add
safe-local-variablepredicates for project settings variables (projectile-project-test-suffix,projectile-project-compilation-cmd, etc.) so they can be set in.dir-locals.elwithout prompting. - #1962: Fix
projectile-get-other-filescrashing when a candidate other-file lives in the project root directory. - #1816: Fix
projectile-expand-file-name-wildcardfailing when a parent directory is not readable (e.g. iCloud Drive, Termux). - #1841: Preserve user's
compilation-buffer-name-functionwhenprojectile-per-project-compilation-bufferis nil. - #1823: Update the mode-line via
window-configuration-change-hookso non-file buffers (e.g. Magit) display the correct project info. - #1886: Fix
(wrong-type-argument stringp nil)error when running project commands in a newly created project by usingprojectile-acquire-rootinstead ofprojectile-project-rootinprojectile--run-project-cmd. - #1456: Fix
projectile-replace-regexpstopping when encountering a missing file by filtering nonexistent files from the replacement file list. - #1687: Fix
projectile-grep-finished-hooknot running on subsequent grep calls due to buffer rename collision. - #1939: Handle corrupted
projectile-known-projects-filegracefully instead of crashing with(wrong-type-argument listp ...). - #1748: Fix
projectile-replacefalling back to the legacy Emacs 25/26 code path on Emacs 27+ becausefileloopwas not loaded. - #1741: Fix
projectile-replacetreating the search string as a regexp instead of a literal string on Emacs 27+. - #1729: Fix
projectile-root-top-downto actually return the topmost matching project root instead of the bottommost. - #1596:
projectile-find-dirnow includes intermediate directories that contain only subdirectories (e.g.src/when it only hassrc/ComponentA/,src/ComponentB/). - #1551: Don't add nonexistent files to the project cache (e.g. when visiting a new file with
find-fileand then abandoning the buffer). - #1554: Fix
projectile-files-with-stringfailing on special characters when usinggreporgit-grepby adding the-F(fixed-string) flag. - #1897: Filter deleted-but-unstaged files from
git ls-filesoutput in alien/hybrid indexing (whenfdis not used). - #1873: Skip unreadable directories during native indexing instead of aborting with a permission error.
- #1961: Prevent directories from matching file-type project root markers (e.g., a
workspacedirectory no longer matches theWORKSPACEBazel marker on case-insensitive filesystems). - #1749: Strip
./prefix fromfdoutput inprojectile-files-via-ext-command, fixing compatibility with olderfdversions that don't support--strip-cwd-prefix. - Fix
projectile-ripgrepfailing on zsh when ignored file patterns contain glob characters, by quoting--globarguments. - Fix CMake version parsing failing when
cmake --versionoutput contains extra text after the version number. - Fix Jujutsu file listing to use template syntax for null-byte-separated output, making it robust against user customization of
jjoutput format. - Fix
projectile-purge-file-from-cacheserializing the stale file list to disk instead of the updated one. - Fix misplaced paren in
projectile-project-buffers-other-buffercausingswitch-to-bufferarguments to be ignored. - Fix
projectile-default-generic-commandsilently dropping lambda/closure commands (only symbol commands worked). - Fix
dired-before-readin-hookbeing added as buffer-local instead of global inprojectile-mode, so it now correctly fires in all dired buffers. - Fix
projectile-find-dir-hooknot being cleaned up when disablingprojectile-mode. - Use
display-warninginstead ofmessagewhen cache serialization fails, making the failure visible in the*Warnings*buffer.
- Pre-compute file timestamps in
projectile-sort-by-modification-timeandprojectile-sort-by-access-timeto reduce stat calls from O(n log n) to O(n). - Cache
projectile-parse-dirconfig-fileresults per project root (invalidated by file modification time), avoiding redundant file reads during indexing. - Cache
file-truenameresults inprojectile-project-buffer-pwhen checking multiple buffers, reducing redundant symlink resolution. - Use a hash set for deleted file removal in
projectile-dir-files-alien, improving performance from O(n*m) to O(n+m) when filtering deleted-but-unstaged files. - Avoid redundant
projectile-project-rootcall inprojectile-detect-project-typeby passing through the already-resolved root. - Share
file-truenamecache across buffers inprojectile-open-projects, matching the optimization already inprojectile-project-buffers. - Remove unnecessary temp buffer creation in
projectile--cache-project-commands-p(was creating a buffer and re-reading.dir-locals.elon every compile/test/run invocation). - [Breaking] Bump minimum required Emacs version from 26.1 to 27.1. This removes ~30 lines of compatibility code (fileloop fallback,
time-convertfallback,projectile-flattenshim) and fixes thetags-query-replaceFIXME inprojectile-replace-regexp. - Add
compatas a dependency, enabling the use of modern Emacs APIs (e.g.string-replace) on older Emacs versions. - Replace most
cl-libsequence functions withseq.elequivalents (seq-filter,seq-remove,seq-some,seq-find,seq-sort,seq-every-p,seq-difference) and convertcl-casetopcase. - #1971: Support
slnxfiles for dotnet project types. - #1958: Exclude
.projectile-cache.eldfrom search results (ripgrep/ag/grep) by default. - #1957: Add
:callerinformation to calls toivy-read(used by packages likeivy-rich). - #1947:
projectile-project-nameshould be marked as safe. - Set
projectile-auto-discovertonilby default (to avoid startup slowdowns in some situations). - #1943: Consider
projectile-indexing-methodto be safe as a dir-local variable if it is one of the preset values. - #1936: Do not require selecting a project when using
M-x projectile-invalidate-cache, since there is a global cache that is also cleared by that command, even when not operating on any specific project. - Add
build.millas an alternative project marker for the Mill project type, matching Mill's current recommended file extension. - Replace obsolete
when-letandcl-gensymwithwhen-let*andgensymfor compatibility with Emacs 31+.
- #1929: Don't create cache files when
projectile-use-cachingis not set topersistent.
- #1870: Add package command for CMake projects.
- #1875: Add support for Sapling VCS.
- #1876: Add support for Jujutsu VCS.
- #1877: Add custom variable
projectile-cmd-hist-ignoredups. - Add support for Eask projects.
- #1892: Add category metadata to
completing-read. (it's used by packages likemarginaliaandembark) - #1899: Add support for xmake build utility.
- #1918: Add Zig project discovery.
- Add support for Swift project discovery.
- Introduce
projectile-global-ignore-file-patternsconfig that allows to ignore files and directories with regexp patterns. - Introduce
projectile-auto-cleanup-known-projectsoption that allows you to auto-cleanup missing projects.
- #1881: Fix
projectile-recentfwhen called outside any project. - #1915: Fix dotnet-sln project-type recognition. (check
*.slnfiles instead ofsrc/) - #1850: Ensure the presence of a project in
projectile-compilation-dir. - #1811: Revert a change to
projectile-ignored-directoriesthat had converted them into regular expressions. - #1893: Fix
projectile-discover-projects-in-directorywhen called interactively.
-
#1874: Changes
compilation-find-file-projectile-find-compilation-bufferto navigate directly to the file if already present on disk to help improve performance in scenarios where there are a large number of project directories. -
Drop support for Emacs 25.
-
Rework the caching logic. The main changes from before are:
- Each project has its own cache file
- Cache files are consulted only when you request the files of some project
This makes caching both more robust and faster, as before the cache file for all projects was loaded when projectile-mode was enabled.
-
Make the cache transient by default. (meaning it lives only in memory and is not persisted to a file)
- To enable persistent caching you need to set
projectile-enable-cachingto'persistent.
- To enable persistent caching you need to set
-
Speed-up load time by moving known projects initialization outside of
projectile-mode's init.- As a side effect the known projects will be initialized properly even if you're not using
projectile-mode. - The projects are read from disk the first time you invoke
projectile-switch-projector a similar command.
- As a side effect the known projects will be initialized properly even if you're not using
-
Introduce a common prefix for project lifecycle command keybindings:
c o->projectile-configure-projectc c->projectile-compile-projectc p->projectile-package-projectc i->projectile-install-projectc t->projectile-test-projectc r->projectile-run-project- The old keybindings will be removed in a future version of Projectile.
- #1862: Add project types "yarn" and "pnpm" separate from "npm".
- #1851: Add ripgrep to
projectile-commanderwith binding?p. - #1833: Add Julia project discovery.
- #1828: Add Nimble-based Nim project discovery.
- Add elm project type.
- #1821: Add
pyproject.tomldiscovery for python projects. - #1830: Add command
projectile-run-vterm-other-windowand bind it tox 4 v.
- #1839: Ensure
projectile-toggle-between-implementation-and-testalso obeysprojectile-project-test-dirandprojectile-project-src-dir. - #1285: By default, use fd in Git repositories instead of
git ls-fileswhen it is installed, in order to solve the problem where deleted files were still shown inprojectile-find-fileuntil their deletions were staged. The user-facing behavior should be the same, although potentially with different performance characteristics in large Git repositories. The old behavior can be reclaimed by settingprojectile-git-use-fdto nil. - #1831: Enable the project.el integration only when
projectile-modeis active. - #1847: Use literal directory name casing when toggling between impl and test.
- Fix
fdinserting color control sequences when used over tramp. - #1835: Reopening existing vterm buffer in other window
- #1865:
projectile-generic-commandshould useprojectile-fd-executableto find the path for fd.
- #1591: Add
project.elintegration that will make Projectile the default provider for project lookup. - Add new command
projectile-find-references(bound toC-c C-p ?andC-c C-p s x). - #1737: Add helpers for
dir-local-variablesfor 3rd party use. Functionsprojectile-add-dir-local-variableandprojectile-delete-dir-local-variablewrap their built-in counterparts. They always use.dir-locals.elfrom the root of the current Projectile project. - Add a new defcustom (
projectile-dirconfig-file) controlling the name of the file used as Projectile’s root marker and configuration file. - #1813: Allow project-files to contain wildcards and allow multiple project-files per project type registration. Add a new project-type for .NET solutions.
- #1812: Add a
projectile-root-markedfunction for finding roots marked by.projectile. Prioritize.projectileabove other bottom-up root files.
- #1796: Fix
projectile-root-bottom-updoesn't always find bottom-most file. - #1799: Fix
projectile-open-projectslists projects for which all buffers are closed. - #1806: Fix
projectile-project-typeto return the correct project type even when we pass it the DIR arg. As a result of the fix,projectile-expand-root,projectile-detect-project-type,projectile-verify-files,projectile-verify-fileprojectile-verify-file-wildcard,projectile-cabal-project-p,projectile-dotnet-project-p,projectile-go-project-pand the newly factored outprojectile-eldev-project-pnow also takes an &optional DIR arg to specify the directory it is acting on.
- #1790: Add
src-dirandtest-dirproperties for the mill project type. - #1778: Allow
projectile-replaceto select file extensions when using prefix arg (C-u). - #1757: Add support for the Pijul VCS.
- #1745: Allow
projectile-update-project-typeto change project type precedence and remove project options. - #1699:
projectile-ripgrepnow supports rg.el. - #1712: Make it possible to hide Projectile's menu. See
projectile-show-menu. - #1718: Add a project type definition for
GNUMakefile. - #1747: Add support for preset-based install-commands for CMake projects.
- #1768: Add support for disabling command caching on a per-project basis.
- #1797: Make all project type attributes locally overridable.
- #1803: Add support go-task/task.
- #1781: Fix
rails-rspecandrails-testto useappinstead oflibassrc-dir. - #1762: Fix
projectile-globally-ignored-directoriesunescaped regex. - #1713: Fix
projectile-discover-projects-in-directoryreordering known projects. - #1514: Fix
projectile-agglobal ignores not in effect. - #1714: Fix
projectile-discover-projects-in-directorynot interactive. - #1734: Make
projectile--find-matching-testusesrc-dir/test-dirproperties. - #1750: Fix source and test directories for Maven projects.
- #1765: Fix
src-dir/test-dirnot defaulting to"src/"and"test/"withprojectile-toggle-between-implementation-and-test. - Fix version extraction logic.
- 1654 Fix consecutive duplicates appearing in command history.
- #1755 Cache failure to find project root.
- #1785: Give the project type "go" higher precedence than universal types, namely "make".
- #1447: Restructure the menu.
- #1692: Enable minibuffer completions when reading shell-commands.
- Change the Grails project marker to
application.yml. - #1789: Progress reporter for recursive progress discovery.
- #1708:
projectile-ripgrepnow consistently searches hidden files.
- #1680: Add support for recursive project discovery.
- #1671/#1679: Allow the
:test-dirand:src-diroptions of a project to be set to functions for more flexible test switching. - #1672: Add
projectile-<cmd>-use-comint-modevariables (where<cmd>isconfigure,compile,test,install,package, orrun). These enable interactive compilation buffers. - #1705: Add project detection for Nix flakes.
- #1550: Make
projectile-regenerate-tagstramp-aware. - #1673: Fix CMake system-preset filename.
- #1691: Fix
compilation-find-fileadvice handling of directory.
- Remove
pkg-infodependency.
- Add
projectile-update-project-typefunction for updating the properties of existing project types. - #1658: New command
projectile-reset-known-projects. - #1656: Add support for CMake configure, build and test presets. Enabled by setting
projectile-cmake-presetsto non-nil, disabled by default. - Add optional parameters to
projectile-run-shell-command-in-rootandprojectile-run-async-shell-command-in-root
- Add
projectparam toprojectile-generate-process-name. - #1608: Use rebar3 build system by default for Erlang projects.
- Rename
projectile-project-root-files-functionstoprojectile-project-root-functions. - #1647: Use "-B" in the mvn commands to avoid ANSI coloring clutter in the compile buffer
- #1657: Add project detection for Debian packaging directories.
- #1656: CMake compilation-dir removed to accommodate preset support, commands adjusted to run from project-root, with "build" still being the default build-directory. The non-preset test-command now uses "cmake" with "--target test" instead of "ctest".
- #1639: Do not ask twice for project running ielm, term and vterm.
- #1250: Fix
projectile-globally-ignored-directoriesnot working with native indexing. - #1438: Make sure
projectile-files-via-ext-commandreturns files, not errors. - #1450: Call
switch-project-actionwithin project's temp buffer. - #1340: Fix remote projects being removed if TRAMP can't connect.
- #1655: Fix
projectile-replace-regexpsearching the wrong files when called with prefix arg. - #1659: Fix
projectile-project-vcsto work outside a project. - #1637: Integrate with savehist-mode.
- #1517: Add project-specific compilation buffers and only ask to save files in the project when compiling.
- New functions
projectile-acquire-rootandprojectile-process-current-project-buffers-current - New project commands
projectile-package-project,projectile-install-project. - #1539: New defcustom
projectile-auto-discovercontrolling whether to automatically discover projects in the search path whenprojectile-modeactivates. - Add emacs-eldev project type.
- Add Dart project type.
- #1555: Add search with ripgrep.
- Add Python-poetry project type.
- #1576: Add OCaml Dune project type.
- Add Mill project type.
- Auto-detect completion system, supporting
ido,ivy,helmand the default completion system.
- #1540: Add default
test-suffixto Angular projects. - Add a
:project-fileparam toprojectile-register-project-type. - #1588: Improve performance of
projectile-ibufferwith many buffers not in project. - #1601: Implement separate compilation command history for each project.
- #1377: Fix
projectile-regenerate-tagsdirectory.
- #1523: Add a new defcustom (
projectile-max-file-buffer-count) controlling how many opened file buffers should Projectile maintain per project. - Optional support for comments in .projectile dirconfig files using
projectile-dirconfig-comment-prefix. - #1497: New command
projectile-run-gdb(x g inprojectile-command-map). - Add Bazel project type.
- #1503: Leave archive before searching for the project root.
- #1528: Improve massively the performance of native indexing (it's around 10x faster now).
- #1486 Allow
projectile-run-shell/eshell/term/vterm/ielmto start extra processes if invoked with the prefix argument. - New command
projectile-run-vterm(x v inprojectile-command-map). - Add
related-files-fnoption to use custom function to find test/impl/other files. - #1019: Jump to a test named the same way but in a different directory.
- #982: Add heuristic for projectile-find-matching-test.
- Support a list of functions for
related-files-fnoptions and helper functions. - #1405: Add Bloop Scala build server project detection.
- #1418: The presence of a
go.modfile implies a go project. - #1419: When possible, use fd instead
of
findto list the files of a non-VCS project. This should be much faster.
- #675: Performance improvement for native project indexing strategy.
- #97: Respect
.projectileignores which are paths to files and patterns when usingprojectile-grep. - #1391: A
.cabalsub-directory is no longer considered project indicator. - #1385: Update
projectile-replacefor Emacs 27. - #1432: Support .NET project.
- #1270: Fix running commands that don't have a default value.
- #1475: Fix directories being ignored with hybrid mode despite being explicitly unignored.
- #1482: Run a separate grep buffer per project root.
- #1488: Fix
projectile-find-file-in-directorywhen in a subdir ofprojectile-project-root.
- #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 new indexing method called
hybridwhich behaves like the oldalien. - #896 Add commands
projectile-previous-project-bufferandprojectile-next-project-bufferto switch to other buffer in the project. - #1016: Add a new defcustom (
projectile-current-project-on-switch) controlling what to do with the current project on switch. - #1233: Add a new defcustom (
projectile-kill-buffers-filter) controlling which buffers are killed byprojectile-kill-buffers. - #1279: Add command
projectile-repeat-last-commandto re-execute the last external command in a project.
- (Breaking) #1147: Remove any post-processing from the
alienindexing method. - 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-suffixtonpmproject. - #1285: Add default
test-suffixto 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-lineandprojectile-mode-line-function. - #1205: Check that project directory exists when switching projects.
- Move Projectile's menu out of the "Tools" menu.
- [API] (Breaking) Stop raising errors from
projectile-project-rootif not invoked within a project. Now it will simply return nil. Use it together withprojectile-ensure-projectto emulate the old behavior.
- #1315: Give preference to the project types that were registered last.
- #1367: Fix the Makefile so that we can compile projectile - use
make.
- #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-commandfor running a configuration for build systems that need that. - #1168: Add CMake and Meson project support.
- #1159 Add nix project support.
- #1166: Add
-other-frameversions of commands that had-other-windowversions. - 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-typecan now be used to customize the source and test directory via:src-dirand:test-dirfor projects with custom needs (eg. maven). - #1240: Add some integration with ripgrep.
- Add
projectile-project-search-path, which is auto-searched for projects whenprojectile-modestarts. - Add
projectile-discover-projects-in-search-pathcommand which searches for projects inprojectile-project-search-path. - Auto-cleanup missing known-projects on
projectile-modestart.
- #1213: Cache project root in non-file-backed buffers.
- #1175:
projectile-register-project-typecan now set a default compilation directory for build systems that need to build out-of-tree (eg. meson). - #1175:
projectile-{test,run}-projectnow run inside(projectile-compilation-dir), just likeprojectile-compile-project. - #1175:
projectile-{test,run}-projectnow 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-projectcan now be used interactively. projectile-modeis now a global mode.projectile-find-tagnow defaults to xref on Emacs 25.1+.- Add relation between
.hand.ccfiles 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.jsonas 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-suffixesas file name suffixes (previously treated 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-projectfails for generic project type - #1162:
projectile-agcauses "Attempt to modify read-only object" error. - #1169:
projectile-compile-projectdoes 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-directoryafter 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
TAGSandGTAGSroot markers. - Add relation between the
.h,.cxx,.ixxand.hxxfiles inprojectile-other-file-alist. - Add relation between the
.hppand.ccfiles inprojectile-other-file-alist. - Add support to specify project name either via
.dir-locals.elor 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-suffixeswhen usingprojectile-grepandprojectile-ag. - Add
projectile-replace-regexp, which supports replacement by regexp within a project.projectile-replaceis 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). - #971: Let user unignore files in
.projectilewith 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.sourceargument when installing R projects
- #871: Stop advice for
compilation-find-fileto 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 though not descendent of project root.
- #576:
projectile-replacestomps 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-pmay 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-filesdefcustom). - Add the ability to dynamically decide if a project should be added to
projectile-known-projects(via newprojectile-ignored-project-functiondefcustom). - 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-cmdandprojectile-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.elwith the variableprojectile-project-compilation-dir. - When there is a selected region, projectile-ag, projectile-grep, projectile-replace and projectile-find-tag uses its content as a search term instead of symbol at point.
- Rename
projectile-switch-project-hooktoprojectile-after-switch-project-hook. projectile-compile-projectnow offers appropriate completion targets even when called from a subdirectory.- Add an argument specifying the regexp to search to
projectile-grep. - Use
helm-projectile-grepinstead ofhelm-find-filewhen selecting a project. - Omit current buffer from
projectile-switch-to-bufferandprojectile-switch-to-buffer-other-windowchoices.
- #721: Remove current buffer from
helm-projectile-switch-project. - #667 Use
file-truenamewhen 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-grepinhelm-projectile-grep - Fix
projectile-parse-dirconfig-fileto parse non-ASCII characters properly.
- Replace Helm equivalent commands in
projectile-commanderwhen using Helm. - Add replacement commands projectile-grep, projectile-ack and projectile-ag with their Helm versions.
- 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-projectsthat opens all files in all known projects. - Add an action for
helm-projectile-switch-projectto delete multiple marked projects. - Add the ability to retrieve files in all sub-projects under a project root.
- Add
projectile-find-file-dwimandhelm-projectile-find-file-dwimcommands. - Provide actual Helm commands for common Projectile commands.
- Use existing Helm actions and map in
helm-find-filesthat allowshelm-source-projectile-files-listto 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.tomlprojects - Try to use projectile to find files in compilation buffers
- Support
helmas a completion system - New command
projectile-project-infodisplays basic info about the current project. - New
defcustomprojectile-globally-ignored-buffersallows you to ignore buffers by name - New
defcustomprojectile-globally-ignored-file-suffixesallows 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
defcustomprojectile-remember-window-configsin favor ofpersp-projectile.el. - Progress reporter for the native indexing method.
- Fix
projectile-regenerate-tagsto work in directories that include spaces. - Prevent
projectile-kill-buffersfrom 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-expireandprojectile-file-exists-local-cache-expire. - added new defcustoms
projectile-project-root-files-top-down-recurring,projectile-project-root-files-bottom-upandprojectile-project-root-files-functions. - Added new command
projectile-save-project-buffers. - Added new command
projectile-cleanup-known-projects. - Added new commands
projectile-display-bufferandprojectile-find-dir-other-window. - Added new interactive function
projectile-project-buffers-other-bufferwhich runs newprojectile-project-buffers-non-visiblefunction, the former is bound toC-c p ESC. - New variable
projectile-enable-idle-timerturns on an idle timer which runs the hookprojectile-idle-timer-hookeveryprojectile-idle-timer-secondsseconds when non-nil. - New defcustom
projectile-remember-window-configswill makeprojectile-switch-projectrestore 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-grepwill makeprojectile-grepusegit grepfor git projects. - Added new
projectile-commandermethods ?v and ?R which runprojectile-vcandprojectile-regenerate-tags, respectively. projectile-vcwill usemagit-statusif available.- New functions
projectile-find-implementation-or-testandprojectile-find-implementation-or-test-other-window, the latter is bound toC-c p 4 t. - New defcustoms
projectile-test-prefix-functionandprojectile-test-suffix-functionallow users to customize how projectile identifies test files by project type. projectile-grepwill 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-projectcommand to make perspective mode work along with projectile. - Changed
projectile-mode-line-lighterto a defcustom variable to make mode line indicator prefix customizable. - New command
projectile-find-file-in-known-projects. - New defcustom
projectile-ignored-projectsallows 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
Makefileis 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-functiondefcustom. projectile-command-mapis now the keymap referenced by theprojectile-keymap-prefixinprojectile-mode-map. This allows modification of the inner map, and allows additional prefix keys to reference it.
- Modified
projectile-ackto append toack-and-a-half-argumentsinstead of overriding them. - [#229] Fix
projectile-find-file-in-directory's behavior for project directories projectile-toggle-between-implementation-or-testshows understandable error if current buffer is not visiting a file.- [#244] Correct folder picked up by
projectile-ackafter 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-directorythat allows you to jump to files in any directory. .projectileis 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-projectnow supports a prefix argument. When it's present the switch action isprojectile-commander.
- Replaced variable
projectile-use-native-indexingwithprojectile-indexing-method. - Corrected grammar on error message for not being in a project.
projectile-find-test-filenow properly displays only test files (#145).
projectile-invalidate-cachenow accepts a prefix argument. When present you'll be prompted for the project whose cache to invalidate.- New command
projectile-find-dirworks similar toprojectile-find-file- displays the project's dirs and opens them withdired. It's bound toC-c p d. - Added support for
grizzlas a completion system. - Added support for
fossilprojects. - Added support for
Symfony 2project. - New command
projectile-clear-known-projectsremoves all known projects. - New command
projectile-remove-known-projectprompts you for a known project to remove.
- Fixed
projectile-replace, which was broken from the use of relative paths - #103 -
projectile-switch-projectdoes not require a project to work - Don't show hidden buffers in projectile-project-buffers
- Rebound
projectile-compile-projectto C-c p c - Rebound
projectile-diredto C-c p D - Reworked
projectile-compile-projectandprojectile-test-projectto be smarter, more configurable and closer in behavior to the stockcompilecommand projectile-switch-project(C-c p s) now runsprojectile-find-fileinstead 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