Code Monkey home page Code Monkey logo

pjx.emacs's Introduction

Emacs Project Manager - Pjx

Emacs-project Manager - pjx

Overview

IDEA: Create an Emacs package to handle software projects.

Wishlist / Requirements:

  • File template selection per lanaguage
  • Project template selection
  • Project metadata search
  • Integrate to build system
  • Provide higher order functions
  • Close and Open a set of files

Features:

  • [X] switch between project buffers
  • [ ] switch between project dired buffers
  • [ ] switch between project buffers associated to files
  • [ ] Command to close all buffers not related to current project
  • [ ] Python backend for metadata
  • [X] find files in project sub-directories
  • [X] find files in project sub-directories matching a regex
  • [X] find files in project sub-directories with a given extension
  • [X] close all project files
  • [X] open a project in a new frame dedicated to the project. The commands C-x right (M-x next-buffer) and C-x left (M-x previous-buffer) switches only between project buffer files.
  • [X] Run compilation commands and make specific commands at project root directory.

Todolist:

  • [X] Add package header
  • [ ] Add documentation
  • [X] Add summary
  • [ ] Add development documentation and notes.
  • [ ] Add examples
  • [ ] Add gifs

How it works ?

This package provides commands to open, close, manipulate, find files, run compilation commands in projects.

Features:

  • Commands to find-files in project directory and in within its subdirectories.
  • Quick navigation between project.
  • Open projects in frames exclusive to the project. M-x left or M-x right switches only between project buffers.
  • Commands to open projects and close/kill project buffers.
  • Commands to run compilation commands and Makefile commands.

A project is just a directory in pjx-root-directory where is the path where all projects are stored.

Example:

$ tree -L 2 ~/Documents/projects
/home/archbox/Documents/projects
├── boleto.fsharp
│   ├── #boleto.fsx#
│   └── boleto.fsx
├── bookmarklet-maker.web
│   ├── dist
│   ├── index.html
│   ├── LICENSE
│   ├── Makefile
│   ├── README.html
│   ├── README.org
│   ├── scratch.js
│   └── scripts
... ... ... ... 

└── zhserver.haskell
    ├── assets
    ├── copylibs.sh
    ├── database
    ├── dist
    ├── Documentation.org
    ├── images
    ├── lib
    ├── LICENSE
    ├── Makefile
    ├── my-zhserver2.conf
    ├── my-zhserver.conf
    ├── README.org
    ├── src
    ├── stack.yaml
    ├── test
    ├── testdb
    ├── test-scripts
    ├── zhclient.bin
    ├── zhclient.sh
    ├── zhserver.bin
    ├── zhserver.cabal
    └── zhserver.sh

Commands

M-x [command]Description
Misc Commands
pjx/helpShow pjx commands help
pjx/customizeOpen customization pjx panel. Customize pjx settings.
Project Commands
pjx/new-projectAsk the user the project name and open its directory.
pjx/new-project-frameAsk the user the project name and opens in a new frame.
pjx/openShow a helm menu where the user can select the project to open.
pjx/open-frameLike pjx/open-frame, but open the project in a new frame. This frame is exclusive to project.
pjx/closeClose current project, killing all buffers related to it.
pjx/close-filesClose all files (only buffere bound to files) belonging to current project.
pjx/close-frameClose current project nad close its frame.
pjx/close-allClose all projects.
pjx/project-switchSwitch between opened projects.
pjx/project-switch-windowSwitch between opened projects in a new window.
pjx/project-switch-frameSwitch between opened projects in a new frame.
pjx/githubOpen https github Url. It supposes that origin remote Url is the Github https Url.
Directory Commands
pjx/root-diredGo to pjx-root-directory directory where all projects are stored.
pjx/root-dired-frameGo to pjx-root-directory directory where all projects are stored in a new frame.,
pjx/topGo to project root directory.
File Commands
pjx/switchSwitch between project buffers.
pjx/switch-fileSwitch between project buffers associated with files.
pjx/switch-file-frameSwitch to project file in a new frame.
pjx/find-fileProvides a helm-menu where the user can select file to open at all directories and sub directories.
pjx/find-file-frameLike pjx/find-file, but open file in a new frame.
pjx/find-file-extShow all files ending with extensions provided by the user where he can select the file to open.
pjx/find-files-openOpen all project files with given extensions. Use pjx/switch-file to switch between those files.
pjx/find-files-regexOpen all files with names matching a given regex.
pjx/find-diredRun M-x find-dired at project root directory showing all files and subdirectories.
Build Commands
pjx/compileRun compilation command at current project directory
pjx/makeRun $ make at project root directory and execute Makefile main rule.
pjx/make-cmdRun $ make at project root directory asking the user the make command to run.
pjx/make-cleanRun ‘$ make clean’ at project root directory and execute Makefile clean rule.
pjx/make-againRun ‘$ make clean && make’ at project root directory and execute Makefile main rule.
Copy Commands
pjx/copy-file-pathCopy buffer absolute file name to clipboard.
pjx/copy-project-pathCopy current project root directory to clipboard.
pjx/copy-dir-pathCopy absolute path to buffer current directory.

pjx.emacs's People

Contributors

caiorss avatar

Watchers

James Cloos avatar  avatar  avatar

Forkers

plumpmath

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.