Skip to content

Releases: bbatsov/projectile

Projectile 2.9

13 Feb 10:49
Compare
Choose a tag to compare

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 like marginalia and embark)
  • #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 of src/)
  • #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.
  • 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.
  • 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

13 Oct 15:11
Compare
Choose a tag to compare

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 to x 4 v.

Changes

  • #1839: Ensure projectile-toggle-between-implementation-and-test also obeys projectile-project-test-dir and projectile-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 in projectile-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 setting projectile-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

  • Fix fd inserting color control sequences when used over tramp.
  • #1835: Reopening existing vterm buffer in other window
  • #1865: projectile-generic-command should use projectile-fd-executable to find the path for fd.

Projectile 2.7

22 Nov 20:35
Compare
Choose a tag to compare

New features

  • #1591: Add project.el integration that will make Projectile the default provider for project lookup.
  • Add new command projectile-find-references (bound to C-c C-p ? and C-c C-p s x).
  • #1737: Add helpers for dir-local-variables for 3rd party use. Functions projectile-add-dir-local-variable and projectile-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 out projectile-eldev-project-p now also takes an &optional DIR arg to specify the directory it is acting on.

Projectile 2.6

25 Oct 08:47
Compare
Choose a tag to compare

New features

  • #1790: Add src-dir and test-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 and rails-test to use app instead of lib as src-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 use src-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/" with projectile-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

12 Aug 08:15
Compare
Choose a tag to compare

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> is configure, compile, test, install, package, or run). 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

27 May 06:44
Compare
Choose a tag to compare

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 to projectile-generate-process-name.
  • #1608: Use rebar3 build system by default for Erlang projects.
  • Rename projectile-project-root-files-functions to projectile-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

27 Nov 07:14
Compare
Choose a tag to compare

New features

  • #1517: Add project-specific compilation buffers and only ask to save files in the project when compiling.
  • New functions projectile-acquire-root and projectile-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 when projectile-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 to projectile-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

10 Jun 12:28
Compare
Choose a tag to compare

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 in projectile-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

06 Feb 08:07
Compare
Choose a tag to compare

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 in projectile-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
    of find 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 using projectile-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 of projectile-project-root.

Projectile 2.0.0

06 Feb 08:08
Compare
Choose a tag to compare

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 old alien.
  • #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 by projectile-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 to npm 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 and projectile-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 with projectile-ensure-project to emulate the old behavior.

Bugs fixed

  • #1315: Give preference to the project types that were registered last.
  • #1367: Fix the Makefile so that we can compile projectile - use make.