mirror of
https://github.com/cmderdev/cmder.git
synced 2025-07-16 12:39:38 +08:00
Compare commits
150 Commits
v1.3.1
...
v1.3.6-pre
Author | SHA1 | Date | |
---|---|---|---|
b37001b591 | |||
997e799138 | |||
ff2e09849e | |||
8237b1010c | |||
cf311fb1c2 | |||
78b9c97fa9 | |||
a49c1b3f3d | |||
fff6e4506c | |||
a71c6a50ad | |||
5e703796c9 | |||
b88a01822f | |||
3bf07c088d | |||
724930d69d | |||
badb027c24 | |||
145a1b144b | |||
29c5e83975 | |||
1c02c55c2f | |||
74fc14eadf | |||
0729c06c20 | |||
6da96fb7ec | |||
ba610f5f7b | |||
7930c9bfe5 | |||
bafaf7cba4 | |||
3c14d19a27 | |||
13941a44ec | |||
ee4f85de85 | |||
9d6e5c12a2 | |||
da27f9be9f | |||
124565f36a | |||
46d468aea0 | |||
dc27c53739 | |||
7479d620b1 | |||
a8d32611a9 | |||
b6042a7ca1 | |||
dcf22af3c8 | |||
b58ff9bb53 | |||
68d9425c89 | |||
a95cd140ef | |||
e90966c5c2 | |||
e104f20c5d | |||
6883ba3b84 | |||
1c1c08bb68 | |||
a5eb4d7b4f | |||
d88f1b0a97 | |||
8d74184d30 | |||
3ea6d51ba4 | |||
22d27afed5 | |||
e9a78a30d1 | |||
e92f7fbb55 | |||
7ca2f5503a | |||
a34e17f2bd | |||
1f9e743ef2 | |||
f687281be0 | |||
4c270699a1 | |||
b45e3adc67 | |||
8077c1a612 | |||
d9fcf06e0f | |||
815b99b98b | |||
bcb60f8f59 | |||
0877a6d995 | |||
71f5b446da | |||
512787f391 | |||
262d92265e | |||
409b92aac2 | |||
aea1a977bf | |||
a7237370e3 | |||
25005930ba | |||
74d79ea628 | |||
89c014bb05 | |||
c19237085d | |||
9c4e77b498 | |||
c2cf56cc48 | |||
6e2d88d466 | |||
cd3efdf382 | |||
53c7ec5886 | |||
e63368fe96 | |||
aa2eaa6886 | |||
bee82d00e8 | |||
02366fdc7e | |||
399999d7f7 | |||
8eea2baaa5 | |||
4d3950174f | |||
24a110ddb7 | |||
1dd0e600ac | |||
e49b978b9a | |||
9182c89a14 | |||
00622254a7 | |||
9977c0563d | |||
b604bf0b6c | |||
3b0a51d7b8 | |||
018cc9ceda | |||
ad0f8fe049 | |||
7f4a4d34d6 | |||
963a5a8be6 | |||
f04a4e4846 | |||
50ed66894f | |||
2bb5ce0986 | |||
3b7a24b20a | |||
81d83d4c6d | |||
61849dc7fd | |||
9f2c0e4001 | |||
4195b5b0ed | |||
02f1ff12a6 | |||
7447e00aec | |||
84202729fb | |||
70b0666f11 | |||
14f3361429 | |||
d7f0407300 | |||
ba99f5b66a | |||
a0e0adae8b | |||
46d5936806 | |||
104033e58b | |||
4c522aa0c4 | |||
d64f0e681e | |||
2b292f98de | |||
0b43758a34 | |||
e6d4609bf4 | |||
0de26571aa | |||
5597aa6038 | |||
425dc854ac | |||
a78186f502 | |||
60aa0cee13 | |||
7750216d1a | |||
eb73f6f772 | |||
db909451c9 | |||
b349b19869 | |||
e0841eacc1 | |||
44e0a040bd | |||
5feccb3c7c | |||
abd7db99b6 | |||
66c6d5bbb3 | |||
af586d5410 | |||
c8adf424e2 | |||
e36db3eb3d | |||
27c571636d | |||
d144cd0fc2 | |||
bb312ad74b | |||
df7beff2ef | |||
b7bfe72303 | |||
490fae770c | |||
a6817faae6 | |||
a8450eb1d3 | |||
355df7a48a | |||
5354b5f80f | |||
d095d6afd6 | |||
010049a849 | |||
91c0d310f2 | |||
7a0a1adc02 | |||
76b2ed510d | |||
31c8c620c7 |
5
.gitattributes
vendored
5
.gitattributes
vendored
@ -1,2 +1,7 @@
|
||||
# Auto detect text files and perform LF normalization
|
||||
* text=auto
|
||||
*.cmd text eol=crlf
|
||||
*.bat text eol=crlf
|
||||
*.ps1 text eol=crlf
|
||||
*.md text eol=lf
|
||||
*.sh text eol=lf
|
||||
|
4
.gitignore
vendored
4
.gitignore
vendored
@ -13,6 +13,8 @@ build/
|
||||
Version v*
|
||||
*.bak
|
||||
config/user-*
|
||||
config/settings
|
||||
config/aliases
|
||||
config/profile.d
|
||||
.github_changelog_generator
|
||||
.github_changelog_generator
|
||||
launcher/.vs
|
||||
|
418
CHANGELOG.md
418
CHANGELOG.md
@ -1,139 +1,112 @@
|
||||
# Change Log
|
||||
# Change Log
|
||||
|
||||
## [v1.3.0](https://github.com/cmderdev/cmder/tree/v1.3.0) (2016-07-14)
|
||||
[Full Changelog](https://github.com/cmderdev/cmder/compare/v1.3.0-pre...v1.3.0)
|
||||
## [1.3.6-pre1](https://github.com/cmderdev/cmder/tree/v1.3.6-pre1) (2018-03-01)
|
||||
|
||||
**Closed issues:**
|
||||
**Fixed bugs:**
|
||||
|
||||
- Cmder getting raped by dr.web quarantine system [\#1031](https://github.com/cmderdev/cmder/issues/1031)
|
||||
- Can I switch vim in cmder to gvim installed by myself? [\#1021](https://github.com/cmderdev/cmder/issues/1021)
|
||||
- \[Windows10 Bash\] Could use UP/Down/Home/End....key in cmder [\#1017](https://github.com/cmderdev/cmder/issues/1017)
|
||||
- {lamb} problem again... :-\( [\#1012](https://github.com/cmderdev/cmder/issues/1012)
|
||||
- High-lighting text and copying is broken [\#1008](https://github.com/cmderdev/cmder/issues/1008)
|
||||
- issue with updating ConEmuPack.160619.7z [\#1006](https://github.com/cmderdev/cmder/issues/1006)
|
||||
- after updating cmder [\#1004](https://github.com/cmderdev/cmder/issues/1004)
|
||||
- using touch in cli doesn't work anymore with latest update [\#1002](https://github.com/cmderdev/cmder/issues/1002)
|
||||
- v1.3.0-pre doesn't support running inside program files folder [\#998](https://github.com/cmderdev/cmder/issues/998)
|
||||
- Text cursor disappears when window resized [\#997](https://github.com/cmderdev/cmder/issues/997)
|
||||
- how to use clip command in the cmder? [\#996](https://github.com/cmderdev/cmder/issues/996)
|
||||
- {git}{hg} appearing in path print out rather than the values they represent [\#995](https://github.com/cmderdev/cmder/issues/995)
|
||||
- Don't just prepend the git path. [\#994](https://github.com/cmderdev/cmder/issues/994)
|
||||
- Attempt to concatenate local 'package\_version' \(a nil value\) [\#991](https://github.com/cmderdev/cmder/issues/991)
|
||||
- After auto-update git/hg indication and lambda in prompt are broken [\#990](https://github.com/cmderdev/cmder/issues/990)
|
||||
- Lack of Proxy Setting [\#989](https://github.com/cmderdev/cmder/issues/989)
|
||||
- Clink completion failing [\#987](https://github.com/cmderdev/cmder/issues/987)
|
||||
- \ [\#986](https://github.com/cmderdev/cmder/issues/986)
|
||||
- Is It Possible to recover the files removed by `rm -rf` [\#979](https://github.com/cmderdev/cmder/issues/979)
|
||||
- . [\#973](https://github.com/cmderdev/cmder/issues/973)
|
||||
- right click context menu open cmd without color [\#972](https://github.com/cmderdev/cmder/issues/972)
|
||||
- git branch name is not red when there are pending changes [\#967](https://github.com/cmderdev/cmder/issues/967)
|
||||
- git checkout autocomplete is showing files [\#966](https://github.com/cmderdev/cmder/issues/966)
|
||||
- Cmder proxy Ubuntu Bash on Windows [\#964](https://github.com/cmderdev/cmder/issues/964)
|
||||
- Update version on Chocolatey [\#959](https://github.com/cmderdev/cmder/issues/959)
|
||||
- ConEmu Injecting hooks fail [\#958](https://github.com/cmderdev/cmder/issues/958)
|
||||
- cmder \(from cmder\_mini.zip\) crashes on startup on windows 7 pro x64 [\#955](https://github.com/cmderdev/cmder/issues/955)
|
||||
- Feature: add some extra prompt-tuning hooks to profile.ps1 from user-profile.ps1 [\#950](https://github.com/cmderdev/cmder/issues/950)
|
||||
- Provide alternate icon colors [\#947](https://github.com/cmderdev/cmder/issues/947)
|
||||
- "\cmder\config\settings was unexpected at this time" and {lamb} is shown instead of lambda symbol [\#937](https://github.com/cmderdev/cmder/issues/937)
|
||||
- Cannot save settings [\#936](https://github.com/cmderdev/cmder/issues/936)
|
||||
- init.bat fails and shows {lamb} and {git} [\#935](https://github.com/cmderdev/cmder/issues/935)
|
||||
- Cmder minimizing when losing focus. [\#934](https://github.com/cmderdev/cmder/issues/934)
|
||||
- init.bat always uses "npm" as window title [\#933](https://github.com/cmderdev/cmder/issues/933)
|
||||
- `ls` return vertical list instead of horizontal? [\#924](https://github.com/cmderdev/cmder/issues/924)
|
||||
- Arrow keys do not work with bash \(Win10/Linux Subsystem\) [\#914](https://github.com/cmderdev/cmder/issues/914)
|
||||
- Aliased commands: Syntax Highlighting Lost [\#912](https://github.com/cmderdev/cmder/issues/912)
|
||||
- 'vim' hangs when loading in cmder bash session [\#910](https://github.com/cmderdev/cmder/issues/910)
|
||||
- Unix commands not working in windows 10 [\#908](https://github.com/cmderdev/cmder/issues/908)
|
||||
- git 2.8 ? [\#905](https://github.com/cmderdev/cmder/issues/905)
|
||||
- Confusing "Settings" \> "Integration" dialog behavior [\#904](https://github.com/cmderdev/cmder/issues/904)
|
||||
- v1.3.0 antivirus [\#903](https://github.com/cmderdev/cmder/issues/903)
|
||||
- Feature Request: Send to all/group [\#896](https://github.com/cmderdev/cmder/issues/896)
|
||||
- Updating git-for-windows after installing the full cmder? [\#887](https://github.com/cmderdev/cmder/issues/887)
|
||||
- Enconding ? [\#877](https://github.com/cmderdev/cmder/issues/877)
|
||||
- the {cmd} task [\#876](https://github.com/cmderdev/cmder/issues/876)
|
||||
- Failed to start cmder, app crashed [\#871](https://github.com/cmderdev/cmder/issues/871)
|
||||
- Having trouble with packaged conemu install, how can I point to a different one? [\#858](https://github.com/cmderdev/cmder/issues/858)
|
||||
- path entry for \<git\>/cmd instead of \<git\>/bin? [\#853](https://github.com/cmderdev/cmder/issues/853)
|
||||
- Cmder lists path on window resize. [\#851](https://github.com/cmderdev/cmder/issues/851)
|
||||
- cmder and vim compatibility problem [\#846](https://github.com/cmderdev/cmder/issues/846)
|
||||
- Unable to git pull,push or any action [\#845](https://github.com/cmderdev/cmder/issues/845)
|
||||
- Missing git support, install posth-git [\#834](https://github.com/cmderdev/cmder/issues/834)
|
||||
- "-ExecutionPolicy' is not recognized as an internal or external command" [\#830](https://github.com/cmderdev/cmder/issues/830)
|
||||
- How to upgrade from v1.1.4.1 to v1.2 ? [\#825](https://github.com/cmderdev/cmder/issues/825)
|
||||
- Startup warning [\#821](https://github.com/cmderdev/cmder/issues/821)
|
||||
- Cmder prompt screwed up with latest Windows 10 Build [\#820](https://github.com/cmderdev/cmder/issues/820)
|
||||
- Installer for cmder? [\#812](https://github.com/cmderdev/cmder/issues/812)
|
||||
- Netcat is missing [\#810](https://github.com/cmderdev/cmder/issues/810)
|
||||
- Cmder - Warning: Missing git support [\#806](https://github.com/cmderdev/cmder/issues/806)
|
||||
- Branch name not visible and vagrant commands not working [\#778](https://github.com/cmderdev/cmder/issues/778)
|
||||
- Run command to start [\#775](https://github.com/cmderdev/cmder/issues/775)
|
||||
- Security Warning - cmder\vendor\profile.ps1 [\#767](https://github.com/cmderdev/cmder/issues/767)
|
||||
- v1.2.9中文路径乱码 [\#764](https://github.com/cmderdev/cmder/issues/764)
|
||||
- How do confirm exe's are safe? md5? checksum? [\#761](https://github.com/cmderdev/cmder/issues/761)
|
||||
- Prevent other apps from overwriting the prompt? [\#749](https://github.com/cmderdev/cmder/issues/749)
|
||||
- Sublime Integration fails - Can't find "C:\Programs"? [\#727](https://github.com/cmderdev/cmder/issues/727)
|
||||
- Use tab to cycle through auto complete, like the original cmd does? [\#681](https://github.com/cmderdev/cmder/issues/681)
|
||||
- Emoji support [\#642](https://github.com/cmderdev/cmder/issues/642)
|
||||
- Strange Vim behaviour after Git for Windows upgrade [\#628](https://github.com/cmderdev/cmder/issues/628)
|
||||
- Invoking ConEmu instead of ConEmu64 on Windows 10 64-bit [\#574](https://github.com/cmderdev/cmder/issues/574)
|
||||
- Using .bashrc [\#565](https://github.com/cmderdev/cmder/issues/565)
|
||||
- Git checks for 'commits' every time a folder is changed? [\#529](https://github.com/cmderdev/cmder/issues/529)
|
||||
- Powershell tab title issue [\#528](https://github.com/cmderdev/cmder/issues/528)
|
||||
- storage in userprofile \(instead of fixed config dir relative to the executable\) [\#526](https://github.com/cmderdev/cmder/issues/526)
|
||||
- ncurses borders incorrectly displayed with ssh.exe [\#499](https://github.com/cmderdev/cmder/issues/499)
|
||||
- git-p4.py \[Errno 2\] No such file or directory [\#392](https://github.com/cmderdev/cmder/issues/392)
|
||||
- ConEmu auto attach with Cmder aliases [\#388](https://github.com/cmderdev/cmder/issues/388)
|
||||
- Using the context menu doesn't open a new tab in Single Instance Mode [\#356](https://github.com/cmderdev/cmder/issues/356)
|
||||
- Integrate PSReadLine [\#301](https://github.com/cmderdev/cmder/issues/301)
|
||||
- Moved Documents folder, running "ls" gives "ls: My Documents: No such file or directory" [\#284](https://github.com/cmderdev/cmder/issues/284)
|
||||
- bug when using up and down key [\#264](https://github.com/cmderdev/cmder/issues/264)
|
||||
- ps scripts: support space in foldernames [\#261](https://github.com/cmderdev/cmder/issues/261)
|
||||
- Accented characters [\#234](https://github.com/cmderdev/cmder/issues/234)
|
||||
- color scheme lost after CTRL+C on git status [\#227](https://github.com/cmderdev/cmder/issues/227)
|
||||
- CJK problem [\#222](https://github.com/cmderdev/cmder/issues/222)
|
||||
- Launcher opens new window separately [\#217](https://github.com/cmderdev/cmder/issues/217)
|
||||
- Theme not applied on Run command prompt here [\#216](https://github.com/cmderdev/cmder/issues/216)
|
||||
- "Your alias cannot contain a space" [\#214](https://github.com/cmderdev/cmder/issues/214)
|
||||
- Blank line [\#205](https://github.com/cmderdev/cmder/issues/205)
|
||||
- Open cmder as Tab from the file explorer [\#197](https://github.com/cmderdev/cmder/issues/197)
|
||||
- Git Not working [\#192](https://github.com/cmderdev/cmder/issues/192)
|
||||
- Add hotkey to switch tabs [\#186](https://github.com/cmderdev/cmder/issues/186)
|
||||
- Child shells yields broken prompt [\#178](https://github.com/cmderdev/cmder/issues/178)
|
||||
- generation of Pipe symbol not possible [\#168](https://github.com/cmderdev/cmder/issues/168)
|
||||
- Moving files with ../ [\#158](https://github.com/cmderdev/cmder/issues/158)
|
||||
- attach to GUI was requested, but there is no console processes! [\#150](https://github.com/cmderdev/cmder/issues/150)
|
||||
- Create windows installer [\#142](https://github.com/cmderdev/cmder/issues/142)
|
||||
* Fixed Git version check recently added to master.
|
||||
|
||||
**Merged pull requests:**
|
||||
**Updates:**
|
||||
|
||||
- Development [\#1037](https://github.com/cmderdev/cmder/pull/1037) ([Stanzilla](https://github.com/Stanzilla))
|
||||
- Minor update in README.md [\#1016](https://github.com/cmderdev/cmder/pull/1016) ([Mansuro](https://github.com/Mansuro))
|
||||
- Added rainbow icons [\#1014](https://github.com/cmderdev/cmder/pull/1014) ([JoshuaKGoldberg](https://github.com/JoshuaKGoldberg))
|
||||
- Fix git branch colouring [\#1011](https://github.com/cmderdev/cmder/pull/1011) ([MoFo88](https://github.com/MoFo88))
|
||||
- Bump clink-completions to 0.3.1 [\#992](https://github.com/cmderdev/cmder/pull/992) ([vladimir-kotikov](https://github.com/vladimir-kotikov))
|
||||
- Fix git branch name never shown as dirty [\#974](https://github.com/cmderdev/cmder/pull/974) ([janschulz](https://github.com/janschulz))
|
||||
- Register cmder in the context menu from powershell [\#962](https://github.com/cmderdev/cmder/pull/962) ([Jackbennett](https://github.com/Jackbennett))
|
||||
- cmd: change the prompt in lua [\#961](https://github.com/cmderdev/cmder/pull/961) ([janschulz](https://github.com/janschulz))
|
||||
- Update clink-completions to 0.3.0 [\#946](https://github.com/cmderdev/cmder/pull/946) ([vladimir-kotikov](https://github.com/vladimir-kotikov))
|
||||
- Added :verbose-output subroutine, made aliases update more functional [\#945](https://github.com/cmderdev/cmder/pull/945) ([daxgames](https://github.com/daxgames))
|
||||
- fixed git not working in cmder cmd session and added some comments [\#943](https://github.com/cmderdev/cmder/pull/943) ([daxgames](https://github.com/daxgames))
|
||||
- More variable quoting in init.bat [\#941](https://github.com/cmderdev/cmder/pull/941) ([janschulz](https://github.com/janschulz))
|
||||
- Add quotes around all variables [\#940](https://github.com/cmderdev/cmder/pull/940) ([janschulz](https://github.com/janschulz))
|
||||
- Fix missing "\" when building dirpath to psmodules [\#916](https://github.com/cmderdev/cmder/pull/916) ([liftir](https://github.com/liftir))
|
||||
- upgraded git to 2.8.1 [\#911](https://github.com/cmderdev/cmder/pull/911) ([daxgames](https://github.com/daxgames))
|
||||
- Added proxy support [\#909](https://github.com/cmderdev/cmder/pull/909) ([daxgames](https://github.com/daxgames))
|
||||
- fixed - not running user-aliases.cmd if aliases variable is overridde… [\#892](https://github.com/cmderdev/cmder/pull/892) ([daxgames](https://github.com/daxgames))
|
||||
- better git path handling [\#865](https://github.com/cmderdev/cmder/pull/865) ([janschulz](https://github.com/janschulz))
|
||||
- Enhanced alias.bat to allow file storage path [\#862](https://github.com/cmderdev/cmder/pull/862) ([daxgames](https://github.com/daxgames))
|
||||
* Modified Cmder tasks in default Conemu.xml to allow easily adding command line args for init.bat by adding some quotes. This resulted in a ton of misc changes to this file. See Adds below.
|
||||
* Reworked `cmder.exe` command line argument handling to make it more flexible and easily added to.
|
||||
* Reworked README.md tables to make them more readable in editors
|
||||
|
||||
## [v1.3.0-pre](https://github.com/cmderdev/cmder/tree/v1.3.0-pre) (2016-03-20)
|
||||
[Full Changelog](https://github.com/cmderdev/cmder/compare/v1.2.9...v1.3.0-pre)
|
||||
**Implemented enhancements:**
|
||||
|
||||
* Added `cmder.exe` command line args documenttion to `README.md`
|
||||
* Added `:enhance_path` method to vendor\init.bat that modifies the path only if required.
|
||||
* To prepend: `call :enhance_path "%cmder_root%"`
|
||||
* to append: `call :enhance_path "%cmder_root%" append`
|
||||
* Added `:enhance_path_recursive` method to vendor\init.bat that adds a path and all its sub directories to the path if required.
|
||||
* Max recurse depth default is '1' configurable using `init.bat /max_depth [1-5]`. 6+ results in error.
|
||||
* To prepend and go 3 levels deep: `call :enhance_path "%cmder_root%" 3`
|
||||
* To append and go 2 levels deep: `call :enhance_path "%cmder_root%" 2 append`
|
||||
* Added ability to init.bat to accept command line args and documented them in README.md. Allows users to change the behaviour of init.bat without editing the file.
|
||||
|
||||
| Argument | Description | Default |
|
||||
| ----------------------------- | ---------------------------------------------------------------------------------------------- | ------------------------------------- |
|
||||
| /c [user cmder root] | Enables user bin and config folders for 'Cmder as admin' sessions due to non-shared environment. | not set |
|
||||
| /d | Enables debug output. | not set |
|
||||
| /git_install_root [file path] | User specified Git installation root path. | '%CMDER_ROOT%\vendor\Git-for-Windows' |
|
||||
| /home [home folder] | User specified folder path to set `%HOME%` environment variable. | '%userprofile%' |
|
||||
| /max_depth [1-5] | Define max recurse depth when adding to the path for `%cmder_root%\bin` and `%cmder_user_bin%` | 1 |
|
||||
| /svn_ssh [path to ssh.exe] | Define %SVN_SSH% so we can use git svn with ssh svn repositories. | '%GIT_INSTALL_ROOT%\bin\ssh.exe' |
|
||||
| /user_aliases [file path] | File path pointing to user aliases. | '%CMDER_ROOT%\config\user-liases.cmd' |
|
||||
| /v | Enables verbose output. | not set |
|
||||
|
||||
* Added new `cmder.exe /C \<path\>` argument
|
||||
* To use run Cmder.exe with "/C" command line argument. Example: `cmder.exe /C %userprofile%\cmder_config`
|
||||
* To use run with `Cmder as Admin` sessions you must specify "/c" command line argument to `init.bat` in tasks. See [README.md](./Readme.md) for details.
|
||||
* Enables shared Cmder install with Non-Portable Individual User Config
|
||||
* Supported by all supported shells (cmder, powershell, git bash, and external bash)
|
||||
* This will create the following directory structure if it is missing.
|
||||
|
||||
```
|
||||
c:\users\[username]\cmder_config
|
||||
├───bin
|
||||
└───config
|
||||
└───profile.d
|
||||
```
|
||||
|
||||
* Shell init scripts run in the following order
|
||||
1. %cmder_root%\config\profile.d\*.[cmd|ps1|sh]
|
||||
1. %cmder_root%\config\user-profile.[cmd|ps1|sh]
|
||||
1. %userprofile%\cmder_config\config\profile.d\*.[cmd|ps1|sh]
|
||||
1. %userprofile%\cmder_config\config\user-profile.[cmd|ps1|sh]
|
||||
|
||||
## [1.3.5](https://github.com/cmderdev/cmder/releases/tag/v1.3.5) (2018-02-11)
|
||||
|
||||
This is the first Cmder release that comes with Git for Windows in the 64bit version. If you are still using a 32bit version, you have to fix this yourself.
|
||||
|
||||
**Updated components:**
|
||||
- Git updated to v2.16.1.windows.4
|
||||
- clink updated to 0.4.9 (official version)
|
||||
- ConEmu updated to 180206
|
||||
|
||||
**Fixed bugs:**
|
||||
|
||||
- use /dir Switch instead of CMDER_START (previously [\#921](https://github.com/cmderdev/cmder/pull/921)) [\#1609](https://github.com/cmderdev/cmder/pull/1609) ([Stanzilla](https://github.com/Stanzilla))
|
||||
- add config/settings to .gitignore [\#1592](https://github.com/cmderdev/cmder/pull/1592) ([daxgames]((https://github.com/daxgames)))
|
||||
- Upgrade #1591 ([daxgames]((https://github.com/daxgames)))
|
||||
- Fix startup folder issue [\#1547](https://github.com/cmderdev/cmder/pull/1547) (dr-tony-lin)
|
||||
- Fix alias.bat handling "user-aliases.cmd" with spaces [\#1531](https://github.com/cmderdev/cmder/pull/1531) ([Varriount](https://github.com/Varriount))
|
||||
- Compatible with Visual Studio Code (cmd) [\#1416](https://github.com/cmderdev/cmder/pull/1416) ([gucong3000](https://github.com/gucong3000))
|
||||
|
||||
## [1.3.4](https://github.com/cmderdev/cmder/releases/tag/v1.3.4) (2017-11-03)
|
||||
|
||||
We now use a forked version of clink since it's original author is missing and we needed Windows 10 compat.
|
||||
|
||||
**Updated components:**
|
||||
|
||||
- Git: v2.15.0.windows.1
|
||||
|
||||
**Fixed bugs:**
|
||||
|
||||
- Fix lamda color after a ConEmu change: [a8d3261](https://github.com/cmderdev/cmder/commit/a8d32611a9b93cfb58f0318ae4b8041bc8a86c68)
|
||||
- Compatible with Visual Studio Code (PowerShell): [\#1417](https://github.com/cmderdev/cmder/pull/1417)
|
||||
- Make default tasks respect "Startup directory for new process": [b58ff9b](https://github.com/cmderdev/cmder/commit/b58ff9bb539d7f908f427fa34f377e1513fcd825)
|
||||
|
||||
|
||||
## [1.3.3](https://github.com/cmderdev/cmder/releases/tag/v1.3.3) (2017-10-28)
|
||||
|
||||
We now use a forked version of clink since it's original author is missing and we needed Windows 10 compat.
|
||||
|
||||
**Updated components:**
|
||||
|
||||
- Git: v2.14.3.windows.1
|
||||
- ConEmu: 170910
|
||||
- Clink: 0.4.9-FORK
|
||||
- Clink-Completions: 0.3.3
|
||||
|
||||
## [1.3.2](https://github.com/cmderdev/cmder/releases/tag/v1.3.2) (2016-12-01)
|
||||
**Implemented enhancements:**
|
||||
|
||||
- Change appveyor.yml to publish all resulting artifacts from builds. [\#717](https://github.com/cmderdev/cmder/issues/717)
|
||||
- Stuff that should not be in the release zips [\#662](https://github.com/cmderdev/cmder/issues/662)
|
||||
- Make cmder auto start with windows and auto minimize to the status bar. [\#532](https://github.com/cmderdev/cmder/issues/532)
|
||||
- v1.2.0: Errors because of PowerShell execution policy [\#483](https://github.com/cmderdev/cmder/issues/483)
|
||||
- Updating Vendors with chocolatey [\#442](https://github.com/cmderdev/cmder/issues/442)
|
||||
- Alias without it's opposit [\#281](https://github.com/cmderdev/cmder/issues/281)
|
||||
- Improve new UX [\#230](https://github.com/cmderdev/cmder/issues/230)
|
||||
- Different Font for the Lambda [\#211](https://github.com/cmderdev/cmder/issues/211)
|
||||
@ -142,13 +115,16 @@
|
||||
- Include Scoop as package manager [\#42](https://github.com/cmderdev/cmder/issues/42)
|
||||
- Complete aliases on tab [\#38](https://github.com/cmderdev/cmder/issues/38)
|
||||
- Path ordering issue - wrong find.exe executes by default [\#37](https://github.com/cmderdev/cmder/issues/37)
|
||||
- User conemu cfg [\#1109](https://github.com/cmderdev/cmder/pull/1109) ([daxgames](https://github.com/daxgames))
|
||||
- Msys bash [\#702](https://github.com/cmderdev/cmder/pull/702) ([daxgames](https://github.com/daxgames))
|
||||
- Added code to check for the existence of a customized ini file.. [\#427](https://github.com/cmderdev/cmder/pull/427) ([kodybrown](https://github.com/kodybrown))
|
||||
- New build and pack scripts [\#152](https://github.com/cmderdev/cmder/pull/152) ([bliker](https://github.com/bliker))
|
||||
- New build and pack scripts [\#152](https://github.com/cmderdev/cmder/pull/152) ([samvasko](https://github.com/samvasko))
|
||||
- Ability to change Font Size using Ctrl+MouseWheel [\#125](https://github.com/cmderdev/cmder/pull/125) ([saaguero](https://github.com/saaguero))
|
||||
|
||||
**Fixed bugs:**
|
||||
|
||||
- Git process not ending. [\#1060](https://github.com/cmderdev/cmder/issues/1060)
|
||||
- Git: fatal: Unable to create '.git/index.lock': File exists. [\#1044](https://github.com/cmderdev/cmder/issues/1044)
|
||||
- Aliases with environment variables not working [\#684](https://github.com/cmderdev/cmder/issues/684)
|
||||
- msysgit is not injected into path. [\#493](https://github.com/cmderdev/cmder/issues/493)
|
||||
- cmder display error [\#491](https://github.com/cmderdev/cmder/issues/491)
|
||||
@ -163,22 +139,135 @@
|
||||
|
||||
**Closed issues:**
|
||||
|
||||
- some kind of project profile [\#1175](https://github.com/cmderdev/cmder/issues/1175)
|
||||
- Does cmder support the notion of a plugin [\#1173](https://github.com/cmderdev/cmder/issues/1173)
|
||||
- Cygwin? [\#1155](https://github.com/cmderdev/cmder/issues/1155)
|
||||
- CMDER ERROR [\#1154](https://github.com/cmderdev/cmder/issues/1154)
|
||||
- Remapping hot keys [\#1150](https://github.com/cmderdev/cmder/issues/1150)
|
||||
- What is mintty in here? [\#1149](https://github.com/cmderdev/cmder/issues/1149)
|
||||
- No make [\#1146](https://github.com/cmderdev/cmder/issues/1146)
|
||||
- How can I set the path of cmder properly at the start ? [\#1136](https://github.com/cmderdev/cmder/issues/1136)
|
||||
- Powershell Slow Startup [\#1130](https://github.com/cmderdev/cmder/issues/1130)
|
||||
- python for cmder [\#1129](https://github.com/cmderdev/cmder/issues/1129)
|
||||
- Haskell repl \(ghci\) crashes only in cmder works elsewhere [\#1125](https://github.com/cmderdev/cmder/issues/1125)
|
||||
- Latest update causes `error: failed to push some refs to git@gitlab....` [\#1124](https://github.com/cmderdev/cmder/issues/1124)
|
||||
- Connection to SSH agent refused [\#1123](https://github.com/cmderdev/cmder/issues/1123)
|
||||
- Slow on startup [\#1122](https://github.com/cmderdev/cmder/issues/1122)
|
||||
- Shell script fail [\#1121](https://github.com/cmderdev/cmder/issues/1121)
|
||||
- Ctrl+` shorcut does not work in version 161002 [\#1113](https://github.com/cmderdev/cmder/issues/1113)
|
||||
- Git LFS not working with newer cmder versions [\#1112](https://github.com/cmderdev/cmder/issues/1112)
|
||||
- Processes dying due to lack of memory? [\#1106](https://github.com/cmderdev/cmder/issues/1106)
|
||||
- Broken links [\#1103](https://github.com/cmderdev/cmder/issues/1103)
|
||||
- "\config\profile.d\Active"' is not recognized as an internal or external command, operable program or batch file. [\#1102](https://github.com/cmderdev/cmder/issues/1102)
|
||||
- Can't run 'git commit' [\#1098](https://github.com/cmderdev/cmder/issues/1098)
|
||||
- Unable to use keybase K:\ [\#1096](https://github.com/cmderdev/cmder/issues/1096)
|
||||
- Can not Run mintty in v1.3.1 [\#1094](https://github.com/cmderdev/cmder/issues/1094)
|
||||
- Shortcut for new tab ?? [\#1093](https://github.com/cmderdev/cmder/issues/1093)
|
||||
- Bad symbols [\#1092](https://github.com/cmderdev/cmder/issues/1092)
|
||||
- cmder turns slow when using GIT command after update to the latest version [\#1091](https://github.com/cmderdev/cmder/issues/1091)
|
||||
- $ENV:CMDER\_START has a double quote too much [\#1079](https://github.com/cmderdev/cmder/issues/1079)
|
||||
- Incorrect checksum ? [\#1075](https://github.com/cmderdev/cmder/issues/1075)
|
||||
- Unplugging the battery detaches the Quake console [\#1074](https://github.com/cmderdev/cmder/issues/1074)
|
||||
- Mouse right click copy and paste at same time. [\#1072](https://github.com/cmderdev/cmder/issues/1072)
|
||||
- strange display on Chinese windows 8 [\#1071](https://github.com/cmderdev/cmder/issues/1071)
|
||||
- Permanently add all SSH keys to ssh-agent [\#1062](https://github.com/cmderdev/cmder/issues/1062)
|
||||
- Wrong dir privilege in bash on Windows ? [\#1059](https://github.com/cmderdev/cmder/issues/1059)
|
||||
- Invalid [\#1058](https://github.com/cmderdev/cmder/issues/1058)
|
||||
- Python virtualenv not activating in Windows 10 Cmder [\#1057](https://github.com/cmderdev/cmder/issues/1057)
|
||||
- prompt is Garbled [\#1054](https://github.com/cmderdev/cmder/issues/1054)
|
||||
- startup is so slow [\#1053](https://github.com/cmderdev/cmder/issues/1053)
|
||||
- ~ doesn't work in cmder? [\#1051](https://github.com/cmderdev/cmder/issues/1051)
|
||||
- \[Solved myself\] .bash\_history and winscp.rnd are not in Cmder's directories [\#1050](https://github.com/cmderdev/cmder/issues/1050)
|
||||
- First run config fails with exclamation in path [\#1049](https://github.com/cmderdev/cmder/issues/1049)
|
||||
- Can't run npm or any Node Module on Cmder \(Windows 7\) [\#1047](https://github.com/cmderdev/cmder/issues/1047)
|
||||
- Cannot start cmder [\#1046](https://github.com/cmderdev/cmder/issues/1046)
|
||||
- About letter overlapping [\#1045](https://github.com/cmderdev/cmder/issues/1045)
|
||||
- %cmder\_root%\config\user-aliases.ps1 is not created on a fresh install of v1.3.0 [\#1040](https://github.com/cmderdev/cmder/issues/1040)
|
||||
- Cmder looking for user-aliases in wrong path [\#1039](https://github.com/cmderdev/cmder/issues/1039)
|
||||
- multiple hg.exe processes spawned [\#1035](https://github.com/cmderdev/cmder/issues/1035)
|
||||
- cls command spacing as well as spacing for input not wrapping to next line, global env vars not highlighted [\#1032](https://github.com/cmderdev/cmder/issues/1032)
|
||||
- Cmder getting raped by dr.web quarantine system [\#1031](https://github.com/cmderdev/cmder/issues/1031)
|
||||
- cmder no longer using path variables [\#1029](https://github.com/cmderdev/cmder/issues/1029)
|
||||
- Can I switch vim in cmder to gvim installed by myself? [\#1021](https://github.com/cmderdev/cmder/issues/1021)
|
||||
- \[Windows10 Bash\] Could use UP/Down/Home/End....key in cmder [\#1017](https://github.com/cmderdev/cmder/issues/1017)
|
||||
- {lamb} problem again... :-\( [\#1012](https://github.com/cmderdev/cmder/issues/1012)
|
||||
- High-lighting text and copying is broken [\#1008](https://github.com/cmderdev/cmder/issues/1008)
|
||||
- issue with updating ConEmuPack.160619.7z [\#1006](https://github.com/cmderdev/cmder/issues/1006)
|
||||
- using touch in cli doesn't work anymore with latest update [\#1002](https://github.com/cmderdev/cmder/issues/1002)
|
||||
- When resizing cmder window an extra path line appears. [\#1000](https://github.com/cmderdev/cmder/issues/1000)
|
||||
- v1.3.0-pre doesn't support running inside program files folder [\#998](https://github.com/cmderdev/cmder/issues/998)
|
||||
- Text cursor disappears when window resized [\#997](https://github.com/cmderdev/cmder/issues/997)
|
||||
- how to use clip command in the cmder? [\#996](https://github.com/cmderdev/cmder/issues/996)
|
||||
- {git}{hg} appearing in path print out rather than the values they represent [\#995](https://github.com/cmderdev/cmder/issues/995)
|
||||
- Don't just prepend the git path. [\#994](https://github.com/cmderdev/cmder/issues/994)
|
||||
- `ls` et al slow after updating cmder [\#993](https://github.com/cmderdev/cmder/issues/993)
|
||||
- Attempt to concatenate local 'package\_version' \(a nil value\) [\#991](https://github.com/cmderdev/cmder/issues/991)
|
||||
- After auto-update git/hg indication and lambda in prompt are broken [\#990](https://github.com/cmderdev/cmder/issues/990)
|
||||
- Lack of Proxy Setting [\#989](https://github.com/cmderdev/cmder/issues/989)
|
||||
- Clink completion failing [\#987](https://github.com/cmderdev/cmder/issues/987)
|
||||
- \ [\#986](https://github.com/cmderdev/cmder/issues/986)
|
||||
- default configuration does not support Chinese named file listing with ls [\#985](https://github.com/cmderdev/cmder/issues/985)
|
||||
- When cmder opened in visual studio code, there is wrong path [\#981](https://github.com/cmderdev/cmder/issues/981)
|
||||
- Is It Possible to recover the files removed by `rm -rf` [\#979](https://github.com/cmderdev/cmder/issues/979)
|
||||
- . [\#973](https://github.com/cmderdev/cmder/issues/973)
|
||||
- right click context menu open cmd without color [\#972](https://github.com/cmderdev/cmder/issues/972)
|
||||
- git branch name is not red when there are pending changes [\#967](https://github.com/cmderdev/cmder/issues/967)
|
||||
- git checkout autocomplete is showing files [\#966](https://github.com/cmderdev/cmder/issues/966)
|
||||
- Cmder proxy Ubuntu Bash on Windows [\#964](https://github.com/cmderdev/cmder/issues/964)
|
||||
- Update version on Chocolatey [\#959](https://github.com/cmderdev/cmder/issues/959)
|
||||
- ConEmu Injecting hooks fail [\#958](https://github.com/cmderdev/cmder/issues/958)
|
||||
- chocolatey.lua:1: module 'tables' not found [\#957](https://github.com/cmderdev/cmder/issues/957)
|
||||
- cmder \(from cmder\_mini.zip\) crashes on startup on windows 7 pro x64 [\#955](https://github.com/cmderdev/cmder/issues/955)
|
||||
- Feature: add some extra prompt-tuning hooks to profile.ps1 from user-profile.ps1 [\#950](https://github.com/cmderdev/cmder/issues/950)
|
||||
- Provide alternate icon colors [\#947](https://github.com/cmderdev/cmder/issues/947)
|
||||
- "\cmder\config\settings was unexpected at this time" and {lamb} is shown instead of lambda symbol [\#937](https://github.com/cmderdev/cmder/issues/937)
|
||||
- Cannot save settings [\#936](https://github.com/cmderdev/cmder/issues/936)
|
||||
- init.bat fails and shows {lamb} and {git} [\#935](https://github.com/cmderdev/cmder/issues/935)
|
||||
- Cmder minimizing when losing focus. [\#934](https://github.com/cmderdev/cmder/issues/934)
|
||||
- init.bat always uses "npm" as window title [\#933](https://github.com/cmderdev/cmder/issues/933)
|
||||
- `ls` return vertical list instead of horizontal? [\#924](https://github.com/cmderdev/cmder/issues/924)
|
||||
- Arrow keys in Windows 10 Linux Subsystem [\#919](https://github.com/cmderdev/cmder/issues/919)
|
||||
- Arrow keys do not work with bash \(Win10/Linux Subsystem\) [\#914](https://github.com/cmderdev/cmder/issues/914)
|
||||
- Aliased commands: Syntax Highlighting Lost [\#912](https://github.com/cmderdev/cmder/issues/912)
|
||||
- 'vim' hangs when loading in cmder bash session [\#910](https://github.com/cmderdev/cmder/issues/910)
|
||||
- Unix commands not working in windows 10 [\#908](https://github.com/cmderdev/cmder/issues/908)
|
||||
- git 2.8 ? [\#905](https://github.com/cmderdev/cmder/issues/905)
|
||||
- Confusing "Settings" \> "Integration" dialog behavior [\#904](https://github.com/cmderdev/cmder/issues/904)
|
||||
- v1.3.0 antivirus [\#903](https://github.com/cmderdev/cmder/issues/903)
|
||||
- Feature Request: Send to all/group [\#896](https://github.com/cmderdev/cmder/issues/896)
|
||||
- Updating git-for-windows after installing the full cmder? [\#887](https://github.com/cmderdev/cmder/issues/887)
|
||||
- Tab autocompetion for git is inconsistent \(doesn't work with git add\) [\#885](https://github.com/cmderdev/cmder/issues/885)
|
||||
- Line-wrapping breaks when using backspace key in a git repo with Cmder mini and Git for Windows. [\#883](https://github.com/cmderdev/cmder/issues/883)
|
||||
- Cmder opens off screen [\#881](https://github.com/cmderdev/cmder/issues/881)
|
||||
- ctrl+l with powershell in quake mode clears the first prompt line as well [\#879](https://github.com/cmderdev/cmder/issues/879)
|
||||
- Enconding ? [\#877](https://github.com/cmderdev/cmder/issues/877)
|
||||
- the {cmd} task [\#876](https://github.com/cmderdev/cmder/issues/876)
|
||||
- Failed to start cmder, app crashed [\#871](https://github.com/cmderdev/cmder/issues/871)
|
||||
- Cmder Windows Pinning Issue \[weird\] [\#869](https://github.com/cmderdev/cmder/issues/869)
|
||||
- Why not use @ECHO OFF? [\#868](https://github.com/cmderdev/cmder/issues/868)
|
||||
- alias with && doesn't work [\#859](https://github.com/cmderdev/cmder/issues/859)
|
||||
- Having trouble with packaged conemu install, how can I point to a different one? [\#858](https://github.com/cmderdev/cmder/issues/858)
|
||||
- path entry for \<git\>/cmd instead of \<git\>/bin? [\#853](https://github.com/cmderdev/cmder/issues/853)
|
||||
- Cmder lists path on window resize. [\#851](https://github.com/cmderdev/cmder/issues/851)
|
||||
- Alias with multi-word git commit message not working [\#847](https://github.com/cmderdev/cmder/issues/847)
|
||||
- cmder and vim compatibility problem [\#846](https://github.com/cmderdev/cmder/issues/846)
|
||||
- Unable to git pull,push or any action [\#845](https://github.com/cmderdev/cmder/issues/845)
|
||||
- switch to use master a the default development branch [\#836](https://github.com/cmderdev/cmder/issues/836)
|
||||
- Missing git support, install posth-git [\#834](https://github.com/cmderdev/cmder/issues/834)
|
||||
- Git branch information is broken for submodules [\#833](https://github.com/cmderdev/cmder/issues/833)
|
||||
- "-ExecutionPolicy' is not recognized as an internal or external command" [\#830](https://github.com/cmderdev/cmder/issues/830)
|
||||
- How to upgrade from v1.1.4.1 to v1.2 ? [\#825](https://github.com/cmderdev/cmder/issues/825)
|
||||
- Startup warning [\#821](https://github.com/cmderdev/cmder/issues/821)
|
||||
- Cmder prompt screwed up with latest Windows 10 Build [\#820](https://github.com/cmderdev/cmder/issues/820)
|
||||
- Cmder does not open in last open window position [\#816](https://github.com/cmderdev/cmder/issues/816)
|
||||
- CMDer won't open Sublime [\#814](https://github.com/cmderdev/cmder/issues/814)
|
||||
- integrating Git for Windows vs. Git for Windows SDK? [\#813](https://github.com/cmderdev/cmder/issues/813)
|
||||
- Installer for cmder? [\#812](https://github.com/cmderdev/cmder/issues/812)
|
||||
- When will the next version be available? [\#811](https://github.com/cmderdev/cmder/issues/811)
|
||||
- Netcat is missing [\#810](https://github.com/cmderdev/cmder/issues/810)
|
||||
- how to use /? to get the help doc in the `cmder` [\#808](https://github.com/cmderdev/cmder/issues/808)
|
||||
- \[Enhancement\] Powershell and Babun \(cygwin + zsh\) [\#807](https://github.com/cmderdev/cmder/issues/807)
|
||||
- Cmder - Warning: Missing git support [\#806](https://github.com/cmderdev/cmder/issues/806)
|
||||
- iul [\#800](https://github.com/cmderdev/cmder/issues/800)
|
||||
- Update clink settings [\#793](https://github.com/cmderdev/cmder/issues/793)
|
||||
- how to add the environment variable to the cmder? [\#792](https://github.com/cmderdev/cmder/issues/792)
|
||||
@ -188,17 +277,24 @@
|
||||
- How to remove "Cmder Here" in the context menu after .\cmder.exe /REGISTER ALL? [\#787](https://github.com/cmderdev/cmder/issues/787)
|
||||
- \[v1.2.9\] Can not alias with env. variables. [\#784](https://github.com/cmderdev/cmder/issues/784)
|
||||
- How should i add a context menu entry? [\#780](https://github.com/cmderdev/cmder/issues/780)
|
||||
- Branch name not visible and vagrant commands not working [\#778](https://github.com/cmderdev/cmder/issues/778)
|
||||
- Run command to start [\#775](https://github.com/cmderdev/cmder/issues/775)
|
||||
- CMDER\_START should always be set to USERPROFILE unless explicitly set through /START parameter [\#772](https://github.com/cmderdev/cmder/issues/772)
|
||||
- Startup Error: cmder\vendor\profile.ps1 cannot be loaded. [\#769](https://github.com/cmderdev/cmder/issues/769)
|
||||
- How to make Cmder stop displaying warning? [\#768](https://github.com/cmderdev/cmder/issues/768)
|
||||
- Security Warning - cmder\vendor\profile.ps1 [\#767](https://github.com/cmderdev/cmder/issues/767)
|
||||
- Unable to install cmder using Install-Package in Windows 10 [\#762](https://github.com/cmderdev/cmder/issues/762)
|
||||
- How do confirm exe's are safe? md5? checksum? [\#761](https://github.com/cmderdev/cmder/issues/761)
|
||||
- Option to disable preview stacking with multiple tabs [\#758](https://github.com/cmderdev/cmder/issues/758)
|
||||
- 'ls' is no longer recognized command [\#757](https://github.com/cmderdev/cmder/issues/757)
|
||||
- I can't run de Cmder.exe [\#755](https://github.com/cmderdev/cmder/issues/755)
|
||||
- Multiple location references when maximizing [\#753](https://github.com/cmderdev/cmder/issues/753)
|
||||
- CLink completions for npm increase cmder startup time for one second [\#750](https://github.com/cmderdev/cmder/issues/750)
|
||||
- Prevent other apps from overwriting the prompt? [\#749](https://github.com/cmderdev/cmder/issues/749)
|
||||
- cmder.exe infected with Variant.Kazy.767238 [\#748](https://github.com/cmderdev/cmder/issues/748)
|
||||
- cmder.exe considered harmful by Bitdefender [\#744](https://github.com/cmderdev/cmder/issues/744)
|
||||
- curl ntlm auth stopped working [\#741](https://github.com/cmderdev/cmder/issues/741)
|
||||
- Sublime Integration fails - Can't find "C:\Programs"? [\#727](https://github.com/cmderdev/cmder/issues/727)
|
||||
- Cmder and gulp, not friend? [\#725](https://github.com/cmderdev/cmder/issues/725)
|
||||
- Antivirus deleting some files in cmder \(reporting them as infected\) [\#724](https://github.com/cmderdev/cmder/issues/724)
|
||||
- Windows Defender on Windows 10 finds Trojan in extracted files [\#713](https://github.com/cmderdev/cmder/issues/713)
|
||||
@ -212,6 +308,7 @@
|
||||
- Tab-Complete paths not working \[1.2.9\] [\#691](https://github.com/cmderdev/cmder/issues/691)
|
||||
- The directory be duplicate displayed [\#689](https://github.com/cmderdev/cmder/issues/689)
|
||||
- Don't work at my windows 7 \(misiing api-ms-win-crt-runtime-l1-1-0.dll\) [\#682](https://github.com/cmderdev/cmder/issues/682)
|
||||
- Use tab to cycle through auto complete, like the original cmd does? [\#681](https://github.com/cmderdev/cmder/issues/681)
|
||||
- git: 'pull' is not a git command. See 'git --help'. [\#679](https://github.com/cmderdev/cmder/issues/679)
|
||||
- Error in NPM-Prompt [\#678](https://github.com/cmderdev/cmder/issues/678)
|
||||
- msysgit commands not working [\#675](https://github.com/cmderdev/cmder/issues/675)
|
||||
@ -228,6 +325,7 @@
|
||||
- Is there any hotkey jump to "Search" box? [\#647](https://github.com/cmderdev/cmder/issues/647)
|
||||
- File /vendor/conemu-maximus5/ConEmu.exe not found. [\#646](https://github.com/cmderdev/cmder/issues/646)
|
||||
- As admin CMDER\_ROOT not set in Powershell [\#643](https://github.com/cmderdev/cmder/issues/643)
|
||||
- Emoji support [\#642](https://github.com/cmderdev/cmder/issues/642)
|
||||
- Having ls, cat, etc [\#641](https://github.com/cmderdev/cmder/issues/641)
|
||||
- Cmder having Permission Errors for Windows 10 [\#640](https://github.com/cmderdev/cmder/issues/640)
|
||||
- Powershell - Msys Aliases [\#639](https://github.com/cmderdev/cmder/issues/639)
|
||||
@ -235,10 +333,10 @@
|
||||
- Invoke-Expression : The term 'Invoke-Expression' is not recognized [\#636](https://github.com/cmderdev/cmder/issues/636)
|
||||
- it doesn't like Docker [\#631](https://github.com/cmderdev/cmder/issues/631)
|
||||
- Latest release : Windows 7 : Windows cannot find ".../vendor/conemu-maximus5/CpmE,u.exe" [\#629](https://github.com/cmderdev/cmder/issues/629)
|
||||
- Strange Vim behaviour after Git for Windows upgrade [\#628](https://github.com/cmderdev/cmder/issues/628)
|
||||
- msysGit has been superseded ,consider to switch to Git for Windows 2.x? [\#627](https://github.com/cmderdev/cmder/issues/627)
|
||||
- tail command not found [\#625](https://github.com/cmderdev/cmder/issues/625)
|
||||
- Cmder console remain unused text on screen [\#623](https://github.com/cmderdev/cmder/issues/623)
|
||||
- how i can change the mysysgit folder [\#620](https://github.com/cmderdev/cmder/issues/620)
|
||||
- er con emu [\#617](https://github.com/cmderdev/cmder/issues/617)
|
||||
- first google hit for cmder shows 404 [\#616](https://github.com/cmderdev/cmder/issues/616)
|
||||
- \[ Solved \] How to I change to width of Split screen divider \( border \) line. [\#613](https://github.com/cmderdev/cmder/issues/613)
|
||||
@ -256,17 +354,20 @@
|
||||
- PowerShell Profile Aliases ignored in Cmder [\#593](https://github.com/cmderdev/cmder/issues/593)
|
||||
- "Inject ConEmuHk" settings slows git down considerably [\#592](https://github.com/cmderdev/cmder/issues/592)
|
||||
- Suggestion about transparency [\#591](https://github.com/cmderdev/cmder/issues/591)
|
||||
- Powerline integration with cmder [\#590](https://github.com/cmderdev/cmder/issues/590)
|
||||
- Wrong place [\#589](https://github.com/cmderdev/cmder/issues/589)
|
||||
- Misleading install instructions? [\#588](https://github.com/cmderdev/cmder/issues/588)
|
||||
- ENHANCE: Only add git to path if not exist [\#586](https://github.com/cmderdev/cmder/issues/586)
|
||||
- new console confirmation - with Ctrl-T [\#583](https://github.com/cmderdev/cmder/issues/583)
|
||||
- start-ssh-agent not found [\#580](https://github.com/cmderdev/cmder/issues/580)
|
||||
- Missing DLL [\#579](https://github.com/cmderdev/cmder/issues/579)
|
||||
- Invoking ConEmu instead of ConEmu64 on Windows 10 64-bit [\#574](https://github.com/cmderdev/cmder/issues/574)
|
||||
- windows 10 incompatibility [\#572](https://github.com/cmderdev/cmder/issues/572)
|
||||
- FIX: Incorrect startup directory. [\#571](https://github.com/cmderdev/cmder/issues/571)
|
||||
- WARNING: Enable-GitColors is Obsolete and will be removed in a future version of posh-git. [\#568](https://github.com/cmderdev/cmder/issues/568)
|
||||
- Path issue on startup - Invalid download path [\#567](https://github.com/cmderdev/cmder/issues/567)
|
||||
- The term 'vim' is not recognized [\#566](https://github.com/cmderdev/cmder/issues/566)
|
||||
- Using .bashrc [\#565](https://github.com/cmderdev/cmder/issues/565)
|
||||
- Persist tab "View \(palette\)" selection [\#562](https://github.com/cmderdev/cmder/issues/562)
|
||||
- git add --interactive fails [\#560](https://github.com/cmderdev/cmder/issues/560)
|
||||
- Tab names as directory names [\#559](https://github.com/cmderdev/cmder/issues/559)
|
||||
@ -283,14 +384,19 @@
|
||||
- can we use Vundle to manage Cmder's vim plugins? Need some setup? [\#535](https://github.com/cmderdev/cmder/issues/535)
|
||||
- Error on Windows 7 [\#534](https://github.com/cmderdev/cmder/issues/534)
|
||||
- api-ms-win-crt-runtime l1-109.dll is missing [\#531](https://github.com/cmderdev/cmder/issues/531)
|
||||
- Git checks for 'commits' every time a folder is changed? [\#529](https://github.com/cmderdev/cmder/issues/529)
|
||||
- Powershell tab title issue [\#528](https://github.com/cmderdev/cmder/issues/528)
|
||||
- conhost.exe keeps on crashing. [\#527](https://github.com/cmderdev/cmder/issues/527)
|
||||
- storage in userprofile \(instead of fixed config dir relative to the executable\) [\#526](https://github.com/cmderdev/cmder/issues/526)
|
||||
- Cmder crashes when AVG falsely flags it as a virus. [\#522](https://github.com/cmderdev/cmder/issues/522)
|
||||
- Incomplete git installation packaged with cmder v1.2 [\#521](https://github.com/cmderdev/cmder/issues/521)
|
||||
- api-ms-win-crt-runtime-l1-1-0.dll error [\#518](https://github.com/cmderdev/cmder/issues/518)
|
||||
- Can't set alias in 1.2 anymore [\#515](https://github.com/cmderdev/cmder/issues/515)
|
||||
- git not properly setup in v1.2 [\#513](https://github.com/cmderdev/cmder/issues/513)
|
||||
- Character persistence on cmder windows [\#506](https://github.com/cmderdev/cmder/issues/506)
|
||||
- Git: fatal: Unable to find remote helper for 'https' [\#503](https://github.com/cmderdev/cmder/issues/503)
|
||||
- api-ms-win-crt-runtime-l1-1-0.dll error [\#501](https://github.com/cmderdev/cmder/issues/501)
|
||||
- ncurses borders incorrectly displayed with ssh.exe [\#499](https://github.com/cmderdev/cmder/issues/499)
|
||||
- gitk not found due to changed PATH for msysgit [\#498](https://github.com/cmderdev/cmder/issues/498)
|
||||
- {hg} on every folder [\#494](https://github.com/cmderdev/cmder/issues/494)
|
||||
- Missing dll, APPCRT140.dll [\#485](https://github.com/cmderdev/cmder/issues/485)
|
||||
@ -321,6 +427,8 @@
|
||||
- Vim help not working in cmder [\#415](https://github.com/cmderdev/cmder/issues/415)
|
||||
- How to update bash [\#399](https://github.com/cmderdev/cmder/issues/399)
|
||||
- could you put the version number into the download file [\#396](https://github.com/cmderdev/cmder/issues/396)
|
||||
- git-p4.py \[Errno 2\] No such file or directory [\#392](https://github.com/cmderdev/cmder/issues/392)
|
||||
- ConEmu auto attach with Cmder aliases [\#388](https://github.com/cmderdev/cmder/issues/388)
|
||||
- Cmder unable to find .ssh folder [\#387](https://github.com/cmderdev/cmder/issues/387)
|
||||
- extra character appears at the beginning,when used the arrow keys\(up,down\) navigate through the history [\#384](https://github.com/cmderdev/cmder/issues/384)
|
||||
- create alias with multi word parameter [\#376](https://github.com/cmderdev/cmder/issues/376)
|
||||
@ -329,6 +437,7 @@
|
||||
- Is Cmder known to cause a false positive alert from some virus checking software? [\#371](https://github.com/cmderdev/cmder/issues/371)
|
||||
- How to disable the crosshair [\#369](https://github.com/cmderdev/cmder/issues/369)
|
||||
- Text reflow and line selection [\#359](https://github.com/cmderdev/cmder/issues/359)
|
||||
- Using the context menu doesn't open a new tab in Single Instance Mode [\#356](https://github.com/cmderdev/cmder/issues/356)
|
||||
- Git client side vulnerability [\#354](https://github.com/cmderdev/cmder/issues/354)
|
||||
- Ctrl+Shift+Arrow does not work as expected [\#345](https://github.com/cmderdev/cmder/issues/345)
|
||||
- i can not read windows path in cmder [\#342](https://github.com/cmderdev/cmder/issues/342)
|
||||
@ -344,19 +453,24 @@
|
||||
- Use system-wide Git [\#315](https://github.com/cmderdev/cmder/issues/315)
|
||||
- Version update information is broken \(not found\) [\#310](https://github.com/cmderdev/cmder/issues/310)
|
||||
- feature request vim-airline [\#306](https://github.com/cmderdev/cmder/issues/306)
|
||||
- Integrate PSReadLine [\#301](https://github.com/cmderdev/cmder/issues/301)
|
||||
- Full Screen [\#295](https://github.com/cmderdev/cmder/issues/295)
|
||||
- Configure Powershell to match CMD [\#294](https://github.com/cmderdev/cmder/issues/294)
|
||||
- Tab Close on CTRL-W [\#293](https://github.com/cmderdev/cmder/issues/293)
|
||||
- v1.1.4.1 /REGISTER ALL has broken icon [\#292](https://github.com/cmderdev/cmder/issues/292)
|
||||
- CD in root not working.. [\#289](https://github.com/cmderdev/cmder/issues/289)
|
||||
- How to enable 256 color? [\#288](https://github.com/cmderdev/cmder/issues/288)
|
||||
- Support comments in /config/aliases [\#286](https://github.com/cmderdev/cmder/issues/286)
|
||||
- Executing linux executables ./ doesn't work :S [\#285](https://github.com/cmderdev/cmder/issues/285)
|
||||
- Moved Documents folder, running "ls" gives "ls: My Documents: No such file or directory" [\#284](https://github.com/cmderdev/cmder/issues/284)
|
||||
- er [\#283](https://github.com/cmderdev/cmder/issues/283)
|
||||
- \[1.1.4.1\] Auto Completion not working [\#280](https://github.com/cmderdev/cmder/issues/280)
|
||||
- Git and lamb macro/symbols not expanded in Windows 10 preview [\#279](https://github.com/cmderdev/cmder/issues/279)
|
||||
- cmder vs cmd using non-blocking STDIN [\#269](https://github.com/cmderdev/cmder/issues/269)
|
||||
- Possible to blur translucent console? [\#267](https://github.com/cmderdev/cmder/issues/267)
|
||||
- Duplicate Root Fires Twice? [\#266](https://github.com/cmderdev/cmder/issues/266)
|
||||
- bug when using up and down key [\#264](https://github.com/cmderdev/cmder/issues/264)
|
||||
- ps scripts: support space in foldernames [\#261](https://github.com/cmderdev/cmder/issues/261)
|
||||
- utils [\#260](https://github.com/cmderdev/cmder/issues/260)
|
||||
- Character mix [\#259](https://github.com/cmderdev/cmder/issues/259)
|
||||
- strange issue no trace in google [\#257](https://github.com/cmderdev/cmder/issues/257)
|
||||
@ -366,47 +480,64 @@
|
||||
- "MSVCP120.dll is missing from your computer." [\#246](https://github.com/cmderdev/cmder/issues/246)
|
||||
- Cmder.exe not opening on Windows 7 SP 1 [\#240](https://github.com/cmderdev/cmder/issues/240)
|
||||
- Resize Tab Bar [\#236](https://github.com/cmderdev/cmder/issues/236)
|
||||
- Accented characters [\#234](https://github.com/cmderdev/cmder/issues/234)
|
||||
- Clicking in the window causes cmder to lock up [\#232](https://github.com/cmderdev/cmder/issues/232)
|
||||
- Add cmder to Windows context menu [\#231](https://github.com/cmderdev/cmder/issues/231)
|
||||
- libiconv-2.dll is missing [\#228](https://github.com/cmderdev/cmder/issues/228)
|
||||
- color scheme lost after CTRL+C on git status [\#227](https://github.com/cmderdev/cmder/issues/227)
|
||||
- Can't create process, ErrCode=0x000000C1, Description: %1 is not a valid Win32 application. [\#226](https://github.com/cmderdev/cmder/issues/226)
|
||||
- Cant get powerline fonts to work \(need utf-8?\) [\#225](https://github.com/cmderdev/cmder/issues/225)
|
||||
- Can't use aliases + && [\#224](https://github.com/cmderdev/cmder/issues/224)
|
||||
- {git}, {lamb} and strange new console options [\#223](https://github.com/cmderdev/cmder/issues/223)
|
||||
- CJK problem [\#222](https://github.com/cmderdev/cmder/issues/222)
|
||||
- Wire up 'title' to "rename tab" [\#221](https://github.com/cmderdev/cmder/issues/221)
|
||||
- system PATH overriding path set in init.bat [\#219](https://github.com/cmderdev/cmder/issues/219)
|
||||
- command autocompletion not working [\#218](https://github.com/cmderdev/cmder/issues/218)
|
||||
- Launcher opens new window separately [\#217](https://github.com/cmderdev/cmder/issues/217)
|
||||
- Theme not applied on Run command prompt here [\#216](https://github.com/cmderdev/cmder/issues/216)
|
||||
- Closes tab on Ctrl-C action [\#215](https://github.com/cmderdev/cmder/issues/215)
|
||||
- "Your alias cannot contain a space" [\#214](https://github.com/cmderdev/cmder/issues/214)
|
||||
- Problems with vim colors [\#213](https://github.com/cmderdev/cmder/issues/213)
|
||||
- lambda bug when i install clink [\#212](https://github.com/cmderdev/cmder/issues/212)
|
||||
- Did doskey break in the newest dev update? [\#207](https://github.com/cmderdev/cmder/issues/207)
|
||||
- Bug within the version of msysgit 1.8.5.2 [\#206](https://github.com/cmderdev/cmder/issues/206)
|
||||
- Blank line [\#205](https://github.com/cmderdev/cmder/issues/205)
|
||||
- F7 support for command history? [\#204](https://github.com/cmderdev/cmder/issues/204)
|
||||
- SSH Keys and push passphrase [\#202](https://github.com/cmderdev/cmder/issues/202)
|
||||
- git diff highlight colors on ssh [\#201](https://github.com/cmderdev/cmder/issues/201)
|
||||
- Cursor becomes fat, and i can't do anything [\#200](https://github.com/cmderdev/cmder/issues/200)
|
||||
- Open cmder as Tab from the file explorer [\#197](https://github.com/cmderdev/cmder/issues/197)
|
||||
- include zsh and tmux from cygwin [\#194](https://github.com/cmderdev/cmder/issues/194)
|
||||
- How to enable ssh-agent? [\#193](https://github.com/cmderdev/cmder/issues/193)
|
||||
- Git Not working [\#192](https://github.com/cmderdev/cmder/issues/192)
|
||||
- Open cmder in 64-bit on 64-bit windows [\#191](https://github.com/cmderdev/cmder/issues/191)
|
||||
- Output is very slow [\#188](https://github.com/cmderdev/cmder/issues/188)
|
||||
- Running cmder from the file explorer [\#187](https://github.com/cmderdev/cmder/issues/187)
|
||||
- Add hotkey to switch tabs [\#186](https://github.com/cmderdev/cmder/issues/186)
|
||||
- how to config installed msysgit [\#183](https://github.com/cmderdev/cmder/issues/183)
|
||||
- Windows 8.1 High-DPI Scaling [\#182](https://github.com/cmderdev/cmder/issues/182)
|
||||
- how to disabled command line error beep? [\#179](https://github.com/cmderdev/cmder/issues/179)
|
||||
- Child shells yields broken prompt [\#178](https://github.com/cmderdev/cmder/issues/178)
|
||||
- Crash at start on Windows 8.1 [\#176](https://github.com/cmderdev/cmder/issues/176)
|
||||
- Crashes with mintty.exe [\#175](https://github.com/cmderdev/cmder/issues/175)
|
||||
- Chinese characters looked terribly awful when monospace is checked [\#171](https://github.com/cmderdev/cmder/issues/171)
|
||||
- Copy and paste w/ mouse buttons [\#170](https://github.com/cmderdev/cmder/issues/170)
|
||||
- generation of Pipe symbol not possible [\#168](https://github.com/cmderdev/cmder/issues/168)
|
||||
- Lambda prompt bug [\#164](https://github.com/cmderdev/cmder/issues/164)
|
||||
- Can't select and copy text [\#163](https://github.com/cmderdev/cmder/issues/163)
|
||||
- not running in windows XP SP3 [\#161](https://github.com/cmderdev/cmder/issues/161)
|
||||
- german characters not displaying [\#160](https://github.com/cmderdev/cmder/issues/160)
|
||||
- Moving files with ../ [\#158](https://github.com/cmderdev/cmder/issues/158)
|
||||
- Transparent image. A Detail but I would like to get it to work [\#156](https://github.com/cmderdev/cmder/issues/156)
|
||||
- Taskbar icon after pinning the program reverts to default ConEmu icon. Systray icon is always ConEmu's. [\#154](https://github.com/cmderdev/cmder/issues/154)
|
||||
- A neat way to add sublime text seamlessly. [\#153](https://github.com/cmderdev/cmder/issues/153)
|
||||
- how to update cygwin shipped together within cmder [\#151](https://github.com/cmderdev/cmder/issues/151)
|
||||
- attach to GUI was requested, but there is no console processes! [\#150](https://github.com/cmderdev/cmder/issues/150)
|
||||
- The system cannot find the path specified. [\#148](https://github.com/cmderdev/cmder/issues/148)
|
||||
- Changes to PATH do not persist [\#146](https://github.com/cmderdev/cmder/issues/146)
|
||||
- git clone templates not found / Unable to find remote helper for 'https' [\#144](https://github.com/cmderdev/cmder/issues/144)
|
||||
- handle could not be opened / terminal is not fully functional [\#143](https://github.com/cmderdev/cmder/issues/143)
|
||||
- Create windows installer [\#142](https://github.com/cmderdev/cmder/issues/142)
|
||||
- Auto-create fast new tab shortcuts for additional tasks [\#140](https://github.com/cmderdev/cmder/issues/140)
|
||||
- ssh-agent, ssh-add, ssh all crash as soon as I open a PowerShell window [\#139](https://github.com/cmderdev/cmder/issues/139)
|
||||
- Problems using cmder as an SSH client [\#137](https://github.com/cmderdev/cmder/issues/137)
|
||||
@ -485,12 +616,45 @@
|
||||
|
||||
**Merged pull requests:**
|
||||
|
||||
- Development [\#1169](https://github.com/cmderdev/cmder/pull/1169) ([Stanzilla](https://github.com/Stanzilla))
|
||||
- Fix typo in init.bat [\#1157](https://github.com/cmderdev/cmder/pull/1157) ([winks](https://github.com/winks))
|
||||
- Bump clink-completions to 0.3.2 [\#1153](https://github.com/cmderdev/cmder/pull/1153) ([vladimir-kotikov](https://github.com/vladimir-kotikov))
|
||||
- Fixed 3 typos [\#1143](https://github.com/cmderdev/cmder/pull/1143) ([panzer-planet](https://github.com/panzer-planet))
|
||||
- Fix for slow startup under certain conditions \(\#1122\) [\#1131](https://github.com/cmderdev/cmder/pull/1131) ([lamarqua](https://github.com/lamarqua))
|
||||
- Development [\#1127](https://github.com/cmderdev/cmder/pull/1127) ([Stanzilla](https://github.com/Stanzilla))
|
||||
- fix error when path has a space [\#1126](https://github.com/cmderdev/cmder/pull/1126) ([gucong3000](https://github.com/gucong3000))
|
||||
- Added closing process in get\_git\_status [\#1101](https://github.com/cmderdev/cmder/pull/1101) ([alexandr-san4ez](https://github.com/alexandr-san4ez))
|
||||
- Update Readme.md [\#1082](https://github.com/cmderdev/cmder/pull/1082) ([nverno](https://github.com/nverno))
|
||||
- Fix bash login when $CMDER\_ROOT has spaces [\#1078](https://github.com/cmderdev/cmder/pull/1078) ([orionlee](https://github.com/orionlee))
|
||||
- Parse the original prompt for cwd and env names [\#1070](https://github.com/cmderdev/cmder/pull/1070) ([janschulz](https://github.com/janschulz))
|
||||
- Added kill ssh-agent to build.ps1 [\#1042](https://github.com/cmderdev/cmder/pull/1042) ([daxgames](https://github.com/daxgames))
|
||||
- Development [\#1037](https://github.com/cmderdev/cmder/pull/1037) ([Stanzilla](https://github.com/Stanzilla))
|
||||
- Minor update in README.md [\#1016](https://github.com/cmderdev/cmder/pull/1016) ([Mansuro](https://github.com/Mansuro))
|
||||
- Added rainbow icons [\#1014](https://github.com/cmderdev/cmder/pull/1014) ([JoshuaKGoldberg](https://github.com/JoshuaKGoldberg))
|
||||
- Fix git branch colouring [\#1011](https://github.com/cmderdev/cmder/pull/1011) ([MoFo88](https://github.com/MoFo88))
|
||||
- Bump clink-completions to 0.3.1 [\#992](https://github.com/cmderdev/cmder/pull/992) ([vladimir-kotikov](https://github.com/vladimir-kotikov))
|
||||
- Fix git branch name never shown as dirty [\#974](https://github.com/cmderdev/cmder/pull/974) ([janschulz](https://github.com/janschulz))
|
||||
- Disable history switching behavior of ctrl+tab. Sequential switching. [\#963](https://github.com/cmderdev/cmder/pull/963) ([Jackbennett](https://github.com/Jackbennett))
|
||||
- Register cmder in the context menu from powershell [\#962](https://github.com/cmderdev/cmder/pull/962) ([Jackbennett](https://github.com/Jackbennett))
|
||||
- cmd: change the prompt in lua [\#961](https://github.com/cmderdev/cmder/pull/961) ([janschulz](https://github.com/janschulz))
|
||||
- Custom prompt hooks protected from later overwriting [\#952](https://github.com/cmderdev/cmder/pull/952) ([Jackbennett](https://github.com/Jackbennett))
|
||||
- Update clink-completions to 0.3.0 [\#946](https://github.com/cmderdev/cmder/pull/946) ([vladimir-kotikov](https://github.com/vladimir-kotikov))
|
||||
- Added :verbose-output subroutine, made aliases update more functional [\#945](https://github.com/cmderdev/cmder/pull/945) ([daxgames](https://github.com/daxgames))
|
||||
- fixed git not working in cmder cmd session and added some comments [\#943](https://github.com/cmderdev/cmder/pull/943) ([daxgames](https://github.com/daxgames))
|
||||
- More variable quoting in init.bat [\#941](https://github.com/cmderdev/cmder/pull/941) ([janschulz](https://github.com/janschulz))
|
||||
- Add quotes around all variables [\#940](https://github.com/cmderdev/cmder/pull/940) ([janschulz](https://github.com/janschulz))
|
||||
- Fix missing "\" when building dirpath to psmodules [\#916](https://github.com/cmderdev/cmder/pull/916) ([liftir](https://github.com/liftir))
|
||||
- upgraded git to 2.8.1 [\#911](https://github.com/cmderdev/cmder/pull/911) ([daxgames](https://github.com/daxgames))
|
||||
- Added proxy support [\#909](https://github.com/cmderdev/cmder/pull/909) ([daxgames](https://github.com/daxgames))
|
||||
- fixed - not running user-aliases.cmd if aliases variable is overridde… [\#892](https://github.com/cmderdev/cmder/pull/892) ([daxgames](https://github.com/daxgames))
|
||||
- Merge latest Development [\#890](https://github.com/cmderdev/cmder/pull/890) ([MartiUK](https://github.com/MartiUK))
|
||||
- Process profile.d scripts before adding user aliases [\#874](https://github.com/cmderdev/cmder/pull/874) ([daxgames](https://github.com/daxgames))
|
||||
- Prefer use of first line @echo off vs. @ per line to turn off echo pe… [\#873](https://github.com/cmderdev/cmder/pull/873) ([daxgames](https://github.com/daxgames))
|
||||
- silenced bash profile.d when profile.d is empty [\#872](https://github.com/cmderdev/cmder/pull/872) ([daxgames](https://github.com/daxgames))
|
||||
- Various fixes for profile.d support [\#867](https://github.com/cmderdev/cmder/pull/867) ([daxgames](https://github.com/daxgames))
|
||||
- Revert "Set CMDER\_START to homeprofile" [\#866](https://github.com/cmderdev/cmder/pull/866) ([janschulz](https://github.com/janschulz))
|
||||
- better git path handling [\#865](https://github.com/cmderdev/cmder/pull/865) ([janschulz](https://github.com/janschulz))
|
||||
- Enhanced alias.bat to allow file storage path [\#862](https://github.com/cmderdev/cmder/pull/862) ([daxgames](https://github.com/daxgames))
|
||||
- Fix cmd plugin.d [\#860](https://github.com/cmderdev/cmder/pull/860) ([daxgames](https://github.com/daxgames))
|
||||
- Added profile.d like support for all supported shells [\#855](https://github.com/cmderdev/cmder/pull/855) ([daxgames](https://github.com/daxgames))
|
||||
- Typo in Readme.md [\#852](https://github.com/cmderdev/cmder/pull/852) ([janschulz](https://github.com/janschulz))
|
||||
@ -637,4 +801,4 @@
|
||||
|
||||
|
||||
|
||||
\* *This Change Log was automatically generated by [github_changelog_generator](https://github.com/skywinder/Github-Changelog-Generator)*
|
||||
\* *This Change Log was automatically generated by [github_changelog_generator](https://github.com/skywinder/Github-Changelog-Generator)*
|
||||
|
@ -1,7 +1,7 @@
|
||||
@echo off
|
||||
SET CMDER_ROOT=%~dp0
|
||||
|
||||
:: Remove trailing '\'
|
||||
:: Remove Trailing '\'
|
||||
@if "%CMDER_ROOT:~-1%" == "\" SET CMDER_ROOT=%CMDER_ROOT:~0,-1%
|
||||
|
||||
if exist "%~1" (
|
||||
|
21
LICENSE
Normal file
21
LICENSE
Normal file
@ -0,0 +1,21 @@
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2017 Samuel Vasko
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
185
README.md
185
README.md
@ -1,6 +1,6 @@
|
||||
# Cmder
|
||||
|
||||
[](https://gitter.im/cmderdev/cmder?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) [](https://ci.appveyor.com/project/MartiUK/cmder)
|
||||
[](https://gitter.im/cmderdev/cmder?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) [](https://ci.appveyor.com/project/MartiUK/cmder)
|
||||
|
||||
Cmder is a **software package** created out of pure frustration over absence of usable console emulator on Windows. It is based on [ConEmu](https://conemu.github.io/) with *major* config overhaul, comes with a Monokai color scheme, amazing [clink](https://github.com/mridgers/clink) (further enhanced by [clink-completions](https://github.com/vladimir-kotikov/clink-completions)) and a custom prompt layout.
|
||||
|
||||
@ -11,13 +11,42 @@ Cmder is a **software package** created out of pure frustration over absence of
|
||||
The main advantage of Cmder is portability. It is designed to be totally self-contained with no external dependencies, which makes it great for **USB Sticks** or **cloud storage**. So you can carry your console, aliases and binaries (like wget, curl and git) with you anywhere.
|
||||
|
||||
## Installation
|
||||
### Single User Portable Config
|
||||
|
||||
1. Download the [latest release](https://github.com/cmderdev/cmder/releases/)
|
||||
2. Extract the archive
|
||||
3. (optional) Place your own executable files into the `bin` folder to be injected into your PATH
|
||||
2. Extract the archive. *Note: This path should not be `C:\Program Files` or anywhere else that would require Administrator access for modifying configuration files*
|
||||
3. (optional) Place your own executable files into the `%cmder_root%\bin` folder to be injected into your PATH.
|
||||
4. Run Cmder.exe
|
||||
|
||||
## Integration
|
||||
### Shared Cmder install with Non-Portable Individual User Config
|
||||
1. Download the [latest release](https://github.com/cmderdev/cmder/releases/)
|
||||
2. Extract the archive to a shared location.
|
||||
3. (optional) Place your own executable files into the `%cmder_root%\bin` folder to be injected into your PATH.
|
||||
4. (optional) Create `%userprofile%\cmder_config\bin` folder to be injected into individual users PATH. Default is to auto create this on first run.
|
||||
5. (optional) Place your own executable files into the `%userprofile%\cmder_config\bin` folder to be injected into your PATH.
|
||||
6. Run Cmder.exe with "/C" command line argument. Example: `cmder.exe /C %userprofile%\cmder_config`
|
||||
* This will create the following directory structure if it is missing.
|
||||
|
||||
```
|
||||
c:\users\[username]\cmder_config
|
||||
├───bin
|
||||
└───config
|
||||
└───profile.d
|
||||
```
|
||||
|
||||
* Both the shared install and the individual user config locations can contain a full set of init and profile.d scripts enabling shared config with user overrides. See below.
|
||||
|
||||
## Cmder.exe Command Line Arguments
|
||||
|
||||
|
||||
| Argument | Description |
|
||||
| ------------------- | ----------------------------------------------------------------------- |
|
||||
| /C [user_root_path] | Individual user Cmder root folder. Example: %userprofile%\cmder_config |
|
||||
| /SINGLE | Start Cmder is single mode. |
|
||||
| /START [start_path] | Folder path to start in. |
|
||||
| /TASK [task_name] | Task to start after launch. |
|
||||
|
||||
## Context Menu Integration
|
||||
|
||||
So you've experimented with Cmder a little and want to give it a shot in a more permanent home;
|
||||
|
||||
@ -38,6 +67,9 @@ In a file explorer window right click in or on a directory to see "Cmder Here" i
|
||||
* <kbd>Ctrl</kbd> + <kbd>W</kbd> : Close tab
|
||||
* <kbd>Ctrl</kbd> + <kbd>D</kbd> : Close tab (if pressed on empty command)
|
||||
* <kbd>Shift</kbd> + <kbd>Alt</kbd> + <kbd>#Number</kbd> : Fast new tab: <kbd>1</kbd> - CMD, <kbd>2</kbd> - PowerShell
|
||||
* <kbd>Ctrl</kbd> + <kbd>Tab</kbd> : Switch to next tab
|
||||
* <kbd>Ctrl</kbd> + <kbd>Shift</kbd> + <kbd>Tab</kbd> : Switch to previous tab
|
||||
* <kbd>Ctrl</kbd> + <kbd>#Number</kbd> : Switch to tab #Number
|
||||
* <kbd>Alt</kbd> + <kbd>Enter</kbd>: Fullscreen
|
||||
|
||||
### Shell
|
||||
@ -54,16 +86,16 @@ In a file explorer window right click in or on a directory to see "Cmder Here" i
|
||||
### Access to multiple shells in one window using tabs
|
||||
You can open multiple tabs each containing one of the following shells:
|
||||
|
||||
|Task|Shell|Description|
|
||||
|----|-----|-----------|
|
||||
|Cmder|cmd.exe|Windows 'cmd.exe' shell enhanced with Git, Git aware prompt, Clink(GNU Readline), and Aliases.|
|
||||
|Cmder as Admin|cmd.exe|Administrative Windows 'cmd.exe' Cmder shell.|
|
||||
|PowerShell|powershell.exe|Windows PowerShell enhanced with Git and Git aware prompt .|
|
||||
|PowerShell as Admin|powershell.exe|Administrative Windows 'powerhell.exe' Cmder shell.|
|
||||
|Bash|bash.exe|Unix/Linux like bash shell running on Windows.|
|
||||
|Bash as Admin|bash.exe|Administrative Unix/Linux like bash shell running on Windows.|
|
||||
|Mintty|bash.exe|Unix/Linux like bash shell running on Windows. See below for Mintty configuration differences|
|
||||
|Mintty as Admin|bash.exe|Administrative Unix/Linux like bash shell running on Windows. See below for Mintty configuration differences|
|
||||
| Task | Shell | Description |
|
||||
| ---- | ----- | ----------- |
|
||||
| Cmder | cmd.exe | Windows 'cmd.exe' shell enhanced with Git, Git aware prompt, Clink(GNU Readline), and Aliases. |
|
||||
| Cmder as Admin | cmd.exe | Administrative Windows 'cmd.exe' Cmder shell. |
|
||||
| PowerShell | powershell.exe | Windows PowerShell enhanced with Git and Git aware prompt . |
|
||||
| PowerShell as Admin | powershell.exe | Administrative Windows 'powershell.exe' Cmder shell. |
|
||||
| Bash | bash.exe | Unix/Linux like bash shell running on Windows. |
|
||||
| Bash as Admin | bash.exe | Administrative Unix/Linux like bash shell running on Windows. |
|
||||
| Mintty | bash.exe | Unix/Linux like bash shell running on Windows. See below for Mintty configuration differences |
|
||||
| Mintty as Admin | bash.exe | Administrative Unix/Linux like bash shell running on Windows. See below for Mintty configuration differences |
|
||||
|
||||
Cmder, PowerShell, and Bash tabs all run on top of the Windows Console API and work as you might expect in Cmder with access to use ConEmu's color schemes, key bindings and other settings defined in the ConEmu Settings dialog.
|
||||
|
||||
@ -82,25 +114,51 @@ cd mintty-colors-solarized/
|
||||
echo source \$CMDER_ROOT/vendor/mintty-colors-solarized/mintty-solarized-dark.sh>>$CMDER_ROOT/config/user-profile.sh
|
||||
```
|
||||
|
||||
### Cmder Portable Shell User Config
|
||||
User specific configuration is possible using the cmder specific shell config files. Edit the below files to add your own configuration:
|
||||
### Changing Cmder Default 'cmd.exe' Shell Startup Behaviour Using Task Arguments
|
||||
|
||||
|Shell|Cmder Portable User Config|
|
||||
| ------------- |:-------------:|
|
||||
|Cmder|%CMDER_ROOT%\config\user-profile.cmd|
|
||||
|PowerShell|$ENV:CMDER_ROOT\config\user-profile.ps1|
|
||||
|Bash/Mintty|$CMDER_ROOT/config/user-profile.sh|
|
||||
1. Press <kbd>Win</kbd> + <kbd>Alt</kbd> + <kbd>T</kbd>
|
||||
1. Click either:
|
||||
* `1. {cmd::Cmder as Admin}`
|
||||
* `2. {cmd::Cmder}`
|
||||
1. Add command line argumentswhere specified below:
|
||||
|
||||
Note: Bash and Mintty sessions will also source the '$HOME/.bashrc' file it it exists after it sources '$CMDER_ROOT/config/user-profile.sh'.
|
||||
*Note: Pay attention to the quotes!*
|
||||
|
||||
```
|
||||
cmd /s /k ""%ConEmuDir%\..\init.bat" [ADD ARGS HERE]"
|
||||
```
|
||||
|
||||
##### Command Line Arguments for `init.bat`
|
||||
|
||||
| Argument | Description | Default |
|
||||
| ----------------------------- | ---------------------------------------------------------------------------------------------- | ------------------------------------- |
|
||||
| /c [user cmder root] | Enables user bin and config folders for 'Cmder as admin' sessions due to non-shared environment. | not set |
|
||||
| /d | Enables debug output. | not set |
|
||||
| /git_install_root [file path] | User specified Git installation root path. | '%CMDER_ROOT%\vendor\Git-for-Windows' |
|
||||
| /home [home folder] | User specified folder path to set `%HOME%` environment variable. | '%userprofile%' |
|
||||
| /max_depth [1-5] | Define max recurse depth when adding to the path for `%cmder_root%\bin` and `%cmder_user_bin%` | 1 |
|
||||
| /svn_ssh [path to ssh.exe] | Define %SVN_SSH% so we can use git svn with ssh svn repositories. | '%GIT_INSTALL_ROOT%\bin\ssh.exe' |
|
||||
| /user_aliases [file path] | File path pointing to user aliases. | '%CMDER_ROOT%\config\user-liases.cmd' |
|
||||
| /v | Enables verbose output. | not set |
|
||||
|
||||
### Cmder Shell User Config
|
||||
Single user portable configuration is possible using the cmder specific shell config files. Edit the below files to add your own configuration:
|
||||
|
||||
| Shell | Cmder Portable User Config |
|
||||
| ------------- | ----------------------------------------- |
|
||||
| Cmder | %CMDER_ROOT%\\config\\user-profile.cmd |
|
||||
| PowerShell | $ENV:CMDER_ROOT\\config\\user-profile.ps1 |
|
||||
| Bash/Mintty | $CMDER_ROOT/config/user-profile.sh |
|
||||
|
||||
Note: Bash and Mintty sessions will also source the '$HOME/.bashrc' file if it exists after it sources '$CMDER_ROOT/config/user-profile.sh'.
|
||||
|
||||
### Linux like 'profile.d' support for all supported shell types.
|
||||
You can write *.cmd|*.bat, *.ps1, and *.sh scripts and just drop them in the %CMDER_ROOT%\config\profile.d folder to add startup config to Cmder.
|
||||
|
||||
|Shell|Cmder 'Profile.d' Scripts|
|
||||
| ------------- |:-------------:|
|
||||
|Cmder|%CMDER_ROOT%\config\profile.d\\*.bat and *.cmd|
|
||||
|PowerShell|$ENV:CMDER_ROOT\config\profile.d\\*.ps1|
|
||||
|Bash/Mintty|$CMDER_ROOT/config/profile.d/*.sh|
|
||||
| Shell | Cmder 'Profile.d' Scripts |
|
||||
| ------------- | --------------------------------------------------|
|
||||
| Cmder | %CMDER_ROOT%\\config\\profile.d\\\*.bat and *.cmd |
|
||||
| PowerShell | $ENV:CMDER_ROOT\\config\\profile.d\\\*.ps1 |
|
||||
| Bash/Mintty | $CMDER_ROOT/config/profile.d/*.sh |
|
||||
|
||||
|
||||
### Aliases
|
||||
@ -109,29 +167,58 @@ You can define simple aliases for `cmd.exe` sessions with a command like `alias
|
||||
|
||||
Cmd.exe aliases can also be more complex. See: [DOSKEY.EXE documentation](http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/doskey.mspx?mfr=true) for additional details on complex aliases/macros for 'cmd.exe'
|
||||
|
||||
Aliases defined using the `alias.bat` command will automatically be saved in the `%CMDER_ROOT%\config\aliases` file
|
||||
Aliases defined using the `alias.bat` command will automatically be saved in the `%CMDER_ROOT%\config\user-aliases.cmd` file
|
||||
|
||||
To make an alias and/or any other profile settings permanent add it to one of the following:
|
||||
|
||||
Note: These are loaded in this order by '$CMDER_ROOT/vendor/init.bat'. Anyhing stored in '%CMDER_ROOT%' will be a portable setting and will follow cmder to another machine.
|
||||
|
||||
* '%CMDER_ROOT%\\config\\profile.d\\\*.cmd and \*.bat'
|
||||
* '%CMDER_ROOT%\\config\\user-aliases.cmd'
|
||||
* '%CMDER_ROOT%\\config\\user-profile.cmd'
|
||||
|
||||
#### Bash.exe|Mintty.exe Aliases
|
||||
Bash shells support simple and complex aliases with optional parameters natively so they work a little different. Typing `alias name=command` will create an alias only for the current running session. To make an alias permanent add it to either your `$CMDER_ROOT/config/user-profile.sh` or your `$HOME/.bashrc`.
|
||||
Bash shells support simple and complex aliases with optional parameters natively so they work a little different. Typing `alias name=command` will create an alias only for the current running session.
|
||||
|
||||
If you add bash aliases to `$CMDER_ROOT/config/user-profile.sh` they will portable and follow your Cmder folder if you copy it to another machine. `$HOME/.bashrc` defined aliases are not portable.
|
||||
To make an alias and/or any other profile settings permanent add it to one of the following:
|
||||
|
||||
Note: These are loaded in this order by '$CMDER_ROOT/vendor/git-for-windows/etc/profile.d/cmder.sh'. Anyhing stored in '$CMDER_ROOT' will be a portable setting and will follow cmder to another machine.
|
||||
|
||||
* '$CMDER_ROOT/config/profile.d/*.sh'
|
||||
* '$CMDER_ROOT/config/user-profile.sh'
|
||||
* '$HOME/.bashrc'
|
||||
|
||||
If you add bash aliases to `$CMDER_ROOT/config/user-profile.sh` they will be portable and follow your Cmder folder if you copy it to another machine. `$HOME/.bashrc` defined aliases are not portable.
|
||||
|
||||
#### PowerShell.exe Aliases
|
||||
PowerShell has native simple alias support, for example `[new-alias | set-alias] alias command`, so complex aliases with optional parameters are not supported in PowerShell sessions. Type `get-help [new-alias|set-alias] -full` for help on PowerShell aliases.
|
||||
|
||||
To make an alias and/or any other profile settings permanent add it to one of the following:
|
||||
|
||||
Note: These are loaded in this order by '$ENV:CMDER_ROOT\\vendor\\user-profile.ps1'. Anyhing stored in '$ENV:CMDER_ROOT' will be a portable setting and will follow cmder to another machine.
|
||||
|
||||
* '$ENV:CMDER_ROOT\\config\\profile.d\\\*.ps1'
|
||||
* '$ENV:CMDER_ROOT\\config\\user-profile.ps1'
|
||||
|
||||
### SSH Agent
|
||||
|
||||
To start SSH agent simply call `start-ssh-agent`, which is in the `vendor/git-for-windows/cmd` folder.
|
||||
To start the vendored SSH agent simply call `start-ssh-agent`, which is in the `vendor/git-for-windows/cmd` folder.
|
||||
|
||||
If you want to run SSH agent on startup, include the line `@call "%GIT_INSTALL_ROOT%/cmd/start-ssh-agent.cmd"` in `%CMDER_ROOT%/config/user-profile.cmd` (usually just uncomment it).
|
||||
|
||||
### Vendored Git
|
||||
|
||||
Cmder is by default shipped with a vendored Git installation. On each instance of launching Cmder, an attempt is made to locate any other user provided Git binaries. Upon finding a `git.exe` binary, Cmder further compares its version against the vendored one _by executing_ it. The vendored `git.exe` binary is _only_ used when it is more recent than the user-installed one.
|
||||
|
||||
You may use your favorite version of Git by including its path in the `%PATH%` enviroment variable. Moreover, the **Mini** edition of Cmder (found on the [downloads page](https://github.com/cmderdev/cmder/releases)) excludes any vendored Git binaries.
|
||||
|
||||
### Using external Cygwin/Babun, MSys2, or Git for Windows SDK with Cmder.
|
||||
|
||||
1. Setup a new task by pressing '<kbd>Win</kbd> +<kbd>Alt</kbd> + <kbd>T</kbd>'.
|
||||
1. Click the '+' button to add a task.
|
||||
1. Name the new task in the top text box.
|
||||
1. Provide task parameters, this is optional.
|
||||
1. Add ```cmd /c "[path_to_external_env]\bin\bash --login -i" -new_console:d:%USERPROFILE%``` to the `Commands` text box.
|
||||
1. Add ```cmd /c "[path_to_external_env]\bin\bash --login -i" -new_console``` to the `Commands` text box.
|
||||
|
||||
Recommended Optional Steps:
|
||||
|
||||
@ -150,11 +237,39 @@ Uncomment and edit the below line in the script to use Cmder config even when la
|
||||
# CMDER_ROOT=${USERPROFILE}/cmder # This is not required if launched from Cmder.
|
||||
```
|
||||
|
||||
## Current development branch
|
||||
## Upgrading
|
||||
|
||||
The process of upgrading Cmder depends on the version/build you are currently running
|
||||
|
||||
If you have a `[cmder_root]/config/user-conemu.xml`, you are running a newer version of Cmder, follow the below process:
|
||||
|
||||
1. Exit all Cmder sessions and relaunch `[cmder_root]/cmder.exe`, this backs up your existing `[cmder_root]/vendor/conemu-maximus5/conemu.xml` to `[cmder_root]/config/user-conemu.xml`.
|
||||
|
||||
* The `[cmder_root]/config/user-conemu.xml` contains any custom settings you have made using the 'Setup Tasks' settings dialog.
|
||||
|
||||
2. Exit all Cmder sessions and backup any files you have manually edited under `[cmder_root]/vendor`.
|
||||
|
||||
* Editing files under `[cmder_root]/vendor` is not recommended since you will need to re-apply these changes after any upgrade. All user customizations should go in '[cmder_root]/config' folder.
|
||||
|
||||
3. Delete the `[cmder_root]/vendor` folder.
|
||||
4. Extract the new `cmder.zip` or `cmder_mini.zip` into `[cmder_root]/` overwriting all files when prompted.
|
||||
|
||||
If you do not have a `[cmder_root]/config/user-conemu.xml`, you are running an older version of cmder, follow the below process:
|
||||
|
||||
1. Exit all Cmder sessions and backup `[cmder_root]/vendor/conemu-maximus5/conemu.xml` to `[cmder_root]/config/user-conemu.xml`.
|
||||
|
||||
2. Backup any files you have manually edited under `[cmder_root]/vendor`.
|
||||
|
||||
* Editing files under `[cmder_root]/vendor` is not recommended since you will need to re-apply these changes after any upgrade. All user customizations should go in '[cmder_root]/config' folder.
|
||||
|
||||
3. Delete the `[cmder_root]/vendor` folder.
|
||||
4. Extract the new `cmder.zip` or `cmder_mini.zip` into `[cmder_root]/` overwriting all files when prompted.
|
||||
|
||||
## Current development builds
|
||||
|
||||
You can download builds of the current development branch by going to AppVeyor via the following link:
|
||||
|
||||
[](https://ci.appveyor.com/project/MartiUK/cmder/branch/development/artifacts)
|
||||
[](https://ci.appveyor.com/project/MartiUK/cmder/branch/master/artifacts)
|
||||
|
||||
## License
|
||||
|
||||
|
@ -15,7 +15,7 @@ branches:
|
||||
#---------------------------------#
|
||||
|
||||
# Operating system (build VM template)
|
||||
os: Windows Server 2012 R2
|
||||
os: Visual Studio 2017
|
||||
|
||||
#---------------------------------#
|
||||
# build configuration #
|
||||
|
@ -1,8 +1,8 @@
|
||||
@echo off
|
||||
|
||||
|
||||
if "%aliases%" == "" (
|
||||
set ALIASES=%CMDER_ROOT%\config\user-aliases.cmd
|
||||
if "%ALIASES%" == "" (
|
||||
set ALIASES="%CMDER_ROOT%\config\user-aliases.cmd"
|
||||
)
|
||||
|
||||
setlocal enabledelayedexpansion
|
||||
@ -21,7 +21,7 @@ goto parseargument
|
||||
set currentarg=%~1
|
||||
|
||||
if /i "%currentarg%" equ "/f" (
|
||||
set aliases=%~2
|
||||
set ALIASES=%~2
|
||||
shift
|
||||
goto :do_shift
|
||||
) else if /i "%currentarg%" == "/reload" (
|
||||
@ -50,21 +50,21 @@ goto parseargument
|
||||
)
|
||||
rem #endregion parseargument
|
||||
|
||||
if "%aliases%" neq "%CMDER_ROOT%\config\user-aliases.cmd" (
|
||||
set _x=!_x:/f %aliases% =!
|
||||
if "%ALIASES%" neq "%CMDER_ROOT%\config\user-aliases.cmd" (
|
||||
set _x=!_x:/f "%ALIASES%" =!
|
||||
|
||||
if not exist "%aliases%" (
|
||||
echo ;= @echo off>"%aliases%"
|
||||
echo ;= rem Call DOSKEY and use this file as the macrofile>>"%aliases%"
|
||||
echo ;= %%SystemRoot%%\system32\doskey /listsize=1000 /macrofile=%%0%%>>"%aliases%"
|
||||
echo ;= rem In batch mode, jump to the end of the file>>"%aliases%"
|
||||
echo ;= goto:eof>>"%aliases%"
|
||||
echo ;= Add aliases below here>>"%aliases%"
|
||||
if not exist "%ALIASES%" (
|
||||
echo ;= @echo off>"%ALIASES%"
|
||||
echo ;= rem Call DOSKEY and use this file as the macrofile>>"%ALIASES%"
|
||||
echo ;= %%SystemRoot%%\system32\doskey /listsize=1000 /macrofile=%%0%%>>"%ALIASES%"
|
||||
echo ;= rem In batch mode, jump to the end of the file>>"%ALIASES%"
|
||||
echo ;= goto:eof>>"%ALIASES%"
|
||||
echo ;= Add aliases below here>>"%ALIASES%"
|
||||
)
|
||||
)
|
||||
|
||||
:: validate alias
|
||||
for /f "delims== tokens=1,2 usebackq" %%G in (`echo "%_x%"`) do (
|
||||
for /f "delims== tokens=1,* usebackq" %%G in (`echo "%_x%"`) do (
|
||||
set alias_name=%%G
|
||||
set alias_value=%%H
|
||||
)
|
||||
@ -96,7 +96,7 @@ set del_alias=%~1
|
||||
findstr /b /v /i "%del_alias%=" "%ALIASES%" >> "%ALIASES%.tmp"
|
||||
type "%ALIASES%".tmp > "%ALIASES%" & @del /f /q "%ALIASES%.tmp"
|
||||
doskey %del_alias%=
|
||||
doskey /macrofile=%ALIASES%
|
||||
doskey /macrofile="%ALIASES%"
|
||||
goto:eof
|
||||
|
||||
:p_reload
|
||||
@ -110,11 +110,11 @@ exit /b
|
||||
|
||||
:p_help
|
||||
echo.Usage:
|
||||
echo.
|
||||
echo.
|
||||
echo. alias [options] [alias=full command]
|
||||
echo.
|
||||
echo.
|
||||
echo.Options:
|
||||
echo.
|
||||
echo.
|
||||
echo. /d [alias] Delete an [alias].
|
||||
echo. /f [macrofile] Path to the [macrofile] you want to store the new alias in.
|
||||
echo. Default: %cmder_root%\config\user-aliases.cmd
|
||||
|
@ -1,7 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<key name="Software">
|
||||
<key name="ConEmu">
|
||||
<key name=".Vanilla" modified="2015-11-24 14:43:35" build="151119">
|
||||
<key name=".Vanilla" modified="2018-02-22 06:02:11" build="171109">
|
||||
<value name="ColorTable00" type="dword" data="00222827"/>
|
||||
<value name="ColorTable01" type="dword" data="009e5401"/>
|
||||
<value name="ColorTable02" type="dword" data="0004aa74"/>
|
||||
@ -101,12 +101,12 @@
|
||||
<value name="FontName" type="string" data="Consolas"/>
|
||||
<value name="FontName2" type="string" data="Lucida Console"/>
|
||||
<value name="FontAutoSize" type="hex" data="00"/>
|
||||
<value name="FontSize" type="dword" data="00000010"/>
|
||||
<value name="FontSizeX" type="dword" data="00000000"/>
|
||||
<value name="FontSizeX2" type="dword" data="00000000"/>
|
||||
<value name="FontSizeX3" type="dword" data="00000000"/>
|
||||
<value name="FontSize" type="ulong" data="16"/>
|
||||
<value name="FontSizeX" type="ulong" data="0"/>
|
||||
<value name="FontSizeX2" type="ulong" data="0"/>
|
||||
<value name="FontSizeX3" type="ulong" data="0"/>
|
||||
<value name="FontCharSet" type="hex" data="00"/>
|
||||
<value name="Anti-aliasing" type="dword" data="00000006"/>
|
||||
<value name="Anti-aliasing" type="ulong" data="6"/>
|
||||
<value name="FontBold" type="hex" data="00"/>
|
||||
<value name="FontItalic" type="hex" data="00"/>
|
||||
<value name="Monospace" type="hex" data="01"/>
|
||||
@ -123,29 +123,29 @@
|
||||
<value name="ColorKeyTransparent" type="hex" data="00"/>
|
||||
<value name="ColorKeyValue" type="dword" data="00010101"/>
|
||||
<value name="UseCurrentSizePos" type="hex" data="01"/>
|
||||
<value name="WindowMode" type="dword" data="0000051f"/>
|
||||
<value name="WindowMode" type="dword" data="00000520"/>
|
||||
<value name="ConWnd Width" type="dword" data="00000078"/>
|
||||
<value name="ConWnd Height" type="dword" data="0000001e"/>
|
||||
<value name="Cascaded" type="hex" data="01"/>
|
||||
<value name="ConWnd X" type="dword" data="000001f4"/>
|
||||
<value name="ConWnd Y" type="dword" data="000001f4"/>
|
||||
<value name="16bit Height" type="dword" data="00000000"/>
|
||||
<value name="ConWnd X" type="long" data="500"/>
|
||||
<value name="ConWnd Y" type="long" data="500"/>
|
||||
<value name="16bit Height" type="ulong" data="0"/>
|
||||
<value name="AutoSaveSizePos" type="hex" data="01"/>
|
||||
<value name="IntegralSize" type="hex" data="00"/>
|
||||
<value name="QuakeStyle" type="hex" data="00"/>
|
||||
<value name="QuakeAnimation" type="dword" data="0000012c"/>
|
||||
<value name="QuakeAnimation" type="ulong" data="300"/>
|
||||
<value name="HideCaption" type="hex" data="00"/>
|
||||
<value name="HideChildCaption" type="hex" data="01"/>
|
||||
<value name="FocusInChildWindows" type="hex" data="01"/>
|
||||
<value name="HideCaptionAlways" type="hex" data="00"/>
|
||||
<value name="HideCaptionAlwaysFrame" type="hex" data="00"/>
|
||||
<value name="HideCaptionAlwaysDelay" type="dword" data="000007d0"/>
|
||||
<value name="HideCaptionAlwaysDisappear" type="dword" data="000007d0"/>
|
||||
<value name="HideCaptionAlwaysDelay" type="ulong" data="2000"/>
|
||||
<value name="HideCaptionAlwaysDisappear" type="ulong" data="2000"/>
|
||||
<value name="DownShowHiddenMessage" type="hex" data="00"/>
|
||||
<value name="ConsoleFontName" type="string" data="Lucida Console"/>
|
||||
<value name="ConsoleFontWidth" type="dword" data="00000003"/>
|
||||
<value name="ConsoleFontHeight" type="dword" data="00000005"/>
|
||||
<value name="DefaultBufferHeight" type="dword" data="000003e8"/>
|
||||
<value name="ConsoleFontWidth" type="long" data="3"/>
|
||||
<value name="ConsoleFontHeight" type="long" data="5"/>
|
||||
<value name="DefaultBufferHeight" type="long" data="1000"/>
|
||||
<value name="AutoBufferHeight" type="hex" data="01"/>
|
||||
<value name="CmdOutputCP" type="dword" data="00000000"/>
|
||||
<value name="ComSpec.Type" type="hex" data="00"/>
|
||||
@ -153,7 +153,7 @@
|
||||
<value name="ComSpec.UpdateEnv" type="hex" data="00"/>
|
||||
<value name="ComSpec.EnvAddPath" type="hex" data="01"/>
|
||||
<value name="ComSpec.EnvAddExePath" type="hex" data="01"/>
|
||||
<value name="ComSpec.UncPaths" type="hex" data="00"/>
|
||||
<value name="ComSpec.UncPaths" type="hex" data="01"/>
|
||||
<value name="ComSpec.Path" type="string" data=""/>
|
||||
<value name="ConsoleTextSelection" type="hex" data="01"/>
|
||||
<value name="CTS.AutoCopy" type="hex" data="01"/>
|
||||
@ -167,7 +167,7 @@
|
||||
<value name="CTS.MBtnAction" type="hex" data="00"/>
|
||||
<value name="CTS.ColorIndex" type="hex" data="e0"/>
|
||||
<value name="ClipboardConfirmEnter" type="hex" data="01"/>
|
||||
<value name="ClipboardConfirmLonger" type="dword" data="000000c8"/>
|
||||
<value name="ClipboardConfirmLonger" type="ulong" data="200"/>
|
||||
<value name="FarGotoEditorOpt" type="hex" data="01"/>
|
||||
<value name="FarGotoEditorPath" type="string" data="far.exe /e%1:%2 "%3""/>
|
||||
<value name="FixFarBorders" type="hex" data="01"/>
|
||||
@ -198,7 +198,7 @@
|
||||
<value name="MouseSkipActivation" type="hex" data="01"/>
|
||||
<value name="MouseSkipMoving" type="hex" data="01"/>
|
||||
<value name="FarHourglass" type="hex" data="01"/>
|
||||
<value name="FarHourglassDelay" type="dword" data="000001f4"/>
|
||||
<value name="FarHourglassDelay" type="ulong" data="500"/>
|
||||
<value name="Dnd" type="hex" data="01"/>
|
||||
<value name="DndDrop" type="hex" data="01"/>
|
||||
<value name="DefCopy" type="hex" data="01"/>
|
||||
@ -212,8 +212,8 @@
|
||||
<value name="StatusBar.Show" type="hex" data="00"/>
|
||||
<value name="StatusBar.Flags" type="dword" data="00000002"/>
|
||||
<value name="StatusFontFace" type="string" data="Tahoma"/>
|
||||
<value name="StatusFontCharSet" type="dword" data="00000000"/>
|
||||
<value name="StatusFontHeight" type="dword" data="0000000e"/>
|
||||
<value name="StatusFontCharSet" type="ulong" data="0"/>
|
||||
<value name="StatusFontHeight" type="long" data="14"/>
|
||||
<value name="StatusBar.Color.Back" type="dword" data="00404040"/>
|
||||
<value name="StatusBar.Color.Light" type="dword" data="00ffffff"/>
|
||||
<value name="StatusBar.Color.Dark" type="dword" data="00a0a0a0"/>
|
||||
@ -253,35 +253,35 @@
|
||||
<value name="TabsLocation" type="hex" data="01"/>
|
||||
<value name="TabSelf" type="hex" data="01"/>
|
||||
<value name="TabLazy" type="hex" data="01"/>
|
||||
<value name="TabRecent" type="hex" data="01"/>
|
||||
<value name="TabDblClick" type="dword" data="00000001"/>
|
||||
<value name="TabRecent" type="hex" data="00"/>
|
||||
<value name="TabDblClick" type="ulong" data="1"/>
|
||||
<value name="TabsOnTaskBar" type="hex" data="02"/>
|
||||
<value name="TaskBarOverlay" type="hex" data="01"/>
|
||||
<value name="TabCloseMacro" type="string" data=""/>
|
||||
<value name="TabFontFace" type="string" data="Segoe UI"/>
|
||||
<value name="TabFontCharSet" type="dword" data="00000000"/>
|
||||
<value name="TabFontHeight" type="dword" data="00000010"/>
|
||||
<value name="TabFontCharSet" type="ulong" data="0"/>
|
||||
<value name="TabFontHeight" type="long" data="16"/>
|
||||
<value name="SaveAllEditors" type="string" data=""/>
|
||||
<value name="ToolbarAddSpace" type="dword" data="00000000"/>
|
||||
<value name="ToolbarAddSpace" type="long" data="0"/>
|
||||
<value name="TabConsole" type="string" data=" %n "/>
|
||||
<value name="TabSkipWords" type="string" data="Administrator:|Администратор:"/>
|
||||
<value name="TabPanels" type="string" data="<%c> %s"/>
|
||||
<value name="TabEditor" type="string" data="<%c.%i>{%s}"/>
|
||||
<value name="TabEditorModified" type="string" data="<%c.%i>[%s] *"/>
|
||||
<value name="TabViewer" type="string" data="<%c.%i>[%s]"/>
|
||||
<value name="TabLenMax" type="dword" data="00000014"/>
|
||||
<value name="TabLenMax" type="ulong" data="20"/>
|
||||
<value name="AdminTitleSuffix" type="string" data=" (Admin)"/>
|
||||
<value name="AdminShowShield" type="hex" data="01"/>
|
||||
<value name="HideInactiveConsoleTabs" type="hex" data="00"/>
|
||||
<value name="ShowFarWindows" type="hex" data="01"/>
|
||||
<value name="TryToCenter" type="hex" data="01"/>
|
||||
<value name="CenterConsolePad" type="dword" data="00000008"/>
|
||||
<value name="CenterConsolePad" type="ulong" data="8"/>
|
||||
<value name="ShowScrollbar" type="hex" data="02"/>
|
||||
<value name="ScrollBarAppearDelay" type="dword" data="00000064"/>
|
||||
<value name="ScrollBarDisappearDelay" type="dword" data="000003e8"/>
|
||||
<value name="IconID" type="dword" data="00000001"/>
|
||||
<value name="MainTimerElapse" type="dword" data="0000000a"/>
|
||||
<value name="MainTimerInactiveElapse" type="dword" data="000003e8"/>
|
||||
<value name="ScrollBarAppearDelay" type="ulong" data="100"/>
|
||||
<value name="ScrollBarDisappearDelay" type="ulong" data="1000"/>
|
||||
<value name="IconID" type="ulong" data="1"/>
|
||||
<value name="MainTimerElapse" type="ulong" data="10"/>
|
||||
<value name="MainTimerInactiveElapse" type="ulong" data="1000"/>
|
||||
<value name="AffinityMask" type="dword" data="00000000"/>
|
||||
<value name="SkipFocusEvents" type="hex" data="00"/>
|
||||
<value name="MonitorConsoleLang" type="hex" data="03"/>
|
||||
@ -297,32 +297,32 @@
|
||||
<value name="FindMatchWholeWords" type="hex" data="00"/>
|
||||
<value name="FindTransparent" type="hex" data="01"/>
|
||||
<value name="PanView.BackColor" type="dword" data="30ffffff"/>
|
||||
<value name="PanView.PFrame" type="dword" data="00000001"/>
|
||||
<value name="PanView.PFrame" type="long" data="1"/>
|
||||
<value name="PanView.PFrameColor" type="dword" data="28808080"/>
|
||||
<value name="PanView.SFrame" type="dword" data="00000001"/>
|
||||
<value name="PanView.SFrame" type="long" data="1"/>
|
||||
<value name="PanView.SFrameColor" type="dword" data="07c0c0c0"/>
|
||||
<value name="PanView.Thumbs.ImgSize" type="dword" data="00000060"/>
|
||||
<value name="PanView.Thumbs.SpaceX1" type="dword" data="00000001"/>
|
||||
<value name="PanView.Thumbs.SpaceY1" type="dword" data="00000001"/>
|
||||
<value name="PanView.Thumbs.SpaceX2" type="dword" data="00000005"/>
|
||||
<value name="PanView.Thumbs.SpaceY2" type="dword" data="00000014"/>
|
||||
<value name="PanView.Thumbs.LabelSpacing" type="dword" data="00000002"/>
|
||||
<value name="PanView.Thumbs.LabelPadding" type="dword" data="00000000"/>
|
||||
<value name="PanView.Thumbs.ImgSize" type="long" data="96"/>
|
||||
<value name="PanView.Thumbs.SpaceX1" type="long" data="1"/>
|
||||
<value name="PanView.Thumbs.SpaceY1" type="long" data="1"/>
|
||||
<value name="PanView.Thumbs.SpaceX2" type="long" data="5"/>
|
||||
<value name="PanView.Thumbs.SpaceY2" type="long" data="20"/>
|
||||
<value name="PanView.Thumbs.LabelSpacing" type="long" data="2"/>
|
||||
<value name="PanView.Thumbs.LabelPadding" type="long" data="0"/>
|
||||
<value name="PanView.Thumbs.FontName" type="string" data="Tahoma"/>
|
||||
<value name="PanView.Thumbs.FontHeight" type="dword" data="0000000e"/>
|
||||
<value name="PanView.Tiles.ImgSize" type="dword" data="00000030"/>
|
||||
<value name="PanView.Tiles.SpaceX1" type="dword" data="00000004"/>
|
||||
<value name="PanView.Tiles.SpaceY1" type="dword" data="00000004"/>
|
||||
<value name="PanView.Tiles.SpaceX2" type="dword" data="000000ac"/>
|
||||
<value name="PanView.Tiles.SpaceY2" type="dword" data="00000004"/>
|
||||
<value name="PanView.Tiles.LabelSpacing" type="dword" data="00000004"/>
|
||||
<value name="PanView.Tiles.LabelPadding" type="dword" data="00000001"/>
|
||||
<value name="PanView.Thumbs.FontHeight" type="long" data="14"/>
|
||||
<value name="PanView.Tiles.ImgSize" type="long" data="48"/>
|
||||
<value name="PanView.Tiles.SpaceX1" type="long" data="4"/>
|
||||
<value name="PanView.Tiles.SpaceY1" type="long" data="4"/>
|
||||
<value name="PanView.Tiles.SpaceX2" type="long" data="172"/>
|
||||
<value name="PanView.Tiles.SpaceY2" type="long" data="4"/>
|
||||
<value name="PanView.Tiles.LabelSpacing" type="long" data="4"/>
|
||||
<value name="PanView.Tiles.LabelPadding" type="long" data="1"/>
|
||||
<value name="PanView.Tiles.FontName" type="string" data="Tahoma"/>
|
||||
<value name="PanView.Tiles.FontHeight" type="dword" data="0000000e"/>
|
||||
<value name="PanView.Tiles.FontHeight" type="long" data="14"/>
|
||||
<value name="PanView.LoadPreviews" type="hex" data="03"/>
|
||||
<value name="PanView.LoadFolders" type="hex" data="01"/>
|
||||
<value name="PanView.LoadTimeout" type="dword" data="0000000f"/>
|
||||
<value name="PanView.MaxZoom" type="dword" data="00000258"/>
|
||||
<value name="PanView.LoadTimeout" type="ulong" data="15"/>
|
||||
<value name="PanView.MaxZoom" type="ulong" data="600"/>
|
||||
<value name="PanView.UsePicView2" type="hex" data="01"/>
|
||||
<value name="PanView.RestoreOnStartup" type="hex" data="00"/>
|
||||
<value name="Update.VerLocation" type="string" data=""/>
|
||||
@ -483,89 +483,89 @@
|
||||
<value name="DndLKey" type="hex" data="00"/>
|
||||
<value name="DndRKey" type="hex" data="a2"/>
|
||||
<value name="WndDragKey" type="dword" data="00121101"/>
|
||||
<key name="Tasks" modified="2015-11-24 14:43:35" build="151119">
|
||||
<value name="Count" type="dword" data="00000008"/>
|
||||
<key name="Task1" modified="2015-11-24 14:49:10" build="151119">
|
||||
<key name="Tasks" modified="2018-02-22 06:02:12" build="171109">
|
||||
<value name="Count" type="long" data="8"/>
|
||||
<key name="Task1" modified="2018-02-22 06:02:12" build="171109">
|
||||
<value name="Name" type="string" data="{cmd::Cmder as Admin}"/>
|
||||
<value name="GuiArgs" type="string" data=" /icon "%CMDER_ROOT%\icons\cmder.ico""/>
|
||||
<value name="Cmd1" type="string" data="*cmd /k "%ConEmuDir%\..\init.bat" -new_console:d:%USERPROFILE%"/>
|
||||
<value name="Active" type="dword" data="00000000"/>
|
||||
<value name="Count" type="dword" data="00000001"/>
|
||||
<value name="Cmd1" type="string" data="*cmd /k ""%ConEmuDir%\..\init.bat" ""/>
|
||||
<value name="Active" type="long" data="0"/>
|
||||
<value name="Count" type="long" data="1"/>
|
||||
<value name="Hotkey" type="dword" data="00000000"/>
|
||||
<value name="Flags" type="dword" data="00000000"/>
|
||||
</key>
|
||||
<key name="Task2" modified="2015-11-24 14:49:10" build="151119">
|
||||
<key name="Task2" modified="2018-02-22 06:05:13" build="171109">
|
||||
<value name="Name" type="string" data="{cmd::Cmder}"/>
|
||||
<value name="GuiArgs" type="string" data=" /icon "%CMDER_ROOT%\icons\cmder.ico""/>
|
||||
<value name="Cmd1" type="string" data="cmd /k "%ConEmuDir%\..\init.bat" -new_console:d:%USERPROFILE%"/>
|
||||
<value name="Active" type="dword" data="00000000"/>
|
||||
<value name="Count" type="dword" data="00000001"/>
|
||||
<value name="Cmd1" type="string" data="cmd /k ""%ConEmuDir%\..\init.bat" ""/>
|
||||
<value name="Active" type="long" data="0"/>
|
||||
<value name="Count" type="long" data="1"/>
|
||||
<value name="Hotkey" type="dword" data="00000000"/>
|
||||
<value name="Flags" type="dword" data="00000000"/>
|
||||
</key>
|
||||
<key name="Task3" modified="2015-11-24 14:49:10" build="151119">
|
||||
<key name="Task3" modified="2018-02-22 06:05:13" build="171109">
|
||||
<value name="Name" type="string" data="{Powershell::PowerShell as Admin}"/>
|
||||
<value name="Hotkey" type="dword" data="00000000"/>
|
||||
<value name="GuiArgs" type="string" data=" /icon "%CMDER_ROOT%\icons\cmder.ico""/>
|
||||
<value name="Cmd1" type="string" data="*PowerShell -ExecutionPolicy Bypass -NoLogo -NoProfile -NoExit -Command "Invoke-Expression '. ''%ConEmuDir%\..\profile.ps1'''" -new_console:d:"%USERPROFILE%""/>
|
||||
<value name="Active" type="dword" data="00000000"/>
|
||||
<value name="Count" type="dword" data="00000001"/>
|
||||
<value name="Cmd1" type="string" data="*PowerShell -ExecutionPolicy Bypass -NoLogo -NoProfile -NoExit -Command "Invoke-Expression '. ''%ConEmuDir%\..\profile.ps1'''""/>
|
||||
<value name="Active" type="long" data="0"/>
|
||||
<value name="Count" type="long" data="1"/>
|
||||
<value name="Flags" type="dword" data="00000000"/>
|
||||
</key>
|
||||
<key name="Task4" modified="2015-11-24 14:49:10" build="151119">
|
||||
<key name="Task4" modified="2018-02-22 06:05:13" build="171109">
|
||||
<value name="Name" type="string" data="{Powershell::Powershell}"/>
|
||||
<value name="Hotkey" type="dword" data="00000000"/>
|
||||
<value name="GuiArgs" type="string" data=" /icon "%CMDER_ROOT%\icons\cmder.ico""/>
|
||||
<value name="Cmd1" type="string" data="PowerShell -ExecutionPolicy Bypass -NoLogo -NoProfile -NoExit -Command "Invoke-Expression '. ''%ConEmuDir%\..\profile.ps1'''" -new_console:d:"%USERPROFILE%""/>
|
||||
<value name="Cmd1" type="string" data="PowerShell -ExecutionPolicy Bypass -NoLogo -NoProfile -NoExit -Command "Invoke-Expression '. ''%ConEmuDir%\..\profile.ps1'''""/>
|
||||
<value name="Cmd2" type="string" data="%CMDER_ROOT%\vendor\git-for-windows\git-bash.exe"/>
|
||||
<value name="Active" type="dword" data="00000000"/>
|
||||
<value name="Count" type="dword" data="00000001"/>
|
||||
<value name="Active" type="long" data="0"/>
|
||||
<value name="Count" type="long" data="1"/>
|
||||
<value name="Flags" type="dword" data="00000000"/>
|
||||
</key>
|
||||
<key name="Task5" modified="2015-11-24 14:49:10" build="151119">
|
||||
<key name="Task5" modified="2018-02-22 06:05:13" build="171109">
|
||||
<value name="Name" type="string" data="{bash::mintty as Admin}"/>
|
||||
<value name="Flags" type="dword" data="00000000"/>
|
||||
<value name="Hotkey" type="dword" data="00000000"/>
|
||||
<value name="GuiArgs" type="string" data="/icon "%ConEmuDir%\..\git-for-windows\usr\share\git\git-for-windows.ico""/>
|
||||
<value name="Cmd1" type="string" data="*%ConEmuDir%\..\git-for-windows\usr\bin\mintty.exe /bin/bash -l -new_console:d:%USERPROFILE%"/>
|
||||
<value name="Active" type="dword" data="00000000"/>
|
||||
<value name="Count" type="dword" data="00000001"/>
|
||||
<value name="Cmd1" type="string" data="*%ConEmuDir%\..\git-for-windows\usr\bin\mintty.exe /bin/bash -l"/>
|
||||
<value name="Active" type="long" data="0"/>
|
||||
<value name="Count" type="long" data="1"/>
|
||||
</key>
|
||||
<key name="Task6" modified="2015-11-24 14:49:10" build="151119">
|
||||
<key name="Task6" modified="2018-02-22 06:05:13" build="171109">
|
||||
<value name="Name" type="string" data="{bash::mintty}"/>
|
||||
<value name="Flags" type="dword" data="00000000"/>
|
||||
<value name="Hotkey" type="dword" data="00000000"/>
|
||||
<value name="GuiArgs" type="string" data="/icon "%ConEmuDir%\..\git-for-windows\usr\share\git\git-for-windows.ico""/>
|
||||
<value name="Cmd1" type="string" data="%ConEmuDir%\..\git-for-windows\usr\bin\mintty.exe /bin/bash -l -new_console:d:%userProfile%"/>
|
||||
<value name="Active" type="dword" data="00000000"/>
|
||||
<value name="Count" type="dword" data="00000001"/>
|
||||
<value name="Cmd2" type="string" data="%CMDER_ROOT%vendor\git-for-windows\usr\bin\mintty.exe /bin/bash -l -new_console:d:%userProfile%"/>
|
||||
<value name="Cmd1" type="string" data="%ConEmuDir%\..\git-for-windows\usr\bin\mintty.exe /bin/bash -l"/>
|
||||
<value name="Active" type="long" data="0"/>
|
||||
<value name="Count" type="long" data="1"/>
|
||||
<value name="Cmd2" type="string" data="%CMDER_ROOT%vendor\git-for-windows\usr\bin\mintty.exe /bin/bash -l"/>
|
||||
</key>
|
||||
<key name="Task7" modified="2015-11-24 14:49:10" build="151119">
|
||||
<key name="Task7" modified="2018-02-22 06:05:13" build="171109">
|
||||
<value name="Name" type="string" data="{bash::bash as Admin}"/>
|
||||
<value name="Flags" type="dword" data="00000000"/>
|
||||
<value name="Hotkey" type="dword" data="00000000"/>
|
||||
<value name="GuiArgs" type="string" data=" /icon "%CMDER_ROOT%\icons\cmder.ico""/>
|
||||
<value name="Active" type="dword" data="00000000"/>
|
||||
<value name="Count" type="dword" data="00000001"/>
|
||||
<value name="Cmd1" type="string" data="*cmd /c "%ConEmuDir%\..\git-for-windows\bin\bash --login -i" -new_console:d:%USERPROFILE%"/>
|
||||
<value name="Active" type="long" data="0"/>
|
||||
<value name="Count" type="long" data="1"/>
|
||||
<value name="Cmd1" type="string" data="*cmd /c "%ConEmuDir%\..\git-for-windows\bin\bash --login -i""/>
|
||||
</key>
|
||||
<key name="Task8" modified="2015-11-24 14:49:10" build="151119">
|
||||
<key name="Task8" modified="2018-02-22 06:05:13" build="171109">
|
||||
<value name="Name" type="string" data="{bash::bash}"/>
|
||||
<value name="Flags" type="dword" data="00000000"/>
|
||||
<value name="Hotkey" type="dword" data="00000000"/>
|
||||
<value name="GuiArgs" type="string" data=" /icon "%CMDER_ROOT%\icons\cmder.ico""/>
|
||||
<value name="Cmd1" type="string" data="cmd /c "%ConEmuDir%\..\git-for-windows\bin\bash --login -i" -new_console:d:%USERPROFILE%"/>
|
||||
<value name="Active" type="dword" data="00000000"/>
|
||||
<value name="Count" type="dword" data="00000001"/>
|
||||
<value name="Cmd1" type="string" data="cmd /c "%ConEmuDir%\..\git-for-windows\bin\bash --login -i""/>
|
||||
<value name="Active" type="long" data="0"/>
|
||||
<value name="Count" type="long" data="1"/>
|
||||
</key>
|
||||
</key>
|
||||
|
||||
<key name="Apps" modified="2015-11-24 14:49:10" build="151119">
|
||||
<value name="Count" type="dword" data="00000000"/>
|
||||
<key name="Apps" modified="2018-02-22 06:05:13" build="171109">
|
||||
<value name="Count" type="long" data="0"/>
|
||||
</key>
|
||||
<key name="Colors" modified="2015-11-24 14:49:10" build="151119">
|
||||
<key name="Palette1" modified="2015-11-24 14:49:10" build="151119">
|
||||
<key name="Colors" modified="2018-02-22 06:05:13" build="171109">
|
||||
<key name="Palette1" modified="2018-02-22 06:05:13" build="171109">
|
||||
<value name="Name" type="string" data="Monokai"/>
|
||||
<value name="ExtendColors" type="hex" data="00"/>
|
||||
<value name="ExtendColorIdx" type="hex" data="0e"/>
|
||||
@ -606,11 +606,11 @@
|
||||
<value name="ColorTable30" type="dword" data="0000ffff"/>
|
||||
<value name="ColorTable31" type="dword" data="00ffffff"/>
|
||||
</key>
|
||||
<value name="Count" type="dword" data="00000001"/>
|
||||
<value name="Count" type="long" data="1"/>
|
||||
</key>
|
||||
<value name="OneTabPerGroup" type="hex" data="00"/>
|
||||
<value name="ActivateSplitMouseOver" type="hex" data="01"/>
|
||||
<value name="TabBtnDblClick" type="dword" data="00000000"/>
|
||||
<value name="TabBtnDblClick" type="ulong" data="0"/>
|
||||
<value name="ConsoleExceptionHandler" type="hex" data="00"/>
|
||||
<value name="SaveCmdHistory" type="hex" data="00"/>
|
||||
<value name="CTS.IBeam" type="hex" data="01"/>
|
||||
@ -664,9 +664,9 @@
|
||||
<value name="StatusBar.Hide.WVDC" type="hex" data="01"/>
|
||||
<value name="StatusBar.Hide.Zoom" type="hex" data="01"/>
|
||||
<value name="StatusBar.Hide.Dpi" type="hex" data="01"/>
|
||||
<value name="TabFlashChanged" type="dword" data="00000008"/>
|
||||
<value name="TabFlashChanged" type="long" data="8"/>
|
||||
<value name="TabModifiedSuffix" type="string" data="[*]"/>
|
||||
<key name="HotKeys" modified="2015-11-24 14:43:35" build="151119">
|
||||
<key name="HotKeys" modified="2018-02-22 06:02:12" build="171109">
|
||||
<value name="KeyMacroVersion" type="hex" data="02"/>
|
||||
<value name="Multi.Modifier" type="dword" data="00000011"/>
|
||||
<value name="Multi.ArrowsModifier" type="dword" data="0000005b"/>
|
||||
@ -847,16 +847,51 @@
|
||||
<value name="Key.DebugProcess" type="dword" data="00105b44"/>
|
||||
<value name="Key.DumpProcess" type="dword" data="00000000"/>
|
||||
<value name="Key.DumpTree" type="dword" data="00000000"/>
|
||||
<value name="Multi.SplitSwap" type="dword" data="00125d58"/>
|
||||
<value name="Multi.SplitSwapU" type="dword" data="00125d26"/>
|
||||
<value name="Multi.SplitSwapD" type="dword" data="00125d28"/>
|
||||
<value name="Multi.SplitSwapL" type="dword" data="00125d25"/>
|
||||
<value name="Multi.SplitSwapR" type="dword" data="00125d27"/>
|
||||
<value name="Multi.GroupInputAll" type="dword" data="00105d47"/>
|
||||
<value name="Multi.GroupInputKey" type="dword" data="00125d47"/>
|
||||
<value name="Key.AltNumpad" type="dword" data="00000000"/>
|
||||
<value name="Key.JumpActiveMonitor" type="dword" data="00000000"/>
|
||||
<value name="Key.BufPrUp" type="dword" data="00121121"/>
|
||||
<value name="Key.BufPrDn" type="dword" data="00121122"/>
|
||||
<value name="Key.ResetTerm" type="dword" data="00000000"/>
|
||||
</key>
|
||||
<value name="StartCreateDelay" type="dword" data="00000064"/>
|
||||
<value name="StartCreateDelay" type="ulong" data="100"/>
|
||||
<value name="DefaultTerminalDebugLog" type="hex" data="00"/>
|
||||
<value name="LastMonitor" type="string" data="0,0,1920,1020"/>
|
||||
<value name="LastMonitor" type="string" data="0,0,1440,1050"/>
|
||||
<value name="Restore2ActiveMon" type="hex" data="00"/>
|
||||
<value name="DownShowExOnTopMessage" type="hex" data="00"/>
|
||||
<value name="EnvironmentSet" type="multi"/>
|
||||
<value name="EnvironmentSet" type="multi">
|
||||
<line data="set PATH=%ConEmuBaseDir%\Scripts;%PATH%"/>
|
||||
</value>
|
||||
<value name="Update.InetTool" type="hex" data="00"/>
|
||||
<value name="Update.InetToolCmd" type="string" data=""/>
|
||||
<value name="SuppressBells" type="hex" data="01"/>
|
||||
<value name="ClipboardAllLinesPosix" type="hex" data="00"/>
|
||||
<value name="ClipboardFirstLinePosix" type="hex" data="00"/>
|
||||
<value name="VividColors" type="hex" data="01"/>
|
||||
<value name="AnsiExecution" type="hex" data="01"/>
|
||||
<value name="AnsiAllowedCommands" type="multi">
|
||||
<line data="cmd -cur_console:R /cGitShowBranch.cmd"/>
|
||||
</value>
|
||||
<value name="KillSshAgent" type="hex" data="01"/>
|
||||
<value name="ProcessCtrlZ" type="hex" data="00"/>
|
||||
<value name="JumpListAutoUpdate" type="hex" data="01"/>
|
||||
<value name="CompressLongStrings" type="hex" data="01"/>
|
||||
<value name="DynamicBufferHeight" type="hex" data="01"/>
|
||||
<value name="CTS.ResetOnRelease" type="hex" data="00"/>
|
||||
<value name="CTS.EraseBeforeReset" type="hex" data="01"/>
|
||||
<value name="Anti-aliasing2" type="hex" data="00"/>
|
||||
<value name="UseAltGrayPlus" type="hex" data="01"/>
|
||||
<value name="MouseDragWindow" type="hex" data="01"/>
|
||||
<value name="DebugLog" type="hex" data="00"/>
|
||||
<value name="StatusBar.Hide.TMode" type="hex" data="01"/>
|
||||
<value name="StatusBar.Hide.RMode" type="hex" data="01"/>
|
||||
<value name="StatusBar.Hide.CellI" type="hex" data="01"/>
|
||||
</key>
|
||||
</key>
|
||||
</key>
|
||||
|
@ -3,12 +3,12 @@
|
||||
All config files must be in this folder. If there is no option to set this folder
|
||||
directly, it has to be hardlinked.
|
||||
|
||||
* `aliases`: aliases in cmd; called form vendor\init.bat; autocreated from
|
||||
`vendor\aliases.example`.
|
||||
* `*.lua`: clink completitions and prompt filters; called from vendor\cmder.lua after all
|
||||
other prompt filter and clink completitons are initialized; add your own.
|
||||
* `user_profile.{sh|bat|ps1}`: startup files for bash|cmd|powershell tasks; called from their
|
||||
respective startup scripts in `vendor\`; autocreated on first start of such a task
|
||||
* `.history`: the current commandline history; autoupdated on close
|
||||
* `settings`: settings for readline; overwritten on update
|
||||
* `ConEmu.xml`: settings from ConEmu (=the UI of cmder -> Preferences); overwritten on update
|
||||
* `user-aliases.cmd`: aliases in cmd; called from vendor\init.bat; autocreated from
|
||||
`vendor\user-aliases.cmd.example`.
|
||||
* `*.lua`: clink completions and prompt filters; autoloaded after all
|
||||
prompt filter and clink completions are initialized; add your own.
|
||||
* `user-profile.{sh|cmd|ps1}`: startup files for bash|cmd|powershell tasks; called from their
|
||||
respective startup scripts in `vendor\`; autocreated on first start of such a task.
|
||||
* `.history`: the current commandline history; autoupdated on close.
|
||||
* `settings`: settings for readline; overwritten on update.
|
||||
* `ConEmu.xml`: settings from ConEmu (=the UI of cmder -> Preferences); overwritten on update.
|
||||
|
@ -1,5 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup Label="ProjectConfigurations">
|
||||
<ProjectConfiguration Include="Debug|Win32">
|
||||
<Configuration>Debug</Configuration>
|
||||
@ -19,13 +19,13 @@
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>true</UseDebugLibraries>
|
||||
<PlatformToolset>v140_xp</PlatformToolset>
|
||||
<PlatformToolset>v141_xp</PlatformToolset>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
<PlatformToolset>v140_xp</PlatformToolset>
|
||||
<PlatformToolset>v141_xp</PlatformToolset>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
@ -60,6 +60,9 @@
|
||||
<SubSystem>Windows</SubSystem>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
</Link>
|
||||
<ResourceCompile>
|
||||
<PreprocessorDefinitions>_USING_V110_SDK71_;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
</ResourceCompile>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<ClCompile>
|
||||
|
@ -3,7 +3,10 @@
|
||||
#include <Shlwapi.h>
|
||||
#include "resource.h"
|
||||
#include <vector>
|
||||
#include <shlobj.h>
|
||||
|
||||
#include <regex>
|
||||
#include <iostream>
|
||||
|
||||
#pragma comment(lib, "Shlwapi.lib")
|
||||
|
||||
@ -31,7 +34,7 @@ void ShowErrorAndExit(DWORD ec, const wchar_t * func, int line)
|
||||
{
|
||||
wchar_t * buffer;
|
||||
if (FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS,
|
||||
NULL, ec, 0, (LPWSTR) &buffer, 0, NULL) == 0)
|
||||
NULL, ec, 0, (LPWSTR)&buffer, 0, NULL) == 0)
|
||||
{
|
||||
buffer = L"Unknown error. FormatMessage failed.";
|
||||
}
|
||||
@ -54,34 +57,6 @@ typedef struct _option
|
||||
|
||||
typedef std::pair<std::wstring, std::wstring> optpair;
|
||||
|
||||
|
||||
optpair GetOption()
|
||||
{
|
||||
wchar_t * cmd = GetCommandLine();
|
||||
int argc;
|
||||
wchar_t ** argv = CommandLineToArgvW(cmd, &argc);
|
||||
optpair pair;
|
||||
|
||||
if (argc == 1)
|
||||
{
|
||||
// no commandline argument...
|
||||
pair = optpair(L"/START", L"");
|
||||
}
|
||||
else if (argc == 2 && argv[1][0] != L'/')
|
||||
{
|
||||
// only a single argument: this should be a path...
|
||||
pair = optpair(L"/START", argv[1]);
|
||||
}
|
||||
else
|
||||
{
|
||||
pair = optpair(argv[1], argc > 2 ? argv[2] : L"");
|
||||
}
|
||||
|
||||
LocalFree(argv);
|
||||
|
||||
return pair;
|
||||
}
|
||||
|
||||
bool FileExists(const wchar_t * filePath)
|
||||
{
|
||||
HANDLE hFile = CreateFile(filePath, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, 0, NULL);
|
||||
@ -95,7 +70,7 @@ bool FileExists(const wchar_t * filePath)
|
||||
return false;
|
||||
}
|
||||
|
||||
void StartCmder(std::wstring path, bool is_single_mode)
|
||||
void StartCmder(std::wstring path = L"", bool is_single_mode = false, std::wstring taskName = L"", std::wstring cfgRoot = L"")
|
||||
{
|
||||
#if USE_TASKBAR_API
|
||||
wchar_t appId[MAX_PATH] = { 0 };
|
||||
@ -103,10 +78,23 @@ void StartCmder(std::wstring path, bool is_single_mode)
|
||||
wchar_t exeDir[MAX_PATH] = { 0 };
|
||||
wchar_t icoPath[MAX_PATH] = { 0 };
|
||||
wchar_t cfgPath[MAX_PATH] = { 0 };
|
||||
wchar_t oldCfgPath[MAX_PATH] = { 0 };
|
||||
wchar_t backupCfgPath[MAX_PATH] = { 0 };
|
||||
wchar_t cpuCfgPath[MAX_PATH] = { 0 };
|
||||
wchar_t userCfgPath[MAX_PATH] = { 0 };
|
||||
wchar_t defaultCfgPath[MAX_PATH] = { 0 };
|
||||
wchar_t conEmuPath[MAX_PATH] = { 0 };
|
||||
wchar_t configDirPath[MAX_PATH] = { 0 };
|
||||
wchar_t userConfigDirPath[MAX_PATH] = { 0 };
|
||||
wchar_t userBinDirPath[MAX_PATH] = { 0 };
|
||||
wchar_t userProfiledDirPath[MAX_PATH] = { 0 };
|
||||
wchar_t args[MAX_PATH * 2 + 256] = { 0 };
|
||||
|
||||
std::wstring cmderStart = path;
|
||||
std::wstring cmderTask = taskName;
|
||||
|
||||
std::copy(cfgRoot.begin(), cfgRoot.end(), userConfigDirPath);
|
||||
userConfigDirPath[cfgRoot.length()] = 0;
|
||||
|
||||
GetModuleFileName(NULL, exeDir, sizeof(exeDir));
|
||||
|
||||
#if USE_TASKBAR_API
|
||||
@ -117,18 +105,101 @@ void StartCmder(std::wstring path, bool is_single_mode)
|
||||
|
||||
PathCombine(icoPath, exeDir, L"icons\\cmder.ico");
|
||||
|
||||
// Check for machine-specific config file.
|
||||
PathCombine(oldCfgPath, exeDir, L"config\\ConEmu-%COMPUTERNAME%.xml");
|
||||
ExpandEnvironmentStrings(oldCfgPath, oldCfgPath, sizeof(oldCfgPath) / sizeof(oldCfgPath[0]));
|
||||
if (!PathFileExists(oldCfgPath)) {
|
||||
PathCombine(oldCfgPath, exeDir, L"config\\ConEmu.xml");
|
||||
PathCombine(configDirPath, exeDir, L"config");
|
||||
if (wcscmp(userConfigDirPath, L"") == 0)
|
||||
{
|
||||
PathCombine(userConfigDirPath, exeDir, L"config");
|
||||
}
|
||||
else
|
||||
{
|
||||
PathCombine(userBinDirPath, userConfigDirPath, L"bin");
|
||||
SHCreateDirectoryEx(0, userBinDirPath, 0);
|
||||
|
||||
PathCombine(userConfigDirPath, userConfigDirPath, L"config");
|
||||
SHCreateDirectoryEx(0, userConfigDirPath, 0);
|
||||
|
||||
PathCombine(userProfiledDirPath, userConfigDirPath, L"profile.d");
|
||||
SHCreateDirectoryEx(0, userProfiledDirPath, 0);
|
||||
}
|
||||
|
||||
// Check for machine-specific config file.
|
||||
PathCombine(cfgPath, exeDir, L"vendor\\conemu-maximus5\\ConEmu-%COMPUTERNAME%.xml");
|
||||
ExpandEnvironmentStrings(cfgPath, cfgPath, sizeof(cfgPath) / sizeof(cfgPath[0]));
|
||||
if (!PathFileExists(cfgPath)) {
|
||||
PathCombine(cfgPath, exeDir, L"vendor\\conemu-maximus5\\ConEmu.xml");
|
||||
// Set path to vendored ConEmu config file
|
||||
PathCombine(cfgPath, exeDir, L"vendor\\conemu-maximus5\\ConEmu.xml");
|
||||
|
||||
// Set path to Cmder default ConEmu config file
|
||||
PathCombine(defaultCfgPath, exeDir, L"config\\ConEmu.xml");
|
||||
|
||||
// Check for machine-specific then user config source file.
|
||||
PathCombine(cpuCfgPath, userConfigDirPath, L"ConEmu-%COMPUTERNAME%.xml");
|
||||
ExpandEnvironmentStrings(cpuCfgPath, cpuCfgPath, sizeof(cpuCfgPath) / sizeof(cpuCfgPath[0]));
|
||||
|
||||
PathCombine(userCfgPath, userConfigDirPath, L"user-ConEmu.xml");
|
||||
|
||||
if (PathFileExists(cpuCfgPath)) {
|
||||
if (PathFileExists(cfgPath)) {
|
||||
if (!CopyFile(cfgPath, cpuCfgPath, FALSE))
|
||||
{
|
||||
MessageBox(NULL,
|
||||
(GetLastError() == ERROR_ACCESS_DENIED)
|
||||
? L"Failed to copy ConEmu.xml file to ConEmu-%COMPUTERNAME%.xml backup location! Restart Cmder as administrator."
|
||||
: L"Failed to copy ConEmu.xml file to ConEmu-%COMPUTERNAME%.xml backup location!", MB_TITLE, MB_ICONSTOP);
|
||||
exit(1);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!CopyFile(cpuCfgPath, cfgPath, FALSE))
|
||||
{
|
||||
MessageBox(NULL,
|
||||
(GetLastError() == ERROR_ACCESS_DENIED)
|
||||
? L"Failed to copy ConEmu-%COMPUTERNAME%.xml file to vendored ConEmu.xml location! Restart Cmder as administrator."
|
||||
: L"Failed to copy ConEmu-%COMPUTERNAME%.xml file to vendored ConEmu.xml location!", MB_TITLE, MB_ICONSTOP);
|
||||
exit(1);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
else if (PathFileExists(userCfgPath)) {
|
||||
if (PathFileExists(cfgPath)) {
|
||||
if (!CopyFile(cfgPath, userCfgPath, FALSE))
|
||||
{
|
||||
MessageBox(NULL,
|
||||
(GetLastError() == ERROR_ACCESS_DENIED)
|
||||
? L"Failed to copy ConEmu.xml file to backup location! Restart Cmder as administrator."
|
||||
: L"Failed to copy ConEmu.xml file to backup location!", MB_TITLE, MB_ICONSTOP);
|
||||
exit(1);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!CopyFile(userCfgPath, cfgPath, FALSE))
|
||||
{
|
||||
MessageBox(NULL,
|
||||
(GetLastError() == ERROR_ACCESS_DENIED)
|
||||
? L"Failed to copy ConEmu.xml file to vendored ConEmu.xml location! Restart Cmder as administrator."
|
||||
: L"Failed to copy ConEmu.xml file to vendored ConEmu.xml location!", MB_TITLE, MB_ICONSTOP);
|
||||
exit(1);
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (PathFileExists(cfgPath)) {
|
||||
if (!CopyFile(cfgPath, userCfgPath, FALSE))
|
||||
{
|
||||
MessageBox(NULL,
|
||||
(GetLastError() == ERROR_ACCESS_DENIED)
|
||||
? L"Failed to copy ConEmu.xml file to user-conemu.xml backup location! Restart Cmder as administrator."
|
||||
: L"Failed to copy ConEmu.xml file to user-conemu.xml backup location!", MB_TITLE, MB_ICONSTOP);
|
||||
exit(1);
|
||||
}
|
||||
}
|
||||
else {
|
||||
if (!CopyFile(defaultCfgPath, cfgPath, FALSE))
|
||||
{
|
||||
MessageBox(NULL,
|
||||
(GetLastError() == ERROR_ACCESS_DENIED)
|
||||
? L"Failed to copy Cmder default ConEmu.xml file to vendored ConEmu.xml location! Restart Cmder as administrator."
|
||||
: L"Failed to copy Cmder default ConEmu.xml file to vendored ConEmu.xml location!", MB_TITLE, MB_ICONSTOP);
|
||||
exit(1);
|
||||
}
|
||||
}
|
||||
|
||||
SYSTEM_INFO sysInfo;
|
||||
@ -140,50 +211,57 @@ void StartCmder(std::wstring path, bool is_single_mode)
|
||||
PathCombine(conEmuPath, exeDir, L"vendor\\conemu-maximus5\\ConEmu.exe");
|
||||
}
|
||||
|
||||
if (FileExists(oldCfgPath) && !FileExists(cfgPath))
|
||||
if (streqi(cmderStart.c_str(), L""))
|
||||
{
|
||||
if (!CopyFile(oldCfgPath, cfgPath, FALSE))
|
||||
{
|
||||
MessageBox(NULL,
|
||||
(GetLastError() == ERROR_ACCESS_DENIED)
|
||||
? L"Failed to copy ConEmu.xml file to new location! Restart cmder as administrator."
|
||||
: L"Failed to copy ConEmu.xml file to new location!", MB_TITLE, MB_ICONSTOP);
|
||||
exit(1);
|
||||
}
|
||||
TCHAR buff[MAX_PATH];
|
||||
const DWORD ret = GetEnvironmentVariable(L"USERPROFILE", buff, MAX_PATH);
|
||||
cmderStart = buff;
|
||||
}
|
||||
|
||||
if (is_single_mode)
|
||||
{
|
||||
swprintf_s(args, L"/single /Icon \"%s\" /Title Cmder", icoPath);
|
||||
if (!streqi(cmderTask.c_str(), L"")) {
|
||||
swprintf_s(args, L"%s /single /Icon \"%s\" /Title Cmder /dir \"%s\" /run {%s}", args, icoPath, cmderStart.c_str(), cmderTask.c_str());
|
||||
}
|
||||
else {
|
||||
swprintf_s(args, L"%s /single /Icon \"%s\" /Title Cmder /dir \"%s\"", args, icoPath, cmderStart.c_str());
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
swprintf_s(args, L"/Icon \"%s\" /Title Cmder", icoPath);
|
||||
}
|
||||
|
||||
SetEnvironmentVariable(L"CMDER_ROOT", exeDir);
|
||||
if (!streqi(path.c_str(), L""))
|
||||
{
|
||||
if (!SetEnvironmentVariable(L"CMDER_START", path.c_str())) {
|
||||
MessageBox(NULL, _T("Error trying to set CMDER_START to given path!"), _T("Error"), MB_OK);
|
||||
if (!streqi(cmderTask.c_str(), L"")) {
|
||||
swprintf_s(args, L"/Icon \"%s\" /Title Cmder /dir \"%s\" /run {%s}", icoPath, cmderStart.c_str(), cmderTask.c_str());
|
||||
}
|
||||
else {
|
||||
swprintf_s(args, L"%s /Icon \"%s\" /Title Cmder /dir \"%s\"", args, icoPath, cmderStart.c_str());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
SetEnvironmentVariable(L"CMDER_ROOT", exeDir);
|
||||
if (wcscmp(userConfigDirPath, configDirPath) != 0)
|
||||
{
|
||||
SetEnvironmentVariable(L"CMDER_USER_CONFIG", userConfigDirPath);
|
||||
SetEnvironmentVariable(L"CMDER_USER_BIN", userBinDirPath);
|
||||
}
|
||||
|
||||
// Ensure EnvironmentVariables are propagated.
|
||||
SendMessageTimeout(HWND_BROADCAST, WM_SETTINGCHANGE, 0, (LPARAM)"Environment", SMTO_ABORTIFHUNG, 5000, NULL);
|
||||
SendMessageTimeout(HWND_BROADCAST, WM_SETTINGCHANGE, 0, (LPARAM) L"Environment", SMTO_ABORTIFHUNG, 5000, NULL); // For Windows >= 8
|
||||
|
||||
STARTUPINFO si = { 0 };
|
||||
|
||||
si.cb = sizeof(STARTUPINFO);
|
||||
#if USE_TASKBAR_API
|
||||
si.lpTitle = appId;
|
||||
si.dwFlags = STARTF_TITLEISAPPID;
|
||||
#endif
|
||||
|
||||
PROCESS_INFORMATION pi;
|
||||
if (!CreateProcess(conEmuPath, args, NULL, NULL, false, 0, NULL, NULL, &si, &pi)) {
|
||||
MessageBox(NULL, _T("Unable to create the ConEmu Process!"), _T("Error"), MB_OK);
|
||||
MessageBox(NULL, _T("Unable to create the ConEmu process!"), _T("Error"), MB_OK);
|
||||
return;
|
||||
}
|
||||
|
||||
LRESULT lr = SendMessageTimeout(HWND_BROADCAST, WM_SETTINGCHANGE, 0, (LPARAM)"Environment", SMTO_ABORTIFHUNG | SMTO_NOTIMEOUTIFNOTHUNG, 5000, NULL);
|
||||
lr = SendMessageTimeout(HWND_BROADCAST, WM_SETTINGCHANGE, 0, (LPARAM)L"Environment", SMTO_ABORTIFHUNG | SMTO_NOTIMEOUTIFNOTHUNG, 5000, NULL); // For Windows >= 8
|
||||
}
|
||||
|
||||
bool IsUserOnly(std::wstring opt)
|
||||
@ -213,8 +291,7 @@ HKEY GetRootKey(std::wstring opt)
|
||||
|
||||
if (IsUserOnly(opt))
|
||||
{
|
||||
FAIL_ON_ERROR(RegCreateKeyEx(HKEY_CURRENT_USER, L"Software\\Classes", 0, NULL,
|
||||
REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, &root, NULL));
|
||||
FAIL_ON_ERROR(RegCreateKeyEx(HKEY_CURRENT_USER, L"Software\\Classes", 0, NULL, REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, &root, NULL));
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -233,47 +310,40 @@ void RegisterShellMenu(std::wstring opt, wchar_t* keyBaseName)
|
||||
|
||||
GetModuleFileName(NULL, exePath, sizeof(exePath));
|
||||
|
||||
wchar_t commandStr[MAX_PATH + 20] = { 0 };
|
||||
swprintf_s(commandStr, L"\"%s\" \"%%V\"", exePath);
|
||||
wchar_t commandStr[MAX_PATH + 20] = { 0 };
|
||||
swprintf_s(commandStr, L"\"%s\" \"%%V\"", exePath);
|
||||
|
||||
// Now that we have `commandStr`, it's OK to change `exePath`...
|
||||
PathRemoveFileSpec(exePath);
|
||||
// Now that we have `commandStr`, it's OK to change `exePath`...
|
||||
PathRemoveFileSpec(exePath);
|
||||
|
||||
PathCombine(icoPath, exePath, L"icons\\cmder.ico");
|
||||
PathCombine(icoPath, exePath, L"icons\\cmder.ico");
|
||||
|
||||
// Now set the registry keys
|
||||
// Now set the registry keys
|
||||
HKEY root = GetRootKey(opt);
|
||||
|
||||
HKEY root = GetRootKey(opt);
|
||||
HKEY cmderKey;
|
||||
FAIL_ON_ERROR(RegCreateKeyEx(root, keyBaseName, 0, NULL, REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, &cmderKey, NULL));
|
||||
|
||||
HKEY cmderKey;
|
||||
FAIL_ON_ERROR(
|
||||
RegCreateKeyEx(root, keyBaseName, 0, NULL,
|
||||
REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, &cmderKey, NULL));
|
||||
FAIL_ON_ERROR(RegSetValue(cmderKey, L"", REG_SZ, L"Cmder Here", NULL));
|
||||
FAIL_ON_ERROR(RegSetValueEx(cmderKey, L"NoWorkingDirectory", 0, REG_SZ, (BYTE *)L"", 2));
|
||||
|
||||
FAIL_ON_ERROR(RegSetValue(cmderKey, L"", REG_SZ, L"Cmder Here", NULL));
|
||||
FAIL_ON_ERROR(RegSetValueEx(cmderKey, L"NoWorkingDirectory", 0, REG_SZ, (BYTE *)L"", 2));
|
||||
FAIL_ON_ERROR(RegSetValueEx(cmderKey, L"Icon", 0, REG_SZ, (BYTE *)icoPath, wcslen(icoPath) * sizeof(wchar_t)));
|
||||
|
||||
FAIL_ON_ERROR(RegSetValueEx(cmderKey, L"Icon", 0, REG_SZ, (BYTE *)icoPath, wcslen(icoPath) * sizeof(wchar_t)));
|
||||
HKEY command;
|
||||
FAIL_ON_ERROR(RegCreateKeyEx(cmderKey, L"command", 0, NULL, REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, &command, NULL));
|
||||
|
||||
HKEY command;
|
||||
FAIL_ON_ERROR(
|
||||
RegCreateKeyEx(cmderKey, L"command", 0, NULL,
|
||||
REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, &command, NULL));
|
||||
FAIL_ON_ERROR(RegSetValue(command, L"", REG_SZ, commandStr, NULL));
|
||||
|
||||
FAIL_ON_ERROR(RegSetValue(command, L"", REG_SZ, commandStr, NULL));
|
||||
|
||||
RegCloseKey(command);
|
||||
RegCloseKey(cmderKey);
|
||||
RegCloseKey(root);
|
||||
RegCloseKey(command);
|
||||
RegCloseKey(cmderKey);
|
||||
RegCloseKey(root);
|
||||
}
|
||||
|
||||
void UnregisterShellMenu(std::wstring opt, wchar_t* keyBaseName)
|
||||
{
|
||||
HKEY root = GetRootKey(opt);
|
||||
HKEY cmderKey;
|
||||
FAIL_ON_ERROR(
|
||||
RegCreateKeyEx(root, keyBaseName, 0, NULL,
|
||||
REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, &cmderKey, NULL));
|
||||
FAIL_ON_ERROR(RegCreateKeyEx(root, keyBaseName, 0, NULL, REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, &cmderKey, NULL));
|
||||
#if XP
|
||||
FAIL_ON_ERROR(SHDeleteKey(cmderKey, NULL));
|
||||
#else
|
||||
@ -283,6 +353,106 @@ void UnregisterShellMenu(std::wstring opt, wchar_t* keyBaseName)
|
||||
RegCloseKey(root);
|
||||
}
|
||||
|
||||
struct cmderOptions
|
||||
{
|
||||
std::wstring cmderCfgRoot = L"";
|
||||
std::wstring cmderStart = L"";
|
||||
std::wstring cmderTask = L"";
|
||||
std::wstring cmderRegScope = L"USER";
|
||||
bool cmderSingle = false;
|
||||
bool registerApp = false;
|
||||
bool unRegisterApp = false;
|
||||
bool error = false;
|
||||
|
||||
};
|
||||
|
||||
cmderOptions GetOption()
|
||||
{
|
||||
cmderOptions cmderOptions;
|
||||
LPWSTR *szArgList;
|
||||
int argCount;
|
||||
|
||||
szArgList = CommandLineToArgvW(GetCommandLine(), &argCount);
|
||||
|
||||
for (int i = 1; i < argCount; i++)
|
||||
{
|
||||
// MessageBox(NULL, szArgList[i], L"Arglist contents", MB_OK);
|
||||
|
||||
if (_wcsicmp(L"/c", szArgList[i]) == 0)
|
||||
{
|
||||
TCHAR userProfile[MAX_PATH];
|
||||
const DWORD ret = GetEnvironmentVariable(L"USERPROFILE", userProfile, MAX_PATH);
|
||||
|
||||
wchar_t cmderCfgRoot[MAX_PATH] = { 0 };
|
||||
PathCombine(cmderCfgRoot, userProfile, L"cmder_cfg");
|
||||
|
||||
cmderOptions.cmderCfgRoot = cmderCfgRoot;
|
||||
|
||||
if (szArgList[i + 1] != NULL && szArgList[i + 1][0] != '/') {
|
||||
cmderOptions.cmderCfgRoot = szArgList[i + 1];
|
||||
i++;
|
||||
}
|
||||
}
|
||||
else if (_wcsicmp(L"/start", szArgList[i]) == 0)
|
||||
{
|
||||
if (PathFileExists(szArgList[i + 1]))
|
||||
{
|
||||
cmderOptions.cmderStart = szArgList[i + 1];
|
||||
i++;
|
||||
}
|
||||
else {
|
||||
MessageBox(NULL, szArgList[i + 1], L"/START - Folder doses not exist!", MB_OK);
|
||||
}
|
||||
}
|
||||
else if (_wcsicmp(L"/task", szArgList[i]) == 0)
|
||||
{
|
||||
cmderOptions.cmderTask = szArgList[i + 1];
|
||||
i++;
|
||||
}
|
||||
else if (_wcsicmp(L"/single", szArgList[i]) == 0)
|
||||
{
|
||||
cmderOptions.cmderSingle = true;
|
||||
}
|
||||
else if (_wcsicmp(L"/register", szArgList[i]) == 0)
|
||||
{
|
||||
cmderOptions.registerApp = true;
|
||||
cmderOptions.unRegisterApp = false;
|
||||
if (szArgList[i + 1] != NULL)
|
||||
{
|
||||
if (_wcsicmp(L"all", szArgList[i + 1]) == 0 || _wcsicmp(L"user", szArgList[i + 1]) == 0)
|
||||
{
|
||||
cmderOptions.cmderRegScope = szArgList[i + 1];
|
||||
i++;
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (_wcsicmp(L"/unregister", szArgList[i]) == 0)
|
||||
{
|
||||
cmderOptions.unRegisterApp = true;
|
||||
cmderOptions.registerApp = false;
|
||||
if (szArgList[i + 1] != NULL)
|
||||
{
|
||||
if (_wcsicmp(L"all", szArgList[i + 1]) == 0 || _wcsicmp(L"user", szArgList[i + 1]) == 0)
|
||||
{
|
||||
cmderOptions.cmderRegScope = szArgList[i + 1];
|
||||
i++;
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (cmderOptions.cmderStart == L"" && PathFileExists(szArgList[i]))
|
||||
{
|
||||
cmderOptions.cmderStart = szArgList[i];
|
||||
}
|
||||
else {
|
||||
MessageBox(NULL, L"Unrecognized parameter.\n\nValid options:\n\n /c [CMDER User Root Path]\n\n /task [ConEmu Task Name]\n\n [/start [Start in Path] | [Start in Path]]\n\n /single\n\nor\n\n /register [USER | ALL]\n\nor\n\n /unregister [USER | ALL]\n", MB_TITLE, MB_OK);
|
||||
cmderOptions.error = true;
|
||||
}
|
||||
}
|
||||
|
||||
LocalFree(szArgList);
|
||||
|
||||
return cmderOptions;
|
||||
}
|
||||
int APIENTRY _tWinMain(_In_ HINSTANCE hInstance,
|
||||
_In_opt_ HINSTANCE hPrevInstance,
|
||||
_In_ LPTSTR lpCmdLine,
|
||||
@ -292,31 +462,25 @@ int APIENTRY _tWinMain(_In_ HINSTANCE hInstance,
|
||||
UNREFERENCED_PARAMETER(lpCmdLine);
|
||||
UNREFERENCED_PARAMETER(nCmdShow);
|
||||
|
||||
optpair opt = GetOption();
|
||||
cmderOptions cmderOptions = GetOption();
|
||||
|
||||
if (streqi(opt.first.c_str(), L"/START"))
|
||||
{
|
||||
StartCmder(opt.second, false);
|
||||
if (cmderOptions.registerApp == true ) {
|
||||
RegisterShellMenu(cmderOptions.cmderRegScope, SHELL_MENU_REGISTRY_PATH_BACKGROUND);
|
||||
RegisterShellMenu(cmderOptions.cmderRegScope, SHELL_MENU_REGISTRY_PATH_LISTITEM);
|
||||
}
|
||||
else if (streqi(opt.first.c_str(), L"/SINGLE"))
|
||||
else if (cmderOptions.unRegisterApp == true )
|
||||
{
|
||||
StartCmder(opt.second, true);
|
||||
UnregisterShellMenu(cmderOptions.cmderRegScope, SHELL_MENU_REGISTRY_PATH_BACKGROUND);
|
||||
UnregisterShellMenu(cmderOptions.cmderRegScope, SHELL_MENU_REGISTRY_PATH_LISTITEM);
|
||||
}
|
||||
else if (streqi(opt.first.c_str(), L"/REGISTER"))
|
||||
else if (cmderOptions.error == true)
|
||||
{
|
||||
RegisterShellMenu(opt.second, SHELL_MENU_REGISTRY_PATH_BACKGROUND);
|
||||
RegisterShellMenu(opt.second, SHELL_MENU_REGISTRY_PATH_LISTITEM);
|
||||
}
|
||||
else if (streqi(opt.first.c_str(), L"/UNREGISTER"))
|
||||
{
|
||||
UnregisterShellMenu(opt.second, SHELL_MENU_REGISTRY_PATH_BACKGROUND);
|
||||
UnregisterShellMenu(opt.second, SHELL_MENU_REGISTRY_PATH_LISTITEM);
|
||||
return 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
MessageBox(NULL, L"Unrecognized parameter.\n\nValid options:\n /START <path>\n /SINGLE <path>\n /REGISTER [USER/ALL]\n /UNREGISTER [USER/ALL]", MB_TITLE, MB_OK);
|
||||
return 1;
|
||||
StartCmder(cmderOptions.cmderStart, cmderOptions.cmderSingle, cmderOptions.cmderTask, cmderOptions.cmderCfgRoot);
|
||||
}
|
||||
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
Binary file not shown.
Binary file not shown.
@ -19,3 +19,4 @@ appveyor.yml
|
||||
vendor\cmder.sh
|
||||
vendor\git-prompt.sh
|
||||
config\user-*
|
||||
.github_changelog_generator
|
@ -53,6 +53,6 @@ $version = Invoke-Expression "git describe --abbrev=0 --tags"
|
||||
|
||||
foreach ($t in $targets.GetEnumerator()) {
|
||||
Create-Archive $cmderRoot "$saveTo\$($t.Name)" $t.Value
|
||||
$hash = (Digest-MD5 "$saveTo\$($t.Name)")
|
||||
Add-Content "$saveTo\hashes.txt" $hash
|
||||
$hash = (Digest-Hash "$saveTo\$($t.Name)")
|
||||
Add-Content -path "$saveTo\hashes.txt" -value ($t.Name + ' ' + $hash)
|
||||
}
|
@ -1,4 +1,4 @@
|
||||
function Ensure-Exists ($path) {
|
||||
function Ensure-Exists($path) {
|
||||
if (-not (Test-Path $path)) {
|
||||
Write-Error "Missing required $path! Ensure it is installed"
|
||||
exit 1
|
||||
@ -6,7 +6,7 @@ function Ensure-Exists ($path) {
|
||||
return $true > $null
|
||||
}
|
||||
|
||||
function Ensure-Executable ($command) {
|
||||
function Ensure-Executable($command) {
|
||||
try { Get-Command $command -ErrorAction Stop > $null }
|
||||
catch {
|
||||
If( ($command -eq "7z") -and (Test-Path "$env:programfiles\7-zip\7z.exe") ){
|
||||
@ -22,12 +22,12 @@ function Ensure-Executable ($command) {
|
||||
}
|
||||
}
|
||||
|
||||
function Delete-Existing ($path) {
|
||||
function Delete-Existing($path) {
|
||||
Write-Verbose "Remove $path"
|
||||
Remove-Item -Recurse -force $path -ErrorAction SilentlyContinue
|
||||
}
|
||||
|
||||
function Extract-Archive ($source, $target) {
|
||||
function Extract-Archive($source, $target) {
|
||||
Write-Verbose $("Extracting Archive '$cmder_root\vendor\" + $source.replace('/','\') + " to '$cmder_root\vendor\$target'")
|
||||
Invoke-Expression "7z x -y -o`"$($target)`" `"$source`" > `$null"
|
||||
if ($lastexitcode -ne 0) {
|
||||
@ -36,7 +36,7 @@ function Extract-Archive ($source, $target) {
|
||||
Remove-Item $source
|
||||
}
|
||||
|
||||
function Create-Archive ($source, $target, $params) {
|
||||
function Create-Archive($source, $target, $params) {
|
||||
$command = "7z a -x@`"$source\packignore`" $params $target $source > `$null"
|
||||
Write-Verbose "Running: $command"
|
||||
Invoke-Expression $command
|
||||
@ -47,22 +47,22 @@ function Create-Archive ($source, $target, $params) {
|
||||
|
||||
# If directory contains only one child directory
|
||||
# Flatten it instead
|
||||
function Flatten-Directory ($name) {
|
||||
function Flatten-Directory($name) {
|
||||
$child = (Get-Childitem $name)[0]
|
||||
Rename-Item $name -NewName "$($name)_moving"
|
||||
Move-Item -Path "$($name)_moving\$child" -Destination $name
|
||||
Remove-Item -Recurse "$($name)_moving"
|
||||
}
|
||||
|
||||
function Digest-MD5 ($path) {
|
||||
function Digest-Hash($path) {
|
||||
if(Get-Command Get-FileHash -ErrorAction SilentlyContinue){
|
||||
return (Get-FileHash -Algorithm MD5 -Path $path).Hash
|
||||
return (Get-FileHash -Algorithm SHA256 -Path $path).Hash
|
||||
}
|
||||
|
||||
return Invoke-Expression "md5sum $path"
|
||||
}
|
||||
|
||||
function Register-Cmder(){
|
||||
function Register-Cmder() {
|
||||
[CmdletBinding()]
|
||||
Param
|
||||
(
|
||||
@ -76,7 +76,7 @@ function Register-Cmder(){
|
||||
$Command = "%V"
|
||||
|
||||
, # Defaults to the icons folder in the cmder package.
|
||||
$icon = (Split-Path $PathToExe | join-path -ChildPath 'icons/cmder.ico')
|
||||
$icon = (Split-Path $PathToExe | Join-Path -ChildPath 'icons/cmder.ico')
|
||||
)
|
||||
Begin
|
||||
{
|
||||
@ -100,7 +100,7 @@ function Register-Cmder(){
|
||||
}
|
||||
}
|
||||
|
||||
function Unregister-Cmder{
|
||||
function Unregister-Cmder {
|
||||
Begin
|
||||
{
|
||||
New-PSDrive -Name HKCR -PSProvider Registry -Root HKEY_CLASSES_ROOT > $null
|
||||
@ -124,9 +124,9 @@ function Download-File {
|
||||
# I think this is the problem
|
||||
$File = $File -Replace "/", "\"
|
||||
Write-Verbose "Downloading from $Url to $File"
|
||||
$wc = new-object System.Net.WebClient
|
||||
$wc = New-Object System.Net.WebClient
|
||||
if ($env:https_proxy) {
|
||||
$wc.proxy = (new-object System.Net.WebProxy($env:https_proxy))
|
||||
$wc.proxy = (New-Object System.Net.WebProxy($env:https_proxy))
|
||||
}
|
||||
$wc.Proxy.Credentials=[System.Net.CredentialCache]::DefaultNetworkCredentials;
|
||||
$wc.DownloadFile($Url, $File)
|
||||
|
244
vendor/clink.lua
vendored
244
vendor/clink.lua
vendored
@ -3,9 +3,10 @@
|
||||
-- !!! THIS FILE IS OVERWRITTEN WHEN CMDER IS UPDATED
|
||||
-- !!! Use "%CMDER_ROOT%\config\<whatever>.lua" to add your lua startup scripts
|
||||
|
||||
-- luacheck: globals clink
|
||||
|
||||
-- At first, load the original clink.lua file
|
||||
-- this is needed as we set the script path to this dir and therefore the original
|
||||
-- this is needed as we set the script path to this dir and therefore the original
|
||||
-- clink.lua is not loaded.
|
||||
local clink_lua_file = clink.get_env('CMDER_ROOT')..'\\vendor\\clink\\clink.lua'
|
||||
dofile(clink_lua_file)
|
||||
@ -13,11 +14,11 @@ dofile(clink_lua_file)
|
||||
-- now add our own things...
|
||||
|
||||
---
|
||||
-- Setting the prompt in clink means that commands which rewrite the prompt do
|
||||
-- not destroy our own prompt. It also means that started cmds (or batch files
|
||||
-- which echo) don't get the ugly '{lamb}' shown.
|
||||
-- Setting the prompt in clink means that commands which rewrite the prompt do
|
||||
-- not destroy our own prompt. It also means that started cmds (or batch files
|
||||
-- which echo) don't get the ugly '{lamb}' shown.
|
||||
---
|
||||
function set_prompt_filter()
|
||||
local function set_prompt_filter()
|
||||
-- get_cwd() is differently encoded than the clink.prompt.value, so everything other than
|
||||
-- pure ASCII will get garbled. So try to parse the current directory from the original prompt
|
||||
-- and only if that doesn't work, use get_cwd() directly.
|
||||
@ -26,7 +27,7 @@ function set_prompt_filter()
|
||||
local old_prompt = clink.prompt.value
|
||||
local cwd = old_prompt:match('.*(.:[^>]*)>')
|
||||
if cwd == nil then cwd = clink.get_cwd() end
|
||||
|
||||
|
||||
-- environment systems like pythons virtualenv change the PROMPT and usually
|
||||
-- set some variable. But the variables are differently named and we would never
|
||||
-- get them all, so try to parse the env name out of the PROMPT.
|
||||
@ -34,27 +35,26 @@ function set_prompt_filter()
|
||||
local env = old_prompt:match('.*%(([^%)]+)%).+:')
|
||||
-- also check for square brackets
|
||||
if env == nil then env = old_prompt:match('.*%[([^%]]+)%].+:') end
|
||||
|
||||
|
||||
-- build our own prompt
|
||||
-- orig: $E[1;32;40m$P$S{git}{hg}$S$_$E[1;30;40m{lamb}$S$E[0m
|
||||
-- color codes: "\x1b[1;37;40m"
|
||||
local cmder_prompt = "\x1b[1;32;40m{cwd} {git}{hg} \n\x1b[1;30;40m{lamb} \x1b[0m"
|
||||
local cmder_prompt = "\x1b[1;32;40m{cwd} {git}{hg}{svn} \n\x1b[1;39;40m{lamb} \x1b[0m"
|
||||
local lambda = "λ"
|
||||
cmder_prompt = string.gsub(cmder_prompt, "{cwd}", cwd)
|
||||
if env == nil then
|
||||
lambda = "λ"
|
||||
else
|
||||
lambda = "("..env..") λ"
|
||||
if env ~= nil then
|
||||
lambda = "("..env..") "..lambda
|
||||
end
|
||||
clink.prompt.value = string.gsub(cmder_prompt, "{lamb}", lambda)
|
||||
end
|
||||
|
||||
---
|
||||
-- Resolves closest directory location for specified directory.
|
||||
-- Navigates subsequently up one level and tries to find specified directory
|
||||
-- @param {string} path Path to directory will be checked. If not provided
|
||||
-- current directory will be used
|
||||
-- @param {string} dirname Directory name to search for
|
||||
-- @return {string} Path to specified directory or nil if such dir not found
|
||||
-- Resolves closest directory location for specified directory.
|
||||
-- Navigates subsequently up one level and tries to find specified directory
|
||||
-- @param {string} path Path to directory will be checked. If not provided
|
||||
-- current directory will be used
|
||||
-- @param {string} dirname Directory name to search for
|
||||
-- @return {string} Path to specified directory or nil if such dir not found
|
||||
local function get_dir_contains(path, dirname)
|
||||
|
||||
-- return parent path for specified entry (either file or directory)
|
||||
@ -99,10 +99,6 @@ local function get_dir_contains(path, dirname)
|
||||
end
|
||||
end
|
||||
|
||||
local function get_hg_dir(path)
|
||||
return get_dir_contains(path, '.hg')
|
||||
end
|
||||
|
||||
-- adapted from from clink-completions' git.lua
|
||||
local function get_git_dir(path)
|
||||
|
||||
@ -113,12 +109,13 @@ local function get_git_dir(path)
|
||||
if i then
|
||||
prefix = path:sub(1, i-1)
|
||||
end
|
||||
|
||||
return prefix
|
||||
end
|
||||
|
||||
-- Checks if provided directory contains git directory
|
||||
local function has_git_dir(dir)
|
||||
return #clink.find_dirs(dir..'/.git') > 0 and dir..'/.git'
|
||||
return clink.is_dir(dir..'/.git') and dir..'/.git'
|
||||
end
|
||||
|
||||
local function has_git_file(dir)
|
||||
@ -144,67 +141,20 @@ local function get_git_dir(path)
|
||||
or (parent_path ~= path and get_git_dir(parent_path) or nil)
|
||||
end
|
||||
|
||||
---
|
||||
-- Find out current branch
|
||||
-- @return {false|mercurial branch name}
|
||||
---
|
||||
function get_hg_branch()
|
||||
for line in io.popen("hg branch 2>nul"):lines() do
|
||||
local m = line:match("(.+)$")
|
||||
if m then
|
||||
return m
|
||||
end
|
||||
end
|
||||
local function get_hg_dir(path)
|
||||
return get_dir_contains(path, '.hg')
|
||||
end
|
||||
|
||||
return false
|
||||
local function get_svn_dir(path)
|
||||
return get_dir_contains(path, '.svn')
|
||||
end
|
||||
|
||||
---
|
||||
-- Get the status of working dir
|
||||
-- @return {bool}
|
||||
-- Find out current branch
|
||||
-- @return {nil|git branch name}
|
||||
---
|
||||
function get_hg_status()
|
||||
for line in io.popen("hg status -0"):lines() do
|
||||
return false
|
||||
end
|
||||
return true
|
||||
end
|
||||
|
||||
function hg_prompt_filter()
|
||||
|
||||
-- Colors for mercurial status
|
||||
local colors = {
|
||||
clean = "\x1b[1;37;40m",
|
||||
dirty = "\x1b[31;1m",
|
||||
}
|
||||
|
||||
if get_hg_dir() then
|
||||
-- if we're inside of mercurial repo then try to detect current branch
|
||||
local branch = get_hg_branch()
|
||||
if branch then
|
||||
-- Has branch => therefore it is a mercurial folder, now figure out status
|
||||
if get_hg_status() then
|
||||
color = colors.clean
|
||||
else
|
||||
color = colors.dirty
|
||||
end
|
||||
|
||||
clink.prompt.value = string.gsub(clink.prompt.value, "{hg}", color.."("..branch..")")
|
||||
return false
|
||||
end
|
||||
end
|
||||
|
||||
-- No mercurial present or not in mercurial file
|
||||
clink.prompt.value = string.gsub(clink.prompt.value, "{hg}", "")
|
||||
return false
|
||||
end
|
||||
|
||||
---
|
||||
-- Find out current branch
|
||||
-- @return {nil|git branch name}
|
||||
---
|
||||
function get_git_branch(git_dir)
|
||||
local git_dir = git_dir or get_git_dir()
|
||||
local function get_git_branch(git_dir)
|
||||
git_dir = git_dir or get_git_dir()
|
||||
|
||||
-- If git directory not found then we're probably outside of repo
|
||||
-- or something went wrong. The same is when head_file is nil
|
||||
@ -217,21 +167,86 @@ function get_git_branch(git_dir)
|
||||
-- if HEAD matches branch expression, then we're on named branch
|
||||
-- otherwise it is a detached commit
|
||||
local branch_name = HEAD:match('ref: refs/heads/(.+)')
|
||||
|
||||
return branch_name or 'HEAD detached at '..HEAD:sub(1, 7)
|
||||
end
|
||||
|
||||
---
|
||||
-- Get the status of working dir
|
||||
-- @return {bool}
|
||||
-- Find out current branch
|
||||
-- @return {false|mercurial branch name}
|
||||
---
|
||||
function get_git_status()
|
||||
for line in io.popen("git status --porcelain 2>nul"):lines() do
|
||||
local function get_hg_branch()
|
||||
for line in io.popen("hg branch 2>nul"):lines() do
|
||||
local m = line:match("(.+)$")
|
||||
if m then
|
||||
return m
|
||||
end
|
||||
end
|
||||
|
||||
return false
|
||||
end
|
||||
|
||||
---
|
||||
-- Find out current branch
|
||||
-- @return {false|svn branch name}
|
||||
---
|
||||
local function get_svn_branch(svn_dir)
|
||||
for line in io.popen("svn info 2>nul"):lines() do
|
||||
local m = line:match("^Relative URL:")
|
||||
if m then
|
||||
return line:sub(line:find("/")+1,line:len())
|
||||
end
|
||||
end
|
||||
|
||||
return false
|
||||
end
|
||||
|
||||
---
|
||||
-- Get the status of working dir
|
||||
-- @return {bool}
|
||||
---
|
||||
local function get_git_status()
|
||||
local file = io.popen("git --no-optional-locks status --porcelain 2>nul")
|
||||
for line in file:lines() do
|
||||
file:close()
|
||||
return false
|
||||
end
|
||||
file:close()
|
||||
|
||||
return true
|
||||
end
|
||||
|
||||
function git_prompt_filter()
|
||||
---
|
||||
-- Get the status of working dir
|
||||
-- @return {bool}
|
||||
---
|
||||
local function get_hg_status()
|
||||
local file = io.popen("hg status -0")
|
||||
for line in file:lines() do
|
||||
file:close()
|
||||
return false
|
||||
end
|
||||
file:close()
|
||||
|
||||
return true
|
||||
end
|
||||
|
||||
---
|
||||
-- Get the status of working dir
|
||||
-- @return {bool}
|
||||
---
|
||||
function get_svn_status()
|
||||
local file = io.popen("svn status -q")
|
||||
for line in file:lines() do
|
||||
file:close()
|
||||
return false
|
||||
end
|
||||
file:close()
|
||||
|
||||
return true
|
||||
end
|
||||
|
||||
local function git_prompt_filter()
|
||||
|
||||
-- Colors for git status
|
||||
local colors = {
|
||||
@ -243,6 +258,7 @@ function git_prompt_filter()
|
||||
if git_dir then
|
||||
-- if we're inside of git repo then try to detect current branch
|
||||
local branch = get_git_branch(git_dir)
|
||||
local color
|
||||
if branch then
|
||||
-- Has branch => therefore it is a git folder, now figure out status
|
||||
if get_git_status() then
|
||||
@ -261,10 +277,69 @@ function git_prompt_filter()
|
||||
return false
|
||||
end
|
||||
|
||||
local function hg_prompt_filter()
|
||||
|
||||
-- Colors for mercurial status
|
||||
local colors = {
|
||||
clean = "\x1b[1;37;40m",
|
||||
dirty = "\x1b[31;1m",
|
||||
}
|
||||
|
||||
if get_hg_dir() then
|
||||
-- if we're inside of mercurial repo then try to detect current branch
|
||||
local branch = get_hg_branch()
|
||||
local color
|
||||
if branch then
|
||||
-- Has branch => therefore it is a mercurial folder, now figure out status
|
||||
if get_hg_status() then
|
||||
color = colors.clean
|
||||
else
|
||||
color = colors.dirty
|
||||
end
|
||||
|
||||
clink.prompt.value = string.gsub(clink.prompt.value, "{hg}", color.."("..branch..")")
|
||||
return false
|
||||
end
|
||||
end
|
||||
|
||||
-- No mercurial present or not in mercurial file
|
||||
clink.prompt.value = string.gsub(clink.prompt.value, "{hg}", "")
|
||||
return false
|
||||
end
|
||||
|
||||
local function svn_prompt_filter()
|
||||
-- Colors for svn status
|
||||
local colors = {
|
||||
clean = "\x1b[1;37;40m",
|
||||
dirty = "\x1b[31;1m",
|
||||
}
|
||||
|
||||
if get_svn_dir() then
|
||||
-- if we're inside of svn repo then try to detect current branch
|
||||
local branch = get_svn_branch()
|
||||
local color
|
||||
if branch then
|
||||
if get_svn_status() then
|
||||
color = colors.clean
|
||||
else
|
||||
color = colors.dirty
|
||||
end
|
||||
|
||||
clink.prompt.value = string.gsub(clink.prompt.value, "{svn}", color.."("..branch..")")
|
||||
return false
|
||||
end
|
||||
end
|
||||
|
||||
-- No mercurial present or not in mercurial file
|
||||
clink.prompt.value = string.gsub(clink.prompt.value, "{svn}", "")
|
||||
return false
|
||||
end
|
||||
|
||||
-- insert the set_prompt at the very beginning so that it runs first
|
||||
clink.prompt.register_filter(set_prompt_filter, 1)
|
||||
clink.prompt.register_filter(hg_prompt_filter, 50)
|
||||
clink.prompt.register_filter(git_prompt_filter, 50)
|
||||
clink.prompt.register_filter(svn_prompt_filter, 50)
|
||||
|
||||
local completions_dir = clink.get_env('CMDER_ROOT')..'/vendor/clink-completions/'
|
||||
for _,lua_module in ipairs(clink.find_files(completions_dir..'*.lua')) do
|
||||
@ -276,4 +351,3 @@ for _,lua_module in ipairs(clink.find_files(completions_dir..'*.lua')) do
|
||||
dofile(filename)
|
||||
end
|
||||
end
|
||||
|
||||
|
50
vendor/cmder.sh
vendored
50
vendor/cmder.sh
vendored
@ -7,6 +7,20 @@
|
||||
# Add system specific users customizations to $HOME/.bashrc, these
|
||||
# customizations will not follow Cmder to another machine.
|
||||
|
||||
function runProfiled {
|
||||
unset profile_d_scripts
|
||||
pushd "${1}" >/dev/null
|
||||
profile_d_scripts=$(ls *.sh 2>/dev/null)
|
||||
|
||||
if [ ! "x${profile_d_scripts}" = "x" ] ; then
|
||||
for x in ${profile_d_scripts} ; do
|
||||
echo Sourcing "${1}/${x}"...
|
||||
. "${1}/${x}"
|
||||
done
|
||||
fi
|
||||
popd >/dev/null
|
||||
}
|
||||
|
||||
# We do this for bash as admin sessions since $CMDER_ROOT is not being set
|
||||
if [ "$CMDER_ROOT" == "" ] ; then
|
||||
case "$ConEmuDir" in *\\*) CMDER_ROOT=$( cd "$(cygpath -u "$ConEmuDir")/../.." ; pwd );; esac
|
||||
@ -38,28 +52,32 @@ export PATH
|
||||
# Drop *.sh or *.zsh files into "${CMDER_ROOT}\config\profile.d"
|
||||
# to source them at startup.
|
||||
if [ ! -d "${CMDER_ROOT}/config/profile.d" ] ; then
|
||||
mkdir -p ${CMDER_ROOT}/config/profile.d
|
||||
mkdir -p "${CMDER_ROOT}/config/profile.d"
|
||||
fi
|
||||
|
||||
if [ -d "${CMDER_ROOT}/config/profile.d" ] ; then
|
||||
unset profile_d_scripts
|
||||
pushd ${CMDER_ROOT}/config/profile.d >/dev/null
|
||||
profile_d_scripts=$(ls ${CMDER_ROOT}/config/profile.d/*.sh 2>/dev/null)
|
||||
|
||||
if [ ! "x${profile_d_scripts}" = "x" ] ; then
|
||||
for x in ${profile_d_scripts} ; do
|
||||
# echo Sourcing "${x}"...
|
||||
. $x
|
||||
done
|
||||
fi
|
||||
popd >/dev/null
|
||||
runProfiled "${CMDER_ROOT}/config/profile.d"
|
||||
fi
|
||||
|
||||
if [ -f ${CMDER_ROOT}/config/user-profile.sh ] ; then
|
||||
. ${CMDER_ROOT}/config/user-profile.sh
|
||||
if [ -d "${CMDER_USER_CONFIG}/profile.d" ] ; then
|
||||
runProfiled "${CMDER_USER_CONFIG}/profile.d"
|
||||
fi
|
||||
|
||||
if [ -f "${CMDER_ROOT}/config/user-profile.sh" ] ; then
|
||||
. "${CMDER_ROOT}/config/user-profile.sh"
|
||||
fi
|
||||
|
||||
if [ -f "${CMDER_USER_CONFIG}/user-profile.sh" ] ; then
|
||||
. "${CMDER_USER_CONFIG}/user-profile.sh"
|
||||
else
|
||||
echo Creating user startup file: "${CMDER_ROOT}/config/user-profile.sh"
|
||||
cat <<-eof >"${CMDER_ROOT}/config/user-profile.sh"
|
||||
if [ "${CMDER_USER_CONFIG}" != "" ] ; then
|
||||
initialProfile="${CMDER_USER_CONFIG}/user-profile.sh"
|
||||
else
|
||||
initialProfile="${CMDER_ROOT}/config/user-profile.sh"
|
||||
fi
|
||||
|
||||
echo Creating user startup file: "${initialProfile}"
|
||||
cat <<-eof >"${initialProfile}"
|
||||
# use this file to run your own startup commands for msys2 bash'
|
||||
|
||||
# To add a new vendor to the path, do something like:
|
||||
|
60
vendor/cmder_exinit
vendored
60
vendor/cmder_exinit
vendored
@ -22,6 +22,25 @@
|
||||
# # from outside Cmder.
|
||||
# CMDER_ROOT=${USERPROFILE}/cmder # This is not required if launched from Cmder.
|
||||
|
||||
function runProfiled {
|
||||
unset profile_d_scripts
|
||||
pushd "${1}" >/dev/null
|
||||
|
||||
if [ ! "x${ZSH_VERSION}" = "x" ]; then
|
||||
profile_d_scripts=$(ls *.zsh 2>/dev/null)
|
||||
elif [ ! "x${BASH_VERSION}" = "x" ]; then
|
||||
profile_d_scripts=$(ls *.sh 2>/dev/null)
|
||||
fi
|
||||
|
||||
if [ ! "x${profile_d_scripts}" = "x" ] ; then
|
||||
for x in ${profile_d_scripts} ; do
|
||||
echo Sourcing "${1}/${x}"...
|
||||
. "${1}/${x}"
|
||||
done
|
||||
fi
|
||||
popd >/dev/null
|
||||
}
|
||||
|
||||
# Check that we haven't already been sourced.
|
||||
[[ -z ${CMDER_EXINIT} ]] && CMDER_EXINIT="1" || return
|
||||
|
||||
@ -51,32 +70,33 @@ if [ ! "$CMDER_ROOT" = "" ] ; then
|
||||
# Drop *.sh or *.zsh files into "${CMDER_ROOT}\config\profile.d"
|
||||
# to source them at startup.
|
||||
if [ ! -d "${CMDER_ROOT}/config/profile.d" ] ; then
|
||||
mkdir -p ${CMDER_ROOT}/config/profile.d
|
||||
mkdir -p "${CMDER_ROOT}/config/profile.d"
|
||||
fi
|
||||
|
||||
if [ -d "${CMDER_ROOT}/config/profile.d" ] ; then
|
||||
unset profile_d_scripts
|
||||
pushd ${CMDER_ROOT}/config/profile.d >/dev/null
|
||||
if [ ! "x${ZSH_VERSION}" = "x" ]; then
|
||||
profile_d_scripts=$(ls ${CMDER_ROOT}/config/profile.d/*.zsh 2>/dev/null)
|
||||
elif [ ! "x${BASH_VERSION}" = "x" ]; then
|
||||
profile_d_scripts=$(ls ${CMDER_ROOT}/config/profile.d/*.sh 2>/dev/null)
|
||||
fi
|
||||
|
||||
if [ ! "x${profile_d_scripts}" = "x" ] ; then
|
||||
for x in ${profile_d_scripts} ; do
|
||||
# echo Sourcing "${x}"...
|
||||
. $x
|
||||
done
|
||||
fi
|
||||
popd >/dev/null
|
||||
runProfiled "${CMDER_ROOT}/config/profile.d"
|
||||
fi
|
||||
|
||||
if [ -f ${CMDER_ROOT}/config/user-profile.sh ] ; then
|
||||
. ${CMDER_ROOT}/config/user-profile.sh
|
||||
if [ -d "${CMDER_USER_CONFIG}/profile.d" ] ; then
|
||||
runProfiled "${CMDER_USER_CONFIG}/profile.d"
|
||||
fi
|
||||
|
||||
|
||||
if [ -f "${CMDER_ROOT}/config/user-profile.sh" ] ; then
|
||||
. "${CMDER_ROOT}/config/user-profile.sh"
|
||||
fi
|
||||
|
||||
if [ -f "${CMDER_USER_CONFIG}/user-profile.sh" ] ; then
|
||||
. "${CMDER_USER_CONFIG}/user-profile.sh"
|
||||
else
|
||||
echo Creating user startup file: "${CMDER_ROOT}/config/user-profile.sh"
|
||||
cat <<-eof >"${CMDER_ROOT}/config/user-profile.sh"
|
||||
if [ "${CMDER_USER_CONFIG}" != "" ] ; then
|
||||
initialProfile="${CMDER_USER_CONFIG}/user-profile.sh"
|
||||
else
|
||||
initialProfile="${CMDER_ROOT}/config/user-profile.sh"
|
||||
fi
|
||||
|
||||
echo Creating user startup file: "${initialProfile}"
|
||||
cat <<-eof >"${initialProfile}"
|
||||
# use this file to run your own startup commands for msys2 bash'
|
||||
|
||||
# To add a new vendor to the path, do something like:
|
||||
|
57
vendor/git-prompt.sh
vendored
57
vendor/git-prompt.sh
vendored
@ -1,22 +1,39 @@
|
||||
PS1='\[\033]0;$MSYSTEM:${PWD//[^[:ascii:]]/?}\007\]' # set window title
|
||||
PS1="$PS1"'\[\033[32m\]' # change to green
|
||||
PS1="$PS1"'\u@\h ' # user@host<space>
|
||||
PS1="$PS1"'\[\033[33m\]' # change to brownish yellow
|
||||
PS1="$PS1"'\w' # current working directory
|
||||
if test -z "$WINELOADERNOEXEC"
|
||||
if test -f /etc/profile.d/git-sdk.sh
|
||||
then
|
||||
GIT_EXEC_PATH="$(git --exec-path 2>/dev/null)"
|
||||
COMPLETION_PATH="${GIT_EXEC_PATH%/libexec/git-core}"
|
||||
COMPLETION_PATH="${COMPLETION_PATH%/lib/git-core}"
|
||||
COMPLETION_PATH="$COMPLETION_PATH/share/git/completion"
|
||||
if test -f "$COMPLETION_PATH/git-prompt.sh"
|
||||
then
|
||||
. "$COMPLETION_PATH/git-completion.bash"
|
||||
. "$COMPLETION_PATH/git-prompt.sh"
|
||||
PS1="$PS1"'\[\033[36m\]' # change color to cyan
|
||||
PS1="$PS1"'`__git_ps1`' # bash function
|
||||
fi
|
||||
TITLEPREFIX=SDK-${MSYSTEM#MINGW}
|
||||
else
|
||||
TITLEPREFIX=$MSYSTEM
|
||||
fi
|
||||
PS1="$PS1"'\[\033[0m\]' # change color
|
||||
PS1="$PS1"'\n' # new line
|
||||
PS1="$PS1"'λ ' # prompt: always λ
|
||||
|
||||
if test -f ~/.config/git/git-prompt.sh
|
||||
then
|
||||
. ~/.config/git/git-prompt.sh
|
||||
else
|
||||
PS1='\[\033]0;$MSYSTEM:${PWD//[^[:ascii:]]/?}\007\]' # set window title
|
||||
# PS1="$PS1"'\n' # new line
|
||||
PS1="$PS1"'\[\033[32m\]' # change to green
|
||||
PS1="$PS1"'\u@\h ' # user@host<space>
|
||||
# PS1="$PS1"'\[\033[35m\]' # change to purple
|
||||
# PS1="$PS1"'$MSYSTEM ' # show MSYSTEM
|
||||
PS1="$PS1"'\[\033[33m\]' # change to brownish yellow
|
||||
PS1="$PS1"'\w' # current working directory
|
||||
if test -z "$WINELOADERNOEXEC"
|
||||
then
|
||||
GIT_EXEC_PATH="$(git --exec-path 2>/dev/null)"
|
||||
COMPLETION_PATH="${GIT_EXEC_PATH%/libexec/git-core}"
|
||||
COMPLETION_PATH="${COMPLETION_PATH%/lib/git-core}"
|
||||
COMPLETION_PATH="$COMPLETION_PATH/share/git/completion"
|
||||
if test -f "$COMPLETION_PATH/git-prompt.sh"
|
||||
then
|
||||
. "$COMPLETION_PATH/git-completion.bash"
|
||||
. "$COMPLETION_PATH/git-prompt.sh"
|
||||
PS1="$PS1"'\[\033[36m\]' # change color to cyan
|
||||
PS1="$PS1"'`__git_ps1`' # bash function
|
||||
fi
|
||||
fi
|
||||
PS1="$PS1"'\[\033[0m\]' # change color
|
||||
PS1="$PS1"'\n' # new line
|
||||
PS1="$PS1"'λ ' # prompt: always λ
|
||||
fi
|
||||
|
||||
MSYS2_PS1="$PS1" # for detection by MSYS2 SDK's bash.basrc
|
||||
|
467
vendor/init.bat
vendored
467
vendor/init.bat
vendored
@ -6,32 +6,112 @@
|
||||
:: !!! THIS FILE IS OVERWRITTEN WHEN CMDER IS UPDATED
|
||||
:: !!! Use "%CMDER_ROOT%\config\user-profile.cmd" to add your own startup commands
|
||||
|
||||
:: Set to > 0 for verbose output to aid in debugging.
|
||||
if not defined verbose-output ( set verbose-output=0 )
|
||||
:: Use /v command line arg or set to > 0 for verbose output to aid in debugging.
|
||||
set verbose-output=0
|
||||
set debug-output=0
|
||||
set max_depth=1
|
||||
|
||||
:: Find root dir
|
||||
if not defined CMDER_ROOT (
|
||||
for /f "delims=" %%i in ("%ConEmuDir%\..\..") do set "CMDER_ROOT=%%~fi"
|
||||
if defined ConEmuDir (
|
||||
for /f "delims=" %%i in ("%ConEmuDir%\..\..") do (
|
||||
set "CMDER_ROOT=%%~fi"
|
||||
)
|
||||
) else (
|
||||
for /f "delims=" %%i in ("%~dp0\..") do (
|
||||
set "CMDER_ROOT=%%~fi"
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
:: Remove trailing '\'
|
||||
:: Remove trailing '\' from %CMDER_ROOT%
|
||||
if "%CMDER_ROOT:~-1%" == "\" SET "CMDER_ROOT=%CMDER_ROOT:~0,-1%"
|
||||
|
||||
:var_loop
|
||||
if "%~1" == "" (
|
||||
goto :start
|
||||
) else if "%1"=="/v" (
|
||||
set verbose-output=1
|
||||
) else if "%1"=="/d" (
|
||||
set debug-output=1
|
||||
) else if "%1" == "/max_depth" (
|
||||
if "%~2" geq "1" if "%~2" leq "5" (
|
||||
set "max_depth=%~2"
|
||||
shift
|
||||
) else (
|
||||
call :show_error '/max_depth' requires a number between 1 and 5!
|
||||
exit /b
|
||||
)
|
||||
) else if "%1" == "/c" (
|
||||
if exist "%~2" (
|
||||
if not exist "%~2\bin" mkdir "%~2\bin"
|
||||
set "cmder_user_bin=%~2\bin"
|
||||
if not exist "%~2\config\profile.d" mkdir "%~2\config\profile.d"
|
||||
set "cmder_user_config=%~2\config"
|
||||
shift
|
||||
)
|
||||
) else if "%1" == "/user_aliases" (
|
||||
if exist "%~2" (
|
||||
set "user-aliases=%~2"
|
||||
shift
|
||||
)
|
||||
) else if "%1" == "/git_install_root" (
|
||||
if exist "%~2" (
|
||||
set "GIT_INSTALL_ROOT=%~2"
|
||||
shift
|
||||
) else (
|
||||
call :show_error The Git install root folder "%2", you specified does not exist!
|
||||
exit /b
|
||||
)
|
||||
) else if "%1" == "/home" (
|
||||
if exist "%~2" (
|
||||
set "HOME=%~2"
|
||||
shift
|
||||
) else (
|
||||
call :show_error The home folder "%2", you specified does not exist!
|
||||
exit /b
|
||||
)
|
||||
) else if "%1" == "/svn_ssh" (
|
||||
set SVN_SSH=%2
|
||||
shift
|
||||
)
|
||||
shift
|
||||
goto var_loop
|
||||
|
||||
:start
|
||||
|
||||
call :debug-output init.bat - Env Var - CMDER_ROOT=%CMDER_ROOT%
|
||||
call :debug-output init.bat - Env Var - debug-output=%debug-output%
|
||||
|
||||
if defined CMDER_USER_CONFIG (
|
||||
call :debug-output init.bat - CMDER IS ALSO USING INDIVIDUAL USER CONFIG FROM '%CMDER_USER_CONFIG%'!
|
||||
)
|
||||
|
||||
:: Pick right version of clink
|
||||
if "%PROCESSOR_ARCHITECTURE%"=="x86" (
|
||||
set architecture=86
|
||||
set architecture_bits=32
|
||||
) else (
|
||||
set architecture=64
|
||||
set architecture_bits=64
|
||||
)
|
||||
|
||||
:: Tell the user about the clink config files...
|
||||
if not exist "%CMDER_ROOT%\config\settings" (
|
||||
if defined "%CMDER_USER_CONFIG%\settings" if not exist "%CMDER_USER_CONFIG%\settings" (
|
||||
echo Generating clink initial settings in "%CMDER_USER_CONFIG%\settings"
|
||||
echo Additional *.lua files in "%CMDER_USER_CONFIG%" are loaded on startup.\
|
||||
|
||||
} else if not exist "%CMDER_ROOT%\config\settings" (
|
||||
echo Generating clink initial settings in "%CMDER_ROOT%\config\settings"
|
||||
echo Additional *.lua files in "%CMDER_ROOT%\config" are loaded on startup.
|
||||
)
|
||||
|
||||
:: Run clink
|
||||
"%CMDER_ROOT%\vendor\clink\clink_x%architecture%.exe" inject --quiet --profile "%CMDER_ROOT%\config" --scripts "%CMDER_ROOT%\vendor"
|
||||
if defined CMDER_USER_CONFIG (
|
||||
"%CMDER_ROOT%\vendor\clink\clink_x%architecture%.exe" inject --quiet --profile "%CMDER_USER_CONFIG%" --scripts "%CMDER_ROOT%\vendor"
|
||||
) else (
|
||||
"%CMDER_ROOT%\vendor\clink\clink_x%architecture%.exe" inject --quiet --profile "%CMDER_ROOT%\config" --scripts "%CMDER_ROOT%\vendor"
|
||||
)
|
||||
|
||||
:: Prepare for git-for-windows
|
||||
|
||||
@ -43,34 +123,59 @@ if not defined TERM set TERM=cygwin
|
||||
:: * if the users points as to a specific git, use that
|
||||
:: * test if a git is in path and if yes, use that
|
||||
:: * last, use our vendored git
|
||||
:: also check that we have a recent enough version of git (e.g. test for GIT\cmd\git.exe)
|
||||
:: also check that we have a recent enough version of git by examining the version string
|
||||
if defined GIT_INSTALL_ROOT (
|
||||
if exist "%GIT_INSTALL_ROOT%\cmd\git.exe" (goto :FOUND_GIT)
|
||||
)
|
||||
|
||||
:: check if git is in path...
|
||||
:: get the version information for vendored git binary
|
||||
setlocal enabledelayedexpansion
|
||||
for /F "delims=" %%F in ('where git.exe 2^>nul') do @(
|
||||
call :read_version VENDORED "%CMDER_ROOT%\vendor\git-for-windows\cmd"
|
||||
|
||||
:: check if git is in path...
|
||||
for /F "delims=" %%F in ('where git.exe 2^>nul') do (
|
||||
:: get the absolute path to the user provided git binary
|
||||
pushd %%~dpF
|
||||
cd ..
|
||||
set "test_dir=!CD!"
|
||||
popd
|
||||
if exist "!test_dir!\cmd\git.exe" (
|
||||
set "GIT_INSTALL_ROOT=!test_dir!"
|
||||
set test_dir=
|
||||
goto :FOUND_GIT
|
||||
|
||||
:: get the version information for the user provided git binary
|
||||
call :read_version USER "!test_dir!"
|
||||
|
||||
if !errorlevel! geq 0 (
|
||||
:: compare the user git version against the vendored version
|
||||
call :compare_versions USER VENDORED
|
||||
|
||||
:: use the user provided git if its version is greater than, or equal to the vendored git
|
||||
if !errorlevel! geq 0 if exist "!test_dir:~0,-4!\cmd\git.exe" (
|
||||
set "GIT_INSTALL_ROOT=!test_dir:~0,-4!"
|
||||
set test_dir=
|
||||
goto :FOUND_GIT
|
||||
) else if !errorlevel! geq 0 (
|
||||
set "GIT_INSTALL_ROOT=!test_dir!"
|
||||
set test_dir=
|
||||
goto :FOUND_GIT
|
||||
) else (
|
||||
call :verbose-output Found old !GIT_VERSION_USER! in "!test_dir!", but not using...
|
||||
set test_dir=
|
||||
)
|
||||
) else (
|
||||
echo Found old git version in "!test_dir!", but not using...
|
||||
set test_dir=
|
||||
|
||||
:: if the user provided git executable is not found
|
||||
if !errorlevel! equ -255 (
|
||||
call :verbose-output No git at "!git_executable!" found.
|
||||
set test_dir=
|
||||
)
|
||||
|
||||
)
|
||||
|
||||
)
|
||||
|
||||
:: our last hope: our own git...
|
||||
:VENDORED_GIT
|
||||
if exist "%CMDER_ROOT%\vendor\git-for-windows" (
|
||||
set "GIT_INSTALL_ROOT=%CMDER_ROOT%\vendor\git-for-windows"
|
||||
call :verbose-output Add the minimal git commands to the front of the path
|
||||
set "PATH=!GIT_INSTALL_ROOT!\cmd;%PATH%"
|
||||
call :enhance_path "!GIT_INSTALL_ROOT!\cmd"
|
||||
) else (
|
||||
goto :NO_GIT
|
||||
)
|
||||
@ -79,38 +184,48 @@ if exist "%CMDER_ROOT%\vendor\git-for-windows" (
|
||||
:: Add git to the path
|
||||
if defined GIT_INSTALL_ROOT (
|
||||
rem add the unix commands at the end to not shadow windows commands like more
|
||||
call :verbose-output Enhancing PATH with unix commands from git in "%GIT_INSTALL_ROOT%\usr\bin"
|
||||
set "PATH=%PATH%;%GIT_INSTALL_ROOT%\usr\bin;%GIT_INSTALL_ROOT%\usr\share\vim\vim74"
|
||||
if exist "!GIT_INSTALL_ROOT!\cmd\git.exe" call :enhance_path "!GIT_INSTALL_ROOT!\cmd" append
|
||||
if exist "!GIT_INSTALL_ROOT!\mingw32" (
|
||||
call :enhance_path "!GIT_INSTALL_ROOT!\mingw32" append
|
||||
) else if exist "!GIT_INSTALL_ROOT!\mingw64" (
|
||||
call :enhance_path "!GIT_INSTALL_ROOT!\mingw64" append
|
||||
)
|
||||
if exist "!GIT_INSTALL_ROOT!\usr\bin" call :enhance_path "%GIT_INSTALL_ROOT%\usr\bin" append
|
||||
:: define SVN_SSH so we can use git svn with ssh svn repositories
|
||||
if not defined SVN_SSH set "SVN_SSH=%GIT_INSTALL_ROOT:\=\\%\\bin\\ssh.exe"
|
||||
)
|
||||
|
||||
:NO_GIT
|
||||
endlocal & set "PATH=%PATH%" & set "SVN_SSH=%SVN_SSH%" & set "GIT_INSTALL_ROOT=%GIT_INSTALL_ROOT%"
|
||||
call :debug-output init.bat - Env Var - GIT_INSTALL_ROOT=%GIT_INSTALL_ROOT%
|
||||
|
||||
:: Enhance Path
|
||||
set "PATH=%CMDER_ROOT%\bin;%PATH%;%CMDER_ROOT%\"
|
||||
call :enhance_path_recursive "%CMDER_ROOT%\bin" %max_depth%
|
||||
if defined CMDER_USER_BIN (
|
||||
call :enhance_path "%CMDER_USER_BIN%" %max_depth%
|
||||
)
|
||||
call :enhance_path "%CMDER_ROOT%" append
|
||||
|
||||
:: Drop *.bat and *.cmd files into "%CMDER_ROOT%\config\profile.d"
|
||||
:: to run them at startup.
|
||||
if not exist "%CMDER_ROOT%\config\profile.d" (
|
||||
mkdir "%CMDER_ROOT%\config\profile.d"
|
||||
call :run_profile_d "%CMDER_ROOT%\config\profile.d"
|
||||
if defined CMDER_USER_CONFIG (
|
||||
call :run_profile_d "%CMDER_USER_CONFIG%\profile.d"
|
||||
)
|
||||
|
||||
pushd "%CMDER_ROOT%\config\profile.d"
|
||||
for /f "usebackq" %%x in ( `dir /b *.bat *.cmd 2^>nul` ) do (
|
||||
call :verbose-output Calling "%CMDER_ROOT%\config\profile.d\%%x"...
|
||||
call "%CMDER_ROOT%\config\profile.d\%%x"
|
||||
)
|
||||
popd
|
||||
|
||||
:: Allows user to override default aliases store using profile.d
|
||||
:: scripts run above by setting the 'aliases' env variable.
|
||||
::
|
||||
:: Note: If overriding default aliases store file the aliases
|
||||
:: must also be self executing, see '.\user-aliases.cmd.example',
|
||||
:: and be in profile.d folder.
|
||||
set "user-aliases=%CMDER_ROOT%\config\user-aliases.cmd"
|
||||
if not defined user-aliases (
|
||||
if defined CMDER_USER_CONFIG (
|
||||
set "user-aliases=%CMDER_USER_CONFIG%\user-aliases.cmd"
|
||||
) else (
|
||||
set "user-aliases=%CMDER_ROOT%\config\user-aliases.cmd"
|
||||
)
|
||||
)
|
||||
|
||||
:: The aliases environment variable is used by alias.bat to id
|
||||
:: the default file to store new aliases in.
|
||||
@ -121,14 +236,19 @@ if not defined aliases (
|
||||
:: Make sure we have a self-extracting user-aliases.cmd file
|
||||
setlocal enabledelayedexpansion
|
||||
if not exist "%user-aliases%" (
|
||||
echo Creating intial user-aliases store in "%user-aliases%"...
|
||||
echo Creating initial user-aliases store in "%user-aliases%"...
|
||||
copy "%CMDER_ROOT%\vendor\user-aliases.cmd.example" "%user-aliases%"
|
||||
) else (
|
||||
type "%user-aliases%" | findstr /i ";= Add aliases below here" >nul
|
||||
if "!errorlevel!" == "1" (
|
||||
echo Creating intial user-aliases store in "%user-aliases%"...
|
||||
copy "%CMDER_ROOT%\%user-aliases%" "%user-aliases%.old_format"
|
||||
copy "%CMDER_ROOT%\vendor\user-aliases.cmd.example" "%user-aliases%"
|
||||
echo Creating initial user-aliases store in "%user-aliases%"...
|
||||
if defined CMDER_USER_CONFIG (
|
||||
copy "%user-aliases%" "%user-aliases%.old_format"
|
||||
copy "%CMDER_ROOT%\vendor\user-aliases.cmd.example" "%user-aliases%"
|
||||
) else (
|
||||
copy "%user-aliases%" "%user-aliases%.old_format"
|
||||
copy "%CMDER_ROOT%\vendor\user-aliases.cmd.example" "%user-aliases%"
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
@ -141,42 +261,56 @@ if exist "%CMDER_ROOT%\config\aliases" (
|
||||
type "%user-aliases%.old_format" >> "%user-aliases%" && del "%user-aliases%.old_format"
|
||||
)
|
||||
endlocal
|
||||
|
||||
:: Add aliases to the environment
|
||||
call "%user-aliases%"
|
||||
|
||||
:: See vendor\git-for-windows\README.portable for why we do this
|
||||
:: Basically we need to execute this post-install.bat because we are
|
||||
:: manually extracting the archive rather than executing the 7z sfx
|
||||
if exist "%CMDER_ROOT%\vendor\git-for-windows\post-install.bat" (
|
||||
if exist "%GIT_INSTALL_ROOT%\post-install.bat" (
|
||||
call :verbose-output Running Git for Windows one time Post Install....
|
||||
cd /d "%CMDER_ROOT%\vendor\git-for-windows\"
|
||||
"%CMDER_ROOT%\vendor\git-for-windows\git-bash.exe" --no-needs-console --hide --no-cd --command=post-install.bat
|
||||
cd /d %USERPROFILE%
|
||||
pushd "%GIT_INSTALL_ROOT%\"
|
||||
"%GIT_INSTALL_ROOT%\git-bash.exe" --no-needs-console --hide --no-cd --command=post-install.bat
|
||||
popd
|
||||
)
|
||||
|
||||
:: Set home path
|
||||
if not defined HOME set "HOME=%USERPROFILE%"
|
||||
|
||||
:: This is either a env variable set by the user or the result of
|
||||
:: cmder.exe setting this variable due to a commandline argument or a "cmder here"
|
||||
if defined CMDER_START (
|
||||
cd /d "%CMDER_START%"
|
||||
)
|
||||
|
||||
call :debug-output init.bat - Env Var - HOME=%HOME%
|
||||
|
||||
if exist "%CMDER_ROOT%\config\user-profile.cmd" (
|
||||
REM Create this file and place your own command in there
|
||||
call "%CMDER_ROOT%\config\user-profile.cmd"
|
||||
)
|
||||
|
||||
if defined CMDER_USER_CONFIG if exist "%CMDER_USER_CONFIG%\user-profile.cmd" (
|
||||
REM Create this file and place your own command in there
|
||||
call "%CMDER_USER_CONFIG%\user-profile.cmd"
|
||||
) else (
|
||||
echo Creating user startup file: "%CMDER_ROOT%\config\user-profile.cmd"
|
||||
(
|
||||
echo :: use this file to run your own startup commands
|
||||
echo :: use in front of the command to prevent printing the command
|
||||
echo.
|
||||
echo :: call "%%GIT_INSTALL_ROOT%%/cmd/start-ssh-agent.cmd"
|
||||
echo :: set "PATH=%%CMDER_ROOT%%\vendor\whatever;%%PATH%%"
|
||||
echo.
|
||||
) > "%CMDER_ROOT%\config\user-profile.cmd"
|
||||
echo :: use this file to run your own startup commands
|
||||
echo :: use in front of the command to prevent printing the command
|
||||
echo.
|
||||
echo :: uncomment this to have the ssh agent load when cmder starts
|
||||
echo :: call "%%GIT_INSTALL_ROOT%%/cmd/start-ssh-agent.cmd"
|
||||
echo.
|
||||
echo :: uncomment this next two lines to use pageant as the ssh authentication agent
|
||||
echo :: SET SSH_AUTH_SOCK=/tmp/.ssh-pageant-auth-sock
|
||||
echo :: call "%%GIT_INSTALL_ROOT%%/cmd/start-ssh-pageant.cmd"
|
||||
echo.
|
||||
echo :: you can add your plugins to the cmder path like so
|
||||
echo :: set "PATH=%%CMDER_ROOT%%\vendor\whatever;%%PATH%%"
|
||||
echo.
|
||||
echo @echo off
|
||||
) >"%temp%\user-profile.tmp"
|
||||
|
||||
if defined CMDER_USER_CONFIG (
|
||||
copy "%temp%\user-profile.tmp" "%CMDER_USER_CONFIG%\user-profile.cmd"
|
||||
) else (
|
||||
copy "%temp%\user-profile.tmp" "%CMDER_ROOT%\config\user-profile.cmd"
|
||||
)
|
||||
)
|
||||
|
||||
exit /b
|
||||
@ -184,6 +318,229 @@ exit /b
|
||||
::
|
||||
:: sub-routines below here
|
||||
::
|
||||
:verbose-output
|
||||
if %verbose-output% gtr 0 echo %*
|
||||
:debug-output
|
||||
if %debug-output% gtr 0 echo %* & echo.
|
||||
exit /b
|
||||
|
||||
:verbose-output
|
||||
if %debug-output% gtr 0 (
|
||||
call :debug-output :verbose-output - %*
|
||||
) else if %verbose-output% gtr 0 (
|
||||
echo %*
|
||||
)
|
||||
exit /b
|
||||
|
||||
:show_error
|
||||
echo ERROR: %*
|
||||
echo CMDER Shell Initialization has Failed!
|
||||
exit /b
|
||||
|
||||
:run_profile_d
|
||||
if not exist "%~1" (
|
||||
mkdir "%~1"
|
||||
)
|
||||
|
||||
pushd "%~1"
|
||||
for /f "usebackq" %%x in ( `dir /b *.bat *.cmd 2^>nul` ) do (
|
||||
call :verbose-output Calling "%~1\%%x"...
|
||||
call "%~1\%%x"
|
||||
)
|
||||
popd
|
||||
exit /b
|
||||
|
||||
::
|
||||
:: specific to git version comparing
|
||||
::
|
||||
:read_version
|
||||
:: clear the variables
|
||||
set GIT_VERSION_%~1=
|
||||
|
||||
:: set the executable path
|
||||
set "git_executable=%~2\git.exe"
|
||||
call :debug-output :read_version - Env Var - git_executable=%git_executable%
|
||||
|
||||
:: check if the executable actually exists
|
||||
if not exist "%git_executable%" (
|
||||
call :verbose-output "%git_executable%" does not exist!
|
||||
exit /b -255
|
||||
)
|
||||
|
||||
:: get the git version in the provided directory
|
||||
for /F "tokens=1,2,3 usebackq" %%F in (`"%git_executable%" --version 2^>nul`) do (
|
||||
if "%%F %%G" == "git version" (
|
||||
set "GIT_VERSION_%~1=%%H"
|
||||
call :debug-output :read_version - Env Var - GIT_VERSION_%~1=%%H
|
||||
) else (
|
||||
echo "git --version" returned an inproper version string!
|
||||
pause
|
||||
exit /b
|
||||
)
|
||||
)
|
||||
|
||||
:: parse the returned string
|
||||
call :debug-output :read_version - Calling - :validate_version "%~1" !GIT_VERSION_%~1!
|
||||
call :validate_version "%~1" !GIT_VERSION_%~1!
|
||||
exit /b
|
||||
|
||||
:parse_version
|
||||
:: process a `x.x.x.xxxx.x` formatted string
|
||||
for /F "tokens=1-3* delims=.,-" %%A in ("%2") do (
|
||||
set "%~1_MAJOR=%%A"
|
||||
set "%~1_MINOR=%%B"
|
||||
set "%~1_PATCH=%%C"
|
||||
set "%~1_BUILD=%%D"
|
||||
)
|
||||
exit /b
|
||||
|
||||
:validate_version
|
||||
:: now parse the version information into the corresponding variables
|
||||
call :parse_version %~1 %~2
|
||||
|
||||
:: ... and maybe display it, for debugging purposes.
|
||||
call :debug-output :validate_version - Found Git Version for %~1: !%~1_MAJOR!.!%~1_MINOR!.!%~1_PATCH!.!%~1_BUILD!
|
||||
exit /b
|
||||
|
||||
:compare_versions
|
||||
:: checks all major, minor, patch and build variables for the given arguments.
|
||||
:: whichever binary that has the most recent version will be used based on the return code.
|
||||
|
||||
:: call :debug-output Comparing:
|
||||
:: call :debug-output %~1: !%~1_MAJOR!.!%~1_MINOR!.!%~1_PATCH!.!%~1_BUILD!
|
||||
:: call :debug-output %~2: !%~2_MAJOR!.!%~2_MINOR!.!%~2_PATCH!.!%~2_BUILD!
|
||||
|
||||
if !%~1_MAJOR! GTR !%~2_MAJOR! (exit /b 1)
|
||||
if !%~1_MAJOR! LSS !%~2_MAJOR! (exit /b -1)
|
||||
|
||||
if !%~1_MINOR! GTR !%~2_MINOR! (exit /b 1)
|
||||
if !%~1_MINOR! LSS !%~2_MINOR! (exit /b -1)
|
||||
|
||||
if !%~1_PATCH! GTR !%~2_PATCH! (exit /b 1)
|
||||
if !%~1_PATCH! LSS !%~2_PATCH! (exit /b -1)
|
||||
|
||||
if !%~1_BUILD! GTR !%~2_BUILD! (exit /b 1)
|
||||
if !%~1_BUILD! LSS !%~2_BUILD! (exit /b -1)
|
||||
|
||||
:: looks like we have the same versions.
|
||||
exit /b 0
|
||||
|
||||
:enhance_path
|
||||
setlocal enabledelayedexpansion
|
||||
if "%~1" neq "" (
|
||||
if exist "%~1" (
|
||||
set "add_path=%~1"
|
||||
) else (
|
||||
call :show_error :enhance_path - The path specified. "%~1", does not exist!
|
||||
exit 1
|
||||
)
|
||||
) else (
|
||||
call :show_error You must specify a directory to add to the path!
|
||||
exit 1
|
||||
)
|
||||
|
||||
if "%~2" neq "" if /i "%~2" == "append" (
|
||||
set "position=%~2"
|
||||
) else (
|
||||
set "position="
|
||||
)
|
||||
|
||||
set "find_query=%add_path%"
|
||||
set "find_query=%find_query:\=\\%"
|
||||
set "find_query=%find_query: =\ %"
|
||||
set found=0
|
||||
|
||||
call :debug-output :enhance_path "Env Var - find_query=%find_query%"
|
||||
echo "%PATH%"|findstr >nul /I /R ";%find_query%\"$"
|
||||
if "!ERRORLEVEL!" == "0" set found=1
|
||||
|
||||
call :debug-output :enhance_path "Env Var 1 - found=!found!"
|
||||
if "!found!" == "0" (
|
||||
echo "%PATH%"|findstr >nul /i /r ";%find_query%;"
|
||||
if "!ERRORLEVEL!" == "0" set found=1
|
||||
call :debug-output :enhance_path "Env Var 2 - found=!found!"
|
||||
)
|
||||
|
||||
if "%found%" == "0" (
|
||||
call :debug-output :enhance_path "BEFORE Env Var - PATH=!path!"
|
||||
if /i "%position%" == "append" (
|
||||
call :debug-output :enhance_path "Appending '%add_path%'"
|
||||
set "PATH=%PATH%;%add_path%"
|
||||
) else (
|
||||
call :debug-output :enhance_path "Prepending '%add_path%'"
|
||||
set "PATH=%add_path%;%PATH%"
|
||||
)
|
||||
|
||||
call :debug-output :enhance_path "AFTER Env Var - PATH=!path!"
|
||||
)
|
||||
|
||||
endlocal & set "PATH=%PATH%"
|
||||
exit /b
|
||||
|
||||
:enhance_path_recursive
|
||||
::: ==============================================================================
|
||||
:::enhance_path_recursive - Add a directory and subs to the path env variable if
|
||||
::: required.
|
||||
:::
|
||||
:::include:
|
||||
:::
|
||||
::: call "$0"
|
||||
:::
|
||||
:::usage:
|
||||
:::
|
||||
::: call "%~DP0lib_path" enhance_path_recursive "[dir_path]" [max_depth] [append]
|
||||
:::
|
||||
:::required:
|
||||
:::
|
||||
::: [dir_path] <in> Fully qualified directory path. Ex: "c:\bin"
|
||||
:::
|
||||
:::dptions:
|
||||
:::
|
||||
::: [max_depth] <in> Max recuse depth. Default: 1
|
||||
:::
|
||||
::: append <in> Append instead rather than pre-pend "[dir_path]"
|
||||
:::
|
||||
:::output:
|
||||
:::
|
||||
::: path <out> Sets the path env variable if required.
|
||||
::: ------------------------------------------------------------------------------
|
||||
|
||||
setlocal enabledelayedexpansion
|
||||
if "%~1" neq "" (
|
||||
set "add_path=%~1"
|
||||
) else (
|
||||
call :directory to add to the path!"
|
||||
exit 1
|
||||
)
|
||||
|
||||
if "%~2" gtr "1" (
|
||||
set "max_depth=%~2"
|
||||
) else (
|
||||
set "max_depth=1"
|
||||
)
|
||||
|
||||
if "%~3" neq "" if /i "%~3" == "append" (
|
||||
set "position=%~3"
|
||||
) else (
|
||||
set "position="
|
||||
)
|
||||
|
||||
if "%depth%" == "" set depth=0
|
||||
|
||||
call :debug-output :enhance_path_recursive "Env Var - add_path=%add_path%"
|
||||
call :debug-output :enhance_path_recursive "Env Var - position=%position%"
|
||||
call :debug-output :enhance_path_recursive "Env Var - max_depth=%max_depth%"
|
||||
|
||||
if %max_depth% gtr !depth! (
|
||||
call :debug-output :enhance_path_recursive "Adding parent directory - '%add_path%'"
|
||||
call :enhance_path "%add_path%" %position%
|
||||
set /a "depth=!depth!+1"
|
||||
|
||||
for /d %%i in ("%add_path%\*") do (
|
||||
call :debug-output :enhance_path_recursive "Env Var BEFORE - depth=!depth!"
|
||||
call :debug-output :enhance_path_recursive "Found Subdirectory - '%%~fi'"
|
||||
call :enhance_path_recursive "%%~fi" %max_depth% %position%
|
||||
call :debug-output :enhance_path_recursive "Env Var AFTER- depth=!depth!"
|
||||
)
|
||||
)
|
||||
|
||||
endlocal & set "PATH=%PATH%"
|
||||
exit /b
|
||||
|
182
vendor/profile.ps1
vendored
182
vendor/profile.ps1
vendored
@ -4,23 +4,39 @@
|
||||
# !!! THIS FILE IS OVERWRITTEN WHEN CMDER IS UPDATED
|
||||
# !!! Use "%CMDER_ROOT%\config\user-profile.ps1" to add your own startup commands
|
||||
|
||||
# We do this for Powershell as Admin Sessions because CMDER_ROOT is not beng set.
|
||||
if (! $ENV:CMDER_ROOT ) {
|
||||
$ENV:CMDER_ROOT = resolve-path( $ENV:ConEmuDir + "\..\.." )
|
||||
}
|
||||
|
||||
# Remove trailing '\'
|
||||
$ENV:CMDER_ROOT = (($ENV:CMDER_ROOT).trimend("\"))
|
||||
|
||||
# Compatibility with PS major versions <= 2
|
||||
if(!$PSScriptRoot) {
|
||||
$PSScriptRoot = Split-Path $Script:MyInvocation.MyCommand.Path
|
||||
}
|
||||
|
||||
if ($ENV:CMDER_USER_CONFIG) {
|
||||
# write-host "CMDER IS ALSO USING INDIVIDUAL USER CONFIG FROM '$ENV:CMDER_USER_CONFIG'!"
|
||||
}
|
||||
|
||||
# We do this for Powershell as Admin Sessions because CMDER_ROOT is not beng set.
|
||||
if (! $ENV:CMDER_ROOT ) {
|
||||
if ( $ENV:ConEmuDir ) {
|
||||
$ENV:CMDER_ROOT = resolve-path( $ENV:ConEmuDir + "\..\.." )
|
||||
} else {
|
||||
$ENV:CMDER_ROOT = resolve-path( $PSScriptRoot + "\.." )
|
||||
}
|
||||
}
|
||||
|
||||
# Remove trailing '\'
|
||||
$ENV:CMDER_ROOT = (($ENV:CMDER_ROOT).trimend("\"))
|
||||
|
||||
# do not load bundled psget if a module installer is already available
|
||||
# -> recent PowerShell versions include PowerShellGet out of the box
|
||||
$moduleInstallerAvailable = [bool](Get-Command -Name 'Install-Module' -ErrorAction SilentlyContinue | Out-Null)
|
||||
|
||||
# do not load bundled psget if a module installer is already available
|
||||
# -> recent PowerShell versions include PowerShellGet out of the box
|
||||
$moduleInstallerAvailable = [bool](Get-Command -Name 'Install-Module' -ErrorAction SilentlyContinue | Out-Null)
|
||||
|
||||
# Add Cmder modules directory to the autoload path.
|
||||
$CmderModulePath = Join-path $PSScriptRoot "psmodules/"
|
||||
|
||||
if( -not $env:PSModulePath.Contains($CmderModulePath) ){
|
||||
if(-not $moduleInstallerAvailable -and -not $env:PSModulePath.Contains($CmderModulePath) ){
|
||||
$env:PSModulePath = $env:PSModulePath.Insert(0, "$CmderModulePath;")
|
||||
}
|
||||
|
||||
@ -46,16 +62,23 @@ try {
|
||||
$env:Path += $(";" + $env:CMDER_ROOT + "\vendor\git-for-windows\bin")
|
||||
}
|
||||
|
||||
try {
|
||||
Import-Module -Name "posh-git" -ErrorAction Stop >$null
|
||||
$gitStatus = $true
|
||||
} catch {
|
||||
Write-Warning "Missing git support, install posh-git with 'Install-Module posh-git' and restart cmder."
|
||||
$gitStatus = $false
|
||||
$gitLoaded = $false
|
||||
function Import-Git($Loaded){
|
||||
if($Loaded) { return }
|
||||
$GitModule = Get-Module -Name Posh-Git -ListAvailable
|
||||
if($GitModule | select version | where version -le ([version]"0.6.1.20160330")){
|
||||
Import-Module Posh-Git > $null
|
||||
}
|
||||
if(-not ($GitModule) ) {
|
||||
Write-Warning "Missing git support, install posh-git with 'Install-Module posh-git' and restart cmder."
|
||||
}
|
||||
# Make sure we only run once by alawys returning true
|
||||
return $true
|
||||
}
|
||||
|
||||
function checkGit($Path) {
|
||||
if (Test-Path -Path (Join-Path $Path '.git') ) {
|
||||
$gitLoaded = Import-Git $gitLoaded
|
||||
Write-VcsStatus
|
||||
return
|
||||
}
|
||||
@ -65,31 +88,6 @@ function checkGit($Path) {
|
||||
}
|
||||
}
|
||||
|
||||
# Set up a Cmder prompt, adding the git prompt parts inside git repos
|
||||
function global:prompt {
|
||||
$realLASTEXITCODE = $LASTEXITCODE
|
||||
$Host.UI.RawUI.ForegroundColor = "White"
|
||||
Write-Host $pwd.ProviderPath -NoNewLine -ForegroundColor Green
|
||||
if($gitStatus){
|
||||
checkGit($pwd.ProviderPath)
|
||||
}
|
||||
$global:LASTEXITCODE = $realLASTEXITCODE
|
||||
Write-Host "`nλ" -NoNewLine -ForegroundColor "DarkGray"
|
||||
return " "
|
||||
}
|
||||
|
||||
# Load special features come from posh-git
|
||||
if ($gitStatus) {
|
||||
Start-SshAgent -Quiet
|
||||
}
|
||||
|
||||
# Move to the wanted location
|
||||
# This is either a env variable set by the user or the result of
|
||||
# cmder.exe setting this variable due to a commandline argument or a "cmder here"
|
||||
if ( $ENV:CMDER_START ) {
|
||||
Set-Location -Path "$ENV:CMDER_START"
|
||||
}
|
||||
|
||||
if (Get-Module PSReadline -ErrorAction "SilentlyContinue") {
|
||||
Set-PSReadlineOption -ExtraPromptLineCount 1
|
||||
}
|
||||
@ -97,6 +95,36 @@ if (Get-Module PSReadline -ErrorAction "SilentlyContinue") {
|
||||
# Enhance Path
|
||||
$env:Path = "$Env:CMDER_ROOT\bin;$env:Path;$Env:CMDER_ROOT"
|
||||
|
||||
#
|
||||
# Prompt Section
|
||||
# Users should modify their user-profile.ps1 as it will be safe from updates.
|
||||
#
|
||||
|
||||
# Pre assign the hooks so the first run of cmder gets a working prompt.
|
||||
[ScriptBlock]$PrePrompt = {}
|
||||
[ScriptBlock]$PostPrompt = {}
|
||||
[ScriptBlock]$CmderPrompt = {
|
||||
$Host.UI.RawUI.ForegroundColor = "White"
|
||||
Microsoft.PowerShell.Utility\Write-Host $pwd.ProviderPath -NoNewLine -ForegroundColor Green
|
||||
checkGit($pwd.ProviderPath)
|
||||
}
|
||||
|
||||
<#
|
||||
This scriptblock runs every time the prompt is returned.
|
||||
Explicitly use functions from MS namespace to protect from being overridden in the user session.
|
||||
Custom prompt functions are loaded in as constants to get the same behaviour
|
||||
#>
|
||||
[ScriptBlock]$Prompt = {
|
||||
$realLASTEXITCODE = $LASTEXITCODE
|
||||
$host.UI.RawUI.WindowTitle = Microsoft.PowerShell.Management\Split-Path $pwd.ProviderPath -Leaf
|
||||
PrePrompt | Microsoft.PowerShell.Utility\Write-Host -NoNewline
|
||||
CmderPrompt
|
||||
Microsoft.PowerShell.Utility\Write-Host "`nλ " -NoNewLine -ForegroundColor "DarkGray"
|
||||
PostPrompt | Microsoft.PowerShell.Utility\Write-Host -NoNewline
|
||||
$global:LASTEXITCODE = $realLASTEXITCODE
|
||||
return " "
|
||||
}
|
||||
|
||||
# Drop *.ps1 files into "$ENV:CMDER_ROOT\config\profile.d"
|
||||
# to source them at startup.
|
||||
if (-not (test-path "$ENV:CMDER_ROOT\config\profile.d")) {
|
||||
@ -104,17 +132,81 @@ if (-not (test-path "$ENV:CMDER_ROOT\config\profile.d")) {
|
||||
}
|
||||
|
||||
pushd $ENV:CMDER_ROOT\config\profile.d
|
||||
foreach ($x in ls *.ps1) {
|
||||
foreach ($x in Get-ChildItem *.ps1) {
|
||||
# write-host write-host Sourcing $x
|
||||
. $x
|
||||
}
|
||||
popd
|
||||
|
||||
# Drop *.ps1 files into "$ENV:CMDER_USER_CONFIG\config\profile.d"
|
||||
# to source them at startup. Requires using cmder.exe /C [cmder_user_root_path] argument
|
||||
if ($ENV:CMDER_USER_CONFIG -ne "" -and -not (test-path "$ENV:CMDER_USER_CONFIG\profile.d")) {
|
||||
pushd $ENV:CMDER_USER_CONFIG\profile.d
|
||||
foreach ($x in Get-ChildItem *.ps1) {
|
||||
# write-host write-host Sourcing $x
|
||||
. $x
|
||||
}
|
||||
popd
|
||||
}
|
||||
|
||||
|
||||
|
||||
$CmderUserProfilePath = Join-Path $env:CMDER_ROOT "config\user-profile.ps1"
|
||||
if(Test-Path $CmderUserProfilePath) {
|
||||
if (Test-Path $CmderUserProfilePath) {
|
||||
# Create this file and place your own command in there.
|
||||
. "$CmderUserProfilePath"
|
||||
} else {
|
||||
Write-Host "Creating user startup file: $CmderUserProfilePath"
|
||||
"# Use this file to run your own startup commands" | Out-File $CmderUserProfilePath
|
||||
|
||||
}
|
||||
|
||||
if ($ENV:CMDER_USER_CONFIG) {
|
||||
$CmderUserProfilePath = Join-Path $ENV:CMDER_USER_CONFIG "user-profile.ps1"
|
||||
}
|
||||
|
||||
if (Test-Path $CmderUserProfilePath) {
|
||||
. "$CmderUserProfilePath"
|
||||
} else {
|
||||
# This multiline string cannot be indented, for this reason I've not indented the whole block
|
||||
|
||||
Write-Host -BackgroundColor Darkgreen -ForegroundColor White "First Run: Creating user startup file: $CmderUserProfilePath"
|
||||
|
||||
$UserProfileTemplate = @'
|
||||
# Use this file to run your own startup commands
|
||||
|
||||
## Prompt Customization
|
||||
<#
|
||||
.SYNTAX
|
||||
<PrePrompt><CMDER DEFAULT>
|
||||
λ <PostPrompt> <repl input>
|
||||
.EXAMPLE
|
||||
<PrePrompt>N:\Documents\src\cmder [master]
|
||||
λ <PostPrompt> |
|
||||
#>
|
||||
|
||||
[ScriptBlock]$PrePrompt = {
|
||||
|
||||
}
|
||||
|
||||
# Replace the cmder prompt entirely with this.
|
||||
# [ScriptBlock]$CmderPrompt = {}
|
||||
|
||||
[ScriptBlock]$PostPrompt = {
|
||||
|
||||
}
|
||||
|
||||
## <Continue to add your own>
|
||||
|
||||
|
||||
'@
|
||||
|
||||
New-Item -ItemType File -Path $CmderUserProfilePath -Value $UserProfileTemplate > $null
|
||||
|
||||
}
|
||||
|
||||
# Once Created these code blocks cannot be overwritten
|
||||
Set-Item -Path function:\PrePrompt -Value $PrePrompt -Options Constant
|
||||
Set-Item -Path function:\CmderPrompt -Value $CmderPrompt -Options Constant
|
||||
Set-Item -Path function:\PostPrompt -Value $PostPrompt -Options Constant
|
||||
|
||||
# Functions can be made constant only at creation time
|
||||
# ReadOnly at least requires `-force` to be overwritten
|
||||
Set-Item -Path function:\prompt -Value $Prompt -Options ReadOnly
|
||||
|
16
vendor/sources.json
vendored
16
vendor/sources.json
vendored
@ -1,22 +1,22 @@
|
||||
[
|
||||
{
|
||||
"name": "git-for-windows",
|
||||
"version": "v2.9.3.windows.1",
|
||||
"url": "https://github.com/git-for-windows/git/releases/download/v2.9.3.windows.1/PortableGit-2.9.3-32-bit.7z.exe"
|
||||
"version": "v2.16.2.windows.1",
|
||||
"url": "https://github.com/git-for-windows/git/releases/download/v2.16.2.windows.1/PortableGit-2.16.2-64-bit.7z.exe"
|
||||
},
|
||||
{
|
||||
"name": "clink",
|
||||
"version": "0.4.8",
|
||||
"url": "https://github.com/mridgers/clink/releases/download/0.4.8/clink_0.4.8.zip"
|
||||
"version": "0.4.9",
|
||||
"url": "https://github.com/mridgers/clink/releases/download/0.4.9/clink_0.4.9.zip"
|
||||
},
|
||||
{
|
||||
"name": "conemu-maximus5",
|
||||
"version": "160710",
|
||||
"url": "https://github.com/Maximus5/ConEmu/releases/download/v16.07.10/ConEmuPack.160710.7z"
|
||||
"version": "180206",
|
||||
"url": "https://github.com/Maximus5/ConEmu/releases/download/v18.02.06/ConEmuPack.180206.7z"
|
||||
},
|
||||
{
|
||||
"name": "clink-completions",
|
||||
"version": "0.3.1",
|
||||
"url": "https://github.com/vladimir-kotikov/clink-completions/archive/0.3.1.zip"
|
||||
"version": "0.3.3",
|
||||
"url": "https://github.com/vladimir-kotikov/clink-completions/archive/0.3.3.zip"
|
||||
}
|
||||
]
|
||||
|
2
vendor/user-aliases.cmd.example
vendored
2
vendor/user-aliases.cmd.example
vendored
@ -9,7 +9,7 @@ gl=git log --oneline --all --graph --decorate $*
|
||||
ls=ls --show-control-chars -F --color $*
|
||||
pwd=cd
|
||||
clear=cls
|
||||
history=cat %CMDER_ROOT%\config\.history
|
||||
history=cat "%CMDER_ROOT%\config\.history"
|
||||
unalias=alias /d $1
|
||||
vi=vim $*
|
||||
cmderr=cd /d "%CMDER_ROOT%"
|
||||
|
Reference in New Issue
Block a user