Code Monkey home page Code Monkey logo

process-palette's Introduction

Process Palette

Run parameterized shell commands from Atom.

Terminals are now supported!

You can now configure a command to run in an embedded terminal. This allows you to provide input when prompted. You can also simply add a terminal without configuring a command for general purpose use.

Highlights:

  • Parameterize commands with values from the workspace, e.g, file path, project path, selected text, etc.
  • Add entries to the command palette with optional shortcut keys for each command.
  • Define parameterized environment variables.
  • Run multiple instances of commands in parallel.
  • Provides a convenient graphical editor. No need to edit configuration files directly unless you want to.
  • Integrates with the project tree. Select a file in the project tree and choose which command to run it with.
  • Detects paths and line numbers in the output that links back to the editor.
  • Add hooks for custom JavaScript to run before and after a process.
  • Open embedded terminals and optionally configure its working directory and environment variables.

See the changelog for the latest improvements.

Examples

Add a command for running Python scripts

demo

Run commands that target files directly from the project tree

demo

Add a terminal

demo

Quick Start

Install Process Palette and then either generate or download a configuration file.

Generate Configuration

  1. Open the Process Palette panel by choosing Packages|Process Palette|Toggle from the menu or Process Palette: Toggle from the command palette. The following panel will appear: Screenshot
  2. Create a global configuration or a project specific configuration with the respective Do it! buttons. If a project specific configuration is created and more than one project is open then one can be chosen from the dialog box that will appear.
  3. Either of the Do it! buttons will create an example configuration file and open it in the graphical editor.
  4. Configuration files can be edited graphically by choosing Packages|Process Palette|Edit Configuration from the menu or Process Palette: Edit Configuration from the command palette. Closing the editor will automatically reload the configuration. The process-palette.json file can also be edited directly, but then it needs to be reloaded by running Process Palette: Reload Configuration.

Download Configuration

  1. Download the example process-palette.json configuration file and place it in the root of your project folder.
  2. Load the new configuration file by choosing Packages|Process Palette|Reload Configuration from the menu or Process Palette: Reload Configuration from the command palette.

These example configurations define a command that will echo a message to standard output. It can be run by choosing Process Palette: Echo Example from the command palette. This will open the Process Palette panel and show the output. The panel can also be opened directly by pressing Ctrl-Alt-P or running Process Palette: Toggle from the command palette.

It also contains an example called Stream Example to show the direct stream ability. When streaming is enabled the output is written directly to the target without being formatted.

Next Steps

  1. Play with the graphical editor or poke around in the configuration file a bit. Just remember to run the Process Palette: Reload Configuration command when making changes directly to the process-palette.json file.
  2. Read the rest of this document. Especially the Properties and Variables sections for extra flexibility.

Graphical Editor

The graphical editor makes it easier to edit the configuration files. It can be opened by choosing Process Palette: Edit Configuration from the command palette. A dialog will pop up from where you can choose to edit either the global configuration or a project specific configuration. The following is a screenshot of the graphical editor.

Screenshot

The commands are listed on the left. Selecting one will show its details on the right. Pressing the Edit Patterns button allows you to define custom patterns for recognizing file paths and line numbers when writing output to the panel, although the default built-in pattern ought to be sufficient in most cases.

The configuration file will be saved and automatically reloaded when closed.

Settings

Palette panel

The palette panel shows the configured command and output targets for each command. The visibility of these can be toggled in the settings.

Screenshot

Configure shell

Commands will be executed by the system's default shell, which is sh on OSX and Linux and cmd.exe on Windows.

If you would like to use a particular shell then you can specify it under Process Palette's settings. This shell will then be used when running any of the commands. Leave the value blank for the system default to be used.

User Interface

Process Palette Panel

Process Palette has a small panel that lists all the commands that are configured. It can be toggled by pressing Ctrl-Alt-P or from the menu Packages|Process Palette|Toggle. From here one can see all the commands and also run them.

Screenshot

Pressing the down arrow in the top right corner will hide the panel.

Process Instances

Multiple instances of a process can run at a time. The process ID of each instance is shown on the right in the form of a button. Pressing the button will show that process' output. The process can be manually terminated by pressing the square stop button next to the process ID.

Process Output Panel

If the command is configured to output to the Process Palette panel then clicking on the process ID button will cause the panel to switch to showing the output of that process.

Screenshot

The other process instances will still be shown, but the selected one will be highlighted.

Scroll lock can be toggled with the lock button. Scroll lock will also enable when one starts to scroll or clicks on the output. It will automatically disable when one scrolls to the bottom.

The output can be cleared by pressing the trash can button.

From here one can return to the list by pressing the button in the top left corner.

Notifications

Each time a process is executed a message will be shown in the top right hand corner. A successful execution with an exit status code of 0 will show a success message. Anything other than 0 will show a warning. What these messages display can be configured or even disabled completely as will be seen in the Advanced Configuration section.

Tree View Integration

Commands can be run from the tree view with the selected file as input to the command. Any command that references any of the {file*} variables will be available.

To choose the command to run a file with, open the context menu on a file in the tree view and choose the command from the Run With sub menu.

See the example at the top.

Command Palette

Command Description
Hide Hides the output panel.
Show Shows the output panel.
Toggle Toggles the output panel's visibility.
Edit Configuration Opens graphical configuration editor.
Reload Configuration Reloads all configuration files. This is only necessary if a process-palette.json file was directly modified with a text editor.
Rerun Last Runs the last command that was executed again.
Kill Focused Process Kills the process that is currently shown.
Kill And Remove Focused Process Kill the process that is currently shown and removes its output.
Remove Focused Output Removes the output that is currently shown, unless the process is still running.

Configuration Files

The configuration files can also be edited by hand. The remainder of the document will describe how to do this.

Commands are specified with a configuration file in JSON format. The name of the file must be process-palette.json and should be in the root of your project folder. If you have multiple project folders, each with its own configuration file, then their configurations will be merged.

A process-palette.json file can also be placed in your ~/.atom folder. If that is the case then it will be loaded first and any project specific files will be loaded afterwards.

Basic Example

A process-palette.json configuration file contains an array called commands. The following is an example of an empty array:

{
  "commands" : [
  ]
}

Each entry in the array is an object that describes one command. The most basic configuration simply specifies the command to run and associates it with an action. The following command will run Ant without any arguments:

{
  "commands" : [
    {
      "command" : "ant",
      "action"  : "Ant default"
    }
  ]
}

Tip! : All process-palette.json configuration files can be reloaded by running the Process Palette: Reload Configuration command. It can be found in the Command Palette or in the Packages|Process Palette menu. There is also a reload button in the top right of the Process Palette panel.

The new command will cause an entry to be added to the command palette called Process Palette: Ant default.

Screenshot

The working directory used when running a command is by default the project path, but it can also be configured. More on this in the Advanced Configuration section.

Command line arguments can also be specified in the form of an array of strings. The following example adds another command that causes the clean target to be executed by means of an argument:

{
  "commands" : [
    {
      "action"  : "ant-default",
      "command" : "ant"
    },
    {
      "action"  : "ant-clean-artifacts",
      "command" : "ant clean"
    }
  ]
}

Reloading the configuration will cause the command palette to now have two new entries:

  • Process Palette: Ant default
  • Process Palette: Ant clean artifacts

The namespace used for all commands is by default Process Palette. This is also configurable. One must just be careful to not override commands in existing packages.

Let's modify the previous two commands to use a namespace call Ant:

{
  "commands" : [
    {
      "namespace" : "ant",
      "action"    : "default",
      "command"   : "ant"
    },
    {
      "namespace" : "ant",
      "action"    : "clean-artifacts",
      "command"   : "ant clean",
    }
  ]
}

After reloading the configuration file the entries will be:

  • Ant: Default
  • Ant: Clean artifacts

Shortcut Keys

Custom shortcut keys can also be associated with commands by adding a keystroke entry. Let's add the keystroke Ctrl-Alt-A to the Ant: Default command:

{
  "namespace" : "ant",
  "action"    : "default",
  "command"   : "ant",
  "keystroke"  : "ctrl-alt-a"
}

Screenshot

After reloading the configuration the Ant: Default command can be run by pressing Ctrl-Alt-A.

Advanced Configuration

The namespace, action, command and keystroke aren't the only properties that can be configured. Of these only the action and command are required. The rest are optional and have default values.

Many of the properties can be parameterized with variables from the environment. The following two sections describe the configurable properties and also the variables that can be used to parameterize them.

Properties

Property Description Default
namespace The namespace under which the command is categorized. This forms part of its identity in the Command Palette. It should be lowercase and words separated by hyphens. "process-palette"
action (required) The name of the action. This, together with the namespace, gives the command a unique identifier in the Command Palette. It should be lowercase and words separated by hyphens. null
command (required) A string with the name and arguments of the command to execute. null
arguments An array of strings to pass as arguments to the command. Since v0.4.10 arguments can be added directly to the command property's value, however this approach can still be used. [ ]
cwd The working directory from which to execute the command. It doesn't have a default value, but one is automatically determined when the command is executed. If projects are open then the first project's folder is used. If there aren't any projects open then the folder of the process-palette.json file is used. null
keystroke A string describing the shortcut to associate with this command. It can be any combination of ctrl, alt, shift and cmd followed by another key separated with - characters. null
promptToSave Indicates whether the user should be prompted before any files are saved. true
saveOption Specify what should be saved. Either nothing, everything or only the files referenced by the command. Indicate with none, all and referenced respectively. "none"
env A map of environment variables. These will be made available in addition to the ones that are already defined in process.env { }
patterns Array of pattern names to match. ["default"]
inputDialogs Input dialogs to open in order to get input from the user which can then be used with variables. []

The following properties relate to the output produced by the process. The output can be redirected to a particular target. It can also be formatted depending on whether the process executed successfully or not. Giving any of the xxxOutput properties a value of null will prevent that output from being shown.

Property Description Default
outputTarget Where the output produced by the process should be directed to. It can have one of the following values: "panel", "terminal", "editor", "clipboard", "console" or "void". If the value is overridden with null then it will default to "void". More on this below. "panel"
successOutput The format of the output when the process returned with an exit status of 0. "{stdout}"
errorOutput The format of the output when the process returned with a non-0 exit status. "{stdout}\n{stderr}"
fatalOutput The format of the output when the command could not be executed at all. "Failed to execute : {fullCommand}\n{stdout}\n{stderr}"
stream Indicate whether the output should be streamed. If this is false then the output will be formatted and sent to the target only after the process completes. If it is true then the output, both standard and error, will be streamed to the target without any formatting applied. false
autoShowOutput If the panel should automatically be made visible when the process produces output. At the moment this only applies when outputTarget is set to panel. true
autoHideOutput If the panel should automatically be hidden when the process terminates. It will only be hidden if the process completes successfully and also only if the output is being viewed at the time of completion. This only applies when outputTarget is set to panel. false
scrollLockEnabled If scroll lock should automatically be enabled. This only applies when outputTarget is set to panel. false
maxCompleted The maximum number of completed processes whose output to keep at a time. It is used to automatically discard the oldest completed process in order to prevent them from piling up. This property only applies when the outputTarget is set to panel. It can be disabled by setting the value to null in which case all panels will have to be discarded manually. 3
outputBufferSize The maximum number of characters to accumulate from standard output and error. When the buffer size is reached the oldest output is discarded. This is not applied to the output target, but only to the output accumulated in the stdout and stderr variables. This limit can be disabled by setting it to null, but should be done with caution for long running processes. 80000
singular Set to true to terminate the running process before running a new instance. false

The following properties relate to the messages shown before and after a command is executed. Giving any of the xxxMessage properties a value of null will prevent that message from being shown.

Property Description Default
startMessage The format of the message before the process starts. null
successMessage The format of the message when the process returned with an exit status of 0. "Executed : {fullCommand}"
errorMessage The format of the message when the process returned with a non-0 exit status. "Executed : {fullCommand}\nReturned with code {exitStatus}\n{stderr}"
notifyOnStart true if the start message should be shown. false
notifyOnSuccess true if the success message should be shown. true
notifyOnError true if the error message should be shown. true

The following properties relate to custom JavaScript that can be executed before and after the process.

Property Description Default
startScript Base-64 encoded JavaScript to run before the process starts. null
successScript Base-64 encoded JavaScript to run when the process returned with exit status of 0. null
errorScript Base-64 encoded JavaScript to run when the process returned with a non-0 exit status. null
scriptOnStart true if the start script should be run. false
scriptOnSuccess true if the success script should be run. false
scriptOnError true if the error script should be run. false

Output Targets

The outputTarget property specifies where the output produced by the process should be directed to. The following are valid targets:

Target Description
void The output will not be captured at all.
panel The output will be shown in Process Palette's panel. Running a command that outputs to the panel will automatically open it if autoShowOutput is true.
clipboard The output will be stored on the clipboard. Streaming to the clipboard is not supported. If stream is true when the output target is clipboard then streaming will be disabled.
editor The output will be inserted into the open editor at the current cursor position. If an editor is not open the output is lost.
console The output will be appended to the developer console.
file The output will be written to a new file that will be opened in the Atom workspace.

The default value of outputTarget is "panel". If it is overridden with null then it will default to "void".

Variables

Some of the properties can be parameterized with variables. Variables are added by enclosing the name of the variable in braces : { and }. The default values of some of the properties are already parameterized as can be seen in the tables above.

There are two types of variables : input and output. Input variables are available before the process executes and output variables are available after it has executed.

The following tables list the input and output variables:

Input

Variable Description
clipboard Text currently on clipboard.
fullCommand The full command along with its arguments. Both the command and arguments will have their variables resolved.
configDirAbsPath Absolute path of folder where the process-palette.json configuration file is that defines this command.
projectPath If projects are open then the first project's folder will be used. If there aren't any projects open then the path of the folder containing the process-palette.json file is used.
selectProjectPath Prompts to choose the path of one of the projects in the workspace.

Input from editor

The following input variables are only available if an editor is open. Their values default to an empty string otherwise.

Variable Description
fileExt Extension of file.
fileName Name of file without extension.
fileNameExt Name of file with extension.
filePath Path of file relative to project.
fileDirPath Path of file's directory relative to project.
fileAbsPath Absolute path of file.
fileDirAbsPath Absolute path of file's directory.
fileProjectPath Absolute path of file's project folder.
selection Currently selected text.
word Word under cursor.
line Line at cursor.
lineNo Line number at cursor.
token Token under the cursor according to the file's grammar.

Input from user

The inputDialogs property is an array of objects, each defining an input dialog that will be opened in order to take input from the user. Every dialog must specify the variableName that can then be used just like any other variable. Dialogs can be customized with a different message and initialInput.

Property Description
name (required) Name of the variable that can then be used in other properties.
message Message to display with the input dialog.
initialInput Initial text in the input dialog.

Here is an example of one such dialog:

"inputDialogs" : [
    {
        "variableName": "userInput",
        "message": "Foo?",
        "initialInput": "Bar!"
    }
]

Screenshot

Output

These variables are only available after the process has executed. They can therefore typically be used in the output and message related properties.

Variable Description
stdout Standard output produced by the process.
stderr Standard error output produced by the process.
exitStatus Exit status code returned by the process.

Applying Variables To Properties

The table below shows which properties support input variables and/or output variables:

Property Input Output
cwd yes no
env yes no
command yes no
arguments yes no
successOutput yes yes
errorOutput yes yes
fatalOutput yes yes
startMessage yes no
successMessage yes yes
errorMessage yes yes
startScript yes no
successScript yes yes
errorMessage yes yes

The namespace, action and keystroke properties do not support variables. The env property supports variables only in its values, for example :

"env" : {
  "MYVAR" : "{fileName}"
}

A useful way of seeing the values of the variables is to add them to one of the output properties and then executing the command. For instance :

"successOutput" : "File path : {filePath}\nProject path : {projectPath}"

will show the values of filePath and projectPath respectively.

Another way is to simply echo them as shown in the example.

Keep in mind that the arguments property is an array of strings. Adding variables to arguments should therefore be done as such:

"arguments" : ["{fileNameExt}", "{selection}"]

Pipes

The value of a variable can be modified by piping it through a transform. The syntax is {variable | transform}

The following transforms are available:

Transform Description
unix Converts a Windows path to a unix path.
posix The same as unix.
win Converts a posix path to a Windows path.
trim Trims whitespace.

Converting File Paths

It may sometimes be necessary to convert a file path to use separators for a different platform. Any of the variables can be converted by piping it through a transform.

If, for instance, you are running on Linux and need to convert the filePath variable to a Windows style path, then you can specify it as {filePath | win}. The opposite can also be done with {filePath | unix} or {filePath | posix} when running on Windows.

Detect Paths And Line Numbers

Commands that write to the output panel can be configured to detect file paths and optionally line numbers.

Screenshot

Detected paths will be underlined. Clicking it will open the file and if a line number is detected jump to it.

All commands will detect file paths by default. If line numbers are required then additional configuration is necessary.

Patterns

Patterns are used to detect paths and line numbers. Process Palette has one built in pattern for detecting paths and all commands use this pattern by default.

Custom patterns can be added to the configuration file. Commands can then be configured to detect any of these patterns. The following example shows two custom patterns. The one pattern (P1) detects a path followed by a : and then the line number, whereas the other (P2) has whitespace between the path and line number.

"patterns" : {
  "P1" : {
    "expression" : "(path):(line)"
    },
  "P2" : {
    "expression" : "(path)\\s+(line)"
  }
},
"commands" : [
  {
    "patterns" : ["P1", "P2"]
  }
]

Notice the following:

  • patterns is an object and is defined on the same level as commands.
  • Each pattern has a name. P1 and P2 in this case.
  • Each pattern has a JS regular expression called expression.
  • (path) and (line) are special placeholders. These are substituted with regular expressions for matching each respectively.
  • Everything around (path) and (line) should be valid regular expressions.

With this configuration the command will be able to match P1 and P2 patterns. This overrides the default configuration that matches only paths. The built-in pattern for matching paths is called default. To match the default pattern as well, simply add it to the list:

"patterns" : ["P1", "P2", "default"]

Order matters! Patterns are evaluated in the order they are given. This means that if default was first in the list then it will be matched, but never any of the line numbers.

To disable pattern matching simply set the value of patterns to null.

Custom Path Expression

In the previous example the (path) and (line) placeholders were used to quickly create an expression. In the background these are replaced with appropriate regular expressions. The (path) placeholder, in particular, will be replaced with an expression that is appropriate for the platform.

It may be that the built in expression is not sufficient for detecting paths in your command's output. If that is the case then you can overwrite it with your own. The following example shows how.

"patterns" : {
  "P1" : {
    "expression" : "(path):(line)",
    "path" : "(?:\\/[\\w\\.\\-]+)+"
  }
}

In this case the given expression for path will be used instead.

Important note about groups
Groups are enclosed in round brackets. path and line each forms a group and in this order they are at index 1 and 2 respectively. In this example the path expression is being overwritten, but this expression defines a group of its own. What's important to notice is the ?: at the start of the group, which ensures that the group is not counted. The only groups that are allowed to be counted are for path and line, but neglecting to exclude other groups will interfere with their indexes.

Callbacks To Custom JavaScript

You can specify your own JavaScript to run at certain stages of a process. Code can be specified to run before the process starts and after it has completed. Separate scripts can be specified based on whether the process completed successfully or failed.

Any of the input and output variables are available from within the scripts. Variables can be accessed simply by using its name, without the need to enclose it in braces. You also have access to Atom's API. For example:

atom.workspace.open(fileProjectPath + '/my.file')

Environment variables can be accessed via a variable called env. For example:

console.log(env['MY_ENV_VAR'])

These scripts are base-64 encoded. It is therefore advised to rather edit the scripts from the graphical editor instead of directly in the process-palette.json file, because then the script will be encoded automatically.

Known Issues

Background Processes

Process Palette considers its process to be completed only when all commands have finished executing. For instance, if a command is executed with an & appended then Process Palette will continue to handle the output produced by it until the child process spawned by that command exits.

This in itself is not a major problem. The issue is that Process Palette currently cannot kill child processes that are executed in this way. If the command executed with & opens a window then closing the window will allow the parent process to complete, but if it doesn't then one will have to kill the process by whatever means your OS allows.

process-palette's People

Contributors

angeldeejay avatar captainbeyondds8 avatar maherfa avatar morassman avatar nalcorso avatar toddmazierski avatar toi333 avatar uzitech avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

process-palette's Issues

Add hooks for running custom JS

Allow the user to specify JS to run. The pattern will be the same as the notifications. Scripts can run before the process starts and after it. These scripts will have access to all the defined variables that are available to the command

Re-run last command

Hi,

Thank you for great plugin.
Is it possible to add new command to re-run last executed process?

I'm using this plugin to run my unit tests and other task. It will be faster to repeat last command without selecting it in explicit way (less typing).

Using Keystroke Triggers Shell Command to run 2x

I'm working in Mac OSX High Sierra. I've been using Process Palette for a little while now, and it's been super helpful in my scripting for Adobe After Effects. I recently had to wipe my machine and reinstall Atom Packages. I must have been running an old version of Process Palette previously, and I assume that's why I didn't notice the issue until now.

When I trigger a Process Palette Shell Command via Keystroke or Command Palette it actually runs twice (which causes an error in After Effects).

Incidentally when I toggle the Command Palette and scroll to my custom Process Palette command, my assigned keystroke to the right in the column displays 2x as well.

And when I toggle Process Palette, there are 2 collapsable Global panels and each has all commands.

I assume there is some block of code being run 2x, but if you think there's something I'm doing wrong to cause this, I'd love to know what it is.

Bug: {fileProjectPath} with multiple project folders

While {fileProjectPath} has worked flawlessly for us so far, we have just come across one specific case where this is incorrect (but which might be easy to fix). To reproduce, configure two "project folders" in Atom where one is a subdirectory of the other, e.g.

>betadir
  |-somefile

>alphadir
  |-betadir
     |-somefile
  |-scripts
     |-somescript
  |-process-palette.json

now open "somefile" and trigger an action with process-palette. While {fileProjectPath} should be "/path/to/alphadir", in this scenario it seems to return "/path/to/alphadir/betadir". If instead of "betadir" (which is a subdirectory of "alphadir") an entirely independent project folder is configured, {fileProjectPath} seems to be correct. This is a serious problem if {fileProjectPath} is used to start a script within the alphadir-tree - where "{fileProjectPath}/scripts/somescript" then does not work reliably (it does work very well indeed, except in this specific setup with multiple project folders).

Whitespace in the panel is broken

Here is a screenshot of how the output looks in my terminal: http://i.imgur.com/4XdE1s0.png

Here is a screenshot of how the output looks in the warning bubble: http://i.imgur.com/oCVS8cW.png

Here is a screenshot of how the output looks in process-palette: http://i.imgur.com/CN6ggtV.png


The important difference is in these lines:

  17 |   return {
  18 |     _type: 0,1
> 19 |     _list: list.make(...x),
     |     ^
  20 |     _events: event.make()
  21 |   };
  22 | };

I think you can fix this by setting white-space: pre; in the process-palette panel.

Uncaught TypeError: Cannot read property 'kill' of null

I spammed the stop button while multiple electron processes were open and my computer almost crashed

Atom Version: 1.8.0
System: Mac OS X 10.11.6
Thrown From: process-palette package, v0.8.3

Stack Trace

Uncaught TypeError: Cannot read property 'kill' of null

At /Users/felixkranich/.atom/packages/process-palette/lib/controllers/process-controller.coffee:364

TypeError: Cannot read property 'kill' of null
  at ChildProcess.<anonymous> (/Users/felixkranich/.atom/packages/process-palette/lib/controllers/process-controller.coffee:364:22)
  at emitTwo (events.js:87:13)
  at ChildProcess.emit (events.js:172:7)
  at maybeClose (internal/child_process.js:818:16)
  at Socket.<anonymous> (internal/child_process.js:319:11)
  at emitOne (events.js:77:13)
  at Socket.emit (events.js:169:7)
  at Pipe._onclose (net.js:469:12)

Commands

  7x -1:20.6.0 core:backspace (atom-text-editor.editor.vim-mode.insert-mode.is-focused)
     -1:17.1.0 editor:newline (atom-text-editor.editor.vim-mode.insert-mode.is-focused)
     -1:16.2.0 core:backspace (atom-text-editor.editor.vim-mode.insert-mode.is-focused.autocomplete-active)
  2x -1:15.6.0 autocomplete-plus:confirm (atom-text-editor.editor.vim-mode.insert-mode.is-focused.autocomplete-active)
  4x -1:04.0 core:backspace (atom-text-editor.editor.vim-mode.insert-mode.is-focused)
     -1:02.0 autocomplete-plus:confirm (atom-text-editor.editor.vim-mode.insert-mode.is-focused.autocomplete-active)
     -1:01.5.0 core:move-right (atom-text-editor.editor.vim-mode.insert-mode.is-focused)
     -1:00.5.0 core:backspace (atom-text-editor.editor.vim-mode.insert-mode.is-focused)
  2x -1:00.4.0 core:save (atom-text-editor.editor.vim-mode.insert-mode.is-focused)
     -0:57.4.0 editor:newline (atom-text-editor.editor.vim-mode.insert-mode.is-focused)
  5x -0:56.2.0 core:save (atom-text-editor.editor.vim-mode.insert-mode.is-focused)
     -0:47.2.0 Process Palette:Start (atom-text-editor.editor.vim-mode.insert-mode.is-focused)
     -0:26.3.0 core:move-left (atom-text-editor.editor.vim-mode.insert-mode.is-focused)
     -0:24.7.0 core:move-right (atom-text-editor.editor.vim-mode.insert-mode.is-focused)
     -0:21.4.0 core:save (atom-text-editor.editor.vim-mode.insert-mode.is-focused)
     -0:21.1.0 Process Palette:Start (atom-text-editor.editor.vim-mode.insert-mode.is-focused)

Config

{
  "core": {
    "customFileTypes": {
      "source.ini": [
        ".buckconfig",
        ".flowconfig"
      ],
      "source.json": [
        ".arcconfig",
        "BUCK.autodeps"
      ],
      "source.python": [
        "BUCK"
      ]
    },
    "disabledPackages": [
      "atom-terminal",
      "atom-terminal-panel",
      "open-terminal-here",
      "autocomplete-java",
      "hyperclick",
      "tree-view",
      "omnisharp-atom",
      "activate-power-mode",
      "linter-gcc",
      "linter-jslint",
      "linter-jscs",
      "change-tabs",
      "linter-xmllint"
    ],
    "ignoredNames": [
      ".git",
      ".hg",
      ".svn",
      ".DS_Store",
      "._*",
      "Thumbs.db",
      "*.meta",
      "*.o"
    ],
    "packagesWithKeymapsDisabled": [
      "atom-terminal",
      "atom-terminal-panel",
      "open-terminal-here",
      "emmet",
      "sort-lines"
    ],
    "themes": [
      "excellent-ui",
      "atom-dark-syntax"
    ]
  }
}

Installed Packages

# User
atom-beautify, v0.29.10
atom-easy-jsdoc, v4.6.0
atom-html-preview, v0.1.21
atom-ternjs, v0.14.2
atom-trello, v0.5.1
atom-yeoman, v0.3.15
autocomplete-clang, v0.9.4
autocomplete-computercraft, v1.0.0
autocomplete-emojis, v2.5.0
autocomplete-en-en, v0.2.0
autocomplete-folders, v0.4.1
autocomplete-glsl, v0.2.3
autocomplete-html-entities, v0.1.0
autocomplete-json, v5.1.0
autocomplete-love, v0.3.0
autocomplete-project-paths, v2.2.0
autocomplete-python, v1.8.2
autocomplete-ruby, v0.1.0
autocomplete-xml, v0.8.3
bottom-dock, v0.4.4
close-other-tabs, v0.1.0
color-picker, v2.2.2
documentation-renderer, v0.2.1
emmet, v2.4.3
excellent-ui, v2.2.1
file-types, v0.5.2
haskell-grammar, v0.4.0
highlight-selected, v0.11.2
hyperclick, v0.0.37
hyperclick-love, v0.4.0
java-importer, v1.4.1
jsdoc-generator, v0.2.3
json-schema, v0.1.15
language-arduino, v0.4.1
language-babel, v2.32.0
language-common-lisp, v0.8.1
language-csharp, v0.12.1
language-glsl, v2.0.1
language-htaccess, v0.1.1
language-ini, v1.16.0
language-lisp, v0.2.0
language-lua, v0.9.4
language-ocaml, v1.1.2
language-ruby, v0.69.0
language-rust, v0.4.6
language-thrift, v1.0.2
language-unity-shaderlab, v1.0.1
language-x86, v1.0.1
linter, v1.11.14
linter-alex, v3.2.0
linter-clang, v3.4.4
linter-erb, v1.0.2
linter-javac, v1.9.4
linter-jshint, v2.1.0
linter-luaparse, v0.2.0
linter-manager, v0.2.12
linter-mcs, v0.2.0
linter-php, v1.2.0
linter-python, v3.0.4
linter-ruby, v1.2.2
linter-rust, v0.4.6
linter-tslint, v0.10.0
livereload, v0.4.4
love-ide, v0.12.0
maybs-quit, v1.3.0
merge-conflicts, v1.4.4
minimap, v4.24.7
nuclide, v0.157.0
pigments, v0.31.2
process-palette, v0.8.3
python-iresolve, v0.0.3
python-tools, v0.6.8
rails-i18n-autocomplete, v0.4.0
remote-sync, v4.1.2
save-autorun, v0.3.3
tab-switcher, v1.5.3
tab-title, v0.3.3
tidy-tabs, v0.3.0
todo-manager, v0.2.9
tool-bar, v1.0.0
tool-bar-main, v0.0.9
travis-ci-status, v1.1.1
vim-mode, v0.65.1
xml-tools, v0.2.1

# Dev
No dev packages

Feature request: Potential improvements for the PP dock UI

I greatly appreciate the dock item and the fact that I can have process-palette.json files in different folders in my project and they all get discovered and added to my options for commands to run. It's very convenient, but it can get a little confusing. For some projects, I might be using the same CLI tool in different directories and I can't tell the difference between identical commands when they're all displayed in the dock view. I feel like it would be a large enhancement for the dock item to include collapsing sections like the Settings -> Packages view, and I've made a mockup of how a real project of mine might look with the relevant headings and buttons if such a feature were implemented:

image

Output is printed after the command execution is completed

I am using your excellent package to run a 'make' command that compiles a tex project using pdflatex.

I have noticed that the sequence of output generated by pdflatex only appears after process-palette has determined that the command has finished executing. Ideally I would like to view the output as it is generated so I know that the execution is proceeding normally.

Input variable doesn't work.

Hi,

I really appreciate your plugin, very nice! :)

Input variable doesn't seam to work. I've tried several inputs but no luck.
I specify in settings ex.: "Name: userinput Message: test: Default value (optional): ttttest"
But when accessing variable $userinput in script I get nothing.

However it works like a charm when I use Environment Variables.

Better warning bubble when stream is set to true

Here is how it looks when I run the command with stream set to false: (screenshot)

Here is how it looks when I run the command with stream set to true: (screenshot)

Ideally they would both show the full error message.

I haven't looked at how process-palette is implemented, and maybe it's difficult to implement, but perhaps it would be possible to store the stdout and stderr while streaming, and then display it when the command finishes?

Request: ability to add commands to main package menu

This feature request is for an option to add defined commands to the "Process Palette" packages menu in atom, likely underneath "Reload Configuration".

I suspect "Action Name" would be displayed there, along with "Keystroke".

Continue to display warning bubble until it is dismissed

When the command fails, process-palette displays a warning bubble: (screenshot)

The problem is, after a few seconds it automatically disappears, even if I'm hovering my mouse over the bubble.

This is not enough time to read the error message, which means I have to always look at the bottom pane (in which case, why even bother with the warning bubble?).

I'm not sure if Atom will allow you to do this, but it would be nice to have the warning bubble continue to display until it is dismissed (e.g. by a left click).

This should only apply to the warning bubble: the success bubble should automatically fade after a few seconds.

Ask/Force save document before executing commands?

Sorry if this has been asked before. - I already like process-palette a lot (thanks for a great Atom plugin!) and it works beautifully with a workflow we have at our institute: we write documentation with Atom in markdown (targeting HTML and PDF) and using process-palette, we have a keyboard shortcut that triggers a script which (1) runs a preprocessor tool we wrote on {filePath}, (2) runs pandoc on the result, and (3) finally displays the result in a browser. The script takes a fraction of a second (for HTML) and is very convenient.
However, there is one snag: our preprocessor, and subsequently pandoc, work on files - so one needs to save any changes in the current markdown document to disk before running the script. We can think of two new features that would make process-palette even more useful: (a) optionally force a "save" of the current document so any workflow relying on {filePath} is consistent with what is displayed by Atom and/or (b) (similar to Emacs when compiling) warn that one or more files contain unsaved data.

Many thanks in advance,
Stefan

target[Symbol.iterator] is not a function

[Enter steps to reproduce:]

  1. Open Atom v 1.23.0-beta

Atom: 1.23.0-beta0 x64
Electron: 1.6.15
OS: Microsoft Windows 10 Pro Insider Preview
Thrown From: process-palette package 0.15.2

Stack Trace

Failed to activate the process-palette package

At target[Symbol.iterator] is not a function

TypeError: target[Symbol.iterator] is not a function
    at TooltipManager.add (~/AppData/Local/atom/app-1.23.0-beta0/resources/app/src/tooltip-manager.js:117:35)
    at MainView.module.exports.MainView.initialize (/packages/process-palette/lib/views/main-view.coffee:33:36)
    at /packages/process-palette/node_modules/space-pen/lib/space-pen.js:184:25)
    at /packages/process-palette/lib/views/main-view.coffee:12:5)
    at Object.activate (/packages/process-palette/lib/main.coffee:36:21)
    at Package.module.exports.Package.activateNow (~/AppData/Local/atom/app-1.23.0-beta0/resources/app/src/package.js:255:25)
    at ~/AppData/Local/atom/app-1.23.0-beta0/resources/app/src/package.js:227:38
    at Package.module.exports.Package.measure (~/AppData/Local/atom/app-1.23.0-beta0/resources/app/src/package.js:99:21)
    at ~/AppData/Local/atom/app-1.23.0-beta0/resources/app/src/package.js:220:32
    at Package.module.exports.Package.activate (~/AppData/Local/atom/app-1.23.0-beta0/resources/app/src/package.js:217:40)
    at PackageManager.activatePackage (~/AppData/Local/atom/app-1.23.0-beta0/resources/app/src/package-manager.js:695:42)
    at config.transactAsync (~/AppData/Local/atom/app-1.23.0-beta0/resources/app/src/package-manager.js:670:36)
    at Config.module.exports.Config.transactAsync (~/AppData/Local/atom/app-1.23.0-beta0/resources/app/src/config.js:367:24)
    at PackageManager.activatePackages (~/AppData/Local/atom/app-1.23.0-beta0/resources/app/src/package-manager.js:668:23)
    at PackageManager.activate (~/AppData/Local/atom/app-1.23.0-beta0/resources/app/src/package-manager.js:647:50)
    at ~/AppData/Local/atom/app-1.23.0-beta0/resources/app/src/atom-environment.js:865:36

Commands

Non-Core Packages

activate-power-mode undefined 
atom-beautify 0.30.6 
atom-ide-ui 0.5.4 
atom-jasmine 0.8.1 
atom-minify 0.8.0 
atom-typescript 11.0.10 
atomic-chrome 0.3.3 
auto-detect-indentation 1.3.0 
autoclose-html 0.23.0 
autocomplete-emojis 2.5.0 
autocomplete-html-entities 0.2.0 
autocomplete-json 5.5.0 
change-case 0.6.5 
chrome-color-picker 0.8.0 
code-peek 1.4.21 
context-git 0.17.6 
context-menu-remove 0.1.0 
cson 2.0.1 
cursor-history 0.12.0 
dbclick-tree-view 1.6.3 
docblockr 0.13.2 
double-tag 1.1.0 
editor-stats 0.17.0 
editorconfig 2.2.2 
emmet 2.4.3 
external-open 0.6.3 
file-icons 2.1.13 
file-types 0.5.5 
file-watcher 1.2.6 
flex-tool-bar 0.12.0 
git-time-machine 1.5.9 
grammar-token-limit 0.1.1 
highlight-selected 0.13.1 
hyperclick 0.0.0 
hyperclick-php 0.2.1 
hyperlink-hyperclick 1.3.4 
ide-php 0.6.9 
ide-typescript 0.6.2 
intentions 1.1.5 
js-hyperclick 1.12.1 
keybinding-cheatsheet 0.1.1 
language-babel 2.77.3 
language-batch 0.4.0 
language-htaccess 0.1.1 
language-ini 1.19.0 
language-vbscript 0.9.0 
line-diff-details 1.9.0 
line-ending-converter 1.3.2 
linter-coffeelint 1.3.1 
linter-eslint 8.4.0 
linter-htmlhint 1.4.0 
linter-js-yaml 1.2.8 
linter-markdown 5.2.0 
linter-phpcs 1.6.8 
linter-sass-lint 1.8.3 
linter-twig 0.4.2 
linter-write-good 0.9.0 
merge-conflicts 1.4.5 
minimap 4.29.7 
minimap-bookmarks 0.4.2 
minimap-cursorline 0.2.0 
minimap-find-and-replace 4.5.2 
minimap-git-diff 4.3.1 
minimap-hide 0.3.0 
minimap-highlight-selected 4.6.1 
minimap-linter 2.1.3 
minimap-pigments 0.2.2 
minimap-selection 4.5.0 
minimap-split-diff 0.3.7 
my-settings-view 0.252.2 
node-debugger 1.10.1 
notifications-plus 0.69.11 
notifications-plus-confetti 0.1.4 
npm-install 4.0.4 
open 0.0.5 
open_in_cmd 0.6.1 
open-in-developer-mode 0.3.0 
php-debug 0.2.5 
php-integrator-annotations 1.2.0 
php-integrator-autocomplete-plus 1.6.1 
php-integrator-base 3.1.0 
php-integrator-navigation 1.2.1 
php-integrator-refactoring 1.4.1 
php-twig 4.0.0 
pigments 0.40.2 
platformio-ide-terminal 2.7.0 
process-palette 0.15.2 
project-manager 3.3.5 
react 0.16.3 
Remote-FTP 1.3.1 
rest-client 1.3.1 
sass-autocompile 0.13.3 
script undefined 
scroll-editor-on-middle-click 0.4.0 
scroll-sync 0.2.3 
sort-lines 0.18.0 
split-diff 1.5.1 
Sublime-Style-Column-Selection 1.7.4 
tabs-to-spaces 1.0.3 
text-manipulation 0.6.0 
todo-show 2.1.0 
tool-bar 1.1.0 
trailing-semicolon 1.1.0 
trailing-spaces 0.4.0 
transpile 0.1.4 
transpile-decaf 0.1.3 
tree-view-git-status 1.4.0 
uzitech-toggle-quotes 0.0.0 
vic 0.0.0 
wakatime 7.0.3 
web-accessibility-checker 0.1.4 
Zen 0.18.0 

Feedback for long-running processes

Thanks for a great tool! We use process-palette to trigger conversion from markdown in different formats with Pandoc (via a little Python tool we developed for preprocessing). This works perfectly for HTML conversion which is very fast (<1s). When creating PDF, however, Pandoc uses LaTeX and this can take a few seconds - so our users are irritated when they trigger the conversion and get no immediate feedback. We suggest to have an optional, little notification window as soon as a process is started, which then disappears after a few seconds - similar to the great status mechanism after successful completion of a task. Many thanks in advance!

Running commands that use Bash scripts on Windows

I'm using version 0.12.0. It works as expected on macOS to run Bash scripts. But I cannot get it to work on Windows. I have a Bash shell installed (thanks to Git for Windows) and set its path ("C:\\Program Files\\Git\\git-bash.exe") in the plug-in preferences as the shell to be used. However, any attempt to run a command that uses a Bash script give a ENOENT error.

Any hints on how to use commands that call Bash scripts on Windows?

Process palette is shown on project switch

Hello,
I am using atom project manager.
Each time I switch the project, the process palette is displayed at the bottom.
I am switching projects very often and on each switch I need to toggle the process palette.
Could it be off by default or could there be an option to turn if off?

It seems that projectChange handler is causing this
https://github.com/morassman/process-palette/blob/master/lib/main.coffee#L110

Maybe it should be changed to

@showListView() if @state.visible;

Have not tested, as did nit dig into how atom plugins are developed.

Failed to activate the process-palette package

[Enter steps to reproduce:]

  1. Open Atom

Atom: 1.23.0-beta0 x64
Electron: 1.6.15
OS: Microsoft Windows 10 Home
Thrown From: process-palette package 0.15.2

Stack Trace

Failed to activate the process-palette package

At target[Symbol.iterator] is not a function

TypeError: target[Symbol.iterator] is not a function
    at TooltipManager.add (~/AppData/Local/atom/app-1.23.0-beta0/resources/app/src/tooltip-manager.js:117:35)
    at MainView.module.exports.MainView.initialize (/packages/process-palette/lib/views/main-view.coffee:33:36)
    at /packages/atom-minify/node_modules/space-pen/lib/space-pen.js:184:25)
    at /packages/process-palette/lib/views/main-view.coffee:12:5)
    at Object.activate (/packages/process-palette/lib/main.coffee:36:21)
    at Package.module.exports.Package.activateNow (~/AppData/Local/atom/app-1.23.0-beta0/resources/app/src/package.js:255:25)
    at ~/AppData/Local/atom/app-1.23.0-beta0/resources/app/src/package.js:227:38
    at Package.module.exports.Package.measure (~/AppData/Local/atom/app-1.23.0-beta0/resources/app/src/package.js:99:21)
    at ~/AppData/Local/atom/app-1.23.0-beta0/resources/app/src/package.js:220:32
    at Package.module.exports.Package.activate (~/AppData/Local/atom/app-1.23.0-beta0/resources/app/src/package.js:217:40)
    at PackageManager.activatePackage (~/AppData/Local/atom/app-1.23.0-beta0/resources/app/src/package-manager.js:695:42)
    at config.transactAsync (~/AppData/Local/atom/app-1.23.0-beta0/resources/app/src/package-manager.js:670:36)
    at Config.module.exports.Config.transactAsync (~/AppData/Local/atom/app-1.23.0-beta0/resources/app/src/config.js:367:24)
    at PackageManager.activatePackages (~/AppData/Local/atom/app-1.23.0-beta0/resources/app/src/package-manager.js:668:23)
    at PackageManager.activate (~/AppData/Local/atom/app-1.23.0-beta0/resources/app/src/package-manager.js:647:50)
    at ~/AppData/Local/atom/app-1.23.0-beta0/resources/app/src/atom-environment.js:865:36

Commands

     -0:06.9.0 editor:consolidate-selections (input.hidden-input)
     -0:06.9.0 atom-minify:close-panel (input.hidden-input)
     -0:06.9.0 core:cancel (input.hidden-input)

Non-Core Packages

atom-beautify 0.30.6 
atom-material-syntax 1.0.7 
atom-material-syntax-dark 1.0.0 
atom-material-syntax-light 0.4.6 
atom-material-ui 2.0.6 
atom-minify 0.8.0 
autocomplete-paths 2.12.1 
busy 0.7.0 
busy-signal 1.4.3 
chrome-color-picker 0.8.0 
emmet 2.4.3 
file-icons 2.1.13 
intentions 1.1.5 
language-batch 0.4.0 
language-powershell 4.0.0 
linter 2.2.0 
linter-eslint 8.4.0 
linter-stylelint 4.0.2 
linter-ui-default 1.6.10 
minimap 4.29.7 
minimap-find-and-replace 4.5.2 
minimap-pigments 0.2.2 
pigments 0.40.2 
process-palette 0.15.2 
sass-autocompile 0.13.3 
sort-lines 0.18.0 
toggle-quotes 1.0.1 
wakatime 7.0.4 

Shell command entry field should really be multi-line

When attempting to run a command via ssh - the Shell Command field becomes very long, it would be
nice if it was multi-line, and would possibly allow for entry like:

   ssh somehost.example.com /a/long/path/to/a/command/to/run /another/long/path/to/a/file/to/run/against

to be converted to:

   ssh somehost.example.com \
       /a/long/path/to/a/command/to/run \
       /another/long/path/to/a/file/to/run/against

For readability if nothing else.

Command execution does not complete if a new program/window is launched

I am using process-palette to run a make command that ends by launching the created pdf in mupdf (a new window is opened). Even though the make command for launching mupdf ends with an '&' process-palette considers the command to be still running until such time as the window is closed. Only after the window is closed does the output of the command appear.

A simple way to test this is to run a command that opens a window, and then try to run the same command again. process-palette refuses to do so because it deems that the original command is still running.

process-palette crashes Atom 1.18.0 when cursor not in document

There is a very annoying effect which might be related to recent changes in Atom and which is probably easy to fix (if it is a bug in Atom it might be easy to circumvent) - this, unfortunately, is a "show-stopper" class problem: our scripts rely on arguments build from the immensely useful "{file*}" type of variable (this might be important). Everything works as expected (and extremely well!) when the cursor is placed in an active document. However, if the focus (cursor) is within the left-hand tree of files and a process-palette action is triggered via keyboard shortcut or menu entry - Atom 1.18.0 will crash. Many thanks in advance for fixing this (or providing a workaround).

Changes required due to TextBuffer.save becoming async in Atom 1.19

Hi! Thanks for maintaining the process-palette package!

In Atom v1.19, we will release a major change to Atom's core text buffer data structure. As part of this change, we have made TextBuffer.save asynchronous; rather than blocking until the save is complete, it now immediately returns a Promise that resolves when the save is complete. Because of this, a few other Atom APIs that use save have similarly become async:

  • Pane.close
  • TextBuffer.save
  • TextEditor.save
  • Pane.saveItem
  • Pane.saveItemAs
  • Pane.saveActiveItem
  • Pane.saveActiveItemAs
  • Pane.saveItems
  • Workspace.saveActivePaneItem
  • Workspace.saveActivePaneItemAs

Effects on this package

We think this package could be impacted by this upgrade because it calls the changed methods in the following places:

  • TextEditor.save

We found these calls using a regex search, so this list might be incomplete, and it might contain some false positives.

What to do about the change

It should be pretty easy to adjust your package code and/or tests to work with the new async behavior, and to simultaneously keep it working with older versions of Atom. Here are some examples of pull requests we opened on our bundled packages to cope with the change:

Please let me know if you have any questions. I would be happy to help!

Get file path from tree view

Hi,
Thanks for this very useful package! Would it be possible to get the file path from the selected file in the tree view. This would make it possible to run processes on files that don't open an editor window, or that don't have a focused editor window.
Cheers
Ed

Text invisible in graphical editor under light UI scheme

Hi,

Not a critical issue, but some text in the graphical editor appears invisible under some UI themes, including Atom Light and One Light.

A screenshot under the Atom Dark UI theme (atom-dark-ui),
2

When switched to Atom Light (atom-light-ui),
1

Killing processes sometimes doesn't work

I'm currently working with Gatsby, which has a CLI that includes a live development server. When I run gatsby develop through process-palette, I'm unable to kill it either through the kill button or the process-palette:kill-focused-process command. I haven't had the chance to test with other similar platforms, but I'll update this issue if I come up with any other processes that I'm unable to cancel.

scroll lock re-enables itself

I run a command with stream: true. A few lines of output appear, then the scroll lock gets turned on without my touching anything. If I click the lock button to turn it off, the each time additional output appears in the panel, it turns itself back on again.

Need a way to convert a path (e.g. project path) to use unix-style separators

I'm attempting to use process-palette to run a command using ssh on a UNIX system from a windows machine.

The file path that is being generated is using a path like 'a\b\c.ext' but for UNIX it needs to see a path
like 'a/b/c.ext' - it would be good if on a per-command setting, if we could set a flag that it would
generate either UNIX or Windows-style paths.

Output panel steals focus

If running a process (via a hotkey) opens an output panel or writes into an existing one, the current editor panel loses focus and has to be clicked into with the mouse. This issue came in one of the recent updates.
Previously, the focus would return to the editor and one could code and compile conveniently using only the keyboard.

Run alias from bash_profile in OS X

Hi,

nice work! I really like this atom package. At the moment I am trying to include this in my tool chain.

Is it possible to create a process-palette command that will run an alias from my bash_profile? I am not able to get this running right now.

Thanks for your help!

Cheers
Florian

json validation

love this, its so useful!

maybe this is part of atom core rather than your extension, but when there's a dangling comma in the JSON it will silently fail... very frustrating figuring out why it's not loading...

Add support for ANSI escape sequences (e.g. colors)

I tried many different script runners, including run-in-terminal, termrk, terminal-panel, term, quantum-shell, etc.

Sadly, except for term, they're all broken. So far, yours is the best for fulfilling my particular needs.


However, there is one feature I would like: the ability to show ANSI color escapes.

Here is how it looks when I run the command in my terminal: (screenshot)

And here is how it looks when I run the same command in process-palette: (screenshot)

Pane.addItem is deprecated.

Pane::addItem(item, 0) is deprecated in favor of Pane::addItem(item, {index: 0})

Pane.addItem (C:\Users\[USER]\AppData\Local\atom\app-1.13.0-beta8\resources\app.asar\src\pane.js:447:14)
<unknown> (C:\Users\[USER]\.atom\packages\process-palette\lib\main.coffee:273:27)

Separate commands for opening and closing the panel

Thanks for a fantastic package! This makes Atom the perfect "IDE" for me.

Would it be possible to add separate commands for opening and closing the panel, in addition to the toggle command?

It would be nice to be able to close the process-palette panel with Esc, but binding that to the toggle command doesn't really make sense.

Processes still running after killing running process in process-palette

I have a command npm run-script watch which automatically recompiles my project when any of my files are changed.

This is a long-running process that will keep executing until it is manually killed.

When I run it in a terminal, it creates the following processes, in this order:

npm
sh -c npm install && webpack --watch

When I use Ctrl-C to kill the process, both processes are killed.


However, when I run the same command in process-palette, the following processes are created:

/bin/sh -c npm run-script watch
npm
sh -c npm install && webpack --watch

When I kill the process in process-palette, it kills this process:

/bin/sh -c npm run-script watch

But the other 2 are not killed:

npm
sh -c npm install && webpack --watch

If I try running it again, it creates new processes, so now there are even more unused processes:

npm
sh -c npm install && webpack --watch
npm
sh -c npm install && webpack --watch

Leaking processes like this is bad.


Some additional information: I'm on Debian GNU/Linux 64-bit.

Atom version 1.0.11, process-palette version 0.4.12

This is the parent-child relationship of the processes:

/usr/share/atom/atom
|__ /bin/sh -c npm run-script watch
   |__ npm
      |__ sh -c npm install && webpack --watch

Input from editor with pdf-view

Is it possible to allow the variables such as fileAbsPath to be available when viewing a PDF document with the package pdf-view?

At the moment the variables are empty, so I am assuming pdf-view is not an open 'editor'

Only one Keyboard Shortcut shows in a menu

I think it's self explanatory. When I add several items to a menu, each with keyboard shortcuts assigned, only one shortcut is visible to the right of the menu text. Do note: the shortcuts WORK. There's just no way to tell what the shortcut IS without looking up the config.

image

Provide new variable to work with multiple projects

Hello,

Lastly I'm working with multiple projects. I have a command where "Working Directory" is set to "{projectPath}". It will be great to have new variable "{projectPaths}" and the result of such variable will be popup window/menu to select which project should be chosen. In such way I will be able in easy way to switch between projects and execute all my commands without any other action.

I see at least one problem with such variable: What if "{projectPaths}" is used in multiple places? For my case "{projectPaths}" should generate only one popup window/menu and should be resolved only once.

Is it possible to implement such request? What do you think about it?

Cannot scroll console output

After updating to 0.15.1, output in the console window does not respond to vertical scrolling.

No response to 1) mouse wheel 2) dragging a selection to window borders.
Arrow keys will scroll output horizontally, but not vertically.
Can confirm there is more output by resizing the output pane.

This particular command is a windows batch file.

Windows 7 64-bit, everything in atom up to date.

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.