project-list
Quick access and switching between projects
asiloisad 104 0 1.0.0 MIT GitHub
  • Made for Pulsar!

    This package was written specifically for Pulsar and did not exist in the Atom package repository.

project-list

Quick access and switching between projects. Manage projects with tags, scanning.

demo

Features

  • Project list: Browse and open saved projects.
  • Directory scanning: Auto-discover projects in directories.
  • Glob paths: Use wildcard patterns directly in paths to expand matching directories at load time.
  • Tags support: Organize and filter projects by tags.
  • Multiple paths: Projects can span multiple directories.
  • Multiple open modes: Open in new window, swap, switch in same window, or append to current window.
  • Dev and safe mode: Open projects in dev mode or safe mode directly from the list.
  • Visual indicators: Items configured with devMode or safeMode are marked with distinct icons in the list.
  • Window title: Automatically updates the window title to reflect the active project name.
  • Performance cache: Project list is cached to avoid re-scanning on every open.
  • Tree view integration: When used with tree-view-plus, the empty project view provides quick access to the project list.

Installation

To install project-list search for project-list in the Install pane of the Pulsar settings or run ppm install project-list. Alternatively, you can run ppm install asiloisad/pulsar-project-list to install a package directly from the GitHub repository.

The recent-list package extends the workflow with a recently opened projects list, fuzzy-searchable and sorted by recency.

projects.cson

You can edit a file by command project-list:edit or by manually opening <config-dir>/projects.cson. The main file structure consists of a array of objects.

Setting Type Description Default
title string Project title used in the project list mandatory
paths string[] The array of paths to project directories. Glob wildcards (*, **, ?, [...], {...}) are supported and expand to all matching directories at load time. mandatory
tags string[] The tags help's organize and find projects []
scan boolean|string|string[] scan paths and add subdirs as projects. A true is equal to "*/". More... false
icon string custom icon of project e.g. "icon-star" "icon-file-directory"
devMode boolean project should open in Dev Mode false
safeMode boolean project should open in Safe Mode false

Here is an example of projects.cson:

[
  {
    title: "My Library",
    paths: [
      "C:/Work/library/"
    ],
    tags: [
      "work"
    ]
    scan: true
  },
  {
    title: "Projects",
    paths: [
      "C:/Projects/",
      "D:/Projects/"
    ],
    tags: [
      "work"
    ],
    scan: [
      "*/"
      "*/[1233456798]*/"
    ]
  },
  {
    title: "Core",
    paths: [
      "C:/Work/core/"
    ],
    tags: [
      "work"
    ]
    devMode: true
  },
  {
    title: "Packages",
    paths: [
      "C:/Work/packages/*"
    ],
    tags: [
      "work"
    ]
  }
]

Commands

Commands available in atom-workspace:

  • project-list:toggle: F10 opens project list,
  • project-list:update: update projects list,
  • project-list:edit: Ctrl+F10 open configuration file.

Commands available in .project-list:

  • select-list:open: Enter opens a new window with selected project,
  • select-list:swap: Alt+Enter closes active window and opens a new one with the selected project,
  • select-list:switch: Ctrl+Enter switches to a new window with the selected project,
  • select-list:append: Shift+Enter appends selected project to active window,
  • select-list:paste: Alt+V paste paths into active text-editor,
  • select-list:dev: Alt+D opens a new window with selected project in dev mode,
  • select-list:safe: Alt+S opens a new window with selected project in safe mode,
  • select-list:external: Alt+F12 open folders externally (via open-external),
  • select-list:show: Ctrl+F12 show folders in explorer (via open-external),
  • select-list:update: F5 update projects list.

Filtering

The search query is matched against a combined text string in the format #tag1 #tag2 Title. Tags are placed first so that a query like "pulsar pack" can match a tag Pulsar followed by a title Packages in the correct order.

Prefixing a query term with # targets tags explicitly. For example, #work will rank projects tagged work much higher, since the # character is part of the internal text and aligns directly with the tag prefix.

Fuzzy matching uses the fuzzaldrin algorithm. Match scores are further adjusted by:

  • Title length: shorter titles score higher (common projects rank up),
  • Tag count: fewer tags score higher (general projects rank up).

Consumed Service open-external

When the open-external package is installed, two additional actions become available in both project list: open folders externally and show folders in explorer. For multi-path projects, the action is applied to each path.

Provided Service project-list

Provides access to the project list manager instance. Other packages can use this to query and interact with the saved project list.

Contributing

Got ideas to make this package better, found a bug, or want to help add new features? Just drop your thoughts on GitHub. Any feedback is welcome!