Projectile Versions Save

Project Interaction Library for Emacs

v2.8.0

6 months ago

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.

v2.7.0

1 year ago

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.

v2.6.0

1 year ago

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.

v2.5.0

2 years ago

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.

v2.4.0

2 years ago

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.

v2.3.0

3 years ago

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.

v2.2.0

3 years ago

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).

v1.0.0

4 years ago

New Features

  • #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 when projectile-mode starts.
  • Add projectile-discover-projects-in-search-path command which searches for projects in projectile-project-search-path.
  • Auto-cleanup missing known-projects on projectile-mode start.

Changes

  • #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 like projectile-compile-project.
  • #1175: projectile-{test,run}-project now stores the default command per directory instead of per project, just like projectile-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 in projectile-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.

Bugs fixed

  • #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.

v2.0.0

4 years ago

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.

v2.1.0

4 years ago

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.