Compare commits

...

80 Commits

Author SHA1 Message Date
ff595e62b1 Merge pull request #2144 from daxgames/1.3.12
1.3.12 Release
2019-08-18 18:33:40 -04:00
a85a208b20 CHANGELOG.md 2019-08-18 18:26:21 -04:00
ecda3acfdf Update CHANGELOG.md 2019-08-18 17:49:56 -04:00
5477b7812d Re-arrange CHANGELOG.md. 2019-08-18 17:39:29 -04:00
81951a4a14 Merge branch 'master' of https://github.com/cmderdev/cmder 2019-08-18 16:33:43 -04:00
0280593d4c Merge pull request #2123 from daxgames/alias
CHANGELOG.md
2019-07-07 14:06:57 -04:00
f8e859f844 changelog 2019-07-07 14:05:14 -04:00
af4c1fddbb Merge pull request #2122 from daxgames/alias
restore old alias.cmd without 'create' option
2019-07-07 13:56:18 -04:00
b58b3b4547 restore old alias.cmd without 'create' option 2019-07-07 13:52:34 -04:00
9184f8e2bf Merge branch 'master' of https://github.com/cmderdev/cmder into alias 2019-07-07 13:32:47 -04:00
1e0e2193e0 Merge branch 'master' into alias 2019-07-07 13:31:13 -04:00
38fd3468fe restore old alias.cmd without 'create' option 2019-07-07 13:30:34 -04:00
ebd977778b Merge pull request #2113 from SupinePandora43/vscode
vscode.bat
2019-06-27 08:27:37 -04:00
72dd8376cd move
https://github.com/cmderdev/cmder/pull/2113#issuecomment-506044156
2019-06-27 16:00:55 +05:00
b61752f89e vscode.bat
add that to settings.json

`"terminal.integrated.shell.windows": "cmd.exe",
"terminal.integrated.shellArgs.windows": [
    "/K",
    "%CMDER_ROOT%/vscode.bat",
]`

for using cmder inside vscode
2019-06-25 12:37:57 +04:00
8f59d529f4 Update stale comments 2019-06-20 10:12:12 +01:00
711c436f04 Merge branch 'master' of https://github.com/cmderdev/cmder 2019-06-09 16:18:38 -04:00
ea531cdd44 Fix post-install.bat not running and deleting itself (#2106)
* Fix post-install.bat not running

* Changelog

* Changelog
2019-06-03 11:23:00 +01:00
73c21d1a59 Wrap labels with quotes 2019-05-24 13:54:09 +01:00
a97ce1f950 Create stale.yml 2019-05-24 13:47:01 +01:00
4510abb3c8 Merge pull request #2096 from eziosella/pull-request-2094-pars-forwarding
Add `/x "CONEMU ARGS"` command line argument.
2019-05-22 08:30:18 -07:00
6d132c2665 Merge pull request #2099 from warthurton/patch-1
Update README.md
2019-05-22 08:27:53 -07:00
543c7ca6e9 Replace /FWPARS argument with /X as "daxgames" request. 2019-05-19 22:54:47 +02:00
efc978f6f8 Update README.md
Added /t switch for timed init mode.
2019-05-16 15:13:07 -04:00
5def1c584a Add FWPARS cmdline argument.
This argument forwards parameters to ConEmu app.

	e.g. Cmder.exe /FWPARS "-min -tsa"

In this case Cmder will start minimized on TaskBar
2019-05-12 15:18:15 +02:00
865e443fcd Merge pull request #2068 from cmderdev/history_cmd_index_sync
Print Index in History Command Output
2019-05-05 17:28:07 -04:00
893207453d CHANGELog 2019-05-05 17:27:25 -04:00
5e5e0ece73 CHANGELog 2019-05-05 17:25:47 -04:00
834f031442 Merge branch 'master' of https://github.com/daxgames/cmder into history_cmd_index_sync 2019-05-05 17:19:49 -04:00
0bd847e695 Merge pull request #2083 from JoshuaWebb/master
Close file handles in clink.lua
2019-05-05 17:13:57 -04:00
efe64ee6fd Merge pull request #2072 from daxgames/alias
Alias
2019-05-05 17:12:13 -04:00
5f9f3560c8 fix commnd line help 2019-05-05 17:11:31 -04:00
9b9bb13f6a fix commnd line help 2019-05-05 17:06:44 -04:00
52eea5fe9f Close file handles in clink.lua 2019-04-19 16:16:45 +10:00
ab3f0b76fb fixes 2019-04-01 22:17:53 -04:00
528bbea7f5 fixes 2019-04-01 22:10:21 -04:00
f20eca01ac fixes 2019-04-01 17:34:00 -04:00
26d8d58e77 Merge branch 'master' of https://github.com/cmderdev/cmder into alias 2019-04-01 17:32:57 -04:00
cf134604bb fixes 2019-04-01 17:31:46 -04:00
67b374ad37 revert alias.cmd changes 2019-04-01 17:09:05 -04:00
d592f80364 Merge branch 'master' of https://github.com/cmderdev/cmder into alias 2019-04-01 17:04:03 -04:00
3e40c80331 new alias create syntax 2019-04-01 16:58:45 -04:00
ac2082d56d Merge pull request #2060 from daxgames/ps1_prompt
Fixes and More Cmder Like Powershell
2019-04-01 15:20:37 -04:00
a813e359c5 don't delete aliases by default but provide an easy way for users to do so. 2019-04-01 09:09:32 -04:00
345562dbd0 Merge branch 'ps1_prompt' of https://github.com/daxgames/cmder into ps1_prompt 2019-03-31 16:48:10 -04:00
13de4924ca make powershell use of bash commands more bash like 2019-03-31 16:47:36 -04:00
f39b921121 fixes 2019-03-31 16:11:14 -04:00
43d5a7b833 Merge branch 'master' of https://github.com/cmderdev/cmder into history_cmd_index 2019-03-31 16:04:53 -04:00
b424012a08 make debug messages more verbose 2019-03-31 09:48:58 -04:00
192c2f4dd1 fix git detection 2019-03-31 09:47:50 -04:00
4622aa87e4 Merge branch 'master' of https://github.com/cmderdev/cmder into ps1_prompt 2019-03-23 15:05:05 -04:00
0b2c9bf005 Merge branch 'ps1_prompt' of https://github.com/daxgames/cmder into ps1_prompt 2019-03-23 15:04:06 -04:00
081624d88e cleanup 2019-03-23 15:03:44 -04:00
280bbfff1f update issue template (#2062) 2019-03-20 22:57:13 +01:00
a93fff6798 Update init.bat 2019-03-17 15:09:02 -04:00
8abfa9d413 add back shell context menu to drives on register unregister 2019-03-16 19:15:36 -04:00
98a64b71b2 Allow full ps1 prompt customization by 'config/*.ps1' scripts 2019-03-16 13:52:47 -04:00
f2b26352b4 Merge branch 'master' of https://github.com/cmderdev/cmder 2019-03-12 21:12:42 -04:00
63128ed52f polished issues template (#2056)
- added version subsection
- better worded upstream technologies notice
- more clear instructions
2019-03-07 14:29:46 +01:00
036efc2fb8 Merge branch 'master' of https://github.com/cmderdev/cmder 2019-03-03 07:08:10 -05:00
2582891307 Merge branch 'master' of https://github.com/cmderdev/cmder 2019-03-01 19:54:14 -05:00
ec42046297 Merge pull request #2017 from b0bh00d/master
Replaced 'hg id -ib'
2019-03-01 14:00:22 -05:00
522656845f Merge pull request #2041 from cmderdev/upate_readme
Update README.md
2019-03-01 13:58:40 -05:00
6b22a5c583 Merge pull request #2055 from daxgames/git_clink_changes
Git and Clink changes
2019-03-01 13:57:32 -05:00
e75958b881 Merge branch 'master' of https://github.com/cmderdev/cmder 2019-03-01 13:47:03 -05:00
8ec252276f changelog 2019-02-28 18:13:19 -05:00
16bf572cdf Merge branch 'master' of github.com:cmderdev/cmder into git_clink_changes 2019-02-28 18:03:58 -05:00
7bd25e95e1 upgrade git to 2.21.0 2019-02-28 17:55:16 -05:00
cc12b848ac provide default settings for clink that updates the history file in real time 2019-02-28 17:44:28 -05:00
20d55c1469 all clink disable by setting CMDER_CLINK=0 befor starting task 2019-02-28 17:37:45 -05:00
06e6c63b7f Update README.md 2019-02-18 11:41:11 -05:00
89499f2a60 Replaced the 'hg -id' command with the 'hg branch' and 'hg status' pair for improved response times. 2019-01-20 21:02:31 -07:00
95e5169476 Merge remote-tracking branch 'upstream/master' 2019-01-20 20:50:09 -07:00
760f4e579e ignore all /d arg if running inside vscode 2019-01-06 18:09:06 -05:00
6d8f7a290a ignore all args if running inside vscode 2019-01-06 17:46:50 -05:00
2a4e9d8301 workaround vscode tasks showing cmder debug output 2019-01-06 17:27:04 -05:00
961f38a399 Updated the HG prompt (#2002)
Per our email discussion, I have updated the HG prompt code to use the '-ib' option to 'hg id' so the branch name is always available, regardless of the state of the working copy.
2019-01-05 19:56:30 +01:00
5a48e568a8 Updated the HG prompt code to use the '-ib' option to 'hg id' to always have the branch name available. 2019-01-01 11:17:53 -07:00
d8444dae97 Set history_io=3 in default Clink settings
Currently the "history" command in Cmder prints commands without any index associated with any command, so you can copy/paste a command or use "!!" to execute a command from the history but, unlike BASH, you can't do "!<command_index>".

"cat" has a switch, "-n", which prints line numbers of the file being printed. This, in conjunction with "history_io=3" in Clink settings (to read/write history when editing a command") works just like BASH, i.e., you can use the index printed next to a command in the history to execute that command as "!<command_index>".
2017-03-17 10:59:12 +08:00
0a5d1ac156 Use cat -n for printing history to show cmd index
Currently the "history" command in Cmder prints commands without any index associated with any command, so you can copy/paste a command or use "!!" to execute a command from the history but, unlike BASH, you can't do "!<command_index>".

"cat" has a switch, "-n", which prints line numbers of the file being printed. This, in conjunction with "history_io=3" in Clink settings (to read/write history when editing a command") works just like BASH, i.e., you can use the index printed next to a command in the history to execute that command as "!<command_index>".
2017-03-17 10:26:57 +08:00
16 changed files with 448 additions and 150 deletions

View File

@ -2,63 +2,88 @@
Thank you for reporting a bug for the Cmder project!
------------------------------------------------------------------
Please make sure you read and follow the following instructions
carefully before reporting bugs, and/or requesting new features.
Make sure that you have:
• Searched for existing issues (including the **closed** ones)
for the similar problems here:
https://github.com/cmderdev/cmder/issues?q=is:issue
• Read the README.md and the Wiki:
• Read both the README.md and the Wiki:
- https://github.com/cmderdev/cmder/blob/master/README.md
- https://github.com/cmderdev/cmder/wiki
(What you may be asking here could already be explained there!)
• Please understand that Cmder by default uses ConEmu as the
underlying Terminal Emulator. If your issue is regarding
• Please understand that Cmder uses ConEmu as the default
underlying Terminal Emulator. If your issue is regarding
the **Terminal Emulator**, please visit the ConEmu issues page:
https://github.com/Maximus5/ConEmu/issues?q=is:issue
If there isn't an existing issue, you may open a new one there.
(We don't resolve issues regarding ConEmu here, so please
(We don't resolve issues regarding ConEmu here, so please
make sure you open the issue in the correct place.)
more info: https://conemu.github.io/en/ThirdPartyProblems.html
• If you are asking for guides on how to integrate Cmder into
your favorite IDE of choice, or how to perform an specific
task with Cmder, make sure you visit our label section first!
• If you would like to ask for guides on how to integrate Cmder with
your favorite IDE of choice, or how to perform a specific task
with Cmder, make sure you visit our label section first.
You may already have an answer under the Guides or Questions section.
For a list of labels, visit:
- https://github.com/cmderdev/cmder/labels
(Be sure to also check “Closed” issues in the labels section!)
• If the issue is regarding the other upstream technologies that
Cmder uses (e.g. Clink, Git, etc), please make sure that the
bug you are reporting only applies when they are used in
combination with Cmder. If the bug applies when the mentioned
tools are NOT used within Cmder, there's a good chance that
you should open the bug at the corresponding repo instead.
• If you have a request to provide auto-complete support for a new tool,
please post your request here:
https://github.com/vladimir-kotikov/clink-completions/issues
• If you are having an issue with any of the **upstream technologies**
that are used by Cmder, please make sure that the issue is reproducible
_only_ when used in combination with Cmder.
We may not directly address the issues related to the following tools:
- Clink, the default shell in Cmder
- ConEmu, the terminal emulator
- Git/MinGW, which also provide *NIX tools
- clink-completions, which provide autocompletion
The issues related to upstream technologies are labeled as 👆 [name].
We'll try our best to help you -- but we recommend creating an issue
specifically at each of the corresponding repositories for the best
result.
► Try to reproduce the bug you're reporting, on a stand-alone edition
of each tool, without using Cmder. If the bug applies when the
mentioned tools are NOT used within Cmder, there's a good chance that
you should open the bug at the corresponding repo instead.
• Lastly, have a look at official documentation for Cmder over
our website, and our wiki.
Read more on about Cmder on ConEmu docs:
https://conemu.github.io/en/cmder.html
Thank you for making sure you are opening a new valid issue!
Thank you for making sure you are opening a new valid issue!
-->
<!--
<!--
Some tips on how to write a better report:
- Put an `x` into all the boxes [ ] relevant to your issue (example: [x]).
- Put an `x` into all the boxes [ ] relevant to your issue (correct example: [x] -- not like this: [ x] or [x ]).
- Use the *Preview* tab to see how your issue will actually look like, before sending it.
- Make sure the description is worded well enough to be understood, and with as much context and examples as possible.
- Post a screenshot or the command the triggered the problem, if applicable.
@ -66,6 +91,7 @@
Help us reproduce the issue by explaining what went wrong, and what did you expect to happen.
- Please keep the ticket language to English only here.
We can't process your issue if it's written in Russian or Chinese as we can't understand them.
- You can find the version of Cmder.exe and ConEmu.exe binaries using Right Click → Properties → Details menu.
- ⚠ Read the following page to avoid posting a bad issue: https://conemu.github.io/en/BadIssue.html
-->
@ -74,5 +100,10 @@
- [ ] Feature request (request for new functionality)
- [ ] Question
### Description of the issue
### Version Information
<!-- Please write your Cmder and ConEmu version here -->
<!-- If applicable, write down your Windows edition too (e.g. Windows 10 Pro 1809) -->
### Description of the issue
<!-- Provide a clear, simple description of your issue here -->

19
.github/stale.yml vendored Normal file
View File

@ -0,0 +1,19 @@
# Number of days of inactivity before an issue becomes stale
daysUntilStale: 30
# Number of days of inactivity before a stale issue is closed
daysUntilClose: 7
# Issues with these labels will never be considered stale
exemptLabels:
- "📌 Pinned"
# Label to use when marking an issue as stale
staleLabel: "👀 Awaiting Response"
# Comment to post when marking an issue as stale. Set to `false` to disable
markComment: >
This issue has been automatically marked as stale because it has not had
any recent activity. It will be closed in a week if no further activity occurs.
Thank you for your contribution(s).
# Comment to post when closing a stale issue. Set to `false` to disable
closeComment: >
This issue has been automatically closed due to it not having any
activity since it was marked as stale.
Thank you for your contribution(s).

View File

@ -1,5 +1,38 @@
# Change Log
## [1.3.12](https://github.com/cmderdev/cmder/tree/v1.3.12) (2019-08-18)
### Fixes
* Pull Request: [#2113](https://github.com/cmderdev/cmder/pull/2113)
* Add `vendor\bin\vscode_init.cmd` for use with Visual Studio Code
* Fixes [#2118](https://github.com/cmderdev/cmder/issues/2118)
* Fixes [#1985](https://github.com/cmderdev/cmder/issues/1985)
* Pull Request: [#2106](https://github.com/cmderdev/cmder/pull/2106)
* Portable Git requires running `post-install.bat` which deletes itself when done. This was not happening.
* Resolves [#2105](https://github.com/cmderdev/cmder/issues/2105)
* Pull Request: [#2002](https://github.com/cmderdev/cmder/pull/2002)
* Updated the HG prompt code to use the '-ib' option to 'hg id' so the branch name is always available, regardless of the state of the working copy
### Changes
* Pull Request: [#2055](https://github.com/cmderdev/cmder/pull/2055)
* Upgrade git to 2.21.0
* Provide default settings for Clink that updates the history file in real time
* Turn this on in existing Cmder using `clink set history_io 1`
* Allow clink disable by setting CMDER_CLINK=0 before starting task
* Pull Request: [#2068](https://github.com/cmderdev/cmder/pull/2068)
* Print Index in History Command Output.
* Sets default `history_expand_mode = 3` in initial Clink Settings.
### Adds
* Pull Request : [#2096](https://github.com/cmderdev/cmder/pull/2096)
* Question issue: [#2094](https://github.com/cmderdev/cmder/issues/2094)
* New argument created to ConEmu forwarding arguments.
* Syntax: `/x [ConEmu extras arguments]`
* e.g.: `Cmder.exe /x "-min -tsa"`
## [1.3.11](https://github.com/cmderdev/cmder/tree/v1.3.11) (2018-12-22)
### Fixes

View File

@ -50,6 +50,7 @@ The Cmder's user interface is also designed to be more eye pleasing, and you can
| `/SINGLE` | Start Cmder in single mode. |
| `/START [start_path]` | Folder path to start in. |
| `/TASK [task_name]` | Task to start after launch. |
| `/X [ConEmu extras pars]` | Forwads parameters to ConEmu |
## Context Menu Integration
@ -146,6 +147,7 @@ You may find some Monokai color schemes for mintty to match Cmder [here](https:/
| `/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 |
| `/f` | Enables Cmder Fast Init Mode. This disables some features, see pull request [#1492](https://github.com/cmderdev/cmder/pull/1942) for more details. | not set |
| `/t` | Enables Cmder Timed Init Mode. This displays the time taken run init scripts | 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 |
@ -312,11 +314,11 @@ For instructions on how to integrate Cmder with your IDE, please read our [Wiki
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:
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`.
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.
* 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`.
@ -325,9 +327,9 @@ If you have a `[cmder_root]/config/user-conemu.xml`, you are running a newer ver
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:
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`.
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`.

View File

@ -20,6 +20,8 @@
#define MB_TITLE L"Cmder Launcher"
#define SHELL_MENU_REGISTRY_PATH_BACKGROUND L"Directory\\Background\\shell\\Cmder"
#define SHELL_MENU_REGISTRY_PATH_LISTITEM L"Directory\\shell\\Cmder"
#define SHELL_MENU_REGISTRY_DRIVE_PATH_BACKGROUND L"Drive\\Background\\shell\\Cmder"
#define SHELL_MENU_REGISTRY_DRIVE_PATH_LISTITEM L"Drive\\shell\\Cmder"
#define streqi(a, b) (_wcsicmp((a), (b)) == 0)
@ -69,7 +71,7 @@ bool FileExists(const wchar_t * filePath)
return false;
}
void StartCmder(std::wstring path = L"", bool is_single_mode = false, std::wstring taskName = L"", std::wstring cfgRoot = L"", bool use_user_cfg = true)
void StartCmder(std::wstring path = L"", bool is_single_mode = false, std::wstring taskName = L"", std::wstring cfgRoot = L"", bool use_user_cfg = true, std::wstring conemu_args = L"")
{
#if USE_TASKBAR_API
wchar_t appId[MAX_PATH] = { 0 };
@ -96,6 +98,7 @@ void StartCmder(std::wstring path = L"", bool is_single_mode = false, std::wstr
std::wstring cmderStart = path;
std::wstring cmderTask = taskName;
std::wstring cmderConEmuArgs = conemu_args;
std::copy(cfgRoot.begin(), cfgRoot.end(), userConfigDirPath);
userConfigDirPath[cfgRoot.length()] = 0;
@ -389,6 +392,11 @@ void StartCmder(std::wstring path = L"", bool is_single_mode = false, std::wstr
swprintf_s(args, L"%s -loadcfgfile \"%s\"", args, userConEmuCfgPath);
}
if (!streqi(cmderConEmuArgs.c_str(), L""))
{
swprintf_s(args, L"%s %s", args, cmderConEmuArgs.c_str());
}
SetEnvironmentVariable(L"CMDER_ROOT", exeDir);
if (wcscmp(userConfigDirPath, configDirPath) != 0)
{
@ -525,6 +533,7 @@ struct cmderOptions
std::wstring cmderStart = L"";
std::wstring cmderTask = L"";
std::wstring cmderRegScope = L"USER";
std::wstring cmderConEmuArgs = L"";
bool cmderSingle = false;
bool cmderUserCfg = true;
bool registerApp = false;
@ -618,6 +627,12 @@ cmderOptions GetOption()
}
}
}
/* Used for passing arguments to conemu prog */
else if (_wcsicmp(L"/x", szArgList[i]) == 0)
{
cmderOptions.cmderConEmuArgs = szArgList[i + 1];
i++;
}
else if (cmderOptions.cmderStart == L"")
{
int len = wcslen(szArgList[i]);
@ -633,13 +648,13 @@ cmderOptions GetOption()
}
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\n /m\n\nor\n\n /register [USER | ALL]\n\nor\n\n /unregister [USER | ALL]\n", MB_TITLE, MB_OK);
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\n /m\n\n /x [ConEmu extra arguments]\n\nor\n\n /register [USER | ALL]\n\nor\n\n /unregister [USER | ALL]\n", MB_TITLE, MB_OK);
cmderOptions.error = true;
}
}
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\n /m\n\nor\n\n /register [USER | ALL]\n\nor\n\n /unregister [USER | ALL]\n", MB_TITLE, MB_OK);
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\n /m\n\n /x [ConEmu extra arguments]\n\nor\n\n /register [USER | ALL]\n\nor\n\n /unregister [USER | ALL]\n", MB_TITLE, MB_OK);
cmderOptions.error = true;
}
}
@ -665,11 +680,15 @@ int APIENTRY _tWinMain(_In_ HINSTANCE hInstance,
{
RegisterShellMenu(cmderOptions.cmderRegScope, SHELL_MENU_REGISTRY_PATH_BACKGROUND, cmderOptions.cmderCfgRoot, cmderOptions.cmderSingle);
RegisterShellMenu(cmderOptions.cmderRegScope, SHELL_MENU_REGISTRY_PATH_LISTITEM, cmderOptions.cmderCfgRoot, cmderOptions.cmderSingle);
RegisterShellMenu(cmderOptions.cmderRegScope, SHELL_MENU_REGISTRY_DRIVE_PATH_BACKGROUND, cmderOptions.cmderCfgRoot, cmderOptions.cmderSingle);
RegisterShellMenu(cmderOptions.cmderRegScope, SHELL_MENU_REGISTRY_DRIVE_PATH_LISTITEM, cmderOptions.cmderCfgRoot, cmderOptions.cmderSingle);
}
else if (cmderOptions.unRegisterApp == true)
{
UnregisterShellMenu(cmderOptions.cmderRegScope, SHELL_MENU_REGISTRY_PATH_BACKGROUND);
UnregisterShellMenu(cmderOptions.cmderRegScope, SHELL_MENU_REGISTRY_PATH_LISTITEM);
UnregisterShellMenu(cmderOptions.cmderRegScope, SHELL_MENU_REGISTRY_DRIVE_PATH_BACKGROUND);
UnregisterShellMenu(cmderOptions.cmderRegScope, SHELL_MENU_REGISTRY_DRIVE_PATH_LISTITEM);
}
else if (cmderOptions.error == true)
{
@ -677,7 +696,7 @@ int APIENTRY _tWinMain(_In_ HINSTANCE hInstance,
}
else
{
StartCmder(cmderOptions.cmderStart, cmderOptions.cmderSingle, cmderOptions.cmderTask, cmderOptions.cmderCfgRoot, cmderOptions.cmderUserCfg);
StartCmder(cmderOptions.cmderStart, cmderOptions.cmderSingle, cmderOptions.cmderTask, cmderOptions.cmderCfgRoot, cmderOptions.cmderUserCfg, cmderOptions.cmderConEmuArgs);
}
return 0;

53
vendor/bin/alias.cmd vendored
View File

@ -22,10 +22,15 @@ goto parseargument
if /i "%currentarg%" equ "/f" (
set ALIASES=%~2
set _f=%~2
shift
goto :do_shift
) else if /i "%currentarg%" == "/reload" (
goto :p_reload
) else if "%currentarg%" equ "/H" (
goto :p_help
) else if "%currentarg%" equ "/h" (
goto :p_help
) else if "%currentarg%" equ "/?" (
goto :p_help
) else if /i "%currentarg%" equ "/d" (
@ -48,6 +53,7 @@ goto parseargument
set _x=%*
)
)
rem #endregion parseargument
if "%ALIASES%" neq "%CMDER_ROOT%\config\user_aliases.cmd" (
@ -64,24 +70,24 @@ if "%ALIASES%" neq "%CMDER_ROOT%\config\user_aliases.cmd" (
)
:: validate alias
for /f "delims== tokens=1,* 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
)
:: leading quotes added while validating
set alias_name=%alias_name:~1%
set alias_name=!alias_name:~1!
:: trailing quotes added while validating
set alias_value=%alias_value:~0,-1%
set alias_value=!alias_value:~0,-1!
::remove spaces
set _temp=%alias_name: =%
if not ["%_temp%"] == ["%alias_name%"] (
echo Your alias name can not contain a space
endlocal
exit /b
echo Your alias name can not contain a space
endlocal
exit /b
)
:: replace already defined alias
@ -111,21 +117,32 @@ exit /b
:p_help
echo.Usage:
echo.
echo. alias [options] [alias=full command]
echo. alias [options] [alias=alias command]
echo.
echo.Options:
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
echo. /reload Reload the aliases file. Can be used with /f argument.
echo. Default: %cmder_root%\config\user_aliases.cmd
echo. Note: Options MUST precede the alias definition.
echo.
echo. If alias is called with no parameters, it will display the list of existing aliases.
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
echo. /reload Reload the aliases file. Can be used with /f argument.
echo. Default: %cmder_root%\config\user_aliases.cmd
echo.
echo. In the command, you can use the following notations:
echo. $* allows the alias to assume all the parameters of the supplied command.
echo. $1-$9 Allows you to seperate parameter by number, much like %%1 in batch.
echo. $T is the command seperator, allowing you to string several commands together into one alias.
echo. For more information, read DOSKEY/?
echo. If alias is called with no parameters, it will display the list of existing
echo. aliases.
echo.
echo. In the alias command, you can use the following notations:
echo.
echo. ^^^^^^^^%% - %% signs in env vars must be escaped if preserving the variable
echo. in he alias is desired. Variables in aliases surrounded by double
echo. quotes only require '^^%%' vs '^^^^^^^^%%'
echo. $* - allows the alias to assume all the parameters of the supplied
echo. command.
echo. $1-$9 - Allows you to seperate parameter by number, much like %%1 in
echo. batch.
echo. $T - Command seperator, allowing you to string several commands
echo. together into one alias.
echo.
echo. For more information, read DOSKEY /?
exit /b

9
vendor/bin/vscode_init.cmd vendored Normal file
View File

@ -0,0 +1,9 @@
@echo off
IF [%1] == [] (
REM -- manually opened console (Ctrl + Shift + `) --
CALL "%~dp0..\init.bat"
) ELSE (
REM -- task --
CALL cmd %*
exit
)

42
vendor/clink.lua vendored
View File

@ -189,12 +189,15 @@ end
-- @return {false|mercurial branch name}
---
local function get_hg_branch()
for line in io.popen("hg branch 2>nul"):lines() do
local file = io.popen("hg branch 2>nul")
for line in file:lines() do
local m = line:match("(.+)$")
if m then
file:close()
return m
end
end
file:close()
return false
end
@ -204,12 +207,15 @@ end
-- @return {false|svn branch name}
---
local function get_svn_branch(svn_dir)
for line in io.popen("svn info 2>nul"):lines() do
local file = io.popen("svn info 2>nul")
for line in file:lines() do
local m = line:match("^Relative URL:")
if m then
file:close()
return line:sub(line:find("/")+1,line:len())
end
end
file:close()
return false
end
@ -324,26 +330,26 @@ local function hg_prompt_filter()
dirty = "\x1b[31;1m",
}
-- 'hg id' gives us BOTH the branch name AND an indicator that there
-- are uncommitted changes, in one fast(er) call
local pipe = io.popen("hg id 2>&1")
local pipe = io.popen("hg branch 2>&1")
local output = pipe:read('*all')
local rc = { pipe:close() }
if output ~= nil and
string.sub(output,1,7) ~= "abort: " and -- not an HG working copy
string.sub(output,1,12) ~= "000000000000" and -- empty wc (needs update)
(not string.find(output, "is not recognized")) then -- 'hg' not in path
-- strip the trailing newline from the branch name
local n = #output
while n > 0 and output:find("^%s", n) do n = n - 1 end
local branch = output:sub(1, n)
if branch ~= nil and
string.sub(branch,1,7) ~= "abort: " and -- not an HG working copy
(not string.find(branch, "is not recognized")) then -- 'hg' not in path
local color = colors.clean
-- split elements on space delimiter
local items = {}
for i in string.gmatch(output, "%S+") do
table.insert(items, i)
end
-- if the repo hash ends with '+', the wc has uncommitted changes
if string.sub(items[1], -1, -1) == "+" then color = colors.dirty end
-- substitute the branch in directly -- already WITH parentheses. :)
result = color .. items[2] -- string.sub(items[2], 1, string.len(items[2]) - 1)
local pipe = io.popen("hg status -amrd 2>&1")
local output = pipe:read('*all')
local rc = { pipe:close() }
if output ~= nil and output ~= "" then color = colors.dirty end
result = color .. "(" .. branch .. ")"
end
end

116
vendor/clink_settings.default vendored Normal file
View File

@ -0,0 +1,116 @@
# name: Pressing Ctrl-D exits session
# type: bool
# Ctrl-D exits cmd.exe when it is pressed on an empty line.
ctrld_exits = 1
# name: Toggle if pressing Esc clears line
# type: bool
# Clink clears the current line when Esc is pressed (unless Readline's Vi mode
# is enabled).
esc_clears_line = 1
# name: Match display colour
# type: int
# Colour to use when displaying matches. A value less than 0 will be the
# opposite brightness of the default colour.
match_colour = -1
# name: Executable match style
# type: enum
# 0 = PATH only
# 1 = PATH and CWD
# 2 = PATH, CWD, and directories
# Changes how Clink will match executables when there is no path separator on
# the line. 0 = PATH only, 1 = PATH and CWD, 2 = PATH, CWD, and directories. In
# all cases both executables and directories are matched when there is a path
# separator present. A value of -1 will disable executable matching completely.
exec_match_style = 2
# name: Whitespace prefix matches files
# type: bool
# If the line begins with whitespace then Clink bypasses executable matching and
# will match all files and directories instead.
space_prefix_match_files = 1
# name: Colour of the prompt
# type: int
# Surrounds the prompt in ANSI escape codes to set the prompt's colour. Disabled
# when the value is less than 0.
prompt_colour = -1
# name: Auto-answer terminate prompt
# type: enum
# 0 = Disabled
# 1 = Answer 'Y'
# 2 = Answer 'N'
# Automatically answers cmd.exe's 'Terminate batch job (Y/N)?' prompts. 0 =
# disabled, 1 = answer 'Y', 2 = answer 'N'.
terminate_autoanswer = 0
# name: Lines of history saved to disk
# type: int
# When set to a positive integer this is the number of lines of history that
# will persist when Clink saves the command history to disk. Use 0 for infinite
# lines and <0 to disable history persistence.
history_file_lines = 10000
# name: Skip adding lines prefixed with whitespace
# type: bool
# Ignore lines that begin with whitespace when adding lines in to the history.
history_ignore_space = 0
# name: Controls how duplicate entries are handled
# type: enum
# 0 = Always add
# 1 = Ignore
# 2 = Erase previous
# If a line is a duplicate of an existing history entry Clink will erase the
# duplicate when this is set 2. A value of 1 will not add duplicates to the
# history and a value of 0 will always add lines. Note that history is not
# deduplicated when reading/writing to disk.
history_dupe_mode = 2
# name: Read/write history file each line edited
# type: bool
# When non-zero the history will be read from disk before editing a new line and
# written to disk afterwards.
history_io = 1
# name: Sets how command history expansion is applied
# type: enum
# 0 = Off
# 1 = On
# 2 = Not in single quotes
# 3 = Not in double quote
# 4 = Not in any quotes
# The '!' character in an entered line can be interpreted to introduce words
# from the history. This can be enabled and disable by setting this value to 1
# or 0. Values or 2, 3 or 4 will skip any ! character quoted in single, double,
# or both quotes respectively.
history_expand_mode = 3
# name: Support Windows' Ctrl-Alt substitute for AltGr
# type: bool
# Windows provides Ctrl-Alt as a substitute for AltGr, historically to support
# keyboards with no AltGr key. This may collide with some of Readline's
# bindings.
use_altgr_substitute = 1
# name: Strips CR and LF chars on paste
# type: enum
# 0 = Paste unchanged
# 1 = Strip
# 2 = As space
# Setting this to a value >0 will make Clink strip CR and LF characters from
# text pasted into the current line. Set this to 1 to strip all newline
# characters and 2 to replace them with a space.
strip_crlf_on_paste = 2
# name: Enables basic ANSI escape code support
# type: bool
# When printing the prompt, Clink has basic built-in support for SGR ANSI escape
# codes to control the text colours. This is automatically disabled if a third
# party tool is detected that also provides this facility. It can also be
# disabled by setting this to 0.
ansi_code_support = 1

10
vendor/init.bat vendored
View File

@ -138,12 +138,14 @@ if "%CMDER_CLINK%" == "1" (
if defined CMDER_USER_CONFIG (
if not exist "%CMDER_USER_CONFIG%\settings" (
echo Generating clink initial settings in "%CMDER_USER_CONFIG%\settings"
copy "%CMDER_ROOT%\vendor\clink_settings.default" "%CMDER_USER_CONFIG%\settings"
echo Additional *.lua files in "%CMDER_USER_CONFIG%" are loaded on startup.\
)
"%CMDER_ROOT%\vendor\clink\clink_x%architecture%.exe" inject --quiet --profile "%CMDER_USER_CONFIG%" --scripts "%CMDER_ROOT%\vendor"
) else (
if not exist "%CMDER_ROOT%\config\settings" (
echo Generating clink initial settings in "%CMDER_ROOT%\config\settings"
copy "%CMDER_ROOT%\vendor\clink_settings.default" "%CMDER_ROOT%\config\settings"
echo Additional *.lua files in "%CMDER_ROOT%\config" are loaded on startup.
)
"%CMDER_ROOT%\vendor\clink\clink_x%architecture%.exe" inject --quiet --profile "%CMDER_ROOT%\config" --scripts "%CMDER_ROOT%\vendor"
@ -231,7 +233,7 @@ for /F "delims=" %%F in ('where git.exe 2^>nul') do (
:VENDORED_GIT
if exist "%CMDER_ROOT%\vendor\git-for-windows" (
set "GIT_INSTALL_ROOT=%CMDER_ROOT%\vendor\git-for-windows"
%lib_console% debug_output "Using vendored Git from '!GIT_INSTALL_ROOT!..."
%lib_console% debug_output "Using vendored Git '!GIT_VERSION_VENDORED!' from '!GIT_INSTALL_ROOT!..."
goto :CONFIGURE_GIT
) else (
goto :NO_GIT
@ -242,7 +244,7 @@ if exist "%CMDER_ROOT%\vendor\git-for-windows" (
goto :CONFIGURE_GIT
:FOUND_GIT
%lib_console% debug_output "Using found Git from '%GIT_INSTALL_ROOT%..."
%lib_console% debug_output "Using found Git '!GIT_VERSION_USER!' from '%GIT_INSTALL_ROOT%..."
goto :CONFIGURE_GIT
:CONFIGURE_GIT
@ -367,9 +369,9 @@ call "%user_aliases%"
:: Basically we need to execute this post-install.bat because we are
:: manually extracting the archive rather than executing the 7z sfx
if exist "%GIT_INSTALL_ROOT%\post-install.bat" (
%lib_console% verbose_output "Running Git for Windows one time Post Install...."
echo Running Git for Windows one time Post Install....
pushd "%GIT_INSTALL_ROOT%\"
"%GIT_INSTALL_ROOT%\git-bash.exe" --no-needs-console --hide --no-cd --command=post-install.bat
"%GIT_INSTALL_ROOT%\git-cmd.exe" --no-needs-console --no-cd --command=post-install.bat
popd
)

View File

@ -65,12 +65,17 @@ exit /b
echo %comspec% | %WINDIR%\System32\find /i "\tcc.exe" > nul && set "CMDER_SHELL=tcc"
echo %comspec% | %WINDIR%\System32\find /i "\tccle" > nul && set "CMDER_SHELL=tccle"
set CMDER_CLINK=1
if "%CMDER_SHELL%" equ "tcc" set CMDER_CLINK=0
if "%CMDER_SHELL%" equ "tccle" set CMDER_CLINK=0
if not defined CMDER_CLINK (
set CMDER_CLINK=1
if "%CMDER_SHELL%" equ "tcc" set CMDER_CLINK=0
if "%CMDER_SHELL%" equ "tccle" set CMDER_CLINK=0
)
set CMDER_ALIASES=1
if "%CMDER_SHELL%" equ "tcc" set CMDER_ALIASES=0
if "%CMDER_SHELL%" equ "tccle" set CMDER_ALIASES=0
if not defined CMDER_ALIASES (
set CMDER_ALIASES=1
if "%CMDER_SHELL%" equ "tcc" set CMDER_ALIASES=0
if "%CMDER_SHELL%" equ "tccle" set CMDER_ALIASES=0
)
exit /b

View File

@ -88,8 +88,11 @@ exit /b
::: [SCOPE]_BUILD <out> Scoped Build version.
:::-------------------------------------------------------------------------------
setlocal enabledelayedexpansion
:: process a `x.x.x.xxxx.x` formatted string
set "%~1_MAJOR="
set "%~1_MINOR="
set "%~1_PATCH="
set "%~1_BUILD="
%lib_console% debug_output :parse_version "ARGV[1]=%~1, ARGV[2]=%~2"
for /F "tokens=1-3* delims=.,-" %%A in ("%2") do (
set "%~1_MAJOR=%%A"
@ -98,7 +101,6 @@ exit /b
set "%~1_BUILD=%%D"
)
endlocal & set "%~1_MAJOR=!%~1_MAJOR!" & set "%~1_MINOR=!%~1_MINOR!" & set "%~1_PATCH=!%~1_PATCH!" & set "%~1_BUILD=!%~1_BUILD!"
exit /b
:validate_version

139
vendor/profile.ps1 vendored
View File

@ -25,9 +25,9 @@ if (! $ENV:CMDER_ROOT ) {
# Remove trailing '\'
$ENV:CMDER_ROOT = (($ENV:CMDER_ROOT).trimend("\"))
# do not load bundled psget if a module installer is already available
# 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)
$moduleInstallerAvailable = [bool](Get-Command -Name 'Install-Module' -ErrorAction SilentlyContinue)
# Add Cmder modules directory to the autoload path.
$CmderModulePath = Join-path $PSScriptRoot "psmodules/"
@ -36,26 +36,21 @@ if(-not $moduleInstallerAvailable -and -not $env:PSModulePath.Contains($CmderMod
$env:PSModulePath = $env:PSModulePath.Insert(0, "$CmderModulePath;")
}
try {
Get-command -Name "vim" -ErrorAction Stop >$null
} catch {
# # You could do this but it may be a little drastic and introduce a lot of
# # unix tool overlap with powershel unix like aliases
# $env:Path += $(";" + $env:CMDER_ROOT + "\vendor\git-for-windows\usr\bin")
# set-alias -name "vi" -value "vim"
# # I think the below is safer.
function Configure-Git($GIT_INSTALL_ROOT){
$env:Path += $(";" + $GIT_INSTALL_ROOT + "\cmd")
new-alias -name "vim" -value $($ENV:CMDER_ROOT + "\vendor\git-for-windows\usr\bin\vim.exe")
new-alias -name "vi" -value vim
}
try {
# Check if git is on PATH, i.e. Git already installed on system
Get-command -Name "git" -ErrorAction Stop >$null
} catch {
$env:Path += $(";" + $env:CMDER_ROOT + "\vendor\git-for-windows\cmd")
# for bash.exe, which in the cmd version is found as <GIT>\usr\bin\bash.exe
$env:Path += $(";" + $env:CMDER_ROOT + "\vendor\git-for-windows\bin")
# Add "$GIT_INSTALL_ROOT\usr\bin" to the path if exists and not done already
$GIT_INSTALL_ROOT_ESC=$GIT_INSTALL_ROOT.replace('\','\\')
if ((test-path "$GIT_INSTALL_ROOT\usr\bin") -and -not ($env:path -match "$GIT_INSTALL_ROOT_ESC\\usr\\bin")) {
$env:path = "$env:path;$GIT_INSTALL_ROOT\usr\bin"
}
# Add "$GIT_INSTALL_ROOT\mingw[32|64]\bin" to the path if exists and not done already
if ((test-path "$GIT_INSTALL_ROOT\mingw32\bin") -and -not ($env:path -match "$GIT_INSTALL_ROOT_ESC\\mingw32\\bin")) {
$env:path = "$env:path;$GIT_INSTALL_ROOT\mingw32\bin"
} elseif ((test-path "$GIT_INSTALL_ROOT\mingw64\bin") -and -not ($env:path -match "$GIT_INSTALL_ROOT_ESC\\mingw64\\bin")) {
$env:path = "$env:path;$GIT_INSTALL_ROOT\mingw64\bin"
}
}
$gitLoaded = $false
@ -84,6 +79,19 @@ function checkGit($Path) {
}
}
try {
# Check if git is on PATH, i.e. Git already installed on system
Get-command -Name "git" -ErrorAction Stop >$null
} catch {
if (test-path "$env:CMDER_ROOT\vendor\git-for-windows") {
Configure-Git "$env:CMDER_ROOT\vendor\git-for-windows"
}
}
if ( Get-command -Name "vim" -ErrorAction silentlycontinue) {
new-alias -name "vi" -value vim
}
if (Get-Module PSReadline -ErrorAction "SilentlyContinue") {
Set-PSReadlineOption -ExtraPromptLineCount 1
}
@ -91,36 +99,6 @@ if (Get-Module PSReadline -ErrorAction "SilentlyContinue") {
# Enhance Path
$env:Path = "$Env:CMDER_ROOT\bin;$Env:CMDER_ROOT\vendor\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")) {
@ -154,7 +132,7 @@ if ($ENV:CMDER_USER_CONFIG -ne "" -and (test-path "$ENV:CMDER_USER_CONFIG\profil
}
popd
}
# Renaming to "config\user_profile.ps1" to "user_profile.ps1" for consistency.
if (test-path "$env:CMDER_ROOT\config\user-profile.ps1") {
rename-item "$env:CMDER_ROOT\config\user-profile.ps1" user_profile.ps1
@ -185,11 +163,54 @@ if (! (Test-Path $CmderUserProfilePath) ) {
Copy-Item "$env:CMDER_ROOT\vendor\user_profile.ps1.default" -Destination $CmderUserProfilePath
}
# 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
#
# Prompt Section
# Users should modify their user_profile.ps1 as it will be safe from updates.
#
# 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
# Only set the prompt if it is currently set to the default
# This allows users to configure the prompt in their user_profile.ps1 or config\profile.d\*.ps1
if ( $(get-command prompt).Definition -match 'PS \$\(\$executionContext.SessionState.Path.CurrentLocation\)\$\(' -and `
$(get-command prompt).Definition -match '\(\$nestedPromptLevel \+ 1\)\) ";') {
# 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
if (get-command git -erroraction silentlycontinue) {
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 " "
}
# Once Created these code blocks cannot be overwritten
# if (-not $(get-command PrePrompt).Options -match 'Constant') {Set-Item -Path function:\PrePrompt -Value $PrePrompt -Options Constant}
# if (-not $(get-command CmderPrompt).Options -match 'Constant') {Set-Item -Path function:\CmderPrompt -Value $CmderPrompt -Options Constant}
# if (-not $(get-command PostPrompt).Options -match 'Constant') {Set-Item -Path function:\PostPrompt -Value $PostPrompt -Options Constant}
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
# if (!$(get-command Prompt).Options -match 'ReadOnly') {Set-Item -Path function:\prompt -Value $Prompt -Options ReadOnly}
Set-Item -Path function:\prompt -Value $Prompt -Options ReadOnly
}

4
vendor/sources.json vendored
View File

@ -1,8 +1,8 @@
[
{
"name": "git-for-windows",
"version": "v2.19.0.windows.1",
"url": "https://github.com/git-for-windows/git/releases/download/v2.19.0.windows.1/PortableGit-2.19.0-64-bit.7z.exe"
"version": "v2.21.0.windows.1",
"url": "https://github.com/git-for-windows/git/releases/download/v2.21.0.windows.1/PortableGit-2.21.0-64-bit.7z.exe"
},
{
"name": "clink",

View File

@ -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 -n "%CMDER_ROOT%\config\.history"
unalias=alias /d $1
vi=vim $*
cmderr=cd /d "%CMDER_ROOT%"

View File

@ -23,3 +23,19 @@
## <Continue to add your own>
# # Delete default powershell aliases that conflict with bash commands
# if (get-command git) {
# del -force alias:cat
# del -force alias:clear
# del -force alias:cp
# del -force alias:diff
# del -force alias:echo
# del -force alias:kill
# del -force alias:ls
# del -force alias:mv
# del -force alias:ps
# del -force alias:pwd
# del -force alias:rm
# del -force alias:sleep
# del -force alias:tee
# }