Tree [8246b1] master /
History



File Date Author Commit
tests 2012-09-11 Horea Haitonic Horea Haitonic [0d0228] The InputState now stores the current match pat...
.gitignore 2011-11-16 Horea Haitonic Horea Haitonic [7256aa] Added PyCharm's .idea cache directory to the ig...
CommandHistory.py 2012-10-02 Horea Haitonic Horea Haitonic [369d69] Escape command search filter before creating th...
DirHistory.py 2013-08-14 Horea Haitonic Horea Haitonic [3e038d] Fixed crash when the DirHist was shorter than 8...
InputState.py 2013-10-30 Horea Haitonic Horea Haitonic [f4a7ff] Support "overwrite" mode
LICENSE.txt 2009-08-07 Horea Haitonic Horea Haitonic [743881] Added files from the SVN repository (SVN rev: 6...
Makefile 2013-03-21 Horea Haitonic Horea Haitonic [5f84d7] Improved name for release archives
NEWS.txt 2013-04-24 Horea Haitonic Horea Haitonic [e6e7a3] Updated README and NEWS for 0.9
PyCmd.ico 2009-08-07 Horea Haitonic Horea Haitonic [743881] Added files from the SVN repository (SVN rev: 6...
PyCmd.py 2014-06-17 Horea Haitonic Horea Haitonic [8246b1] When a commit is not confirmed, immediately ins...
README.txt 2013-11-06 Horea Haitonic Horea Haitonic [281e48] New limitation added to README (as per Issue #47)
common.py 2014-04-07 Horea Haitonic Horea Haitonic [08c5cd] Cleanup pseudo-vars from env also when running ...
completion.py 2013-04-03 Horea Haitonic Horea Haitonic [1bbc36] Improved heuristic to decide between \ and / wh...
console.py 2013-10-30 Horea Haitonic Horea Haitonic [f4a7ff] Support "overwrite" mode
example-init.py 2012-05-15 Horea Haitonic Horea Haitonic [68ab04] Re-organized the configuration infrastructure
fsm.py 2009-08-15 Bogdan Dumitriu Bogdan Dumitriu [b54c78] Fixed spelling errors and added README-like inf...
pycmd_public.py 2013-01-14 Horea Haitonic Horea Haitonic [c7b492] Update default console colors after each command
run_tests.py 2011-11-23 Horea Haitonic Horea Haitonic [614a97] Revert "Add tests for ERRORLEVEL behavior"
setup.py 2011-09-28 Horea Haitonic Horea Haitonic [1a7412] Ship the documentation of the pycmd_public module

Read Me

1. What is PyCmd?  
-----------------
PyCmd is a 'smart' command prompt extension for Windows' cmd.exe; its purpose is
to emulate a few power features of UNIX shells (decent Tab-completion,
persistent history, etc.)


2. What are some important features?
------------------------------------
 a. Tab completion 
    - when several completions are possible, list them instead of cycling
      through them
    - insert/remove quotes as needed
    - complete executables from the PATH and internal CMD.exe commands
    - complete names of environment variables, including pseudo-variables
    - complete wildcards
    - expand values of environment variables when completing
    - support both '/' and '\' as path separators

 b. Command history
    - the history is persistent across PyCmd sessions
    - one can search through the history (type a few filter characters/words,
      then Up/Down)
    - reordering is more intuitive than cmd's default strategy

 c. Command editing
    - support emacs key bindings
    - Copy-Paste using the keyboard (Ctrl-C/X/V or Emacs-style)
    - Undo/Redo with Ctrl-(Shift-)Z (regular style) or Ctrl-_ (Emacs-style)
    - dynamic, context-sensitive token expansion with Alt-/ (Emacs-style)
    - smart word-by-word navigation

 d. Other
    - show a highlighted prompt to make the buffer content more readable
    - smart prompt that abbreviates directory names to save screen space
    - configuration file (init.py) for customizing colors, prompt etc.
    - Shift-PgUp/PgDn to scroll the buffer
    - history of recently visited directories (Alt-Left/Right/D on empty line)
    - expand ~ as %HOME% or %USERPROFILE%
    - Ctrl-D on an empty line closes PyCmd
    - show the current working directory in the window title


3. Known problems
-----------------
    - pushd/popd are not supported
    - %ERRORLEVEL% is always 0 when executing commands interactively
    - DOSKEY macros are not supported
    - can NOT be used to fully replace cmd.exe as default shell (e.g. via 
      %COMSPEC%)


4. Future plans
---------------
    - add some sort of a configuration mechanism (config file)
    - custom TAB-completion for the arguments of common commands
    - clean-up the mechanism that dispatches commands to cmd.exe (currently kind 
      of hacky)


5. How do I download/install/run it?
------------------------------------   
 a. Download the binary distribution (created with cx_freeze, see 
    http://cx-freeze.sourceforge.net/) from
          https://sourceforge.net/projects/pycmd/files/
    Then, unpack and start PyCmd.exe. No installation is necessary.

 b. Fetch the Python sources from the repository at
          git://pycmd.git.sourceforge.net/gitroot/pycmd
    then start PyCmd.py in Python or run 'make' to build the binary 
    distribution.
    You will need:
        - Python 2.7 from
                 http://www.python.org/download/releases/2.7/
        - Python for Windows extensions from 
                 https://sourceforge.net/projects/pywin32/
        - pefile from   
                 http://code.google.com/p/pefile/
    If you want to build (make), you'll also need:
        - cx_freeze from 
                 http://cx-freeze.sourceforge.net/
        - MinGW from
                 http://www.mingw.org/ 


6. How do I report a crash/problem?
-----------------------------------
For any kind of bug, please use the bug tracker provided by SourceForge at
  http://sourceforge.net/tracker/?group_id=261720&atid=1127597
When reporting crashes, please try to locate and attach a crash log (look in
%APPDATA%\PyCmd for files named crash-yyyymmdd_hhmmss.log).


7. Credits
----------
   - The fish shell is an endless source of good ideas:
            http://fishshell.org/index.php
   - fsm.py is a nice package for implementing a Finite State Machine:
            http://code.activestate.com/recipes/146262



---------------------------------------------------
Horea Haitonic (h o r e a h _at_ g m a i l . c o m)