Variable: projectile-dashboard-sections

projectile-dashboard-sections is a customizable variable defined in projectile.el.

Value

(project links vcs recent tasks commands)

Documentation

The sections projectile-dashboard renders, in order.

Each element is one of the symbols project (name, root, type, file and buffer counts, ignore rules), links (the project's README, changelog, license, manifest and Projectile configuration, when it has them), vcs
(version-control system, branch and working tree status), recent (the
project files you visit most, ranked by frecency), tasks (the project's named tasks) and commands (the configured lifecycle commands). Dropping a section skips both its rendering and the work needed to fill it in.

This variable was added, or its default value changed, in projectile version 3.3.0.

Source Code

;; Defined in ~/.emacs.d/elpa/projectile-20260820.1509/projectile.el
;;; Project dashboard
;;
;; `projectile-dashboard' summarises a project in one buffer: what the
;; project is, what its VCS thinks of it, the files you keep coming back
;; to, and what you can run in it.  Every interesting entry is a button,
;; so the dashboard doubles as a launcher - which is what makes it a
;; usable `projectile-switch-project-action'.
;;
;; Being a switch action is what shapes the whole thing.  It runs right
;; after a switch, on a project that is very likely cold, and it must not
;; make the switch feel slow.  So it reports only what is already there:
;; it never indexes, and an uncached project is shown as "not indexed
;; yet" rather than indexed on the spot, which would both cost seconds
;; and warm a cache the user didn't ask for.  Like the doctor, it neither
;; populates nor invalidates `projectile-projects-cache'.
;;
;; The only external process it runs is git - two short commands, and
;; only on a local git project.  `git rev-parse' is constant time, and
;; `git status --porcelain' rides the index stat cache and doesn't
;; recurse into untracked directories.  On a remote (TRAMP) project the
;; VCS section is skipped outright: even `rev-parse' means a round-trip
;; over the wire, and the frecency history isn't tracked for remote
;; projects anyway, so the recent files list is empty there too.  Every
;; other VCS degrades to its bare name.
;;
;; Lifecycle commands and tasks whose command is a function (the CMake
;; preset pickers, say) are listed but never resolved - resolving one can
;; pop up a prompt, and a dashboard that opens a minibuffer on project
;; switch would be intolerable.

(defcustom projectile-dashboard-sections
  '(project links vcs recent tasks commands)
  "The sections `projectile-dashboard' renders, in order.

Each element is one of the symbols `project' (name, root, type, file and
buffer counts, ignore rules), `links' (the project's README, changelog,
license, manifest and Projectile configuration, when it has them), `vcs'
\(version-control system, branch and working tree status), `recent' (the
project files you visit most, ranked by frecency), `tasks' (the project's
named tasks) and `commands' (the configured lifecycle commands).
Dropping a section skips both its rendering and the work needed to fill
it in."
  :group 'projectile
  :type '(repeat (choice (const :tag "Project summary" project)
                         (const :tag "Notable files" links)
                         (const :tag "Version control" vcs)
                         (const :tag "Recently visited files" recent)
                         (const :tag "Tasks" tasks)
                         (const :tag "Lifecycle commands" commands)))
  :package-version '(projectile . "3.3.0"))