Releases: bbatsov/projectile
Releases · bbatsov/projectile
Projectile 2.9
New features
- #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 likemarginalia
andembark
) - #1899: Add support for xmake build utility.
- #1918: Add Zig project discovery.
- Add support for Swift project discovery.
- Introduce
projectile-global-ignore-file-patterns
config that allows to ignore files and directories with regexp patterns. - Introduce
projectile-auto-cleanup-known-projects
option that allows you to auto-cleanup missing projects.
Bugs fixed
- #1881: Fix
projectile-recentf
when called outside any project. - #1915: Fix dotnet-sln project-type recognition. (check
*.sln
files instead ofsrc/
) - #1850: Ensure the presence of a project in
projectile-compilation-dir
. - #1811: Revert a change to
projectile-ignored-directories
that had converted them into regular expressions. - #1893: Fix
projectile-discover-projects-in-directory
when called interactively.
Changes
-
#1874: Changes
compilation-find-file-projectile-find-compilation-buffer
to 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-caching
to'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-project
or 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-project
c c
->projectile-compile-project
c p
->projectile-package-project
c i
->projectile-install-project
c t
->projectile-test-project
c r
->projectile-run-project
- The old keybindings will be removed in a future version of Projectile.
Projectile 2.8
New features
- #1862: Add project types "yarn" and "pnpm" separate from "npm".
- #1851: Add ripgrep to
projectile-commander
with binding?p
. - #1833: Add Julia project discovery.
- #1828: Add Nimble-based Nim project discovery.
- Add elm project type.
- #1821: Add
pyproject.toml
discovery for python projects. - #1830: Add command
projectile-run-vterm-other-window
and bind it tox 4 v
.
Changes
- #1839: Ensure
projectile-toggle-between-implementation-and-test
also obeysprojectile-project-test-dir
andprojectile-project-src-dir
. - #1285: By default, use fd in Git repositories instead of
git ls-files
when it is installed, in order to solve the problem where deleted files were still shown inprojectile-find-file
until 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-fd
to nil. - #1831: Enable the project.el integration only when
projectile-mode
is active. - #1847: Use literal directory name casing when toggling between impl and test.
Bugs fixed
Projectile 2.7
New features
- #1591: Add
project.el
integration 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-variables
for 3rd party use. Functionsprojectile-add-dir-local-variable
andprojectile-delete-dir-local-variable
wrap their built-in counterparts. They always use.dir-locals.el
from 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.
Changes
- #1812: Add a
projectile-root-marked
function for finding roots marked by.projectile
. Prioritize.projectile
above other bottom-up root files.
Bug fixed
- #1796: Fix
projectile-root-bottom-up
doesn’t always find bottom-most file. - #1799: Fix
projectile-open-projects
lists projects for which all buffers are closed. - #1806: Fix
projectile-project-type
to 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-file
projectile-verify-file-wildcard
,projectile-cabal-project-p
,
projectile-dotnet-project-p
,projectile-go-project-p
and the newly factored outprojectile-eldev-project-p
now also takes an &optional DIR arg to specify the directory it is acting on.
Projectile 2.6
New features
- #1790: Add
src-dir
andtest-dir
properties for the mill project type. - #1778: Allow
projectile-replace
to select file extensions when using prefix arg (C-u
). - #1757: Add support for the Pijul VCS.
- #1745: Allow
projectile-update-project-type
to change project type precedence and remove project options. - #1699:
projectile-ripgrep
now 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.
Bugs fixed
- #1781: Fix
rails-rspec
andrails-test
to useapp
instead oflib
assrc-dir
. - #1762: Fix
projectile-globally-ignored-directories
unescaped regex. - #1713: Fix
projectile-discover-projects-in-directory
reordering known projects. - #1514: Fix
projectile-ag
global ignores not in effect. - #1714: Fix
projectile-discover-projects-in-directory
not interactive. - #1734: Make
projectile--find-matching-test
usesrc-dir/test-dir
properties. - #1750: Fix source and test directories for Maven projects.
- #1765: Fix
src-dir
/test-dir
not 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.
Changes
- #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-ripgrep
now consistently searches hidden files.
Projectile 2.5.0
New features
- #1680: Add support for recursive project discovery.
- #1671/#1679 Allow the
:test-dir
and:src-dir
options of a project to be set to functions for more flexible test switching. - #1672: Add
projectile-<cmd>-use-comint-mode
variables (where<cmd>
isconfigure
,compile
,test
,install
,package
, orrun
). These enable interactive compilation buffers.
Bugs fixed
- #1550: Make
projectile-regenerate-tags
tramp-aware. - #1673: Fix CMake system-preset filename.
- #1691: Fix
compilation-find-file
advice handling of directory.
Changes
- Remove
pkg-info
dependency.
Projectile 2.4
New features
- Add
projectile-update-project-type-function
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-presets
to non-nil, disabled by default.
Changes
- Add
project
param toprojectile-generate-process-name
. - #1608: Use rebar3 build system by default for Erlang projects.
- Rename
projectile-project-root-files-functions
toprojectile-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 accomodate 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".
Bugs fixed
- #1639: Do not ask twice for project running ielm, term and vterm.
- #1250: Fix
projectile-globally-ignored-directories
not working with native indexing. - #1438: Make sure
projectile-files-via-ext-command
returns files, not errors. - #1450: Call
switch-project-action
within project's temp buffer. - #1340: Fix remote projects being removed if TRAMP can't connect.
- #1655: Fix
projectile-replace-regexp
searching the wrong files when called with prefix arg. - #1659: Fix
projectile-project-vcs
to work outside a project. - #1637: Integrate with savehist-mode.
Projectile 2.3
New features
- #1517: Add project-specific compilation buffers and only ask to save files in the project when compiling.
- New functions
projectile-acquire-root
andprojectile-process-current-project-buffers-current
- New project commands
projectile-package-project
,projectile-install-project
. - #1539: New defcustom
projectile-auto-discover
controlling whether to automatically discover projects in the search path whenprojectile-mode
activates. - 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
,helm
and the default completion system.
Changes
- #1540: Add default
test-suffix
to Angular projects. - Add a
:project-file
param toprojectile-register-project-type
. - #1588: Improve performance of
projectile-ibuffer
with many buffers not in project. - #1601: Implement separate compilation command history for each project.
Bugs fixed
- #1377: Fix
projectile-regenerate-tags
directory.
Projectile 2.2
New features
- #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.
Bugs fixed
- #1503: Leave archive before searching for the project root.
Changes
- #1528: Improve massively the performance of native indexing (it's around 10x faster now).
Projectile 2.1.0
New features
- #1486 Allow
projectile-run-shell/eshell/term/vterm/ielm
to start extra processes if invoked with the prefix argument. - New command
projectile-run-vterm
(x v inprojectile-command-map
). - Add
related-files-fn
option 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-fn
options and helper functions. - #1405: Add Bloop Scala build server project detection.
- #1418: The presence of a
go.mod
file implies a go project. - #1419: When possible, use fd instead
offind
to list the files of a non-VCS project. This should be much faster.
Bugs fixed
- #97: Respect
.projectile
ignores which are paths to files and patterns when usingprojectile-grep
. - #1391: A
.cabal
sub-directory is no longer considered project indicator. - #1385: Update
projectile-replace
for 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 seperate grep buffer per project root.
- #1488: Fix
projectile-find-file-in-directory
when in a subdir ofprojectile-project-root
.
Projectile 2.0.0
New features
- #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
hybrid
which behaves like the oldalien
. - #896 Add commands
projectile-previous-project-buffer
and
projectile-next-project-buffer
to 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-command
to re-execute the last external command in a project.
Changes
- (Breaking) #1147: Remove any post-processing from the
alien
indexing 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-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-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-root
if not invoked within a project. Now it will simply return nil. Use it together withprojectile-ensure-project
to emulate the old behavior.