From 160fbad621f33fe3c2d1e61d86ef42097ba3dace Mon Sep 17 00:00:00 2001 From: Martin Kemp Date: Sun, 20 Mar 2016 12:23:05 +0000 Subject: [PATCH 001/306] Add changelog --- CHANGELOG.md | 514 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 514 insertions(+) create mode 100644 CHANGELOG.md diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..b7de4f2 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,514 @@ +# Change Log + +## [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:** + +- 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) +- v1.2.0: Errors because of PowerShell execution policy [\#483](https://github.com/cmderdev/cmder/issues/483) +- 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) +- Git Credential Cache [\#184](https://github.com/cmderdev/cmder/issues/184) +- Crawling for executables in /bin [\#61](https://github.com/cmderdev/cmder/issues/61) +- 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) +- 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)) +- Ability to change Font Size using Ctrl+MouseWheel [\#125](https://github.com/cmderdev/cmder/pull/125) ([saaguero](https://github.com/saaguero)) + +**Fixed bugs:** + +- 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) +- Path issues on startup [\#487](https://github.com/cmderdev/cmder/issues/487) +- Missing DLL: MSVCP140.dll [\#482](https://github.com/cmderdev/cmder/issues/482) +- Single mode does not set current directory [\#420](https://github.com/cmderdev/cmder/issues/420) +- Fails to parse path in PATH system variable with '&' [\#185](https://github.com/cmderdev/cmder/issues/185) +- Cmder hangs after idling for a few minutes or when clicking above the cursor [\#109](https://github.com/cmderdev/cmder/issues/109) +- No color scheme in tabs opened as Administrator [\#94](https://github.com/cmderdev/cmder/issues/94) +- Bug in alias.bat [\#52](https://github.com/cmderdev/cmder/issues/52) +- Clicking/selecting text on terminal causes slowdown [\#40](https://github.com/cmderdev/cmder/issues/40) + +**Closed issues:** + +- 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) +- 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) +- Alias with multi-word git commit message not working [\#847](https://github.com/cmderdev/cmder/issues/847) +- switch to use master a the default development branch [\#836](https://github.com/cmderdev/cmder/issues/836) +- Git branch information is broken for submodules [\#833](https://github.com/cmderdev/cmder/issues/833) +- 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) +- When will the next version be available? [\#811](https://github.com/cmderdev/cmder/issues/811) +- 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) +- 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) +- % variable expansion in config/alias [\#791](https://github.com/cmderdev/cmder/issues/791) +- Problems with node [\#790](https://github.com/cmderdev/cmder/issues/790) +- Resizing adds new lines [\#789](https://github.com/cmderdev/cmder/issues/789) +- 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) +- 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) +- Unable to install cmder using Install-Package in Windows 10 [\#762](https://github.com/cmderdev/cmder/issues/762) +- Option to disable preview stacking with multiple tabs [\#758](https://github.com/cmderdev/cmder/issues/758) +- 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) +- 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) +- 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) +- e. shortcut not working ? [\#712](https://github.com/cmderdev/cmder/issues/712) +- "Cmder here" doesn't work if set start-up dir [\#709](https://github.com/cmderdev/cmder/issues/709) +- Is cmder support scrolling with touch screen? [\#706](https://github.com/cmderdev/cmder/issues/706) +- npm\_prompt.lua:11: attempt to concatenate local 'package\_version' \(a nil value\) [\#700](https://github.com/cmderdev/cmder/issues/700) +- Cmder \(cmd.exe\) startup crashes at clink step [\#699](https://github.com/cmderdev/cmder/issues/699) +- Doesn't run cmder.exe [\#696](https://github.com/cmderdev/cmder/issues/696) +- Not getting git status in 1.2.9 prompt [\#692](https://github.com/cmderdev/cmder/issues/692) +- 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) +- 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) +- Restore last session with history on start [\#672](https://github.com/cmderdev/cmder/issues/672) +- Restart As Admin bug [\#669](https://github.com/cmderdev/cmder/issues/669) +- git for windows 2.6.1 ssh folder [\#661](https://github.com/cmderdev/cmder/issues/661) +- der [\#660](https://github.com/cmderdev/cmder/issues/660) +- Cannot clean the terminal [\#659](https://github.com/cmderdev/cmder/issues/659) +- Cmder do not run if username has spaces between [\#658](https://github.com/cmderdev/cmder/issues/658) +- When exiting vim, cursor goes to first line of terminal instead of the end of it [\#656](https://github.com/cmderdev/cmder/issues/656) +- Cmder suddenly start crashing on startup [\#650](https://github.com/cmderdev/cmder/issues/650) +- Cannot switch to mapped network drive [\#649](https://github.com/cmderdev/cmder/issues/649) +- Ctrl + D? [\#648](https://github.com/cmderdev/cmder/issues/648) +- 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) +- 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) +- Problem with install on window 7? [\#637](https://github.com/cmderdev/cmder/issues/637) +- 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) +- 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) +- No Unix commands? [\#610](https://github.com/cmderdev/cmder/issues/610) +- using user installed git \(2.5\) with the suggested /bin/agent.cmd does not work [\#609](https://github.com/cmderdev/cmder/issues/609) +- vendor/init.bat is overwritten with new versions -\> use a user startup file? [\#608](https://github.com/cmderdev/cmder/issues/608) +- Git autocomplete is not working as in git bash [\#607](https://github.com/cmderdev/cmder/issues/607) +- api-ms-win-crt-runtime-l1-1-0.dll is missing error \(Windows 8.1\) [\#604](https://github.com/cmderdev/cmder/issues/604) +- Prevent inactive cmder windows to be dimmed [\#603](https://github.com/cmderdev/cmder/issues/603) +- Git for Windows 2.5 [\#602](https://github.com/cmderdev/cmder/issues/602) +- Incompatibility with conemu 150716+ / double pinned icon on taskbar [\#599](https://github.com/cmderdev/cmder/issues/599) +- Cant get it working on windows xp [\#598](https://github.com/cmderdev/cmder/issues/598) +- ls parameters error in Windows 10 [\#597](https://github.com/cmderdev/cmder/issues/597) +- Resizing split windows [\#596](https://github.com/cmderdev/cmder/issues/596) +- 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) +- 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) +- 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) +- 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) +- Downloads for v1.2 missing DLLs [\#558](https://github.com/cmderdev/cmder/issues/558) +- Can't get rid of "unrecognized parameter" error [\#557](https://github.com/cmderdev/cmder/issues/557) +- How to use cmder in a batch file? [\#556](https://github.com/cmderdev/cmder/issues/556) +- Run init.bat before any new scripts [\#554](https://github.com/cmderdev/cmder/issues/554) +- ssh not working [\#552](https://github.com/cmderdev/cmder/issues/552) +- Restore opened tabs setting opens root drive [\#551](https://github.com/cmderdev/cmder/issues/551) +- Maximize single view/terminal/console to whole window [\#550](https://github.com/cmderdev/cmder/issues/550) +- not run successfully [\#547](https://github.com/cmderdev/cmder/issues/547) +- compass not working with cmder ? [\#546](https://github.com/cmderdev/cmder/issues/546) +- Bad unicode support \(wrong glyphs on alsamixer\) [\#545](https://github.com/cmderdev/cmder/issues/545) +- 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) +- conhost.exe keeps on crashing. [\#527](https://github.com/cmderdev/cmder/issues/527) +- 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) +- 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) +- 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) +- Symantec refuses to access cmder [\#484](https://github.com/cmderdev/cmder/issues/484) +- Missing MSVCP140.dll [\#480](https://github.com/cmderdev/cmder/issues/480) +- Windows 10 compatibility issues [\#478](https://github.com/cmderdev/cmder/issues/478) +- update msysgit [\#473](https://github.com/cmderdev/cmder/issues/473) +- Notifications about composer.json and CRLF [\#472](https://github.com/cmderdev/cmder/issues/472) +- How to add more commands beyond mysisgit? [\#470](https://github.com/cmderdev/cmder/issues/470) +- ~ should mean user home directory [\#466](https://github.com/cmderdev/cmder/issues/466) +- mklink /d creates symlink with wrong slashes [\#462](https://github.com/cmderdev/cmder/issues/462) +- Does cmder come with GCC or not? [\#461](https://github.com/cmderdev/cmder/issues/461) +- Question: How to start cmder with a command [\#457](https://github.com/cmderdev/cmder/issues/457) +- PATH environment variable has space problem [\#456](https://github.com/cmderdev/cmder/issues/456) +- Feature Request : Save opened tabs and locations of the tabs [\#455](https://github.com/cmderdev/cmder/issues/455) +- Error on cmder launch: "The syntax of the command is incorrect" [\#454](https://github.com/cmderdev/cmder/issues/454) +- Lag returning to prompt \(especially\) in git repo [\#447](https://github.com/cmderdev/cmder/issues/447) +- 'MySQL' is not recognized as an internal or external command, operable program or batch file. [\#443](https://github.com/cmderdev/cmder/issues/443) +- Not scaling on Windows 8.1 with High-DPI Monitor [\#437](https://github.com/cmderdev/cmder/issues/437) +- Shortcut missing icon in context menu [\#433](https://github.com/cmderdev/cmder/issues/433) +- How to update Git? [\#428](https://github.com/cmderdev/cmder/issues/428) +- How to redirect Window's cmd.exe to Cmder's cmder.exe? [\#426](https://github.com/cmderdev/cmder/issues/426) +- cmder exits with exitcode 4294967295 [\#423](https://github.com/cmderdev/cmder/issues/423) +- How do you create an alias? [\#421](https://github.com/cmderdev/cmder/issues/421) +- Git pull not working [\#419](https://github.com/cmderdev/cmder/issues/419) +- Create files from cmder. [\#417](https://github.com/cmderdev/cmder/issues/417) +- Error popup window on opening [\#416](https://github.com/cmderdev/cmder/issues/416) +- 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) +- 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) +- UI broken characters [\#375](https://github.com/cmderdev/cmder/issues/375) +- Possible to change TSA icon? [\#373](https://github.com/cmderdev/cmder/issues/373) +- 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) +- 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) +- How to reload system variable [\#340](https://github.com/cmderdev/cmder/issues/340) +- SVN commands support [\#339](https://github.com/cmderdev/cmder/issues/339) +- Is it possible to show the current folder in front of cursor on the current line? [\#338](https://github.com/cmderdev/cmder/issues/338) +- backspace not work [\#334](https://github.com/cmderdev/cmder/issues/334) +- 'awk' is not recognized [\#330](https://github.com/cmderdev/cmder/issues/330) +- Cannot pin 1.1.4.1 to Win7 taskbar [\#329](https://github.com/cmderdev/cmder/issues/329) +- {lamb} instead of lambda sign \(possibly a UTF-8 problem?\) [\#322](https://github.com/cmderdev/cmder/issues/322) +- Instructions refer to Cmder.bat but it doesn't exist in download .zip [\#319](https://github.com/cmderdev/cmder/issues/319) +- Wrong link on https://bliker.github.io/cmder/ for msysgit [\#317](https://github.com/cmderdev/cmder/issues/317) +- 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) +- 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) +- Executing linux executables ./ doesn't work :S [\#285](https://github.com/cmderdev/cmder/issues/285) +- 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) +- 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) +- Can't start cmder 1.4.1.1 [\#252](https://github.com/cmderdev/cmder/issues/252) +- Cmder icon reverts to ConEmu icon when "Startup options" option is changed [\#251](https://github.com/cmderdev/cmder/issues/251) +- Old version files in v1.1.4 release archives [\#247](https://github.com/cmderdev/cmder/issues/247) +- "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) +- 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) +- 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) +- 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) +- Closes tab on Ctrl-C action [\#215](https://github.com/cmderdev/cmder/issues/215) +- 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) +- 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) +- 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) +- Open cmder in 64-bit on 64-bit windows [\#191](https://github.com/cmderdev/cmder/issues/191) +- Running cmder from the file explorer [\#187](https://github.com/cmderdev/cmder/issues/187) +- 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) +- 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) +- 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) +- 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) +- 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) +- 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) +- Add link to bliker.github.io/cmder to repo description/website [\#134](https://github.com/cmderdev/cmder/issues/134) +- Environmental variables are not reloaded on new console [\#132](https://github.com/cmderdev/cmder/issues/132) +- Git Branch Autocomplete [\#130](https://github.com/cmderdev/cmder/issues/130) +- The nice lambda left me :\( [\#129](https://github.com/cmderdev/cmder/issues/129) +- `ls` with output redirection writes ansi escape sequences to destination file [\#127](https://github.com/cmderdev/cmder/issues/127) +- Lamba prompt and git status scripts not running [\#126](https://github.com/cmderdev/cmder/issues/126) +- how to open specail directory? in sublime Terminal plugin? [\#123](https://github.com/cmderdev/cmder/issues/123) +- clink installed allready cmder hangs after install [\#122](https://github.com/cmderdev/cmder/issues/122) +- "The system cannot find the path specified" [\#121](https://github.com/cmderdev/cmder/issues/121) +- "chcp 65001" \(UTF-8\) support for cmd [\#119](https://github.com/cmderdev/cmder/issues/119) +- Incorrect version of clink is being used [\#117](https://github.com/cmderdev/cmder/issues/117) +- .bash\_profile equivalent? [\#113](https://github.com/cmderdev/cmder/issues/113) +- Startup directory on new tab [\#112](https://github.com/cmderdev/cmder/issues/112) +- Looking for a contributor/Cmder user [\#110](https://github.com/cmderdev/cmder/issues/110) +- Terminate batch job bug \(I think?\) [\#108](https://github.com/cmderdev/cmder/issues/108) +- latin1 characters [\#107](https://github.com/cmderdev/cmder/issues/107) +- Script cleanup [\#105](https://github.com/cmderdev/cmder/issues/105) +- Changed "λ" to "?" [\#104](https://github.com/cmderdev/cmder/issues/104) +- How to search history using PgUp and PgDown [\#103](https://github.com/cmderdev/cmder/issues/103) +- Folder shortcuts doesn't seem to work in FAR manager under cmder [\#102](https://github.com/cmderdev/cmder/issues/102) +- opening cmder.bat on windows 8 [\#101](https://github.com/cmderdev/cmder/issues/101) +- Change the builder from google code [\#99](https://github.com/cmderdev/cmder/issues/99) +- Text color not honored upon restart [\#97](https://github.com/cmderdev/cmder/issues/97) +- Launcher is not recognized as a valid Win32 application on windows XP. [\#96](https://github.com/cmderdev/cmder/issues/96) +- Allow the launcher to be pinned to the taskbar [\#95](https://github.com/cmderdev/cmder/issues/95) +- VS2013 runtime requirement [\#93](https://github.com/cmderdev/cmder/issues/93) +- git flow [\#92](https://github.com/cmderdev/cmder/issues/92) +- How to start in a given directory [\#91](https://github.com/cmderdev/cmder/issues/91) +- Can't type backslash \(clink issue\) [\#89](https://github.com/cmderdev/cmder/issues/89) +- command history [\#87](https://github.com/cmderdev/cmder/issues/87) +- Install cmder [\#86](https://github.com/cmderdev/cmder/issues/86) +- Can not work well with Chinese [\#81](https://github.com/cmderdev/cmder/issues/81) +- Does not work with Julia [\#80](https://github.com/cmderdev/cmder/issues/80) +- Build script does not work through proxy [\#79](https://github.com/cmderdev/cmder/issues/79) +- "C:\Users\bliker" reference in config/ConEmu.xml [\#71](https://github.com/cmderdev/cmder/issues/71) +- Is it possible to install wget into cmder\(clink, or ConEmu\) ? [\#69](https://github.com/cmderdev/cmder/issues/69) +- cyrillic characters problem [\#68](https://github.com/cmderdev/cmder/issues/68) +- Unable to run in Windows XP if path contains spaces [\#67](https://github.com/cmderdev/cmder/issues/67) +- Path not set correctly on Windows XP [\#66](https://github.com/cmderdev/cmder/issues/66) +- Filenames with special characters e.g. ! are not handled correctly [\#64](https://github.com/cmderdev/cmder/issues/64) +- Clink completion does not work [\#59](https://github.com/cmderdev/cmder/issues/59) +- Git hosts defined in .ssh/config not working in cmder [\#58](https://github.com/cmderdev/cmder/issues/58) +- Setting cmder startup directory. [\#57](https://github.com/cmderdev/cmder/issues/57) +- cmder doesn't work with gvim [\#55](https://github.com/cmderdev/cmder/issues/55) +- vendor\msysgit\libexec\git-core dir contains 1.45mb git.exe duplicated 110 times. [\#54](https://github.com/cmderdev/cmder/issues/54) +- "terminal is not fully functional" [\#50](https://github.com/cmderdev/cmder/issues/50) +- Open new tab as Admin by default. [\#49](https://github.com/cmderdev/cmder/issues/49) +- Chinese characters overlapped [\#45](https://github.com/cmderdev/cmder/issues/45) +- `screen irssi`, `mutt` - Cannot find terminfo entry for 'msys'. [\#44](https://github.com/cmderdev/cmder/issues/44) +- ps doesn't work [\#43](https://github.com/cmderdev/cmder/issues/43) +- Pinning Cmder to taskbar doesn't work as expected [\#39](https://github.com/cmderdev/cmder/issues/39) +- Prompt does not work with clink 0.4 [\#35](https://github.com/cmderdev/cmder/issues/35) +- vendor/init.bat fails on paths with spaces [\#28](https://github.com/cmderdev/cmder/issues/28) +- "windows cannot find ...\cmder\vendor/conemu-maximus5/ConEmu.exe" [\#27](https://github.com/cmderdev/cmder/issues/27) +- Issue with SSH and tmux [\#25](https://github.com/cmderdev/cmder/issues/25) +- PWD, VI, VIM commands don't work on windows 7. [\#23](https://github.com/cmderdev/cmder/issues/23) +- Include icon [\#21](https://github.com/cmderdev/cmder/issues/21) +- init.bat failing on Vista x64 [\#19](https://github.com/cmderdev/cmder/issues/19) +- Not possible to write @ on Norwegian keyboard [\#17](https://github.com/cmderdev/cmder/issues/17) +- Weird output when starting cmder [\#16](https://github.com/cmderdev/cmder/issues/16) +- Set a name for the Tab on a task [\#14](https://github.com/cmderdev/cmder/issues/14) +- Git branch name [\#13](https://github.com/cmderdev/cmder/issues/13) +- bin directories not loaded in path [\#12](https://github.com/cmderdev/cmder/issues/12) +- Cmder ssh keys for github [\#11](https://github.com/cmderdev/cmder/issues/11) +- How to use cmder with integration mode [\#10](https://github.com/cmderdev/cmder/issues/10) +- tab manipulation problem [\#9](https://github.com/cmderdev/cmder/issues/9) +- Remove ugly black startup window [\#8](https://github.com/cmderdev/cmder/issues/8) +- Unable to `cd` to another drive [\#6](https://github.com/cmderdev/cmder/issues/6) +- cant change start directory [\#4](https://github.com/cmderdev/cmder/issues/4) +- lalt + arrow left/right not working as a macro hotkey [\#3](https://github.com/cmderdev/cmder/issues/3) +- alt gr + 2 opens new powershell [\#2](https://github.com/cmderdev/cmder/issues/2) +- Gvim preferences are not used in {cmd} [\#1](https://github.com/cmderdev/cmder/issues/1) + +**Merged pull requests:** + +- 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)) +- 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)) +- Fixed get\_git\_dir\(\) to take submodules into account. Fixes \#833 [\#841](https://github.com/cmderdev/cmder/pull/841) ([gpakosz](https://github.com/gpakosz)) +- Add appveyor batch to README [\#837](https://github.com/cmderdev/cmder/pull/837) ([janschulz](https://github.com/janschulz)) +- Fixed checkGit\(\) in case of submodules [\#835](https://github.com/cmderdev/cmder/pull/835) ([gpakosz](https://github.com/gpakosz)) +- 1.3 Pre-Release Merge [\#831](https://github.com/cmderdev/cmder/pull/831) ([MartiUK](https://github.com/MartiUK)) +- Fix build script not exiting on msbuild failure. [\#804](https://github.com/cmderdev/cmder/pull/804) ([MartiUK](https://github.com/MartiUK)) +- Set tasks to always use CMDER\_START [\#803](https://github.com/cmderdev/cmder/pull/803) ([MartiUK](https://github.com/MartiUK)) +- Make "cmder here" work again [\#798](https://github.com/cmderdev/cmder/pull/798) ([janschulz](https://github.com/janschulz)) +- Reorganize how clink settings are loaded [\#794](https://github.com/cmderdev/cmder/pull/794) ([janschulz](https://github.com/janschulz)) +- Bump clink to 0.4.6 [\#781](https://github.com/cmderdev/cmder/pull/781) ([vladimir-kotikov](https://github.com/vladimir-kotikov)) +- Fix vendor/init.bat when the PATH contains spaces. [\#773](https://github.com/cmderdev/cmder/pull/773) ([glureau](https://github.com/glureau)) +- Merge latest development [\#771](https://github.com/cmderdev/cmder/pull/771) ([MartiUK](https://github.com/MartiUK)) +- Bump clink-completions to 0.2.2 [\#766](https://github.com/cmderdev/cmder/pull/766) ([vladimir-kotikov](https://github.com/vladimir-kotikov)) +- Fix: don't garble the input line for long lines in git projects [\#756](https://github.com/cmderdev/cmder/pull/756) ([janschulz](https://github.com/janschulz)) +- README.md Updates [\#746](https://github.com/cmderdev/cmder/pull/746) ([daxgames](https://github.com/daxgames)) +- Cmder exinit [\#740](https://github.com/cmderdev/cmder/pull/740) ([daxgames](https://github.com/daxgames)) +- added config\user-\* to packignore [\#738](https://github.com/cmderdev/cmder/pull/738) ([daxgames](https://github.com/daxgames)) +- Use consistent naming: user-profile.{sh|bat|ps1} [\#737](https://github.com/cmderdev/cmder/pull/737) ([janschulz](https://github.com/janschulz)) +- More config [\#736](https://github.com/cmderdev/cmder/pull/736) ([janschulz](https://github.com/janschulz)) +- Do not overwrite aliases on update [\#735](https://github.com/cmderdev/cmder/pull/735) ([janschulz](https://github.com/janschulz)) +- Added check for git install path in init.bat. [\#734](https://github.com/cmderdev/cmder/pull/734) ([chase-miller](https://github.com/chase-miller)) +- Fix icons [\#731](https://github.com/cmderdev/cmder/pull/731) ([daxgames](https://github.com/daxgames)) +- Fixed - Powershell vim/vim alias opening a new tab when editing a file [\#729](https://github.com/cmderdev/cmder/pull/729) ([daxgames](https://github.com/daxgames)) +- Added vi/vim aliases and fixed powershell startup errors [\#726](https://github.com/cmderdev/cmder/pull/726) ([daxgames](https://github.com/daxgames)) +- Release 1.3 [\#723](https://github.com/cmderdev/cmder/pull/723) ([MartiUK](https://github.com/MartiUK)) +- Update to conemu 151119 [\#722](https://github.com/cmderdev/cmder/pull/722) ([MartiUK](https://github.com/MartiUK)) +- Disable appveyor test search [\#720](https://github.com/cmderdev/cmder/pull/720) ([MartiUK](https://github.com/MartiUK)) +- Fix gitter webhook [\#719](https://github.com/cmderdev/cmder/pull/719) ([MartiUK](https://github.com/MartiUK)) +- Publish appveyor artefacts [\#718](https://github.com/cmderdev/cmder/pull/718) ([MartiUK](https://github.com/MartiUK)) +- add bundled vim to path [\#705](https://github.com/cmderdev/cmder/pull/705) ([wenzowski](https://github.com/wenzowski)) +- Fix batch files [\#698](https://github.com/cmderdev/cmder/pull/698) ([daxgames](https://github.com/daxgames)) +- Speed up git prompt filtering [\#697](https://github.com/cmderdev/cmder/pull/697) ([vladimir-kotikov](https://github.com/vladimir-kotikov)) +- Upgrade clink-completions to 0.2.1 [\#676](https://github.com/cmderdev/cmder/pull/676) ([vladimir-kotikov](https://github.com/vladimir-kotikov)) +- Enable the '/single' switch \(\#577\) [\#673](https://github.com/cmderdev/cmder/pull/673) ([DoCode](https://github.com/DoCode)) +- Fixed problem with Invoke-Expression [\#667](https://github.com/cmderdev/cmder/pull/667) ([Pireax](https://github.com/Pireax)) +- Add user startup file for powershell [\#666](https://github.com/cmderdev/cmder/pull/666) ([Pireax](https://github.com/Pireax)) +- Build from behind proxy & appveyor [\#665](https://github.com/cmderdev/cmder/pull/665) ([MartiUK](https://github.com/MartiUK)) +- Fix init.bat generation [\#663](https://github.com/cmderdev/cmder/pull/663) ([janschulz](https://github.com/janschulz)) +- Upgrade clink-completions to 0.2.0 [\#653](https://github.com/cmderdev/cmder/pull/653) ([vladimir-kotikov](https://github.com/vladimir-kotikov)) +- Make wording clearer [\#652](https://github.com/cmderdev/cmder/pull/652) ([jkingsman](https://github.com/jkingsman)) +- fix typos and better phrasing [\#651](https://github.com/cmderdev/cmder/pull/651) ([jkingsman](https://github.com/jkingsman)) +- Revert 8b8f98c [\#634](https://github.com/cmderdev/cmder/pull/634) ([Stanzilla](https://github.com/Stanzilla)) +- Update clink to 0.4.5 [\#619](https://github.com/cmderdev/cmder/pull/619) ([Stanzilla](https://github.com/Stanzilla)) +- Add a user startup file which can be modified [\#612](https://github.com/cmderdev/cmder/pull/612) ([janschulz](https://github.com/janschulz)) +- Update README.md [\#606](https://github.com/cmderdev/cmder/pull/606) ([pyprism](https://github.com/pyprism)) +- Converting msysgit support to git-for-windows support. [\#605](https://github.com/cmderdev/cmder/pull/605) ([Stanzilla](https://github.com/Stanzilla)) +- :arrow\_up: ConEmu@150816 [\#601](https://github.com/cmderdev/cmder/pull/601) ([Stanzilla](https://github.com/Stanzilla)) +- Use standard path for ConEmu.xml [\#600](https://github.com/cmderdev/cmder/pull/600) ([Maximus5](https://github.com/Maximus5)) +- Revert "Run PowerShell as default" [\#585](https://github.com/cmderdev/cmder/pull/585) ([Stanzilla](https://github.com/Stanzilla)) +- update VS to 2015 release version and switch to /MT for static linking [\#578](https://github.com/cmderdev/cmder/pull/578) ([Stanzilla](https://github.com/Stanzilla)) +- Enhance Path in profile.ps1 [\#575](https://github.com/cmderdev/cmder/pull/575) ([Bobo1239](https://github.com/Bobo1239)) +- Fixed: 'Enable-GitColors is Obsolete...' warning [\#569](https://github.com/cmderdev/cmder/pull/569) ([eeree](https://github.com/eeree)) +- Update .gitignore [\#548](https://github.com/cmderdev/cmder/pull/548) ([thomgit](https://github.com/thomgit)) +- Add `-ExecutionPolicy Bypass` to powershell tasks [\#543](https://github.com/cmderdev/cmder/pull/543) ([malobre](https://github.com/malobre)) +- Remove depreciated Enable-GitColors in posh-git [\#517](https://github.com/cmderdev/cmder/pull/517) ([bondz](https://github.com/bondz)) +- Fix cleanup script. [\#479](https://github.com/cmderdev/cmder/pull/479) ([MartiUK](https://github.com/MartiUK)) +- Fix link to msysgit's site. Google's repo was moved or removed. [\#465](https://github.com/cmderdev/cmder/pull/465) ([TheMolkaPL](https://github.com/TheMolkaPL)) +- Update sources.json [\#451](https://github.com/cmderdev/cmder/pull/451) ([MartiUK](https://github.com/MartiUK)) +- Merge development into master for 1.2 [\#450](https://github.com/cmderdev/cmder/pull/450) ([MartiUK](https://github.com/MartiUK)) +- Helper function using powershell to register the cmder context menu [\#441](https://github.com/cmderdev/cmder/pull/441) ([Jackbennett](https://github.com/Jackbennett)) +- git and Posh-git check [\#440](https://github.com/cmderdev/cmder/pull/440) ([Jackbennett](https://github.com/Jackbennett)) +- Improves performance of prompt filtering [\#438](https://github.com/cmderdev/cmder/pull/438) ([vladimir-kotikov](https://github.com/vladimir-kotikov)) +- Preview PR for including external completions into Cmder [\#434](https://github.com/cmderdev/cmder/pull/434) ([vladimir-kotikov](https://github.com/vladimir-kotikov)) +- Revert new line from commit dc834cc28f [\#432](https://github.com/cmderdev/cmder/pull/432) ([Jackbennett](https://github.com/Jackbennett)) +- Leverage the Module Autoload path and save doing it ourselves. [\#431](https://github.com/cmderdev/cmder/pull/431) ([Jackbennett](https://github.com/Jackbennett)) +- Adds support for PS 4.0 native hash command to remove a dependency [\#430](https://github.com/cmderdev/cmder/pull/430) ([Jackbennett](https://github.com/Jackbennett)) +- Fix build script removing a trailing comma. Download into a temp folder. [\#429](https://github.com/cmderdev/cmder/pull/429) ([Jackbennett](https://github.com/Jackbennett)) +- Update clink url [\#425](https://github.com/cmderdev/cmder/pull/425) ([danneu](https://github.com/danneu)) +- Added git shell task. [\#422](https://github.com/cmderdev/cmder/pull/422) ([ragekit](https://github.com/ragekit)) +- Public site docs update matching the repo readme [\#411](https://github.com/cmderdev/cmder/pull/411) ([Jackbennett](https://github.com/Jackbennett)) +- Install steps clarity [\#410](https://github.com/cmderdev/cmder/pull/410) ([Jackbennett](https://github.com/Jackbennett)) +- Update Conemu \, update clink 4.4 [\#407](https://github.com/cmderdev/cmder/pull/407) ([Jackbennett](https://github.com/Jackbennett)) +- Use a -Full parameter to download all sources rather than the minimum [\#406](https://github.com/cmderdev/cmder/pull/406) ([Jackbennett](https://github.com/Jackbennett)) +- Adding mercuial prompt [\#401](https://github.com/cmderdev/cmder/pull/401) ([utek](https://github.com/utek)) +- Handle quoted paths [\#398](https://github.com/cmderdev/cmder/pull/398) ([mikesigs](https://github.com/mikesigs)) +- Add a Gitter chat badge to README.md [\#390](https://github.com/cmderdev/cmder/pull/390) ([gitter-badger](https://github.com/gitter-badger)) +- Support UTF-8 file list [\#378](https://github.com/cmderdev/cmder/pull/378) ([asika32764](https://github.com/asika32764)) +- Updated vendor references [\#374](https://github.com/cmderdev/cmder/pull/374) ([CumpsD](https://github.com/CumpsD)) +- Prefer user installed git over cmder one. [\#364](https://github.com/cmderdev/cmder/pull/364) ([narnaud](https://github.com/narnaud)) +- Update clink to latest \(0.4.3\) version [\#362](https://github.com/cmderdev/cmder/pull/362) ([vladimir-kotikov](https://github.com/vladimir-kotikov)) +- Rework `alias` command to not to use external tools [\#358](https://github.com/cmderdev/cmder/pull/358) ([vladimir-kotikov](https://github.com/vladimir-kotikov)) +- Updating to msysgit 1.9.5 [\#353](https://github.com/cmderdev/cmder/pull/353) ([Celeo](https://github.com/Celeo)) +- Adding script to enable SSH-agent \#193 [\#352](https://github.com/cmderdev/cmder/pull/352) ([ogrim](https://github.com/ogrim)) +- Docs update for issue \#319 [\#337](https://github.com/cmderdev/cmder/pull/337) ([Jackbennett](https://github.com/Jackbennett)) +- changes copied from PR\#256 [\#326](https://github.com/cmderdev/cmder/pull/326) ([kohenkatz](https://github.com/kohenkatz)) +- Border less window mode [\#324](https://github.com/cmderdev/cmder/pull/324) ([cgrail](https://github.com/cgrail)) +- Update alias.bat to show an existing alias [\#314](https://github.com/cmderdev/cmder/pull/314) ([glucas](https://github.com/glucas)) +- Add an unalias command [\#313](https://github.com/cmderdev/cmder/pull/313) ([glucas](https://github.com/glucas)) +- Revert "Add single mode support." [\#312](https://github.com/cmderdev/cmder/pull/312) ([MartiUK](https://github.com/MartiUK)) +- FIX CMDER\_ROOT for admin launch [\#311](https://github.com/cmderdev/cmder/pull/311) ([sescandell](https://github.com/sescandell)) +- Lambda color in powershell was changed to DarkGray [\#308](https://github.com/cmderdev/cmder/pull/308) ([SheGe](https://github.com/SheGe)) +- Add option to reload aliases from file [\#304](https://github.com/cmderdev/cmder/pull/304) ([glucas](https://github.com/glucas)) +- Clean aliases script [\#300](https://github.com/cmderdev/cmder/pull/300) ([melku](https://github.com/melku)) +- Adding history alias [\#299](https://github.com/cmderdev/cmder/pull/299) ([robgithub](https://github.com/robgithub)) +- Fixes the ambiguity about notice and parameter [\#298](https://github.com/cmderdev/cmder/pull/298) ([LeoColomb](https://github.com/LeoColomb)) +- Fixed small issue in README [\#296](https://github.com/cmderdev/cmder/pull/296) ([brunowego](https://github.com/brunowego)) +- Fixes small Powershell' loader issues [\#273](https://github.com/cmderdev/cmder/pull/273) ([LeoColomb](https://github.com/LeoColomb)) +- Update Dev Branch [\#272](https://github.com/cmderdev/cmder/pull/272) ([MartiUK](https://github.com/MartiUK)) +- Add custom loader for Powershell & improve its implementation [\#271](https://github.com/cmderdev/cmder/pull/271) ([LeoColomb](https://github.com/LeoColomb)) +- Add single mode support. [\#256](https://github.com/cmderdev/cmder/pull/256) ([TheCjw](https://github.com/TheCjw)) +- Revert "Start in the HOME folder." [\#253](https://github.com/cmderdev/cmder/pull/253) ([MartiUK](https://github.com/MartiUK)) +- Ensure-Exists is necessary for build.ps1, add it back. [\#249](https://github.com/cmderdev/cmder/pull/249) ([narnaud](https://github.com/narnaud)) +- Fix clink version [\#244](https://github.com/cmderdev/cmder/pull/244) ([narnaud](https://github.com/narnaud)) +- Start in the HOME folder. [\#243](https://github.com/cmderdev/cmder/pull/243) ([narnaud](https://github.com/narnaud)) +- The latest msysgit comes with vim 7.4. [\#241](https://github.com/cmderdev/cmder/pull/241) ([narnaud](https://github.com/narnaud)) +- Bump versions [\#208](https://github.com/cmderdev/cmder/pull/208) ([MartiUK](https://github.com/MartiUK)) +- New section for user help with an integration feature of Cmder. [\#199](https://github.com/cmderdev/cmder/pull/199) ([Jackbennett](https://github.com/Jackbennett)) +- Fix typos [\#198](https://github.com/cmderdev/cmder/pull/198) ([mtsk](https://github.com/mtsk)) +- Update Clink URL [\#180](https://github.com/cmderdev/cmder/pull/180) ([CoolOppo](https://github.com/CoolOppo)) +- Try to find 7-zip if it's installed before an error. [\#177](https://github.com/cmderdev/cmder/pull/177) ([Jackbennett](https://github.com/Jackbennett)) +- Update clink hyperlink [\#173](https://github.com/cmderdev/cmder/pull/173) ([gmsantos](https://github.com/gmsantos)) +- Typo fix [\#172](https://github.com/cmderdev/cmder/pull/172) ([robinbijlani](https://github.com/robinbijlani)) +- Only cd to $HOME if started in CMDER\_ROOT. [\#167](https://github.com/cmderdev/cmder/pull/167) ([schlamar](https://github.com/schlamar)) +- Find cmder files when running as Administrator. [\#166](https://github.com/cmderdev/cmder/pull/166) ([glucas](https://github.com/glucas)) +- Allow for existing HOME variable [\#165](https://github.com/cmderdev/cmder/pull/165) ([glucas](https://github.com/glucas)) +- Minor changes for \#152 [\#162](https://github.com/cmderdev/cmder/pull/162) ([Jackbennett](https://github.com/Jackbennett)) +- Add registration for right-click on folder item; Add context-menu icon [\#159](https://github.com/cmderdev/cmder/pull/159) ([kohenkatz](https://github.com/kohenkatz)) +- Getting the build script to a working state [\#157](https://github.com/cmderdev/cmder/pull/157) ([Jackbennett](https://github.com/Jackbennett)) +- Update index.html [\#145](https://github.com/cmderdev/cmder/pull/145) ([CoolOppo](https://github.com/CoolOppo)) +- Update fast new tab shortcut in gh-pages/index.html [\#131](https://github.com/cmderdev/cmder/pull/131) ([sopel](https://github.com/sopel)) +- Update links on the webpage to latest version. [\#111](https://github.com/cmderdev/cmder/pull/111) ([sc0tt](https://github.com/sc0tt)) +- Update fast new tab shortcut in README. [\#98](https://github.com/cmderdev/cmder/pull/98) ([jcheng31](https://github.com/jcheng31)) +- Make application use Cmder icon [\#88](https://github.com/cmderdev/cmder/pull/88) ([sc0tt](https://github.com/sc0tt)) +- Git exe Cleanup. [\#85](https://github.com/cmderdev/cmder/pull/85) ([MartiUK](https://github.com/MartiUK)) +- Fixed errors and grammar in README files. [\#78](https://github.com/cmderdev/cmder/pull/78) ([sicil1ano](https://github.com/sicil1ano)) +- Fixed a couple tiny typos in the readme [\#77](https://github.com/cmderdev/cmder/pull/77) ([jdsumsion](https://github.com/jdsumsion)) +- Change TERM from msys to cygwin. [\#75](https://github.com/cmderdev/cmder/pull/75) ([brkc](https://github.com/brkc)) +- Removed "C:\Users\bliker" reference in config/ConEmu.xml [\#74](https://github.com/cmderdev/cmder/pull/74) ([MartiUK](https://github.com/MartiUK)) +- Updated links on gh-pages to newer release of cmder [\#70](https://github.com/cmderdev/cmder/pull/70) ([MartiUK](https://github.com/MartiUK)) +- Add launcher [\#62](https://github.com/cmderdev/cmder/pull/62) ([austinwagner](https://github.com/austinwagner)) +- Remove wget dependency and verify existence of 7z.exe in build script [\#60](https://github.com/cmderdev/cmder/pull/60) ([austinwagner](https://github.com/austinwagner)) +- Allow use of Vim from msysgit. [\#51](https://github.com/cmderdev/cmder/pull/51) ([MartiUK](https://github.com/MartiUK)) +- Fix line ending handling if autocrlf is false. [\#34](https://github.com/cmderdev/cmder/pull/34) ([schlamar](https://github.com/schlamar)) +- Fix spelling in init.bat [\#32](https://github.com/cmderdev/cmder/pull/32) ([Shoozza](https://github.com/Shoozza)) +- Added minimal validation and usage help. [\#26](https://github.com/cmderdev/cmder/pull/26) ([Vivix](https://github.com/Vivix)) +- Fix spelling [\#22](https://github.com/cmderdev/cmder/pull/22) ([Shoozza](https://github.com/Shoozza)) +- Proofreading index.html [\#20](https://github.com/cmderdev/cmder/pull/20) ([manolomartinez](https://github.com/manolomartinez)) +- Fixed grammar [\#18](https://github.com/cmderdev/cmder/pull/18) ([tonylau](https://github.com/tonylau)) +- Fixed issue when rootDir contains spaces. [\#15](https://github.com/cmderdev/cmder/pull/15) ([jyggen](https://github.com/jyggen)) +- Another typo. Fixed link to msysgit. [\#7](https://github.com/cmderdev/cmder/pull/7) ([BeingTomGreen](https://github.com/BeingTomGreen)) +- minor typo fix [\#5](https://github.com/cmderdev/cmder/pull/5) ([BeingTomGreen](https://github.com/BeingTomGreen)) + + + +\* *This Change Log was automatically generated by [github_changelog_generator](https://github.com/skywinder/Github-Changelog-Generator)* \ No newline at end of file From 6978bb7417293119a4769de3ffc744a71e1cb14f Mon Sep 17 00:00:00 2001 From: liftir Date: Fri, 8 Apr 2016 21:21:38 -0400 Subject: [PATCH 002/306] Fix missing "\" when building dirpath to psmodules Join-Path won't add "\"'s without the use of a delimeter. In this case there is no delimiter and as a result the script will fail when it tries to look up $CmderModulePath. --- vendor/profile.ps1 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vendor/profile.ps1 b/vendor/profile.ps1 index 0d830f5..a108281 100644 --- a/vendor/profile.ps1 +++ b/vendor/profile.ps1 @@ -18,7 +18,7 @@ if(!$PSScriptRoot) { } # Add Cmder modules directory to the autoload path. -$CmderModulePath = Join-path $PSScriptRoot "psmodules/" +$CmderModulePath = Join-path $PSScriptRoot "\psmodules/" if( -not $env:PSModulePath.Contains($CmderModulePath) ){ $env:PSModulePath = $env:PSModulePath.Insert(0, "$CmderModulePath;") From 1dddbcff059751dbbc429a196be7e4b676fec5c2 Mon Sep 17 00:00:00 2001 From: Benjamin Staneck Date: Thu, 30 Jun 2016 11:41:17 +0200 Subject: [PATCH 003/306] Revert "Fix missing "\" when building dirpath to psmodules" This reverts commit 6978bb7417293119a4769de3ffc744a71e1cb14f. --- vendor/profile.ps1 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vendor/profile.ps1 b/vendor/profile.ps1 index a108281..0d830f5 100644 --- a/vendor/profile.ps1 +++ b/vendor/profile.ps1 @@ -18,7 +18,7 @@ if(!$PSScriptRoot) { } # Add Cmder modules directory to the autoload path. -$CmderModulePath = Join-path $PSScriptRoot "\psmodules/" +$CmderModulePath = Join-path $PSScriptRoot "psmodules/" if( -not $env:PSModulePath.Contains($CmderModulePath) ){ $env:PSModulePath = $env:PSModulePath.Insert(0, "$CmderModulePath;") From 4e90303511abc2989f7c37520c45079e4bab64bf Mon Sep 17 00:00:00 2001 From: Benjamin Staneck Date: Thu, 14 Jul 2016 09:19:01 +0200 Subject: [PATCH 004/306] :arrow_up: Update ConEmu to 160710 (stable) Changelog: https://conemu.github.io/blog/2016/07/10/Build-160710.html --- vendor/sources.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/vendor/sources.json b/vendor/sources.json index d027113..6878553 100644 --- a/vendor/sources.json +++ b/vendor/sources.json @@ -11,8 +11,8 @@ }, { "name": "conemu-maximus5", - "version": "160612", - "url": "https://github.com/Maximus5/ConEmu/releases/download/v16.06.12/ConEmuPack.160612.7z" + "version": "160710", + "url": "https://github.com/Maximus5/ConEmu/releases/download/v16.07.10/ConEmuPack.160710.7z" }, { "name": "clink-completions", From 317834316a49d95cb92a61ae8551cbe129c6ef09 Mon Sep 17 00:00:00 2001 From: Benjamin Staneck Date: Thu, 14 Jul 2016 09:28:13 +0200 Subject: [PATCH 005/306] add hashes.txt to artifacts --- appveyor.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/appveyor.yml b/appveyor.yml index 5f37569..d6b7564 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -44,6 +44,9 @@ artifacts: - path: build\cmder_mini.zip name: cmdermini + - path: build\hashes.txt + name: hashes + #---------------------------------# # notifications # #---------------------------------# From 04c7bb7da8c4a8a2daed236348cdabe5b7049f97 Mon Sep 17 00:00:00 2001 From: Benjamin Staneck Date: Thu, 14 Jul 2016 09:52:27 +0200 Subject: [PATCH 006/306] update changelog --- CHANGELOG.md | 128 ++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 127 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b7de4f2..b9d9d4b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,130 @@ -# 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) + +**Closed issues:** + +- 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 \/cmd instead of \/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) + +**Merged pull requests:** + +- 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)) ## [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) From 6a0ea28d221a15cdfd9e177505c0e59c0dbafba6 Mon Sep 17 00:00:00 2001 From: Benjamin Staneck Date: Thu, 14 Jul 2016 10:51:01 +0200 Subject: [PATCH 007/306] add .github_changelog_generator to .gitignore --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 9fa67af..a5014e2 100644 --- a/.gitignore +++ b/.gitignore @@ -15,3 +15,4 @@ Version v* config/user-* config/aliases config/profile.d +.github_changelog_generator \ No newline at end of file From f2641e4cd28a436da11a6d294a85392fa89b6121 Mon Sep 17 00:00:00 2001 From: Benjamin Staneck Date: Sun, 17 Jul 2016 01:09:06 +0200 Subject: [PATCH 008/306] :arrow_up: Update Git to v2.9.2 --- vendor/sources.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/vendor/sources.json b/vendor/sources.json index 6878553..b02b51e 100644 --- a/vendor/sources.json +++ b/vendor/sources.json @@ -1,8 +1,8 @@ [ { "name": "git-for-windows", - "version": "v2.9.0.windows.1", - "url": "https://github.com/git-for-windows/git/releases/download/v2.9.0.windows.1/PortableGit-2.9.0-32-bit.7z.exe" + "version": "v2.9.2.windows.1", + "url": "https://github.com/git-for-windows/git/releases/download/v2.9.2.windows.1/PortableGit-2.9.2-32-bit.7z.exe" }, { "name": "clink", From 13c474b7686b5e1fd6c5b21b105197a0da6c823d Mon Sep 17 00:00:00 2001 From: "Dax T. Games" Date: Sun, 17 Jul 2016 18:28:38 -0500 Subject: [PATCH 009/306] added kill ssh-agent to build.ps1 --- scripts/build.ps1 | 12 ++++++++++++ scripts/utils.ps1 | 1 + 2 files changed, 13 insertions(+) diff --git a/scripts/build.ps1 b/scripts/build.ps1 index 473cfbe..62eb4e5 100644 --- a/scripts/build.ps1 +++ b/scripts/build.ps1 @@ -53,6 +53,10 @@ Param( [switch]$Compile ) +# Get the scripts and cmder root dirs we are building in. +$ScriptRoot = Split-Path -Parent -Path $MyInvocation.MyCommand.Definition +$cmder_root = $ScriptRoot.replace("\scripts","") + # Dot source util functions into this scope . ".\utils.ps1" $ErrorActionPreference = "Stop" @@ -75,6 +79,14 @@ if ($config -ne "") { } else { $ConEmuXml = "" } } else { $ConEmuXml = "" } +# Kill ssh-agent.exe if it is running from the $env:cmder_root we are building +foreach ($ssh_agent in $(get-process ssh-agent -erroraction silentlycontinue)) { + if ([string]$($ssh_agent.path) -match [string]$cmder_root.replace('\','\\')) { + write-verbose $("Stopping " + $ssh_agent.path + "!") + stop-process $ssh_agent.id + } +} + $vend = $pwd foreach ($s in $sources) { Write-Verbose "Getting $($s.name) from URL $($s.url)" diff --git a/scripts/utils.ps1 b/scripts/utils.ps1 index cf7fe7b..b3c1585 100644 --- a/scripts/utils.ps1 +++ b/scripts/utils.ps1 @@ -28,6 +28,7 @@ function Delete-Existing ($path) { } 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) { Write-Error "Extracting of $source failied" From 13fd41eb82bde9a6f9de9f4692ec454c45fada6b Mon Sep 17 00:00:00 2001 From: Benjamin Staneck Date: Sat, 30 Jul 2016 00:36:32 +0200 Subject: [PATCH 010/306] change how we ask hg for the status closes #1035 Thanks @raleighr3 --- vendor/clink.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/vendor/clink.lua b/vendor/clink.lua index 11e6433..7bba1fc 100644 --- a/vendor/clink.lua +++ b/vendor/clink.lua @@ -142,8 +142,8 @@ end -- @return {bool} --- function get_hg_status() - for line in io.popen("hg status"):lines() do - return false + for line in io.popen("hg status -0"):lines() do + return false end return true end From 6b107713123808afbcc9572f0df1deda56dead34 Mon Sep 17 00:00:00 2001 From: Jan Schulz Date: Tue, 9 Aug 2016 13:45:36 +0200 Subject: [PATCH 011/306] Parse the original prompt for cwd and env names clink.get_cwd() is returning a string which is differently encoded than what clink.prompt.value expects. This results in garbled path names if the path condains non-ASCII chars. The (arguable hacky) solution is to parse the old prompt for the current directory (which breaks if the user sets a PROMPT env var which is incompatible to the regex used here...). Also parse out a environment name set by systems like virtualenv or conda: this could be done more specifically by targeting each such system and using the usually set environment variable but this would mean that we would have to do that for each and every such system out there and that is probably not a sane idea... --- vendor/clink.lua | 30 ++++++++++++++++++++++++++---- 1 file changed, 26 insertions(+), 4 deletions(-) diff --git a/vendor/clink.lua b/vendor/clink.lua index 7bba1fc..4746a16 100644 --- a/vendor/clink.lua +++ b/vendor/clink.lua @@ -18,12 +18,34 @@ dofile(clink_lua_file) -- which echo) don't get the ugly '{lamb}' shown. --- 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. + -- The matching relies on the default prompt which ends in X:\PATH\PATH> + -- (no network path possible here!) + 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. + -- envs are usually put in round or square parentheses and before the old prompt + 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" - cwd = clink.get_cwd() - prompt = "\x1b[1;32;40m{cwd} {git}{hg} \n\x1b[1;30;40m{lamb} \x1b[0m" - new_value = string.gsub(prompt, "{cwd}", cwd) - clink.prompt.value = string.gsub(new_value, "{lamb}", "λ") + local cmder_prompt = "\x1b[1;32;40m{cwd} {git}{hg} \n\x1b[1;30;40m{lamb} \x1b[0m" + cmder_prompt = string.gsub(cmder_prompt, "{cwd}", cwd) + if env == nil then + lambda = "λ" + else + lambda = "("..env..") λ" + end + clink.prompt.value = string.gsub(cmder_prompt, "{lamb}", lambda) end --- From 19672aafff823990fa573694c47b2378654047a9 Mon Sep 17 00:00:00 2001 From: Benjamin Staneck Date: Sun, 14 Aug 2016 04:59:27 +0200 Subject: [PATCH 012/306] :arrow_up: Update Git to v2.9.2 Release notes: https://github.com/git-for-windows/git/tree/v2.9.3.windows.1 --- vendor/sources.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/vendor/sources.json b/vendor/sources.json index b02b51e..2b55b55 100644 --- a/vendor/sources.json +++ b/vendor/sources.json @@ -1,8 +1,8 @@ [ { "name": "git-for-windows", - "version": "v2.9.2.windows.1", - "url": "https://github.com/git-for-windows/git/releases/download/v2.9.2.windows.1/PortableGit-2.9.2-32-bit.7z.exe" + "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" }, { "name": "clink", From d095d6afd6c843f8fbf45d049d326738e9b0fe9f Mon Sep 17 00:00:00 2001 From: orionlee Date: Sat, 20 Aug 2016 15:56:49 -0700 Subject: [PATCH 013/306] Fix bash login when ${CMDER_ROOT} has spaces. E.g., if ${CMDER_ROOT} is /c/Users/Foo Bar/cmder, the following errors will occur: bash: pushd: /c/Users/Foo: No such file or directory bash: [: /c/Users/Foo: binary operator expected bash: /c/Users/Foo: No such file or directory --- vendor/cmder.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/vendor/cmder.sh b/vendor/cmder.sh index 4fac0be..c83ce1e 100644 --- a/vendor/cmder.sh +++ b/vendor/cmder.sh @@ -43,7 +43,7 @@ fi if [ -d "${CMDER_ROOT}/config/profile.d" ] ; then unset profile_d_scripts - pushd ${CMDER_ROOT}/config/profile.d >/dev/null + 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 @@ -55,8 +55,8 @@ if [ -d "${CMDER_ROOT}/config/profile.d" ] ; then popd >/dev/null fi -if [ -f ${CMDER_ROOT}/config/user-profile.sh ] ; then - . ${CMDER_ROOT}/config/user-profile.sh +if [ -f "${CMDER_ROOT}/config/user-profile.sh" ] ; then + . "${CMDER_ROOT}/config/user-profile.sh" else echo Creating user startup file: "${CMDER_ROOT}/config/user-profile.sh" cat <<-eof >"${CMDER_ROOT}/config/user-profile.sh" From 5354b5f80f7e5d5db6259b71ff2967defe3c7107 Mon Sep 17 00:00:00 2001 From: orionlee Date: Sat, 20 Aug 2016 16:01:46 -0700 Subject: [PATCH 014/306] Further fix bash login when ${CMDER_ROOT} has spaces. Inspecting the script uncovers similar problems elsewhere not encountered in my initial testing. They are fixed accordingly. --- vendor/cmder.sh | 8 ++++---- vendor/cmder_exinit | 16 ++++++++-------- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/vendor/cmder.sh b/vendor/cmder.sh index c83ce1e..5083d21 100644 --- a/vendor/cmder.sh +++ b/vendor/cmder.sh @@ -38,18 +38,18 @@ 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) + profile_d_scripts=$(ls *.sh 2>/dev/null) if [ ! "x${profile_d_scripts}" = "x" ] ; then for x in ${profile_d_scripts} ; do - # echo Sourcing "${x}"... - . $x + # echo Sourcing "${CMDER_ROOT}/config/profile.d/${x}"... + . "${CMDER_ROOT}/config/profile.d/${x}" done fi popd >/dev/null diff --git a/vendor/cmder_exinit b/vendor/cmder_exinit index 7e83d64..99b5ac4 100644 --- a/vendor/cmder_exinit +++ b/vendor/cmder_exinit @@ -51,29 +51,29 @@ 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 + 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) + profile_d_scripts=$(ls *.zsh 2>/dev/null) elif [ ! "x${BASH_VERSION}" = "x" ]; then - profile_d_scripts=$(ls ${CMDER_ROOT}/config/profile.d/*.sh 2>/dev/null) + 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 "${x}"... - . $x + # echo Sourcing "${CMDER_ROOT}/config/profile.d/${x}"... + . "${CMDER_ROOT}/config/profile.d/${x}" done fi popd >/dev/null fi - if [ -f ${CMDER_ROOT}/config/user-profile.sh ] ; then - . ${CMDER_ROOT}/config/user-profile.sh + if [ -f "${CMDER_ROOT}/config/user-profile.sh" ] ; then + . "${CMDER_ROOT}/config/user-profile.sh" else echo Creating user startup file: "${CMDER_ROOT}/config/user-profile.sh" cat <<-eof >"${CMDER_ROOT}/config/user-profile.sh" From a8450eb1d3351c4eef42cf4ad91b7c68378c0c32 Mon Sep 17 00:00:00 2001 From: nverno Date: Thu, 25 Aug 2016 03:00:31 -0400 Subject: [PATCH 015/306] Update Readme.md just minor typos --- config/Readme.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/config/Readme.md b/config/Readme.md index 15526c7..6050764 100644 --- a/config/Readme.md +++ b/config/Readme.md @@ -5,8 +5,8 @@ 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. +* `*.lua`: clink completions and prompt filters; called from vendor\cmder.lua after all + other prompt filter and clink completions 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 From 490fae770c2ad5b0559b5fd464cf981f55c87613 Mon Sep 17 00:00:00 2001 From: Benjamin Staneck Date: Thu, 25 Aug 2016 21:50:55 +0200 Subject: [PATCH 016/306] :arrow_up: Update Git to v2.9.3 (2) Release notes: https://github.com/git-for-windows/git/releases/tag/v2.9.3.windows.2 --- vendor/sources.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/vendor/sources.json b/vendor/sources.json index 2b55b55..4ced233 100644 --- a/vendor/sources.json +++ b/vendor/sources.json @@ -1,8 +1,8 @@ [ { "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.9.3.windows.2", + "url": "https://github.com/git-for-windows/git/releases/download/v2.9.3.windows.2/PortableGit-2.9.3.2-32-bit.7z.exe" }, { "name": "clink", From b7bfe72303a1afe12e66819f759190132af8f79b Mon Sep 17 00:00:00 2001 From: Benjamin Staneck Date: Sat, 3 Sep 2016 10:50:34 +0200 Subject: [PATCH 017/306] :arrow_up: Update Git to v2.10.0 Release notes: https://github.com/git-for-windows/git/releases/tag/v2.10.0.windows.1 --- vendor/sources.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/vendor/sources.json b/vendor/sources.json index 4ced233..cdf2aa2 100644 --- a/vendor/sources.json +++ b/vendor/sources.json @@ -1,8 +1,8 @@ [ { "name": "git-for-windows", - "version": "v2.9.3.windows.2", - "url": "https://github.com/git-for-windows/git/releases/download/v2.9.3.windows.2/PortableGit-2.9.3.2-32-bit.7z.exe" + "version": "v2.10.0.windows.1", + "url": "https://github.com/git-for-windows/git/releases/download/v2.10.0.windows.1/PortableGit-2.10.0-32-bit.7z.exe" }, { "name": "clink", From df7beff2effabc2ee4364bbabb0bce39697f1bcb Mon Sep 17 00:00:00 2001 From: Benjamin Staneck Date: Sat, 3 Sep 2016 10:52:17 +0200 Subject: [PATCH 018/306] :arrow_up: Update ConEmu to 160828 (stable) Changelog: https://conemu.github.io/blog/2016/08/28/Build-160828.html --- vendor/sources.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/vendor/sources.json b/vendor/sources.json index cdf2aa2..474aa01 100644 --- a/vendor/sources.json +++ b/vendor/sources.json @@ -11,8 +11,8 @@ }, { "name": "conemu-maximus5", - "version": "160710", - "url": "https://github.com/Maximus5/ConEmu/releases/download/v16.07.10/ConEmuPack.160710.7z" + "version": "160828", + "url": "https://github.com/Maximus5/ConEmu/releases/download/v16.08.28/ConEmuPack.160828.7z" }, { "name": "clink-completions", From bb312ad74be568550c06b99935f981b9bfc29aee Mon Sep 17 00:00:00 2001 From: Benjamin Staneck Date: Sat, 17 Sep 2016 22:48:02 +0200 Subject: [PATCH 019/306] try --no-lock-index for Git --- vendor/clink.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vendor/clink.lua b/vendor/clink.lua index 4746a16..b6b72a8 100644 --- a/vendor/clink.lua +++ b/vendor/clink.lua @@ -225,7 +225,7 @@ end -- @return {bool} --- function get_git_status() - for line in io.popen("git status --porcelain 2>nul"):lines() do + for line in io.popen("git status --no-lock-index --porcelain 2>nul"):lines() do return false end return true From d144cd0fc252d2410a61c0e2d1983760bd915005 Mon Sep 17 00:00:00 2001 From: Benjamin Staneck Date: Sat, 17 Sep 2016 22:49:23 +0200 Subject: [PATCH 020/306] :arrow_up: Update ConEmu to 160914 (stable) Changelog: https://conemu.github.io/blog/2016/09/14/Build-160914.html --- vendor/sources.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/vendor/sources.json b/vendor/sources.json index 474aa01..255946a 100644 --- a/vendor/sources.json +++ b/vendor/sources.json @@ -11,8 +11,8 @@ }, { "name": "conemu-maximus5", - "version": "160828", - "url": "https://github.com/Maximus5/ConEmu/releases/download/v16.08.28/ConEmuPack.160828.7z" + "version": "160914", + "url": "https://github.com/Maximus5/ConEmu/releases/download/v16.09.14/ConEmuPack.160914.7z" }, { "name": "clink-completions", From c8adf424e29056b91aa703aef68ba2bbd23c281b Mon Sep 17 00:00:00 2001 From: Alexandr Date: Tue, 27 Sep 2016 18:48:23 +0300 Subject: [PATCH 021/306] Added closing process in get_git_status (#1) After execution command: git add * git continues to operate without closing. The process does not stop. --- vendor/clink.lua | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/vendor/clink.lua b/vendor/clink.lua index b6b72a8..6124aa7 100644 --- a/vendor/clink.lua +++ b/vendor/clink.lua @@ -225,9 +225,12 @@ end -- @return {bool} --- function get_git_status() - for line in io.popen("git status --no-lock-index --porcelain 2>nul"):lines() do + local file = io.popen("git status --no-lock-index --porcelain 2>nul") + for line in file:lines() do + file:close() return false end + file:close() return true end From af586d5410af56d433717b54371dbd284bb02416 Mon Sep 17 00:00:00 2001 From: "Dax T. Games" Date: Sun, 2 Oct 2016 18:34:40 -0500 Subject: [PATCH 022/306] add use-ConEmu.xml --- launcher/src/CmderLauncher.cpp | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/launcher/src/CmderLauncher.cpp b/launcher/src/CmderLauncher.cpp index 24f35c8..a16bbc2 100644 --- a/launcher/src/CmderLauncher.cpp +++ b/launcher/src/CmderLauncher.cpp @@ -118,15 +118,25 @@ 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(cpuCfgPath, exeDir, L"config\\ConEmu-%COMPUTERNAME%.xml"); + ExpandEnvironmentStrings(cpuCfgPath, cpuCfgPath, sizeof(cpuCfgPath) / sizeof(cpuCfgPath[0])); + + // Check for user-specific config file. + PathCombine(userCfgPath, exeDir, L"config\\user-ConEmu.xml"); + + if (PathFileExists(cpuCfgPath)) { + PathCombine(oldCfgPath, exeDir, cpuCfgPath.GetBuffer(sizeof(cpuCfgPath))); + } + else if (!PathFileExists(userCfgPath)) { + PathCombine(oldCfgPath, exeDir, userCfgPath.GetBuffer(sizeof(userCfgPath))); + } + else { PathCombine(oldCfgPath, exeDir, L"config\\ConEmu.xml"); - } + } // Check for machine-specific config file. - PathCombine(cfgPath, exeDir, L"vendor\\conemu-maximus5\\ConEmu-%COMPUTERNAME%.xml"); - ExpandEnvironmentStrings(cfgPath, cfgPath, sizeof(cfgPath) / sizeof(cfgPath[0])); + PathCombine(cfgPath, exeDir, oldCfgPath.GetBufer(sizeof(oldCfgPath); + // ExpandEnvironmentStrings(cfgPath, cfgPath, sizeof(cfgPath) / sizeof(cfgPath[0])); if (!PathFileExists(cfgPath)) { PathCombine(cfgPath, exeDir, L"vendor\\conemu-maximus5\\ConEmu.xml"); } From 66c6d5bbb3955d5d8fa38cb88750087140160246 Mon Sep 17 00:00:00 2001 From: Dax Games Date: Sun, 2 Oct 2016 21:50:56 -0500 Subject: [PATCH 023/306] added ability to have a user-ConEmu.xml file in addition to the computer specific and default ConEmu.xml files --- launcher/src/CmderLauncher.cpp | 31 ++++++++++++++----------------- 1 file changed, 14 insertions(+), 17 deletions(-) diff --git a/launcher/src/CmderLauncher.cpp b/launcher/src/CmderLauncher.cpp index a16bbc2..5537d5f 100644 --- a/launcher/src/CmderLauncher.cpp +++ b/launcher/src/CmderLauncher.cpp @@ -103,6 +103,8 @@ 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 cpuCfgPath[MAX_PATH] = { 0 }; + wchar_t userCfgPath[MAX_PATH] = { 0 }; wchar_t oldCfgPath[MAX_PATH] = { 0 }; wchar_t conEmuPath[MAX_PATH] = { 0 }; wchar_t args[MAX_PATH * 2 + 256] = { 0 }; @@ -117,29 +119,24 @@ void StartCmder(std::wstring path, bool is_single_mode) PathCombine(icoPath, exeDir, L"icons\\cmder.ico"); - // Check for machine-specific config file. + // Check for machine-specific then user config source file. PathCombine(cpuCfgPath, exeDir, L"config\\ConEmu-%COMPUTERNAME%.xml"); ExpandEnvironmentStrings(cpuCfgPath, cpuCfgPath, sizeof(cpuCfgPath) / sizeof(cpuCfgPath[0])); - // Check for user-specific config file. PathCombine(userCfgPath, exeDir, L"config\\user-ConEmu.xml"); - if (PathFileExists(cpuCfgPath)) { - PathCombine(oldCfgPath, exeDir, cpuCfgPath.GetBuffer(sizeof(cpuCfgPath))); - } - else if (!PathFileExists(userCfgPath)) { - PathCombine(oldCfgPath, exeDir, userCfgPath.GetBuffer(sizeof(userCfgPath))); - } - else { - PathCombine(oldCfgPath, exeDir, L"config\\ConEmu.xml"); - } - - // Check for machine-specific config file. - PathCombine(cfgPath, exeDir, oldCfgPath.GetBufer(sizeof(oldCfgPath); - // ExpandEnvironmentStrings(cfgPath, cfgPath, sizeof(cfgPath) / sizeof(cfgPath[0])); - if (!PathFileExists(cfgPath)) { - PathCombine(cfgPath, exeDir, L"vendor\\conemu-maximus5\\ConEmu.xml"); + if (PathFileExists(cpuCfgPath)) { + wcsncpy_s(oldCfgPath, cpuCfgPath, sizeof(cpuCfgPath)); } + else if (PathFileExists(userCfgPath)) { + wcsncpy_s(oldCfgPath, userCfgPath,sizeof(userCfgPath)); + } + else { + PathCombine(oldCfgPath, exeDir, L"config\\ConEmu.xml"); + } + + // Set path to vendored ConEmu config file + PathCombine(cfgPath, exeDir, L"vendor\\conemu-maximus5\\ConEmu.xml"); SYSTEM_INFO sysInfo; GetNativeSystemInfo(&sysInfo); From abd7db99b69be86d8ffde4f52bff8b2e3a36a6ae Mon Sep 17 00:00:00 2001 From: Dax Games Date: Sun, 2 Oct 2016 22:16:22 -0500 Subject: [PATCH 024/306] added backup of ConEmu.xml to ./config folder at cmder launch if it exists --- launcher/src/CmderLauncher.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/launcher/src/CmderLauncher.cpp b/launcher/src/CmderLauncher.cpp index 5537d5f..e5a438f 100644 --- a/launcher/src/CmderLauncher.cpp +++ b/launcher/src/CmderLauncher.cpp @@ -158,6 +158,16 @@ void StartCmder(std::wstring path, bool is_single_mode) exit(1); } } + else { + if (!CopyFile(cfgPath, oldCfgPath, FALSE)) + { + MessageBox(NULL, + (GetLastError() == ERROR_ACCESS_DENIED) + ? L"Failed to backup ConEmu.xml file to ./config folder!" + : L"Failed to backup ConEmu.xml file to ./config folder!", MB_TITLE, MB_ICONSTOP); + exit(1); + } + } if (is_single_mode) { From 5feccb3c7c5ce0f9146d67bb67188e6da591d51c Mon Sep 17 00:00:00 2001 From: Dax Games Date: Sun, 2 Oct 2016 22:23:12 -0500 Subject: [PATCH 025/306] added backup of ConEmu.xml to ./config/user-ConEmu.xml at cmder launch if it exists --- launcher/src/CmderLauncher.cpp | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/launcher/src/CmderLauncher.cpp b/launcher/src/CmderLauncher.cpp index e5a438f..2fef05e 100644 --- a/launcher/src/CmderLauncher.cpp +++ b/launcher/src/CmderLauncher.cpp @@ -103,6 +103,7 @@ 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 backupCfgPath[MAX_PATH] = { 0 }; wchar_t cpuCfgPath[MAX_PATH] = { 0 }; wchar_t userCfgPath[MAX_PATH] = { 0 }; wchar_t oldCfgPath[MAX_PATH] = { 0 }; @@ -127,12 +128,15 @@ void StartCmder(std::wstring path, bool is_single_mode) if (PathFileExists(cpuCfgPath)) { wcsncpy_s(oldCfgPath, cpuCfgPath, sizeof(cpuCfgPath)); + wcsncpy_s(backupCfgPath, cpuCfgPath, sizeof(cpuCfgPath)); } else if (PathFileExists(userCfgPath)) { wcsncpy_s(oldCfgPath, userCfgPath,sizeof(userCfgPath)); + wcsncpy_s(backupCfgPath, userCfgPath, sizeof(userCfgPath)); } else { PathCombine(oldCfgPath, exeDir, L"config\\ConEmu.xml"); + wcsncpy_s(backupCfgPath, userCfgPath, sizeof(userCfgPath)); } // Set path to vendored ConEmu config file @@ -158,15 +162,13 @@ void StartCmder(std::wstring path, bool is_single_mode) exit(1); } } - else { - if (!CopyFile(cfgPath, oldCfgPath, FALSE)) - { - MessageBox(NULL, - (GetLastError() == ERROR_ACCESS_DENIED) - ? L"Failed to backup ConEmu.xml file to ./config folder!" - : L"Failed to backup ConEmu.xml file to ./config folder!", MB_TITLE, MB_ICONSTOP); - exit(1); - } + else if (!CopyFile(cfgPath, backupCfgPath, FALSE)) + { + MessageBox(NULL, + (GetLastError() == ERROR_ACCESS_DENIED) + ? L"Failed to backup ConEmu.xml file to ./config folder!" + : L"Failed to backup ConEmu.xml file to ./config folder!", MB_TITLE, MB_ICONSTOP); + exit(1); } if (is_single_mode) From 44e0a040bdbf0314725caf7d5e97d55bba2cc155 Mon Sep 17 00:00:00 2001 From: Benjamin Staneck Date: Wed, 5 Oct 2016 02:16:22 +0200 Subject: [PATCH 026/306] :arrow_up: Update Git to v2.10.1 Release notes: https://github.com/git-for-windows/git/releases/tag/v2.10.1.windows.1 --- vendor/sources.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/vendor/sources.json b/vendor/sources.json index 255946a..971d4f8 100644 --- a/vendor/sources.json +++ b/vendor/sources.json @@ -1,8 +1,8 @@ [ { "name": "git-for-windows", - "version": "v2.10.0.windows.1", - "url": "https://github.com/git-for-windows/git/releases/download/v2.10.0.windows.1/PortableGit-2.10.0-32-bit.7z.exe" + "version": "v2.10.1.windows.1", + "url": "https://github.com/git-for-windows/git/releases/download/v2.10.1.windows.1/PortableGit-2.10.1-32-bit.7z.exe" }, { "name": "clink", From eb73f6f7722f7747a5caa846d7c6dc401cbe8707 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E7=A5=BA?= Date: Tue, 11 Oct 2016 14:41:47 +0800 Subject: [PATCH 027/306] fix error when path has a space --- vendor/user-aliases.cmd.example | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vendor/user-aliases.cmd.example b/vendor/user-aliases.cmd.example index 01df318..03e4d01 100644 --- a/vendor/user-aliases.cmd.example +++ b/vendor/user-aliases.cmd.example @@ -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%" From a78186f50222e3bae7a38b78a3ac3d7f7352a1e8 Mon Sep 17 00:00:00 2001 From: Adrien Lamarque Date: Fri, 14 Oct 2016 23:36:22 +0200 Subject: [PATCH 028/306] Fix for slow startup under certain conditions (#1122) Fixes #1122 by simply calling CreateProcess before the SendMessageTimeout calls that are used to propagate environment variable changes. --- launcher/src/CmderLauncher.cpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/launcher/src/CmderLauncher.cpp b/launcher/src/CmderLauncher.cpp index 24f35c8..acfd6eb 100644 --- a/launcher/src/CmderLauncher.cpp +++ b/launcher/src/CmderLauncher.cpp @@ -169,8 +169,7 @@ void StartCmder(std::wstring path, bool is_single_mode) } } // 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); @@ -178,12 +177,15 @@ void StartCmder(std::wstring path, bool is_single_mode) 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); 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) From 0b43758a34ae16a77665a34fefd455d79b8acb08 Mon Sep 17 00:00:00 2001 From: Werner Roets Date: Sun, 30 Oct 2016 02:57:24 +0200 Subject: [PATCH 029/306] Fixed 3 typos --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 06acbf5..d9ca2e3 100644 --- a/README.md +++ b/README.md @@ -59,7 +59,7 @@ You can open multiple tabs each containing one of the following shells: |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.| +|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| @@ -91,7 +91,7 @@ User specific configuration is possible using the cmder specific shell config fi |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 it it exists after it sources '$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. @@ -114,7 +114,7 @@ Aliases defined using the `alias.bat` command will automatically be saved in the #### 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`. -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. +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. From 4c522aa0c4b8660b272ba5f88de3354eea5cecad Mon Sep 17 00:00:00 2001 From: Dax Games Date: Sun, 30 Oct 2016 18:22:29 -0500 Subject: [PATCH 030/306] trigger push --- Cmder.bat | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Cmder.bat b/Cmder.bat index 18d9ff0..6a95148 100644 --- a/Cmder.bat +++ b/Cmder.bat @@ -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" ( From a0e0adae8bbd229863a8ba6a69393f66c9bf7bad Mon Sep 17 00:00:00 2001 From: Vladimir Kotikov Date: Sun, 6 Nov 2016 23:59:25 +0300 Subject: [PATCH 031/306] Bump clink-completions to 0.3.2 --- vendor/sources.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/vendor/sources.json b/vendor/sources.json index 971d4f8..7bddcdb 100644 --- a/vendor/sources.json +++ b/vendor/sources.json @@ -16,7 +16,7 @@ }, { "name": "clink-completions", - "version": "0.3.1", - "url": "https://github.com/vladimir-kotikov/clink-completions/archive/0.3.1.zip" + "version": "0.3.2", + "url": "https://github.com/vladimir-kotikov/clink-completions/archive/0.3.2.zip" } ] From ba99f5b66a4ec532c1237b64590daf072b676e04 Mon Sep 17 00:00:00 2001 From: Florian Anderiasch Date: Thu, 10 Nov 2016 18:04:37 +0100 Subject: [PATCH 032/306] Fix typo in init.bat --- vendor/init.bat | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/vendor/init.bat b/vendor/init.bat index 730efea..1fefa10 100644 --- a/vendor/init.bat +++ b/vendor/init.bat @@ -121,12 +121,12 @@ 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%"... + echo Creating initial 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%" ) From 14f3361429df1208b4ee51ee2200d718ffc96a22 Mon Sep 17 00:00:00 2001 From: Benjamin Staneck Date: Sun, 23 Oct 2016 22:21:55 +0200 Subject: [PATCH 033/306] :arrow_up: Update ConEmu to 161022 (stable) Changelog: https://conemu.github.io/blog/2016/10/22/Build-161022.html --- .gitignore | 2 +- vendor/sources.json | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.gitignore b/.gitignore index a5014e2..35c93e7 100644 --- a/.gitignore +++ b/.gitignore @@ -15,4 +15,4 @@ Version v* config/user-* config/aliases config/profile.d -.github_changelog_generator \ No newline at end of file +.github_changelog_generator diff --git a/vendor/sources.json b/vendor/sources.json index 7bddcdb..066c0a7 100644 --- a/vendor/sources.json +++ b/vendor/sources.json @@ -11,8 +11,8 @@ }, { "name": "conemu-maximus5", - "version": "160914", - "url": "https://github.com/Maximus5/ConEmu/releases/download/v16.09.14/ConEmuPack.160914.7z" + "version": "161022", + "url": "https://github.com/Maximus5/ConEmu/releases/download/v16.10.22/ConEmuPack.161022.7z" }, { "name": "clink-completions", From 70b0666f11387af4d536ade106f6bd1e93d1d0b0 Mon Sep 17 00:00:00 2001 From: Benjamin Staneck Date: Fri, 4 Nov 2016 00:25:50 +0100 Subject: [PATCH 034/306] :arrow_up: Update Git to v2.10.2 Release notes: https://github.com/git-for-windows/git/releases/tag/v2.10.2.windows.1 --- vendor/sources.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/vendor/sources.json b/vendor/sources.json index 066c0a7..9373396 100644 --- a/vendor/sources.json +++ b/vendor/sources.json @@ -1,8 +1,8 @@ [ { "name": "git-for-windows", - "version": "v2.10.1.windows.1", - "url": "https://github.com/git-for-windows/git/releases/download/v2.10.1.windows.1/PortableGit-2.10.1-32-bit.7z.exe" + "version": "v2.10.2.windows.1", + "url": "https://github.com/git-for-windows/git/releases/download/v2.10.2.windows.1/PortableGit-2.10.2-32-bit.7z.exe" }, { "name": "clink", From 7447e00aece8552fea000e75509ab93ed0add958 Mon Sep 17 00:00:00 2001 From: Benjamin Staneck Date: Thu, 1 Dec 2016 21:06:29 +0100 Subject: [PATCH 035/306] :arrow_up: Update Git to v2.11.0 Release notes: https://github.com/git-for-windows/git/releases/tag/v2.11.0.windows.1 --- vendor/sources.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/vendor/sources.json b/vendor/sources.json index 9373396..77bf8bd 100644 --- a/vendor/sources.json +++ b/vendor/sources.json @@ -1,8 +1,8 @@ [ { "name": "git-for-windows", - "version": "v2.10.2.windows.1", - "url": "https://github.com/git-for-windows/git/releases/download/v2.10.2.windows.1/PortableGit-2.10.2-32-bit.7z.exe" + "version": "v2.11.0.windows.1", + "url": "https://github.com/git-for-windows/git/releases/download/v2.11.0.windows.1/PortableGit-2.11.0-32-bit.7z.exe" }, { "name": "clink", From 02f1ff12a61c910a855b1bd0eaebd56f6d627ed5 Mon Sep 17 00:00:00 2001 From: Benjamin Staneck Date: Fri, 2 Dec 2016 00:12:37 +0100 Subject: [PATCH 036/306] update changelog --- CHANGELOG.md | 329 ++++++++++++++++++++++++++++++--------------------- 1 file changed, 197 insertions(+), 132 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b9d9d4b..4525df9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,139 +1,13 @@ -# 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) - -**Closed issues:** - -- 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 \/cmd instead of \/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) - -**Merged pull requests:** - -- 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)) - -## [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) +# Change Log +## [1.3.2](https://github.com/cmderdev/cmder/tree/1.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 +16,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 +40,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 \/cmd instead of \/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 +178,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 +209,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 +226,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 +234,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 +255,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 +285,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 +328,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 +338,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 +354,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 +381,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 +517,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)) From 4195b5b0edb00ab4e60ec05a86242ca67ccb8c62 Mon Sep 17 00:00:00 2001 From: Atanas Kaynarov Date: Tue, 6 Dec 2016 12:39:03 +0200 Subject: [PATCH 037/306] Documented some undocumented tab related shorcuts --- README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/README.md b/README.md index d9ca2e3..773252e 100644 --- a/README.md +++ b/README.md @@ -38,6 +38,9 @@ In a file explorer window right click in or on a directory to see "Cmder Here" i * Ctrl + W : Close tab * Ctrl + D : Close tab (if pressed on empty command) * Shift + Alt + #Number : Fast new tab: 1 - CMD, 2 - PowerShell +* Ctrl + Tab : Switch to next tab +* Ctrl + Shift + Tab : Switch to previous tab +* Ctrl + #Number : Switch to tab #Number * Alt + Enter: Fullscreen ### Shell From 61849dc7fd3e3d84ba14848abeaee1fac63a431e Mon Sep 17 00:00:00 2001 From: Benjamin Staneck Date: Thu, 8 Dec 2016 22:53:08 +0100 Subject: [PATCH 038/306] :arrow_up: Update ConEmu to 161206 (stable) Changelog: https://conemu.github.io/blog/2016/12/06/Build-161206.html --- vendor/sources.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/vendor/sources.json b/vendor/sources.json index 77bf8bd..251d036 100644 --- a/vendor/sources.json +++ b/vendor/sources.json @@ -11,8 +11,8 @@ }, { "name": "conemu-maximus5", - "version": "161022", - "url": "https://github.com/Maximus5/ConEmu/releases/download/v16.10.22/ConEmuPack.161022.7z" + "version": "161206", + "url": "https://github.com/Maximus5/ConEmu/releases/download/v16.12.06/ConEmuPack.161206.7z" }, { "name": "clink-completions", From 81d83d4c6d07dbea6962f5b2675c2c4a3d7d8d84 Mon Sep 17 00:00:00 2001 From: Benjamin Staneck Date: Mon, 16 Jan 2017 08:53:56 +0100 Subject: [PATCH 039/306] :arrow_up: Update Git to v2.11.0.3 Release notes: https://github.com/git-for-windows/git/releases/tag/v2.11.0.windows.3 --- vendor/sources.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/vendor/sources.json b/vendor/sources.json index 251d036..987545a 100644 --- a/vendor/sources.json +++ b/vendor/sources.json @@ -1,8 +1,8 @@ [ { "name": "git-for-windows", - "version": "v2.11.0.windows.1", - "url": "https://github.com/git-for-windows/git/releases/download/v2.11.0.windows.1/PortableGit-2.11.0-32-bit.7z.exe" + "version": "v2.11.0.windows.3", + "url": "https://github.com/git-for-windows/git/releases/download/v2.11.0.windows.3/PortableGit-2.11.0.3-32-bit.7z.exe" }, { "name": "clink", From 3b7a24b20ae789aac1d926d3cbe6d0e147bc5e51 Mon Sep 17 00:00:00 2001 From: Greg Lucas Date: Thu, 9 Feb 2017 13:53:35 -0500 Subject: [PATCH 040/306] Fix #1245: Allow alias value to contain '=' characters --- bin/alias.bat | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bin/alias.bat b/bin/alias.bat index 025b8b9..cf5d07d 100644 --- a/bin/alias.bat +++ b/bin/alias.bat @@ -64,7 +64,7 @@ if "%aliases%" neq "%CMDER_ROOT%\config\user-aliases.cmd" ( ) :: 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 ) From 50ed66894f44f9e6548513e1d8c56d5218e97856 Mon Sep 17 00:00:00 2001 From: Mateus Medeiros Date: Tue, 21 Feb 2017 12:04:10 -0300 Subject: [PATCH 041/306] Fix typo in config/Readme.md The file config/Readme.md refers to the "user-profile" files with "_" instead of "-". This commit fixes that. --- config/Readme.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/Readme.md b/config/Readme.md index 6050764..05a29a5 100644 --- a/config/Readme.md +++ b/config/Readme.md @@ -7,7 +7,7 @@ directly, it has to be hardlinked. `vendor\aliases.example`. * `*.lua`: clink completions and prompt filters; called from vendor\cmder.lua after all other prompt filter and clink completions are initialized; add your own. -* `user_profile.{sh|bat|ps1}`: startup files for bash|cmd|powershell tasks; called from their +* `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 From 963a5a8be6fb29fdb3cda6572499aaa5b0a9a8b9 Mon Sep 17 00:00:00 2001 From: Benjamin Staneck Date: Wed, 1 Mar 2017 04:01:24 +0100 Subject: [PATCH 042/306] :arrow_up: Update Git to v2.12.0 Release notes: https://github.com/git-for-windows/git/releases/tag/v2.12.0.windows.1 --- vendor/sources.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/vendor/sources.json b/vendor/sources.json index 987545a..2f99936 100644 --- a/vendor/sources.json +++ b/vendor/sources.json @@ -1,8 +1,8 @@ [ { "name": "git-for-windows", - "version": "v2.11.0.windows.3", - "url": "https://github.com/git-for-windows/git/releases/download/v2.11.0.windows.3/PortableGit-2.11.0.3-32-bit.7z.exe" + "version": "v2.12.0.windows.1", + "url": "https://github.com/git-for-windows/git/releases/download/v2.12.0.windows.1/PortableGit-2.12.0-32-bit.7z.exe" }, { "name": "clink", From 7f4a4d34d6960996ccc45056e2c9f6ad4447b5ae Mon Sep 17 00:00:00 2001 From: Brian Dukes Date: Tue, 28 Feb 2017 16:25:11 -0600 Subject: [PATCH 043/306] Allow user-profile.ps1 and profile.d/*.ps1 files to override prompt This defines the default prompt variables ($PrePrompt, $PostPrompt, $CmderPrompt, and $Prompt) before running the custom scripts (user-profile.ps1 and profile.d/*.ps1), and then saves those prompt values after running the custom scripts. This gives the custom scripts and opportunity to override the prompt code blocks. This now opens the possibility for profile.d/*.ps1 scripts to affect the prompt, and also allows both user-profile.ps1 and profile.d/*.ps1 scripts to overwrite the $Prompt script block and overwrite the prompt behavior entirely. --- vendor/profile.ps1 | 58 +++++++++++++++++++++++----------------------- 1 file changed, 29 insertions(+), 29 deletions(-) diff --git a/vendor/profile.ps1 b/vendor/profile.ps1 index 7878ff2..20dc528 100644 --- a/vendor/profile.ps1 +++ b/vendor/profile.ps1 @@ -86,19 +86,6 @@ if (Get-Module PSReadline -ErrorAction "SilentlyContinue") { # Enhance Path $env:Path = "$Env:CMDER_ROOT\bin;$env:Path;$Env:CMDER_ROOT" -# 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")) { - mkdir "$ENV:CMDER_ROOT\config\profile.d" -} - -pushd $ENV:CMDER_ROOT\config\profile.d -foreach ($x in ls *.ps1) { - # write-host write-host Sourcing $x - . $x -} -popd - # # Prompt Section # Users should modify their user-profile.ps1 as it will be safe from updates. @@ -113,6 +100,35 @@ popd 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")) { + mkdir "$ENV:CMDER_ROOT\config\profile.d" +} + +pushd $ENV:CMDER_ROOT\config\profile.d +foreach ($x in ls *.ps1) { + # write-host write-host Sourcing $x + . $x +} +popd + $CmderUserProfilePath = Join-Path $env:CMDER_ROOT "config\user-profile.ps1" if(Test-Path $CmderUserProfilePath) { # Create this file and place your own command in there. @@ -160,22 +176,6 @@ 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 -<# -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 " " -} - # 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 From 018cc9ceda037968603c89a4c77f48385fa146a5 Mon Sep 17 00:00:00 2001 From: Alexandr Date: Thu, 9 Mar 2017 19:22:13 +0300 Subject: [PATCH 044/306] Changed the way directory is defined .git clink.find_dirs - do not specify the directory if there is Cyrillic in the way. clink.is_dir - more logical and faster. --- vendor/clink.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vendor/clink.lua b/vendor/clink.lua index 6124aa7..78013a2 100644 --- a/vendor/clink.lua +++ b/vendor/clink.lua @@ -118,7 +118,7 @@ local function get_git_dir(path) -- 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) From 3b0a51d7b826c94c48f7d28f89400443ffdb2d6f Mon Sep 17 00:00:00 2001 From: Ryan Morrin Date: Fri, 24 Mar 2017 14:07:30 +0000 Subject: [PATCH 045/306] Update config readme: * Change descriptions to match updated filenames * Some minor fixes to grammar --- config/Readme.md | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/config/Readme.md b/config/Readme.md index 05a29a5..5a72301 100644 --- a/config/Readme.md +++ b/config/Readme.md @@ -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 completions and prompt filters; called from vendor\cmder.lua after all - other prompt filter and clink completions 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. From 9977c0563dc11d3633ef2ea66a0ad0c41f059416 Mon Sep 17 00:00:00 2001 From: dr024625 Date: Mon, 3 Apr 2017 21:07:41 -0500 Subject: [PATCH 046/306] Adding svn support --- vendor/clink.lua | 50 +++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 49 insertions(+), 1 deletion(-) diff --git a/vendor/clink.lua b/vendor/clink.lua index 6124aa7..342e374 100644 --- a/vendor/clink.lua +++ b/vendor/clink.lua @@ -38,7 +38,7 @@ function set_prompt_filter() -- 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;30;40m{lamb} \x1b[0m" cmder_prompt = string.gsub(cmder_prompt, "{cwd}", cwd) if env == nil then lambda = "λ" @@ -103,6 +103,20 @@ local function get_hg_dir(path) return get_dir_contains(path, '.hg') end +local function get_svn_dir(path) + return get_dir_contains(path, '.svn') +end +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 + -- adapted from from clink-completions' git.lua local function get_git_dir(path) @@ -170,6 +184,13 @@ function get_hg_status() return true end +function get_svn_status() + for line in io.popen("svn status -q"):lines() do + return false + end + return true +end + function hg_prompt_filter() -- Colors for mercurial status @@ -264,10 +285,37 @@ function git_prompt_filter() return false end +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() + 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 From 00622254a7e64835ca1d6acc0c2a6c5c2023fef4 Mon Sep 17 00:00:00 2001 From: Benjamin Staneck Date: Tue, 21 Mar 2017 22:15:31 +0100 Subject: [PATCH 047/306] :arrow_up: Update Git to v2.12.1 Release notes: https://github.com/git-for-windows/git/releases/tag/v2.12.1.windows.1 --- vendor/sources.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/vendor/sources.json b/vendor/sources.json index 2f99936..6e36abe 100644 --- a/vendor/sources.json +++ b/vendor/sources.json @@ -1,8 +1,8 @@ [ { "name": "git-for-windows", - "version": "v2.12.0.windows.1", - "url": "https://github.com/git-for-windows/git/releases/download/v2.12.0.windows.1/PortableGit-2.12.0-32-bit.7z.exe" + "version": "v2.12.1.windows.1", + "url": "https://github.com/git-for-windows/git/releases/download/v2.12.1.windows.1/PortableGit-2.12.1-32-bit.7z.exe" }, { "name": "clink", From 9182c89a14ef27b8d69897c2c9af44d2dc48b462 Mon Sep 17 00:00:00 2001 From: Benjamin Staneck Date: Tue, 21 Mar 2017 22:18:34 +0100 Subject: [PATCH 048/306] :arrow_up: Update ConEmu to 170316 (preview) Changelog: https://conemu.github.io/blog/2017/03/16/Build-170316.html --- vendor/sources.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/vendor/sources.json b/vendor/sources.json index 6e36abe..8850bc2 100644 --- a/vendor/sources.json +++ b/vendor/sources.json @@ -11,8 +11,8 @@ }, { "name": "conemu-maximus5", - "version": "161206", - "url": "https://github.com/Maximus5/ConEmu/releases/download/v16.12.06/ConEmuPack.161206.7z" + "version": "170316", + "url": "https://github.com/Maximus5/ConEmu/releases/download/v17.03.16/ConEmuPack.170316.7z" }, { "name": "clink-completions", From e49b978b9a07f7c5616a9c9cd921df62e86f67cf Mon Sep 17 00:00:00 2001 From: Benjamin Staneck Date: Tue, 28 Mar 2017 00:21:36 +0200 Subject: [PATCH 049/306] :arrow_up: Update Git to v2.12.2 Release notes: https://github.com/git-for-windows/git/releases/tag/v2.12.2.windows.1 --- vendor/sources.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/vendor/sources.json b/vendor/sources.json index 8850bc2..1923140 100644 --- a/vendor/sources.json +++ b/vendor/sources.json @@ -1,8 +1,8 @@ [ { "name": "git-for-windows", - "version": "v2.12.1.windows.1", - "url": "https://github.com/git-for-windows/git/releases/download/v2.12.1.windows.1/PortableGit-2.12.1-32-bit.7z.exe" + "version": "v2.12.2.windows.1", + "url": "https://github.com/git-for-windows/git/releases/download/v2.12.2.windows.1/PortableGit-2.12.2-32-bit.7z.exe" }, { "name": "clink", From 1dd0e600ac497ceb23f24df176cf890076f6d677 Mon Sep 17 00:00:00 2001 From: Benjamin Staneck Date: Tue, 28 Mar 2017 00:23:33 +0200 Subject: [PATCH 050/306] :arrow_up: Update ConEmu to 170326 (preview) Changelog: https://conemu.github.io/blog/2017/03/26/Build-170326.html --- vendor/sources.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/vendor/sources.json b/vendor/sources.json index 1923140..8cce9d4 100644 --- a/vendor/sources.json +++ b/vendor/sources.json @@ -11,8 +11,8 @@ }, { "name": "conemu-maximus5", - "version": "170316", - "url": "https://github.com/Maximus5/ConEmu/releases/download/v17.03.16/ConEmuPack.170316.7z" + "version": "170326", + "url": "https://github.com/Maximus5/ConEmu/releases/download/v17.03.26/ConEmuPack.170326.7z" }, { "name": "clink-completions", From 24a110ddb785c2e05655d6a57405e15d9391d289 Mon Sep 17 00:00:00 2001 From: Benjamin Staneck Date: Fri, 7 Apr 2017 02:36:22 +0200 Subject: [PATCH 051/306] :arrow_up: Update Git to v2.12.2(2) Release notes: https://github.com/git-for-windows/git/releases/tag/v2.12.2.windows.2 --- vendor/sources.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/vendor/sources.json b/vendor/sources.json index 8cce9d4..fac335c 100644 --- a/vendor/sources.json +++ b/vendor/sources.json @@ -1,8 +1,8 @@ [ { "name": "git-for-windows", - "version": "v2.12.2.windows.1", - "url": "https://github.com/git-for-windows/git/releases/download/v2.12.2.windows.1/PortableGit-2.12.2-32-bit.7z.exe" + "version": "v2.12.2.windows.2", + "url": "https://github.com/git-for-windows/git/releases/download/v2.12.2.windows.2/PortableGit-2.12.2.2-32-bit.7z.exe" }, { "name": "clink", From 4d3950174fdc4a4fa69943b819020238c342cc6c Mon Sep 17 00:00:00 2001 From: Benjamin Staneck Date: Fri, 7 Apr 2017 02:38:16 +0200 Subject: [PATCH 052/306] :arrow_up: Update ConEmu to 170402 (preview) Changelog: https://conemu.github.io/blog/2017/04/02/Build-170402.html --- vendor/sources.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/vendor/sources.json b/vendor/sources.json index fac335c..9268f8a 100644 --- a/vendor/sources.json +++ b/vendor/sources.json @@ -11,8 +11,8 @@ }, { "name": "conemu-maximus5", - "version": "170326", - "url": "https://github.com/Maximus5/ConEmu/releases/download/v17.03.26/ConEmuPack.170326.7z" + "version": "170402", + "url": "https://github.com/Maximus5/ConEmu/releases/download/v17.04.02/ConEmuPack.170402.7z" }, { "name": "clink-completions", From 02366fdc7edff1067d66f3079c59f2d231b813ca Mon Sep 17 00:00:00 2001 From: Benjamin Staneck Date: Fri, 7 Apr 2017 06:14:35 +0200 Subject: [PATCH 053/306] Update README.md fix AppVeyor badge --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 773252e..7630fed 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # Cmder -[![Join the chat at https://gitter.im/cmderdev/cmder](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/cmderdev/cmder?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) [![Build Status](https://ci.appveyor.com/api/projects/status/32r7s2skrgm9ubva/branch/master?svg=true)](https://ci.appveyor.com/project/MartiUK/cmder) +[![Join the chat at https://gitter.im/cmderdev/cmder](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/cmderdev/cmder?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) [![Build Status](https://ci.appveyor.com/api/projects/status/github/cmderdev/cmder?branch=master&svg=true)](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. From bee82d00e811875ce4cc90f954f8ca2f6ca44389 Mon Sep 17 00:00:00 2001 From: Benjamin Staneck Date: Fri, 7 Apr 2017 06:25:01 +0200 Subject: [PATCH 054/306] Enable UNC paths by default closes #1315 --- config/ConEmu.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/ConEmu.xml b/config/ConEmu.xml index b048569..af06ef0 100644 --- a/config/ConEmu.xml +++ b/config/ConEmu.xml @@ -153,7 +153,7 @@ - + From aa2eaa68862ed3f346fb45f0b6e8fd18ab2838fb Mon Sep 17 00:00:00 2001 From: Benjamin Staneck Date: Fri, 7 Apr 2017 06:57:16 +0200 Subject: [PATCH 055/306] switch file hashes from MD5 to SHA256 --- scripts/pack.ps1 | 2 +- scripts/utils.ps1 | 26 +++++++++++++------------- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/scripts/pack.ps1 b/scripts/pack.ps1 index a0956c5..28aba49 100644 --- a/scripts/pack.ps1 +++ b/scripts/pack.ps1 @@ -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)") + $hash = (Digest-Hash "$saveTo\$($t.Name)") Add-Content "$saveTo\hashes.txt" $hash } \ No newline at end of file diff --git a/scripts/utils.ps1 b/scripts/utils.ps1 index b3c1585..e3a47fc 100644 --- a/scripts/utils.ps1 +++ b/scripts/utils.ps1 @@ -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) From e63368fe9617ed1aa9a60b1495af0d812d15d01e Mon Sep 17 00:00:00 2001 From: Benjamin Staneck Date: Fri, 7 Apr 2017 07:45:28 +0200 Subject: [PATCH 056/306] add file name next to hash values --- scripts/pack.ps1 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/pack.ps1 b/scripts/pack.ps1 index 28aba49..1b76a67 100644 --- a/scripts/pack.ps1 +++ b/scripts/pack.ps1 @@ -54,5 +54,5 @@ $version = Invoke-Expression "git describe --abbrev=0 --tags" foreach ($t in $targets.GetEnumerator()) { Create-Archive $cmderRoot "$saveTo\$($t.Name)" $t.Value $hash = (Digest-Hash "$saveTo\$($t.Name)") - Add-Content "$saveTo\hashes.txt" $hash + Add-Content -path "$saveTo\hashes.txt" -value ($t.Name + ' ' + $hash) } \ No newline at end of file From 53c7ec58865302e2b33d5f3ef2cfa7efc16eef11 Mon Sep 17 00:00:00 2001 From: Benjamin Staneck Date: Fri, 7 Apr 2017 07:47:01 +0200 Subject: [PATCH 057/306] don't package .github_changelog_generator file --- packignore | 1 + 1 file changed, 1 insertion(+) diff --git a/packignore b/packignore index ead3d89..6e7b5b4 100644 --- a/packignore +++ b/packignore @@ -19,3 +19,4 @@ appveyor.yml vendor\cmder.sh vendor\git-prompt.sh config\user-* +.github_changelog_generator \ No newline at end of file From cd3efdf38299a42d0817d7052f46d11a3f9e676c Mon Sep 17 00:00:00 2001 From: Benjamin Staneck Date: Fri, 7 Apr 2017 07:50:24 +0200 Subject: [PATCH 058/306] ignore VisualStudio temp dir --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 35c93e7..a1cbc27 100644 --- a/.gitignore +++ b/.gitignore @@ -16,3 +16,4 @@ config/user-* config/aliases config/profile.d .github_changelog_generator +launcher/.vs From 6e2d88d466af3c5670f0119fdd492a7363d1cbf7 Mon Sep 17 00:00:00 2001 From: Benjamin Staneck Date: Fri, 7 Apr 2017 23:51:46 +0200 Subject: [PATCH 059/306] upgrade to VisualStudio 2017 --- appveyor.yml | 2 +- launcher/CmderLauncher.vcxproj | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/appveyor.yml b/appveyor.yml index d6b7564..83a7799 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -15,7 +15,7 @@ branches: #---------------------------------# # Operating system (build VM template) -os: Windows Server 2012 R2 +os: Visual Studio 2017 #---------------------------------# # build configuration # diff --git a/launcher/CmderLauncher.vcxproj b/launcher/CmderLauncher.vcxproj index d9012ba..7193764 100644 --- a/launcher/CmderLauncher.vcxproj +++ b/launcher/CmderLauncher.vcxproj @@ -1,5 +1,5 @@  - + Debug @@ -19,13 +19,13 @@ Application true - v140_xp + v141_xp Unicode Application false - v140_xp + v141_xp true Unicode From c2cf56cc4845aabab8b7beb117df960edae25db4 Mon Sep 17 00:00:00 2001 From: Benjamin Staneck Date: Wed, 10 May 2017 22:03:36 +0200 Subject: [PATCH 060/306] :arrow_up: Update Git to v2.13.0 Release notes: https://github.com/git-for-windows/git/releases/tag/v2.13.0.windows.1 --- vendor/sources.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/vendor/sources.json b/vendor/sources.json index 9268f8a..d86289c 100644 --- a/vendor/sources.json +++ b/vendor/sources.json @@ -1,8 +1,8 @@ [ { "name": "git-for-windows", - "version": "v2.12.2.windows.2", - "url": "https://github.com/git-for-windows/git/releases/download/v2.12.2.windows.2/PortableGit-2.12.2.2-32-bit.7z.exe" + "version": "v2.13.0.windows.1", + "url": "https://github.com/git-for-windows/git/releases/download/v2.13.0.windows.1/PortableGit-2.13.0-32-bit.7z.exe" }, { "name": "clink", From 9c4e77b4989592a2956b20378d218b6134be0422 Mon Sep 17 00:00:00 2001 From: Benjamin Staneck Date: Fri, 19 May 2017 23:20:31 +0200 Subject: [PATCH 061/306] :arrow_up: Update ConEmu to 170517 (preview) Changelog: https://conemu.github.io/blog/2017/05/17/Build-170517.html --- vendor/sources.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/vendor/sources.json b/vendor/sources.json index d86289c..988aa5a 100644 --- a/vendor/sources.json +++ b/vendor/sources.json @@ -11,8 +11,8 @@ }, { "name": "conemu-maximus5", - "version": "170402", - "url": "https://github.com/Maximus5/ConEmu/releases/download/v17.04.02/ConEmuPack.170402.7z" + "version": "170517", + "url": "https://github.com/Maximus5/ConEmu/releases/download/v17.05.17/ConEmuPack.170517.7z" }, { "name": "clink-completions", From c19237085d0f96687acf57a681c3d93d44744028 Mon Sep 17 00:00:00 2001 From: Benjamin Staneck Date: Tue, 13 Jun 2017 15:10:55 +0200 Subject: [PATCH 062/306] :arrow_up: Update ConEmu to 170605 (preview) Changelog: https://conemu.github.io/blog/2017/06/05/Build-170605.html --- vendor/sources.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/vendor/sources.json b/vendor/sources.json index 988aa5a..beba59a 100644 --- a/vendor/sources.json +++ b/vendor/sources.json @@ -11,8 +11,8 @@ }, { "name": "conemu-maximus5", - "version": "170517", - "url": "https://github.com/Maximus5/ConEmu/releases/download/v17.05.17/ConEmuPack.170517.7z" + "version": "170605", + "url": "https://github.com/Maximus5/ConEmu/releases/download/v17.06.05/ConEmuPack.170605.7z" }, { "name": "clink-completions", From 89c014bb0501655fd4586c57f814a93323c76c42 Mon Sep 17 00:00:00 2001 From: Benjamin Staneck Date: Tue, 13 Jun 2017 15:11:43 +0200 Subject: [PATCH 063/306] :arrow_up: Update Git to v2.13.1 Release notes: https://github.com/git-for-windows/git/releases/tag/v2.13.1.windows.1 --- vendor/sources.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/vendor/sources.json b/vendor/sources.json index beba59a..124321c 100644 --- a/vendor/sources.json +++ b/vendor/sources.json @@ -1,8 +1,8 @@ [ { "name": "git-for-windows", - "version": "v2.13.0.windows.1", - "url": "https://github.com/git-for-windows/git/releases/download/v2.13.0.windows.1/PortableGit-2.13.0-32-bit.7z.exe" + "version": "v2.13.1.windows.1", + "url": "https://github.com/git-for-windows/git/releases/download/v2.13.1.windows.1/PortableGit-2.13.1-32-bit.7z.exe" }, { "name": "clink", From 74d79ea62887c57d7eabd2dd4e9eef9e050464c1 Mon Sep 17 00:00:00 2001 From: "Wild.Farmer" Date: Sat, 17 Jun 2017 22:29:06 +0800 Subject: [PATCH 064/306] add /TASK option --- launcher/src/CmderLauncher.cpp | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/launcher/src/CmderLauncher.cpp b/launcher/src/CmderLauncher.cpp index 42f2902..164b87e 100644 --- a/launcher/src/CmderLauncher.cpp +++ b/launcher/src/CmderLauncher.cpp @@ -95,7 +95,7 @@ bool FileExists(const wchar_t * filePath) return false; } -void StartCmder(std::wstring path, bool is_single_mode) +void StartCmder(std::wstring path, bool is_single_mode, std::wstring taskName = L"") { #if USE_TASKBAR_API wchar_t appId[MAX_PATH] = { 0 }; @@ -180,6 +180,10 @@ void StartCmder(std::wstring path, bool is_single_mode) swprintf_s(args, L"/Icon \"%s\" /Title Cmder", icoPath); } + if (!taskName.empty()) { + swprintf_s(args, L"%s -run {%s}", args, taskName.c_str()); + } + SetEnvironmentVariable(L"CMDER_ROOT", exeDir); if (!streqi(path.c_str(), L"")) { @@ -323,6 +327,10 @@ int APIENTRY _tWinMain(_In_ HINSTANCE hInstance, { StartCmder(opt.second, true); } + else if (streqi(opt.first.c_str(), L"/TASK")) + { + StartCmder(L"", false, opt.second); + } else if (streqi(opt.first.c_str(), L"/REGISTER")) { RegisterShellMenu(opt.second, SHELL_MENU_REGISTRY_PATH_BACKGROUND); @@ -335,7 +343,7 @@ int APIENTRY _tWinMain(_In_ HINSTANCE hInstance, } else { - MessageBox(NULL, L"Unrecognized parameter.\n\nValid options:\n /START \n /SINGLE \n /REGISTER [USER/ALL]\n /UNREGISTER [USER/ALL]", MB_TITLE, MB_OK); + MessageBox(NULL, L"Unrecognized parameter.\n\nValid options:\n /START \n /SINGLE \n /TASK \n /REGISTER [USER/ALL]\n /UNREGISTER [USER/ALL]", MB_TITLE, MB_OK); return 1; } From 25005930badcf3b0ad4f3cc8e7ef8fc4cc9e5318 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E7=A5=BA?= Date: Fri, 23 Jun 2017 17:48:03 +0800 Subject: [PATCH 065/306] Compatible with Visual Studio Code --- vendor/init.bat | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/vendor/init.bat b/vendor/init.bat index 1fefa10..ff847bc 100644 --- a/vendor/init.bat +++ b/vendor/init.bat @@ -11,7 +11,11 @@ if not defined verbose-output ( set verbose-output=0 ) :: 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 '\' From a7237370e346eaa83ccc3a56e817683ee99c2244 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E7=A5=BA?= Date: Fri, 23 Jun 2017 18:39:36 +0800 Subject: [PATCH 066/306] Compatible with Visual Studio Code (PowerShell) --- vendor/profile.ps1 | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/vendor/profile.ps1 b/vendor/profile.ps1 index 20dc528..fd94530 100644 --- a/vendor/profile.ps1 +++ b/vendor/profile.ps1 @@ -4,19 +4,23 @@ # !!! 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 } +# 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("\")) + # Add Cmder modules directory to the autoload path. $CmderModulePath = Join-path $PSScriptRoot "psmodules/" From aea1a977bf8b21eb1ef1e6197b458cad8d4d3813 Mon Sep 17 00:00:00 2001 From: Benjamin Staneck Date: Fri, 23 Jun 2017 18:18:21 +0200 Subject: [PATCH 067/306] :arrow_up: Update Git to v2.13.1(2) Release notes: https://github.com/git-for-windows/git/releases/tag/v2.13.1.windows.2 --- vendor/sources.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/vendor/sources.json b/vendor/sources.json index 124321c..563db44 100644 --- a/vendor/sources.json +++ b/vendor/sources.json @@ -1,8 +1,8 @@ [ { "name": "git-for-windows", - "version": "v2.13.1.windows.1", - "url": "https://github.com/git-for-windows/git/releases/download/v2.13.1.windows.1/PortableGit-2.13.1-32-bit.7z.exe" + "version": "v2.13.1.windows.2", + "url": "https://github.com/git-for-windows/git/releases/download/v2.13.1.windows.2/PortableGit-2.13.1.2-32-bit.7z.exe" }, { "name": "clink", From 409b92aac2eeb662c047e0f4625f217cb856c8d2 Mon Sep 17 00:00:00 2001 From: "Wild.Farmer" Date: Sat, 24 Jun 2017 22:10:15 +0800 Subject: [PATCH 068/306] modify -cmd command line style to /cmd --- launcher/src/CmderLauncher.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/launcher/src/CmderLauncher.cpp b/launcher/src/CmderLauncher.cpp index 164b87e..da97b69 100644 --- a/launcher/src/CmderLauncher.cpp +++ b/launcher/src/CmderLauncher.cpp @@ -181,7 +181,7 @@ void StartCmder(std::wstring path, bool is_single_mode, std::wstring taskName = } if (!taskName.empty()) { - swprintf_s(args, L"%s -run {%s}", args, taskName.c_str()); + swprintf_s(args, L"%s /run {%s}", args, taskName.c_str()); } SetEnvironmentVariable(L"CMDER_ROOT", exeDir); From 262d92265e3cdad3e00d2e7fe778565e7c2b7525 Mon Sep 17 00:00:00 2001 From: Benjamin Staneck Date: Tue, 27 Jun 2017 00:55:58 +0200 Subject: [PATCH 069/306] :arrow_up: Update Git to v2.13.2.windows.1 Release notes: https://github.com/git-for-windows/git/releases/tag/v2.13.2.windows.1 --- vendor/sources.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/vendor/sources.json b/vendor/sources.json index 563db44..30156ab 100644 --- a/vendor/sources.json +++ b/vendor/sources.json @@ -1,8 +1,8 @@ [ { "name": "git-for-windows", - "version": "v2.13.1.windows.2", - "url": "https://github.com/git-for-windows/git/releases/download/v2.13.1.windows.2/PortableGit-2.13.1.2-32-bit.7z.exe" + "version": "v2.13.2.windows.1", + "url": "https://github.com/git-for-windows/git/releases/download/v2.13.2.windows.1/PortableGit-2.13.2-32-bit.7z.exe" }, { "name": "clink", From 512787f3917cbc2b84e10fa00200bf82085ec885 Mon Sep 17 00:00:00 2001 From: Benjamin Staneck Date: Tue, 27 Jun 2017 00:56:53 +0200 Subject: [PATCH 070/306] :arrow_up: Update ConEmu to 170622 (preview) Changelog: https://conemu.github.io/blog/2017/06/22/Build-170622.html --- vendor/sources.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/vendor/sources.json b/vendor/sources.json index 30156ab..84d1b8d 100644 --- a/vendor/sources.json +++ b/vendor/sources.json @@ -11,8 +11,8 @@ }, { "name": "conemu-maximus5", - "version": "170605", - "url": "https://github.com/Maximus5/ConEmu/releases/download/v17.06.05/ConEmuPack.170605.7z" + "version": "170622", + "url": "https://github.com/Maximus5/ConEmu/releases/download/v17.06.22/ConEmuPack.170622.7z" }, { "name": "clink-completions", From 0877a6d9954e41c0974fbbd73c1803d497f831a1 Mon Sep 17 00:00:00 2001 From: "Dax T. Games" Date: Mon, 10 Jul 2017 22:21:22 -0500 Subject: [PATCH 071/306] cmder git prompt --- vendor/git-prompt.sh | 57 ++++++++++++++++++++++++++++---------------- 1 file changed, 37 insertions(+), 20 deletions(-) diff --git a/vendor/git-prompt.sh b/vendor/git-prompt.sh index 81aedb0..9992b47 100644 --- a/vendor/git-prompt.sh +++ b/vendor/git-prompt.sh @@ -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 -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 + # 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 From bcb60f8f591ba0ad97a3391ddf43df2d838fcc60 Mon Sep 17 00:00:00 2001 From: "Dax T. Games" Date: Mon, 10 Jul 2017 22:23:51 -0500 Subject: [PATCH 072/306] cmder git prompt spacing --- vendor/git-prompt.sh | 34 +++++++++++++++++----------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/vendor/git-prompt.sh b/vendor/git-prompt.sh index 9992b47..135e994 100644 --- a/vendor/git-prompt.sh +++ b/vendor/git-prompt.sh @@ -1,35 +1,35 @@ if test -f /etc/profile.d/git-sdk.sh then - TITLEPREFIX=SDK-${MSYSTEM#MINGW} + TITLEPREFIX=SDK-${MSYSTEM#MINGW} else - TITLEPREFIX=$MSYSTEM + TITLEPREFIX=$MSYSTEM fi if test -f ~/.config/git/git-prompt.sh then - . ~/.config/git/git-prompt.sh + . ~/.config/git/git-prompt.sh else PS1='\[\033]0;$MSYSTEM:${PWD//[^[:ascii:]]/?}\007\]' # set window title - # PS1="$PS1"'\n' # new line + # PS1="$PS1"'\n' # new line PS1="$PS1"'\[\033[32m\]' # change to green PS1="$PS1"'\u@\h ' # user@host - # PS1="$PS1"'\[\033[35m\]' # change to purple - # PS1="$PS1"'$MSYSTEM ' # show MSYSTEM + # 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 + 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 From 815b99b98b3e921234d685d4743d0b12d10489fb Mon Sep 17 00:00:00 2001 From: Chrs Borckholder Date: Fri, 14 Jul 2017 11:30:19 +0200 Subject: [PATCH 073/306] Avoid clobbering Install-Module If the Install-Module command is available, do not include the bundled module path containing a deprecated version of PSGet. Recent powershell versions include PowerShellGet as standard module installer. Resolve #1318. --- vendor/profile.ps1 | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/vendor/profile.ps1 b/vendor/profile.ps1 index 7878ff2..ccb858e 100644 --- a/vendor/profile.ps1 +++ b/vendor/profile.ps1 @@ -17,10 +17,14 @@ if(!$PSScriptRoot) { $PSScriptRoot = Split-Path $Script:MyInvocation.MyCommand.Path } +# 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;") } From 4c270699a1989b6c1109ff268ee18a538e9515df Mon Sep 17 00:00:00 2001 From: Benjamin Staneck Date: Sat, 15 Jul 2017 23:05:51 +0200 Subject: [PATCH 074/306] :arrow_up: Update Git to v2.13.3 Release notes: https://github.com/git-for-windows/git/releases/tag/v2.13.3.windows.1 --- vendor/sources.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/vendor/sources.json b/vendor/sources.json index 84d1b8d..7a5e3e8 100644 --- a/vendor/sources.json +++ b/vendor/sources.json @@ -1,8 +1,8 @@ [ { "name": "git-for-windows", - "version": "v2.13.2.windows.1", - "url": "https://github.com/git-for-windows/git/releases/download/v2.13.2.windows.1/PortableGit-2.13.2-32-bit.7z.exe" + "version": "v2.13.3.windows.1", + "url": "https://github.com/git-for-windows/git/releases/download/v2.13.3.windows.1/PortableGit-2.13.3-32-bit.7z.exe" }, { "name": "clink", From f687281be044ae9d968ce38546ef4fe884583062 Mon Sep 17 00:00:00 2001 From: Tian Date: Tue, 25 Jul 2017 05:14:17 +0800 Subject: [PATCH 075/306] Fixed quotation marks (#1360) 1. Changed " --login -i"" to "" --login -i" in ConEmu 2. Closed quotation in "alias.bat :p_del doskey" command of "%ALIASES%" Suppose %CMDER_ROOT% is "C:\Program Files\cmder", this BUG will be raised while we exec command of "unalias xxx" or creat terminal "{bash::bash}" and "{bash::mintty}", it will throws an error like: 'C:\Program' is not recognized as an internal or external command, operable program or batch file. --- bin/alias.bat | 2 +- config/ConEmu.xml | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/bin/alias.bat b/bin/alias.bat index cf5d07d..69497f6 100644 --- a/bin/alias.bat +++ b/bin/alias.bat @@ -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 diff --git a/config/ConEmu.xml b/config/ConEmu.xml index af06ef0..0be905d 100644 --- a/config/ConEmu.xml +++ b/config/ConEmu.xml @@ -548,14 +548,14 @@ - + - + From 1f9e743ef20e9da2bf8ffeef2b66267a936e5b76 Mon Sep 17 00:00:00 2001 From: Alpha Date: Mon, 24 Jul 2017 17:15:17 -0400 Subject: [PATCH 076/306] Added pagent ssh auth support (#1391) (and some comments on the user-profile.cmd file) Inspired by the comments from https://github.com/cmderdev/cmder/issues/193 and my personal need to use pageant instead of OpenSSH authentication agents (which is more Window user-friendly), I have used this approach which works as expected. Keeping the spirit of the current scripts, I left it disabled, and with some comments explaining what they all do. --- vendor/init.bat | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/vendor/init.bat b/vendor/init.bat index 1fefa10..ef54dfe 100644 --- a/vendor/init.bat +++ b/vendor/init.bat @@ -173,7 +173,14 @@ if exist "%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. ) > "%CMDER_ROOT%\config\user-profile.cmd" From a34e17f2bd1ca6018ab81258fa41cb980e7c18ff Mon Sep 17 00:00:00 2001 From: Dax T Games Date: Thu, 27 Jul 2017 10:43:44 -0500 Subject: [PATCH 077/306] Doc updates For profile/alias settings scripts, what loads them, and load order. --- README.md | 27 +++++++++++++++++++++++++-- 1 file changed, 25 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 7630fed..96e78b8 100644 --- a/README.md +++ b/README.md @@ -112,16 +112,39 @@ 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. + +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. From e92f7fbb552cd53f1c7d519712627e1c4d9df850 Mon Sep 17 00:00:00 2001 From: Benjamin Staneck Date: Sun, 6 Aug 2017 02:40:40 +0200 Subject: [PATCH 078/306] :arrow_up: Update Git to v2.14.0 Release notes: https://github.com/git-for-windows/git/releases/tag/v2.14.0.windows.1 --- vendor/sources.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/vendor/sources.json b/vendor/sources.json index 7a5e3e8..d2a7046 100644 --- a/vendor/sources.json +++ b/vendor/sources.json @@ -1,8 +1,8 @@ [ { "name": "git-for-windows", - "version": "v2.13.3.windows.1", - "url": "https://github.com/git-for-windows/git/releases/download/v2.13.3.windows.1/PortableGit-2.13.3-32-bit.7z.exe" + "version": "v2.14.0.windows.1", + "url": "https://github.com/git-for-windows/git/releases/download/v2.14.0.windows.1/PortableGit-2.14.0-32-bit.7z.exe" }, { "name": "clink", From e9a78a30d1f9f0723e01e12fe80efe6bb443091a Mon Sep 17 00:00:00 2001 From: Benjamin Staneck Date: Thu, 10 Aug 2017 22:34:46 +0200 Subject: [PATCH 079/306] :arrow_up: Update Git to v2.14.1 Release notes: https://github.com/git-for-windows/git/releases/tag/v2.14.1.windows.1 --- vendor/sources.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/vendor/sources.json b/vendor/sources.json index d2a7046..9db71f9 100644 --- a/vendor/sources.json +++ b/vendor/sources.json @@ -1,8 +1,8 @@ [ { "name": "git-for-windows", - "version": "v2.14.0.windows.1", - "url": "https://github.com/git-for-windows/git/releases/download/v2.14.0.windows.1/PortableGit-2.14.0-32-bit.7z.exe" + "version": "v2.14.1.windows.1", + "url": "https://github.com/git-for-windows/git/releases/download/v2.14.1.windows.1/PortableGit-2.14.1-32-bit.7z.exe" }, { "name": "clink", From 22d27afed5b1f3a126b7247039a554250ee6546a Mon Sep 17 00:00:00 2001 From: Hugo-KTM Date: Sun, 27 Aug 2017 19:46:47 +0200 Subject: [PATCH 080/306] Fix Cmder not changing to CMDER_START (#1399) * Fix Cmder not changing to CMDER_START Fix to allow Cmder to change to different startup directory if already on the same drive as CMDER_START possibly relevant: HOME != USERPROFILE * make "Cmder Here" work in more cases integrated suggestion from comments (test for trailing backslash to prevent doubling of trailing backslash) integrated suggestions from #1456: switching ```cd /d``` over to ```pushd``` to get support for UNC-paths * replaced 'cd /d' with 'pushd' replaced two more instances of 'cd /d' with 'pushd' to support network paths. Also added double quotes to the use of '%USERPROFILE%' to prevent issues with spaces. I also noticed that 'pushd', in contrast to 'cd /d' does not require the trailing backslash for drive roots (on Win7). Therefore I removed the trailing backslash check. * Don't assume / is needed at end * Update init.bat --- vendor/init.bat | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/vendor/init.bat b/vendor/init.bat index ef54dfe..d2e4689 100644 --- a/vendor/init.bat +++ b/vendor/init.bat @@ -149,9 +149,9 @@ call "%user-aliases%" :: manually extracting the archive rather than executing the 7z sfx if exist "%CMDER_ROOT%\vendor\git-for-windows\post-install.bat" ( call :verbose-output Running Git for Windows one time Post Install.... - cd /d "%CMDER_ROOT%\vendor\git-for-windows\" + pushd "%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 "%USERPROFILE%" ) :: Set home path @@ -159,10 +159,15 @@ 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" +setlocal enabledelayedexpansion if defined CMDER_START ( - cd /d "%CMDER_START%" -) + if "%CMDER_START:~-1%" neq "\" ( + SET "CMDER_START=%CMDER_START%\" + ) + pushd "!CMDER_START!" +) +endlocal if exist "%CMDER_ROOT%\config\user-profile.cmd" ( REM Create this file and place your own command in there From 3ea6d51ba438cdb1861a331ec11e0aa2face9f48 Mon Sep 17 00:00:00 2001 From: Dax T Games Date: Sun, 27 Aug 2017 14:04:24 -0500 Subject: [PATCH 081/306] Update init.bat --- vendor/init.bat | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/vendor/init.bat b/vendor/init.bat index d2e4689..4fbdd7d 100644 --- a/vendor/init.bat +++ b/vendor/init.bat @@ -159,15 +159,9 @@ 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" -setlocal enabledelayedexpansion if defined CMDER_START ( - if "%CMDER_START:~-1%" neq "\" ( - SET "CMDER_START=%CMDER_START%\" - ) - - pushd "!CMDER_START!" + pushd "%CMDER_START%" ) -endlocal if exist "%CMDER_ROOT%\config\user-profile.cmd" ( REM Create this file and place your own command in there From 8d74184d300049b4824a2c2452ab0d3d54743d8c Mon Sep 17 00:00:00 2001 From: Benjamin Staneck Date: Mon, 28 Aug 2017 00:49:38 +0200 Subject: [PATCH 082/306] :arrow_up: clink to our forked version at 0.4.9 This should fix all the Windows 10 alias issues that we had. --- vendor/sources.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/vendor/sources.json b/vendor/sources.json index 9db71f9..f45306b 100644 --- a/vendor/sources.json +++ b/vendor/sources.json @@ -6,8 +6,8 @@ }, { "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/Stanzilla/clink/releases/download/0.4.9/clink_DEV.zip" }, { "name": "conemu-maximus5", From d88f1b0a97725ec593875ef8a7b5686bcd940e7f Mon Sep 17 00:00:00 2001 From: Benjamin Staneck Date: Tue, 29 Aug 2017 03:58:30 +0200 Subject: [PATCH 083/306] Point to the artifacts on the master branch --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 96e78b8..f0fae05 100644 --- a/README.md +++ b/README.md @@ -176,11 +176,11 @@ 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 +## Current development builds You can download builds of the current development branch by going to AppVeyor via the following link: -[![AppVeyor](https://ci.appveyor.com/api/projects/status/github/cmderdev/cmder?svg=True)](https://ci.appveyor.com/project/MartiUK/cmder/branch/development/artifacts) +[![AppVeyor](https://ci.appveyor.com/api/projects/status/github/cmderdev/cmder?svg=True)](https://ci.appveyor.com/project/MartiUK/cmder/branch/master/artifacts) ## License From a5eb4d7b4fd8cd2dec1ba9fe7e879733d7146a4b Mon Sep 17 00:00:00 2001 From: Joseph Caudle Date: Mon, 28 Aug 2017 07:56:10 -0400 Subject: [PATCH 084/306] Add documentation about Program Files cmder should not be installed in `C:\Program Files` because it would need Administrator privileges to update configuration. This commit adds documentation to the installation instructions as described in #1200. --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index f0fae05..5f4851e 100644 --- a/README.md +++ b/README.md @@ -14,7 +14,7 @@ The main advantage of Cmder is portability. It is designed to be totally self-co 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 +3. (optional) Place your own executable files into the `bin` folder to be injected into your PATH. (nb: This path should not be `C:\Program Files` or anywhere else that would require Administrator access for modifying configuration files) 4. Run Cmder.exe ## Integration From 1c1c08bb68fc63e939c3c9be9e9793a5600f86fb Mon Sep 17 00:00:00 2001 From: Benjamin Staneck Date: Sat, 30 Sep 2017 11:34:18 +0200 Subject: [PATCH 085/306] :arrow_up: Update Git to v2.14.2 Release notes: https://github.com/git-for-windows/git/releases/tag/v2.14.2.windows.1 --- vendor/sources.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/vendor/sources.json b/vendor/sources.json index f45306b..1381d76 100644 --- a/vendor/sources.json +++ b/vendor/sources.json @@ -1,8 +1,8 @@ [ { "name": "git-for-windows", - "version": "v2.14.1.windows.1", - "url": "https://github.com/git-for-windows/git/releases/download/v2.14.1.windows.1/PortableGit-2.14.1-32-bit.7z.exe" + "version": "v2.14.2.windows.1", + "url": "https://github.com/git-for-windows/git/releases/download/v2.14.2.windows.1/PortableGit-2.14.2-32-bit.7z.exe" }, { "name": "clink", From 6883ba3b84722f36eb51c936b472ef9e07af58c2 Mon Sep 17 00:00:00 2001 From: Benjamin Staneck Date: Sat, 30 Sep 2017 11:35:49 +0200 Subject: [PATCH 086/306] :arrow_up: Update ConEmu to 170910 (alpha) Changelog: https://conemu.github.io/blog/2017/09/10/Build-170910.html --- vendor/sources.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/vendor/sources.json b/vendor/sources.json index 1381d76..91dcc61 100644 --- a/vendor/sources.json +++ b/vendor/sources.json @@ -11,8 +11,8 @@ }, { "name": "conemu-maximus5", - "version": "170622", - "url": "https://github.com/Maximus5/ConEmu/releases/download/v17.06.22/ConEmuPack.170622.7z" + "version": "170910", + "url": "https://github.com/Maximus5/ConEmu/releases/download/v17.09.10/ConEmuPack.170910.7z" }, { "name": "clink-completions", From e104f20c5d6fb8fefd0889ed7a918ce5f82ea8d7 Mon Sep 17 00:00:00 2001 From: Benjamin Staneck Date: Sat, 28 Oct 2017 12:28:31 +0200 Subject: [PATCH 087/306] :arrow_up: clink-completions to 0.3.3 Changelog: https://github.com/vladimir-kotikov/clink-completions/releases/tag/0.3.3 --- vendor/sources.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/vendor/sources.json b/vendor/sources.json index 91dcc61..e6c8806 100644 --- a/vendor/sources.json +++ b/vendor/sources.json @@ -16,7 +16,7 @@ }, { "name": "clink-completions", - "version": "0.3.2", - "url": "https://github.com/vladimir-kotikov/clink-completions/archive/0.3.2.zip" + "version": "0.3.3", + "url": "https://github.com/vladimir-kotikov/clink-completions/archive/0.3.3.zip" } ] From e90966c5c22ef19220b988ef79147d3bf0352b6a Mon Sep 17 00:00:00 2001 From: Benjamin Staneck Date: Sat, 28 Oct 2017 12:29:46 +0200 Subject: [PATCH 088/306] :arrow_up: Update Git to v2.14.4 Release notes: https://github.com/git-for-windows/git/releases/tag/v2.14.3.windows.1 --- vendor/sources.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/vendor/sources.json b/vendor/sources.json index e6c8806..f38d5ea 100644 --- a/vendor/sources.json +++ b/vendor/sources.json @@ -1,8 +1,8 @@ [ { "name": "git-for-windows", - "version": "v2.14.2.windows.1", - "url": "https://github.com/git-for-windows/git/releases/download/v2.14.2.windows.1/PortableGit-2.14.2-32-bit.7z.exe" + "version": "v2.14.3.windows.1", + "url": "https://github.com/git-for-windows/git/releases/download/v2.14.3.windows.1/PortableGit-2.14.3-32-bit.7z.exe" }, { "name": "clink", From a95cd140efcfcc7749dea3dfe12931bda8f6f182 Mon Sep 17 00:00:00 2001 From: Benjamin Staneck Date: Sat, 28 Oct 2017 12:30:54 +0200 Subject: [PATCH 089/306] :arrow_up: Update ConEmu to 171025 (alpha) Changelog: https://conemu.github.io/blog/2017/10/25/Build-171025.html --- vendor/sources.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/vendor/sources.json b/vendor/sources.json index f38d5ea..3fb1f7c 100644 --- a/vendor/sources.json +++ b/vendor/sources.json @@ -11,8 +11,8 @@ }, { "name": "conemu-maximus5", - "version": "170910", - "url": "https://github.com/Maximus5/ConEmu/releases/download/v17.09.10/ConEmuPack.170910.7z" + "version": "171025", + "url": "https://github.com/Maximus5/ConEmu/releases/download/v17.10.25/ConEmuPack.171025.7z" }, { "name": "clink-completions", From 68d9425c89683812af7b7ca6d1e3b4fcbaf4a8a2 Mon Sep 17 00:00:00 2001 From: Pero Pejovic Date: Wed, 18 Oct 2017 13:16:54 -0700 Subject: [PATCH 090/306] Avoid using aliases in profile.ps1 Aliases such as `ls` may have been overridden in the user's profile script and the resulting behavior may be different from `Get-ChildItem`. For example binding `ls` to GNU `ls.exe` generates an error if there are no matching files. --- vendor/profile.ps1 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vendor/profile.ps1 b/vendor/profile.ps1 index 6536ced..20de538 100644 --- a/vendor/profile.ps1 +++ b/vendor/profile.ps1 @@ -127,7 +127,7 @@ 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 } From b58ff9bb539d7f908f427fa34f377e1513fcd825 Mon Sep 17 00:00:00 2001 From: Angly Cat Date: Mon, 2 Oct 2017 14:52:37 +0600 Subject: [PATCH 091/306] Make default tasks respect "Startup directory for new process" "d" switch specified along with "-new_console" flag in default tasks commands made them to override chosen startup directory (effectively ignoring it), therefore it is removed. Closes #920, closes #1024, closes #1097, closes #1303. --- config/ConEmu.xml | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/config/ConEmu.xml b/config/ConEmu.xml index 0be905d..5f9ca1b 100644 --- a/config/ConEmu.xml +++ b/config/ConEmu.xml @@ -488,7 +488,7 @@ - + @@ -497,7 +497,7 @@ - + @@ -507,7 +507,7 @@ - + @@ -516,7 +516,7 @@ - + @@ -527,7 +527,7 @@ - + @@ -536,10 +536,10 @@ - + - + @@ -548,14 +548,14 @@ - + - + From dcf22af3c8a3653551f6f8303088f620da466e65 Mon Sep 17 00:00:00 2001 From: Angly Cat Date: Mon, 2 Oct 2017 14:54:17 +0600 Subject: [PATCH 092/306] Remove startup directory overrive switch from command in README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 5f4851e..53140fa 100644 --- a/README.md +++ b/README.md @@ -157,7 +157,7 @@ If you want to run SSH agent on startup, include the line `@call "%GIT_INSTALL_R 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: From b6042a7ca1f458c78e64b6c416e984ee342be41d Mon Sep 17 00:00:00 2001 From: mrugesh mohapatra Date: Tue, 3 Oct 2017 14:23:58 +0530 Subject: [PATCH 093/306] Create LICENSE --- LICENSE | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 LICENSE diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..2df5b22 --- /dev/null +++ b/LICENSE @@ -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. From a8d32611a9b93cfb58f0318ae4b8041bc8a86c68 Mon Sep 17 00:00:00 2001 From: Benjamin Staneck Date: Sun, 29 Oct 2017 10:46:38 +0100 Subject: [PATCH 094/306] Fix lamda color after a ConEmu change Seems like https://github.com/Maximus5/ConEmu/issues/1288 caused this --- vendor/clink.lua | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/vendor/clink.lua b/vendor/clink.lua index 75393f6..e43fbc5 100644 --- a/vendor/clink.lua +++ b/vendor/clink.lua @@ -5,7 +5,7 @@ -- 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) @@ -26,7 +26,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,11 +34,11 @@ 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}{svn} \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" cmder_prompt = string.gsub(cmder_prompt, "{cwd}", cwd) if env == nil then lambda = "λ" From dc27c537396ff79c835e90bb0a5ddd87bce9a78e Mon Sep 17 00:00:00 2001 From: Martin Kemp Date: Wed, 1 Nov 2017 11:32:18 +0000 Subject: [PATCH 095/306] =?UTF-8?q?=E2=AC=86=EF=B8=8F=20Update=20git-for-w?= =?UTF-8?q?indows=20to=20v2.15.0.windows.1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- vendor/sources.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/vendor/sources.json b/vendor/sources.json index 3fb1f7c..b08341a 100644 --- a/vendor/sources.json +++ b/vendor/sources.json @@ -1,8 +1,8 @@ [ { "name": "git-for-windows", - "version": "v2.14.3.windows.1", - "url": "https://github.com/git-for-windows/git/releases/download/v2.14.3.windows.1/PortableGit-2.14.3-32-bit.7z.exe" + "version": "v2.15.0.windows.1", + "url": "https://github.com/git-for-windows/git/releases/download/v2.15.0.windows.1/PortableGit-2.15.0-32-bit.7z.exe" }, { "name": "clink", From 46d468aea09d59e260c57282b6c5de0d6e9f8b29 Mon Sep 17 00:00:00 2001 From: Benjamin Staneck Date: Fri, 3 Nov 2017 13:13:51 +0100 Subject: [PATCH 096/306] touch up clink.lua --- vendor/clink.lua | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/vendor/clink.lua b/vendor/clink.lua index e43fbc5..1c9a99b 100644 --- a/vendor/clink.lua +++ b/vendor/clink.lua @@ -3,6 +3,7 @@ -- !!! THIS FILE IS OVERWRITTEN WHEN CMDER IS UPDATED -- !!! Use "%CMDER_ROOT%\config\.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 @@ -39,6 +40,7 @@ function set_prompt_filter() -- 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}{svn} \n\x1b[1;39;40m{lamb} \x1b[0m" + local lambda cmder_prompt = string.gsub(cmder_prompt, "{cwd}", cwd) if env == nil then lambda = "λ" @@ -202,6 +204,7 @@ function hg_prompt_filter() 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 @@ -225,7 +228,7 @@ end -- @return {nil|git branch name} --- function get_git_branch(git_dir) - local git_dir = git_dir or get_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 @@ -267,6 +270,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 @@ -295,6 +299,7 @@ function svn_prompt_filter() 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 From 124565f36aa091cdbf96d6140e9033f3a6e9a144 Mon Sep 17 00:00:00 2001 From: Benjamin Staneck Date: Fri, 3 Nov 2017 15:06:27 +0100 Subject: [PATCH 097/306] switch to the 64bit version of Git for Windows --- vendor/sources.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vendor/sources.json b/vendor/sources.json index b08341a..5fd2629 100644 --- a/vendor/sources.json +++ b/vendor/sources.json @@ -2,7 +2,7 @@ { "name": "git-for-windows", "version": "v2.15.0.windows.1", - "url": "https://github.com/git-for-windows/git/releases/download/v2.15.0.windows.1/PortableGit-2.15.0-32-bit.7z.exe" + "url": "https://github.com/git-for-windows/git/releases/download/v2.15.0.windows.1/PortableGit-2.15.0-64-bit.7z.exe" }, { "name": "clink", From da27f9be9f563b6f9a9ad5879702a4e52a8c9fb2 Mon Sep 17 00:00:00 2001 From: Benjamin Staneck Date: Sun, 12 Nov 2017 00:35:42 +0100 Subject: [PATCH 098/306] :arrow_up: ConEmu to 171109 release notes: https://conemu.github.io/blog/2017/11/09/Build-171109.html --- vendor/sources.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/vendor/sources.json b/vendor/sources.json index 5fd2629..8675a3b 100644 --- a/vendor/sources.json +++ b/vendor/sources.json @@ -11,8 +11,8 @@ }, { "name": "conemu-maximus5", - "version": "171025", - "url": "https://github.com/Maximus5/ConEmu/releases/download/v17.10.25/ConEmuPack.171025.7z" + "version": "171109", + "url": "https://github.com/Maximus5/ConEmu/releases/download/v17.11.09/ConEmuPack.171109.7z" }, { "name": "clink-completions", From 9d6e5c12a2fb7f0fcd6b5eaa42100605c3314895 Mon Sep 17 00:00:00 2001 From: Tony Lin Date: Fri, 10 Nov 2017 11:05:47 -0500 Subject: [PATCH 099/306] Fix startup folder issue --- vendor/init.bat | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vendor/init.bat b/vendor/init.bat index 4fbdd7d..dce5d01 100644 --- a/vendor/init.bat +++ b/vendor/init.bat @@ -151,7 +151,7 @@ if exist "%CMDER_ROOT%\vendor\git-for-windows\post-install.bat" ( call :verbose-output Running Git for Windows one time Post Install.... pushd "%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 - pushd "%USERPROFILE%" + popd ) :: Set home path From 13941a44ecd6e5e0d1c1f18cc7c188fd65ca6d6d Mon Sep 17 00:00:00 2001 From: Benjamin Staneck Date: Wed, 29 Nov 2017 23:54:22 +0100 Subject: [PATCH 100/306] :arrow_up: Update Git to v2.15.1 Release notes: https://github.com/git-for-windows/git/releases/tag/v2.15.1.windows.1 --- vendor/sources.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/vendor/sources.json b/vendor/sources.json index 8675a3b..c4b161e 100644 --- a/vendor/sources.json +++ b/vendor/sources.json @@ -1,8 +1,8 @@ [ { "name": "git-for-windows", - "version": "v2.15.0.windows.1", - "url": "https://github.com/git-for-windows/git/releases/download/v2.15.0.windows.1/PortableGit-2.15.0-64-bit.7z.exe" + "version": "v2.15.1.windows.1", + "url": "https://github.com/git-for-windows/git/releases/download/v2.15.1.windows.1/PortableGit-2.15.1-64-bit.7z.exe" }, { "name": "clink", From 3c14d19a27115f6331f419b924df96626e37efb1 Mon Sep 17 00:00:00 2001 From: Benjamin Staneck Date: Thu, 30 Nov 2017 10:05:46 +0100 Subject: [PATCH 101/306] :arrow_up: Update Git to v2.15.1(2) Release notes: https://github.com/git-for-windows/git/releases/tag/v2.15.1.windows.2 --- vendor/sources.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/vendor/sources.json b/vendor/sources.json index c4b161e..d2c8533 100644 --- a/vendor/sources.json +++ b/vendor/sources.json @@ -1,8 +1,8 @@ [ { "name": "git-for-windows", - "version": "v2.15.1.windows.1", - "url": "https://github.com/git-for-windows/git/releases/download/v2.15.1.windows.1/PortableGit-2.15.1-64-bit.7z.exe" + "version": "v2.15.1.windows.2", + "url": "https://github.com/git-for-windows/git/releases/download/v2.15.1.windows.2/PortableGit-2.15.2-64-bit.7z.exe" }, { "name": "clink", From bafaf7cba46acf050fb7b5b1c197e483f2ec52e0 Mon Sep 17 00:00:00 2001 From: Benjamin Staneck Date: Thu, 30 Nov 2017 10:13:25 +0100 Subject: [PATCH 102/306] oops, fix download url --- vendor/sources.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vendor/sources.json b/vendor/sources.json index d2c8533..1b93889 100644 --- a/vendor/sources.json +++ b/vendor/sources.json @@ -2,7 +2,7 @@ { "name": "git-for-windows", "version": "v2.15.1.windows.2", - "url": "https://github.com/git-for-windows/git/releases/download/v2.15.1.windows.2/PortableGit-2.15.2-64-bit.7z.exe" + "url": "https://github.com/git-for-windows/git/releases/download/v2.15.1.windows.2/PortableGit-2.15.1.2-64-bit.7z.exe" }, { "name": "clink", From 7930c9bfe59f344f2574c01ad278ffd62ea6a034 Mon Sep 17 00:00:00 2001 From: "Dax T. Games" Date: Fri, 15 Dec 2017 13:57:49 -0600 Subject: [PATCH 103/306] Add upgrade steps to README.md --- README.md | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/README.md b/README.md index 53140fa..70a7464 100644 --- a/README.md +++ b/README.md @@ -176,6 +176,35 @@ 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. ``` +## 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` 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` 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: From ba610f5f7bbc5a0e6eea18100cafb09f289b4874 Mon Sep 17 00:00:00 2001 From: "Dax T. Games" Date: Fri, 15 Dec 2017 14:00:03 -0600 Subject: [PATCH 104/306] fixes --- README.md | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 70a7464..afa8a70 100644 --- a/README.md +++ b/README.md @@ -180,7 +180,7 @@ Uncomment and edit the below line in the script to use Cmder config even when la The process of upgrading Cmder depends on the version/build you are currently running -If you have a `[cmder_root]/config/user-conemu.xml` 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`. @@ -193,8 +193,7 @@ If you have a `[cmder_root]/config/user-conemu.xml` follow the below process: 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` 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`. From 6da96fb7ec7e362e563b3c19905ce6ba876abf0c Mon Sep 17 00:00:00 2001 From: "Dax T. Games" Date: Fri, 15 Dec 2017 15:25:53 -0600 Subject: [PATCH 105/306] add config/settings to .gitignore --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index a1cbc27..e506967 100644 --- a/.gitignore +++ b/.gitignore @@ -13,6 +13,7 @@ build/ Version v* *.bak config/user-* +config/settings config/aliases config/profile.d .github_changelog_generator From 0729c06c20f9b0a65abc2da26ace5a12041177ca Mon Sep 17 00:00:00 2001 From: Benjamin Staneck Date: Fri, 22 Dec 2017 17:12:04 +0100 Subject: [PATCH 106/306] switch back to the official version of clink --- vendor/sources.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vendor/sources.json b/vendor/sources.json index 1b93889..6228d7c 100644 --- a/vendor/sources.json +++ b/vendor/sources.json @@ -7,7 +7,7 @@ { "name": "clink", "version": "0.4.9", - "url": "https://github.com/Stanzilla/clink/releases/download/0.4.9/clink_DEV.zip" + "url": "https://github.com/mridgers/clink/releases/download/0.4.9/clink_0.4.9.zip" }, { "name": "conemu-maximus5", From 74fc14eadfaec971a159e74e046e9f9bfbf69296 Mon Sep 17 00:00:00 2001 From: Benjamin Staneck Date: Fri, 22 Dec 2017 17:13:11 +0100 Subject: [PATCH 107/306] :arrow_up: ConEmu to 171217 release notes: https://conemu.github.io/blog/2017/12/17/Build-171217.html --- vendor/sources.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/vendor/sources.json b/vendor/sources.json index 6228d7c..bde4382 100644 --- a/vendor/sources.json +++ b/vendor/sources.json @@ -11,8 +11,8 @@ }, { "name": "conemu-maximus5", - "version": "171109", - "url": "https://github.com/Maximus5/ConEmu/releases/download/v17.11.09/ConEmuPack.171109.7z" + "version": "171217", + "url": "https://github.com/Maximus5/ConEmu/releases/download/v17.12.17/ConEmuPack.171217.7z" }, { "name": "clink-completions", From 1c02c55c2f5c3265445b4f52ff48bbb0b61d75ae Mon Sep 17 00:00:00 2001 From: Benjamin Staneck Date: Thu, 28 Dec 2017 14:21:28 +0100 Subject: [PATCH 108/306] :arrow_up: ConEmu to 171226 release notes: https://conemu.github.io/blog/2017/12/26/Build-171226.html --- vendor/sources.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/vendor/sources.json b/vendor/sources.json index bde4382..ef933f4 100644 --- a/vendor/sources.json +++ b/vendor/sources.json @@ -11,8 +11,8 @@ }, { "name": "conemu-maximus5", - "version": "171217", - "url": "https://github.com/Maximus5/ConEmu/releases/download/v17.12.17/ConEmuPack.171217.7z" + "version": "171226", + "url": "https://github.com/Maximus5/ConEmu/releases/download/v17.12.26/ConEmuPack.171226.7z" }, { "name": "clink-completions", From 29c5e839757f9bf9b649f63f534add408b723857 Mon Sep 17 00:00:00 2001 From: Benjamin Staneck Date: Sat, 6 Jan 2018 23:43:50 +0100 Subject: [PATCH 109/306] Replace --no-lock-index with the new --no-optional-locks --- vendor/clink.lua | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/vendor/clink.lua b/vendor/clink.lua index 1c9a99b..ccb5906 100644 --- a/vendor/clink.lua +++ b/vendor/clink.lua @@ -18,7 +18,7 @@ dofile(clink_lua_file) -- 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. @@ -108,7 +108,8 @@ end local function get_svn_dir(path) return get_dir_contains(path, '.svn') end -function get_svn_branch(svn_dir) + +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 @@ -164,7 +165,7 @@ end -- Find out current branch -- @return {false|mercurial branch name} --- -function get_hg_branch() +local function get_hg_branch() for line in io.popen("hg branch 2>nul"):lines() do local m = line:match("(.+)$") if m then @@ -179,21 +180,21 @@ end -- Get the status of working dir -- @return {bool} --- -function get_hg_status() +local function get_hg_status() for line in io.popen("hg status -0"):lines() do return false end return true end -function get_svn_status() +local function get_svn_status() for line in io.popen("svn status -q"):lines() do return false end return true end -function hg_prompt_filter() +local function hg_prompt_filter() -- Colors for mercurial status local colors = { @@ -227,7 +228,7 @@ end -- Find out current branch -- @return {nil|git branch name} --- -function get_git_branch(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 @@ -248,8 +249,8 @@ end -- Get the status of working dir -- @return {bool} --- -function get_git_status() - local file = io.popen("git status --no-lock-index --porcelain 2>nul") +local function get_git_status() + local file = io.popen("git status --no-optional-locks --porcelain 2>nul") for line in file:lines() do file:close() return false @@ -258,7 +259,7 @@ function get_git_status() return true end -function git_prompt_filter() +local function git_prompt_filter() -- Colors for git status local colors = { @@ -289,7 +290,7 @@ function git_prompt_filter() return false end -function svn_prompt_filter() +local function svn_prompt_filter() -- Colors for svn status local colors = { clean = "\x1b[1;37;40m", From 145a1b144b04069f8b86bd1f1c006168b284cf6b Mon Sep 17 00:00:00 2001 From: Benjamin Staneck Date: Sat, 6 Jan 2018 23:52:24 +0100 Subject: [PATCH 110/306] Fix for the last --- vendor/clink.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vendor/clink.lua b/vendor/clink.lua index ccb5906..10da240 100644 --- a/vendor/clink.lua +++ b/vendor/clink.lua @@ -250,7 +250,7 @@ end -- @return {bool} --- local function get_git_status() - local file = io.popen("git status --no-optional-locks --porcelain 2>nul") + local file = io.popen("git --no-optional-locks status --porcelain 2>nul") for line in file:lines() do file:close() return false From badb027c24c5a7d1152466f467f93f9f2e1579f6 Mon Sep 17 00:00:00 2001 From: David Driscoll Date: Wed, 13 Apr 2016 14:16:58 -0400 Subject: [PATCH 111/306] use /dir Switch instead of CMDER_START --- config/ConEmu.xml | 18 ++++++------- launcher/src/CmderLauncher.cpp | 46 +++++++++++++--------------------- vendor/init.bat | 10 ++------ vendor/profile.ps1 | 7 ------ 4 files changed, 29 insertions(+), 52 deletions(-) diff --git a/config/ConEmu.xml b/config/ConEmu.xml index 5f9ca1b..c238cc0 100644 --- a/config/ConEmu.xml +++ b/config/ConEmu.xml @@ -488,7 +488,7 @@ - + @@ -497,7 +497,7 @@ - + @@ -507,7 +507,7 @@ - + @@ -516,7 +516,7 @@ - + @@ -527,7 +527,7 @@ - + @@ -536,10 +536,10 @@ - + - + @@ -548,14 +548,14 @@ - + - + diff --git a/launcher/src/CmderLauncher.cpp b/launcher/src/CmderLauncher.cpp index da97b69..b523f6f 100644 --- a/launcher/src/CmderLauncher.cpp +++ b/launcher/src/CmderLauncher.cpp @@ -4,7 +4,6 @@ #include "resource.h" #include - #pragma comment(lib, "Shlwapi.lib") #ifndef UNICODE @@ -31,7 +30,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,7 +53,6 @@ typedef struct _option typedef std::pair optpair; - optpair GetOption() { wchar_t * cmd = GetCommandLine(); @@ -125,13 +123,13 @@ void StartCmder(std::wstring path, bool is_single_mode, std::wstring taskName = ExpandEnvironmentStrings(cpuCfgPath, cpuCfgPath, sizeof(cpuCfgPath) / sizeof(cpuCfgPath[0])); PathCombine(userCfgPath, exeDir, L"config\\user-ConEmu.xml"); - + if (PathFileExists(cpuCfgPath)) { wcsncpy_s(oldCfgPath, cpuCfgPath, sizeof(cpuCfgPath)); wcsncpy_s(backupCfgPath, cpuCfgPath, sizeof(cpuCfgPath)); } else if (PathFileExists(userCfgPath)) { - wcsncpy_s(oldCfgPath, userCfgPath,sizeof(userCfgPath)); + wcsncpy_s(oldCfgPath, userCfgPath, sizeof(userCfgPath)); wcsncpy_s(backupCfgPath, userCfgPath, sizeof(userCfgPath)); } else { @@ -171,29 +169,29 @@ void StartCmder(std::wstring path, bool is_single_mode, std::wstring taskName = exit(1); } + if (streqi(path.c_str(), L"")) + { + TCHAR buff[MAX_PATH]; + const DWORD ret = GetEnvironmentVariable(L"USERPROFILE", buff, MAX_PATH); + path = buff; + } + if (is_single_mode) { - swprintf_s(args, L"/single /Icon \"%s\" /Title Cmder", icoPath); + swprintf_s(args, L"/single /Icon \"%s\" /Title Cmder /dir \"%s\"", icoPath, path.c_str()); } else { - swprintf_s(args, L"/Icon \"%s\" /Title Cmder", icoPath); + swprintf_s(args, L"/Icon \"%s\" /Title Cmder /dir \"%s\"", icoPath, path.c_str()); } if (!taskName.empty()) { swprintf_s(args, L"%s /run {%s}", args, taskName.c_str()); } - 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); - } - } + SetEnvironmentVariable(L"CMDER_ROOT", exeDir); // keep for backwards compat? // Ensure EnvironmentVariables are propagated. - STARTUPINFO si = { 0 }; si.cb = sizeof(STARTUPINFO); #if USE_TASKBAR_API @@ -207,8 +205,7 @@ void StartCmder(std::wstring path, bool is_single_mode, std::wstring taskName = } 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 - + lr = SendMessageTimeout(HWND_BROADCAST, WM_SETTINGCHANGE, 0, (LPARAM)L"Environment", SMTO_ABORTIFHUNG | SMTO_NOTIMEOUTIFNOTHUNG, 5000, NULL); // For Windows >= 8 } bool IsUserOnly(std::wstring opt) @@ -238,8 +235,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 { @@ -271,9 +267,7 @@ void RegisterShellMenu(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)); 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)); @@ -281,9 +275,7 @@ void RegisterShellMenu(std::wstring opt, wchar_t* keyBaseName) 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)); + 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)); @@ -296,9 +288,7 @@ 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 diff --git a/vendor/init.bat b/vendor/init.bat index 6d43398..74334b4 100644 --- a/vendor/init.bat +++ b/vendor/init.bat @@ -131,8 +131,8 @@ if not exist "%user-aliases%" ( type "%user-aliases%" | findstr /i ";= Add aliases below here" >nul if "!errorlevel!" == "1" ( echo Creating initial 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%" + copy "%CMDER_ROOT%\%user-aliases%" "%user-aliases%.old_format" + copy "%CMDER_ROOT%\vendor\user-aliases.cmd.example" "%user-aliases%" ) ) @@ -161,12 +161,6 @@ if exist "%CMDER_ROOT%\vendor\git-for-windows\post-install.bat" ( :: 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 ( - pushd "%CMDER_START%" -) - 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" diff --git a/vendor/profile.ps1 b/vendor/profile.ps1 index 30af6a1..e6e487f 100644 --- a/vendor/profile.ps1 +++ b/vendor/profile.ps1 @@ -80,13 +80,6 @@ function checkGit($Path) { } } -# 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 } From 724930d69d50462529e7184fcfc895e805c74c7e Mon Sep 17 00:00:00 2001 From: Benjamin Staneck Date: Mon, 8 Jan 2018 19:22:42 +0100 Subject: [PATCH 112/306] cleanup on isle 5 --- launcher/src/CmderLauncher.cpp | 7 ++++--- launcher/src/Resource.rc | Bin 3292 -> 3226 bytes launcher/src/resource.h | Bin 904 -> 902 bytes 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/launcher/src/CmderLauncher.cpp b/launcher/src/CmderLauncher.cpp index b523f6f..5ff6a5b 100644 --- a/launcher/src/CmderLauncher.cpp +++ b/launcher/src/CmderLauncher.cpp @@ -155,7 +155,7 @@ void StartCmder(std::wstring path, bool is_single_mode, std::wstring taskName = { 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! Restart Cmder as administrator." : L"Failed to copy ConEmu.xml file to new location!", MB_TITLE, MB_ICONSTOP); exit(1); } @@ -189,7 +189,8 @@ void StartCmder(std::wstring path, bool is_single_mode, std::wstring taskName = swprintf_s(args, L"%s /run {%s}", args, taskName.c_str()); } - SetEnvironmentVariable(L"CMDER_ROOT", exeDir); // keep for backwards compat? + SetEnvironmentVariable(L"CMDER_ROOT", exeDir); + // Ensure EnvironmentVariables are propagated. STARTUPINFO si = { 0 }; @@ -200,7 +201,7 @@ void StartCmder(std::wstring path, bool is_single_mode, std::wstring taskName = #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; } diff --git a/launcher/src/Resource.rc b/launcher/src/Resource.rc index 42eec5860378de070e02e9b5f221d85728762c8d..9d4ec33b65e2c0b97ed422a28fc9fc9ffad731e0 100644 GIT binary patch delta 127 zcmca3IZJZGBUV9P1}+9C23H1m22Tb*1|VkY02g_tW=2?@~fM%@W(E$Me)fprJ delta 130 zcmbOwc}H@?BUVO*$q!kDSrr(7aAKq6WG*%%h!7`O2q>&Hu~2k!3Y!W$RABO5HtETW z*rXuJ>7a1E&B0 From 3bf07c088de26620641fec2eac6d814839f28527 Mon Sep 17 00:00:00 2001 From: Varriount Date: Tue, 9 Jan 2018 08:52:22 -0500 Subject: [PATCH 113/306] Fix alias.bat handling "user-aliases.cmd" with spaces (#1531) * Fix alias.bat handling "user-aliases.cmd" with spaces This fixes the alias command when user-aliases.cmd is located in a path with spaces (like when Cmder is installed into the program-files directory). I've also made the alphabetical case of the ALIASES variable consistent. * address review comments --- bin/alias.bat | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/bin/alias.bat b/bin/alias.bat index 69497f6..03696f6 100644 --- a/bin/alias.bat +++ b/bin/alias.bat @@ -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,16 +50,16 @@ 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%" ) ) @@ -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 From b88a01822f1325d018d381375c140db1717239f6 Mon Sep 17 00:00:00 2001 From: Benjamin Staneck Date: Mon, 8 Jan 2018 15:39:37 +0100 Subject: [PATCH 114/306] re-order git/hg/svn functions --- vendor/clink.lua | 170 +++++++++++++++++++++++++---------------------- 1 file changed, 91 insertions(+), 79 deletions(-) diff --git a/vendor/clink.lua b/vendor/clink.lua index 10da240..b5af17c 100644 --- a/vendor/clink.lua +++ b/vendor/clink.lua @@ -101,25 +101,6 @@ local function get_dir_contains(path, dirname) end end -local function get_hg_dir(path) - return get_dir_contains(path, '.hg') -end - -local function get_svn_dir(path) - return get_dir_contains(path, '.svn') -end - -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 - -- adapted from from clink-completions' git.lua local function get_git_dir(path) @@ -130,6 +111,7 @@ local function get_git_dir(path) if i then prefix = path:sub(1, i-1) end + return prefix end @@ -161,67 +143,12 @@ 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} ---- -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 +local function get_hg_dir(path) + return get_dir_contains(path, '.hg') end ---- - -- Get the status of working dir - -- @return {bool} ---- -local function get_hg_status() - for line in io.popen("hg status -0"):lines() do - return false - end - return true -end - -local function get_svn_status() - for line in io.popen("svn status -q"):lines() do - return false - end - return true -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 +local function get_svn_dir(path) + return get_dir_contains(path, '.svn') end --- @@ -242,9 +169,40 @@ local 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 +--- + -- Find out current branch + -- @return {false|mercurial branch name} +--- +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} @@ -259,6 +217,30 @@ local function get_git_status() return true end +--- + -- Get the status of working dir + -- @return {bool} +--- +local function get_hg_status() + for line in io.popen("hg status -0"):lines() do + return false + end + + return true +end + +--- + -- Get the status of working dir + -- @return {bool} +--- +local function get_svn_status() + for line in io.popen("svn status -q"):lines() do + return false + end + + return true +end + local function git_prompt_filter() -- Colors for git status @@ -290,6 +272,36 @@ local 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 = { @@ -317,6 +329,7 @@ local function svn_prompt_filter() 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) @@ -333,4 +346,3 @@ for _,lua_module in ipairs(clink.find_files(completions_dir..'*.lua')) do dofile(filename) end end - From 5e703796c948601e7d2196b3abebbf63540eb68d Mon Sep 17 00:00:00 2001 From: Benjamin Staneck Date: Mon, 8 Jan 2018 15:40:34 +0100 Subject: [PATCH 115/306] git should no longer require extra file closing after the recent changes --- vendor/clink.lua | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/vendor/clink.lua b/vendor/clink.lua index b5af17c..15e3a9b 100644 --- a/vendor/clink.lua +++ b/vendor/clink.lua @@ -210,10 +210,9 @@ end 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 From a71c6a50ad2bcb716d05c751ce5878445a4c3b3e Mon Sep 17 00:00:00 2001 From: Benjamin Staneck Date: Tue, 16 Jan 2018 21:58:28 +0100 Subject: [PATCH 116/306] always close open file handles Fixes #1619 --- vendor/clink.lua | 60 +++++++++++++++++++++++++++--------------------- 1 file changed, 34 insertions(+), 26 deletions(-) diff --git a/vendor/clink.lua b/vendor/clink.lua index 15e3a9b..3e39eb4 100644 --- a/vendor/clink.lua +++ b/vendor/clink.lua @@ -14,9 +14,9 @@ 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. --- local function set_prompt_filter() -- get_cwd() is differently encoded than the clink.prompt.value, so everything other than @@ -51,12 +51,12 @@ local function set_prompt_filter() 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) @@ -152,8 +152,8 @@ local function get_svn_dir(path) end --- - -- Find out current branch - -- @return {nil|git branch name} +-- Find out current branch +-- @return {nil|git branch name} --- local function get_git_branch(git_dir) git_dir = git_dir or get_git_dir() @@ -174,8 +174,8 @@ local function get_git_branch(git_dir) end --- - -- Find out current branch - -- @return {false|mercurial branch name} +-- Find out current branch +-- @return {false|mercurial branch name} --- local function get_hg_branch() for line in io.popen("hg branch 2>nul"):lines() do @@ -189,8 +189,8 @@ local function get_hg_branch() end --- - -- Find out current branch - -- @return {false|svn branch name} +-- 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 @@ -204,38 +204,46 @@ local function get_svn_branch(svn_dir) end --- - -- Get the status of working dir - -- @return {bool} +-- 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 --- - -- Get the status of working dir - -- @return {bool} +-- Get the status of working dir +-- @return {bool} --- local function get_hg_status() - for line in io.popen("hg status -0"):lines() do - return false + 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} +-- Get the status of working dir +-- @return {bool} --- -local function get_svn_status() - for line in io.popen("svn status -q"):lines() do - return false +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 From fff6e4506c2b342a2fc83584e08b42d4d97a3ee1 Mon Sep 17 00:00:00 2001 From: Benjamin Staneck Date: Sun, 11 Feb 2018 18:07:40 +0100 Subject: [PATCH 117/306] :arrow_up: Update Git to 2.16.1(4) Release notes: https://github.com/git-for-windows/git/releases/tag/v2.16.1.windows.4 --- vendor/sources.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/vendor/sources.json b/vendor/sources.json index ef933f4..395e995 100644 --- a/vendor/sources.json +++ b/vendor/sources.json @@ -1,8 +1,8 @@ [ { "name": "git-for-windows", - "version": "v2.15.1.windows.2", - "url": "https://github.com/git-for-windows/git/releases/download/v2.15.1.windows.2/PortableGit-2.15.1.2-64-bit.7z.exe" + "version": "v2.16.1.windows.4", + "url": "https://github.com/git-for-windows/git/releases/download/v2.16.1.windows.4/PortableGit-2.16.1.4-64-bit.7z.exe" }, { "name": "clink", From a49c1b3f3daa8c4a35529a902840cc38648d7d9e Mon Sep 17 00:00:00 2001 From: Benjamin Staneck Date: Sun, 11 Feb 2018 18:09:47 +0100 Subject: [PATCH 118/306] :arrow_up: ConEmu to 180206 release notes: https://conemu.github.io/blog/2018/02/06/Build-180206.html --- vendor/sources.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/vendor/sources.json b/vendor/sources.json index 395e995..100353a 100644 --- a/vendor/sources.json +++ b/vendor/sources.json @@ -11,8 +11,8 @@ }, { "name": "conemu-maximus5", - "version": "171226", - "url": "https://github.com/Maximus5/ConEmu/releases/download/v17.12.26/ConEmuPack.171226.7z" + "version": "180206", + "url": "https://github.com/Maximus5/ConEmu/releases/download/v18.02.06/ConEmuPack.180206.7z" }, { "name": "clink-completions", From 78b9c97fa9f424dd112e77c4f881f1f1303f6a7d Mon Sep 17 00:00:00 2001 From: precla Date: Mon, 19 Feb 2018 13:48:35 +0100 Subject: [PATCH 119/306] Updated Changelog.md --- CHANGELOG.md | 46 +++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 45 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4525df9..574036c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,50 @@ # Change Log -## [1.3.2](https://github.com/cmderdev/cmder/tree/1.3.2) (2016-12-01) +## [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) From cf311fb1c2392c8785e913e326e618e833b5d054 Mon Sep 17 00:00:00 2001 From: Benjamin Staneck Date: Tue, 20 Feb 2018 20:20:23 +0100 Subject: [PATCH 120/306] :arrow_up: Update Git to 2.16.2 Release notes: https://github.com/git-for-windows/git/releases/tag/v2.16.2.windows.1 --- vendor/sources.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/vendor/sources.json b/vendor/sources.json index 100353a..c496a01 100644 --- a/vendor/sources.json +++ b/vendor/sources.json @@ -1,8 +1,8 @@ [ { "name": "git-for-windows", - "version": "v2.16.1.windows.4", - "url": "https://github.com/git-for-windows/git/releases/download/v2.16.1.windows.4/PortableGit-2.16.1.4-64-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", From 8237b1010cbedefb57850144d55ea36c5fbee0c3 Mon Sep 17 00:00:00 2001 From: David Refoua Date: Thu, 22 Feb 2018 22:50:08 +0330 Subject: [PATCH 121/306] Detect and compare installed Git version against vendored Git (#1658) * Replaced the git version comparison mechanism with actual version comparing * Add notes regarding the git comparison method Added a simple mechanism to call and compare the user installed git version against the vendored git version, rather than checking if the `git.exe` executable is located in a `/bin` directory. This fixes false warnings by actually testing if the user installed git is older, or more recent. Added a small note regarding how the `init.bat` works, and where to put custom `git.exe` binaries as well as where to find the Minified Cmder. --- README.md | 8 ++- vendor/init.bat | 132 +++++++++++++++++++++++++++++++++++++++++++++--- 2 files changed, 131 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index afa8a70..3b7b709 100644 --- a/README.md +++ b/README.md @@ -147,10 +147,16 @@ Note: These are loaded in this order by '$ENV:CMDER_ROOT\\vendor\\user-profile.p ### 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 'Win +Alt + T'. diff --git a/vendor/init.bat b/vendor/init.bat index 74334b4..8952cf5 100644 --- a/vendor/init.bat +++ b/vendor/init.bat @@ -47,26 +47,54 @@ 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) ) +:: get the version information for vendored git binary +setlocal enabledelayedexpansion +call :read_version VENDORED "%CMDER_ROOT%\vendor\git-for-windows\cmd" + :: check if git is in path... setlocal enabledelayedexpansion 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 + setlocal enabledelayedexpansion + call :read_version USER !test_dir! + + if !errorlevel! geq 0 ( + + :: compare the user git version against the vendored version + setlocal enabledelayedexpansion + 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 ( + set "GIT_INSTALL_ROOT=!test_dir!" + set test_dir= + goto :FOUND_GIT + ) else ( + echo 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 ( + echo No git at "!git_executable!" found. + set test_dir= + ) + ) + ) :: our last hope: our own git... @@ -191,3 +219,91 @@ exit /b :verbose-output if %verbose-output% gtr 0 echo %* 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" + + :: check if the executable actually exists + if not exist "%git_executable%" ( + :: return a negative error code if the executable doesn't exist + exit /b -255 + ) + + :: get the git version in the provided directory + for /F "delims=" %%F in ('%git_executable% --version 2^>nul') do @( + set "GIT_VERSION_%~1=%%F" + ) + + :: parse the returned string + call :validate_version "%~1" !GIT_VERSION_%~1! + +goto :eof + +:parse_version + + :: process a `git version 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" + ) + +goto :eof + +:validate_version + + :: check if we have a valid version string + if /I "%~2 %~3"=="GIT VERSION" ( + + :: now parse the version information into the corresponding variables + call :parse_version %~1 %~4 + + :: ... and maybe display it, for debugging purposes. + call :verbose-output Found Git Version for %~1: !%~1_MAJOR!.!%~1_MINOR!.!%~1_PATCH!.!%~1_BUILD! + + ) else ( + :: invalid format returned, use the vendored git instead + echo Invalid git version at "%git_executable%" detected! + call :verbose-output Returned version: %~2 %~3 %~4 + + rem or directly call the VENDORED_GIT + set test_dir= + exit /b -127 + ) + +goto :eof + +: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 :verbose-output Comparing: + :: call :verbose-output %~1: !%~1_MAJOR!.!%~1_MINOR!.!%~1_PATCH!.!%~1_BUILD! + :: call :verbose-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 + +goto :eof From ff2e09849ee3c5c59614f32f865913f033a2e39f Mon Sep 17 00:00:00 2001 From: David Refoua Date: Thu, 8 Mar 2018 14:31:48 +0330 Subject: [PATCH 122/306] =?UTF-8?q?simplified=20=CE=BB=20prompt=20in=20lua?= =?UTF-8?q?=20(#1693)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * replace lambda with $ * simplified $ prompt The $ character for the prompt is defined only once instead of twice * fixed λ prompt --- vendor/clink.lua | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/vendor/clink.lua b/vendor/clink.lua index 3e39eb4..12d0616 100644 --- a/vendor/clink.lua +++ b/vendor/clink.lua @@ -40,12 +40,10 @@ local function set_prompt_filter() -- 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}{svn} \n\x1b[1;39;40m{lamb} \x1b[0m" - local lambda + 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 From 997e799138497dc30cff2d6b707f9096c81462d8 Mon Sep 17 00:00:00 2001 From: Dax T Games Date: Tue, 13 Mar 2018 10:38:27 -0500 Subject: [PATCH 123/306] New cmder.exe args and shared install capability (#1696) @MartiUK: Squashing to avoid adding multiple "fixed" commits * add args to init.bat * adding args to cmder launcher * reworked command line parsing and added a /C [path] arg for individual user config location * removed unnecessary includes * make shell init scripts work with CMDER_USER_CONFIG * update tasks and readme.md * fix git version check * readme updates * add register/unregister back in * fixed git version again * removed error if user defines user-aliases store file was not present an init.bat launch * added enhance_path method to only update path if required * added enhance_path method to only update path if required * fixed a path prepend issue in enhance path * init.bat with args is executed outside cmder/conemu sets cmder_root properly. Thanks @DRSDavidSoft * fixed enhance path append issue * implements recursive `/bin` path enhancing. https://github.com/cmderdev/cmder/issues/1624 * added max depth * changes command line arg to max_depth * set max_depth default * readme.md updates * add back cmder /c [path] arg so it can be used with admin sessions since the env is not shared. * readme.md updates * fix /c setting of cmder_user_config * changelog and readme * remove bad arg * fixed command line parsing and updated command line help on error * Fixed ConEmu.xml file handling so it works again * Added default user config root location if '/c' is specified and next arg is not another arg --- .gitattributes | 5 + CHANGELOG.md | 57 ++++- README.md | 107 ++++++--- config/ConEmu.xml | 215 ++++++++++------- launcher/CmderLauncher.vcxproj | 3 + launcher/src/CmderLauncher.cpp | 368 ++++++++++++++++++++--------- vendor/cmder.sh | 42 +++- vendor/cmder_exinit | 54 +++-- vendor/init.bat | 415 ++++++++++++++++++++++++++------- vendor/profile.ps1 | 32 ++- 10 files changed, 950 insertions(+), 348 deletions(-) diff --git a/.gitattributes b/.gitattributes index dfe0770..b483dfe 100644 --- a/.gitattributes +++ b/.gitattributes @@ -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 diff --git a/CHANGELOG.md b/CHANGELOG.md index 574036c..c59b895 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,60 @@ # Change Log +## [1.3.6-pre1](https://github.com/cmderdev/cmder) (2018-03-01) + +**Fixed bugs:** + +* Fixed Git version check recently added to master. + +**Updates:** + +* 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 + +**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 \` 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. @@ -746,4 +801,4 @@ We now use a forked version of clink since it's original author is missing and w -\* *This Change Log was automatically generated by [github_changelog_generator](https://github.com/skywinder/Github-Changelog-Generator)* \ No newline at end of file +\* *This Change Log was automatically generated by [github_changelog_generator](https://github.com/skywinder/Github-Changelog-Generator)* diff --git a/README.md b/README.md index 3b7b709..7b8ec06 100644 --- a/README.md +++ b/README.md @@ -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. (nb: This path should not be `C:\Program Files` or anywhere else that would require Administrator access for modifying configuration files) +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; @@ -57,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 '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| +| 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. @@ -85,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 Win + Alt + T +1. Click either: + * `1. {cmd::Cmder as Admin}` + * `2. {cmd::Cmder}` +1. Add command line argumentswhere specified below: + + *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 diff --git a/config/ConEmu.xml b/config/ConEmu.xml index c238cc0..f9b17cf 100644 --- a/config/ConEmu.xml +++ b/config/ConEmu.xml @@ -1,7 +1,7 @@ - + @@ -101,12 +101,12 @@ - - - - + + + + - + @@ -123,29 +123,29 @@ - + - - - + + + - + - - + + - - - + + + @@ -167,7 +167,7 @@ - + @@ -198,7 +198,7 @@ - + @@ -212,8 +212,8 @@ - - + + @@ -254,34 +254,34 @@ - + - - + + - + - + - + - - - - - + + + + + @@ -297,32 +297,32 @@ - + - + - - - - - - - + + + + + + + - - - - - - - - + + + + + + + + - + - - + + @@ -483,89 +483,89 @@ - - - + + + - - - + + + - + - - - + + + - + - - + + - + - - + + - + - - + + - + - - + + - + - - + + - + - - + + - - + + - - + + @@ -606,11 +606,11 @@ - + - + @@ -664,9 +664,9 @@ - + - + @@ -847,16 +847,51 @@ + + + + + + + + + + + + - + - + - + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/launcher/CmderLauncher.vcxproj b/launcher/CmderLauncher.vcxproj index 7193764..1a11d53 100644 --- a/launcher/CmderLauncher.vcxproj +++ b/launcher/CmderLauncher.vcxproj @@ -60,6 +60,9 @@ Windows true + + _USING_V110_SDK71_;%(PreprocessorDefinitions) + diff --git a/launcher/src/CmderLauncher.cpp b/launcher/src/CmderLauncher.cpp index 5ff6a5b..861f5f2 100644 --- a/launcher/src/CmderLauncher.cpp +++ b/launcher/src/CmderLauncher.cpp @@ -3,6 +3,10 @@ #include #include "resource.h" #include +#include + +#include +#include #pragma comment(lib, "Shlwapi.lib") @@ -53,33 +57,6 @@ typedef struct _option typedef std::pair 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); @@ -93,7 +70,7 @@ bool FileExists(const wchar_t * filePath) return false; } -void StartCmder(std::wstring path, bool is_single_mode, std::wstring taskName = L"") +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 }; @@ -104,10 +81,20 @@ void StartCmder(std::wstring path, bool is_single_mode, std::wstring taskName = wchar_t backupCfgPath[MAX_PATH] = { 0 }; wchar_t cpuCfgPath[MAX_PATH] = { 0 }; wchar_t userCfgPath[MAX_PATH] = { 0 }; - wchar_t oldCfgPath[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 @@ -118,28 +105,103 @@ void StartCmder(std::wstring path, bool is_single_mode, std::wstring taskName = PathCombine(icoPath, exeDir, L"icons\\cmder.ico"); - // Check for machine-specific then user config source file. - PathCombine(cpuCfgPath, exeDir, L"config\\ConEmu-%COMPUTERNAME%.xml"); - ExpandEnvironmentStrings(cpuCfgPath, cpuCfgPath, sizeof(cpuCfgPath) / sizeof(cpuCfgPath[0])); - - PathCombine(userCfgPath, exeDir, L"config\\user-ConEmu.xml"); - - if (PathFileExists(cpuCfgPath)) { - wcsncpy_s(oldCfgPath, cpuCfgPath, sizeof(cpuCfgPath)); - wcsncpy_s(backupCfgPath, cpuCfgPath, sizeof(cpuCfgPath)); + PathCombine(configDirPath, exeDir, L"config"); + if (wcscmp(userConfigDirPath, L"") == 0) + { + PathCombine(userConfigDirPath, exeDir, L"config"); } - else if (PathFileExists(userCfgPath)) { - wcsncpy_s(oldCfgPath, userCfgPath, sizeof(userCfgPath)); - wcsncpy_s(backupCfgPath, userCfgPath, sizeof(userCfgPath)); - } - else { - PathCombine(oldCfgPath, exeDir, L"config\\ConEmu.xml"); - wcsncpy_s(backupCfgPath, userCfgPath, sizeof(userCfgPath)); + 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); } // 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; GetNativeSystemInfo(&sysInfo); if (sysInfo.wProcessorArchitecture == PROCESSOR_ARCHITECTURE_AMD64) { @@ -149,51 +211,44 @@ void StartCmder(std::wstring path, bool is_single_mode, std::wstring taskName = PathCombine(conEmuPath, exeDir, L"vendor\\conemu-maximus5\\ConEmu.exe"); } - if (FileExists(oldCfgPath) && !FileExists(cfgPath)) - { - 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); - } - } - else if (!CopyFile(cfgPath, backupCfgPath, FALSE)) - { - MessageBox(NULL, - (GetLastError() == ERROR_ACCESS_DENIED) - ? L"Failed to backup ConEmu.xml file to ./config folder!" - : L"Failed to backup ConEmu.xml file to ./config folder!", MB_TITLE, MB_ICONSTOP); - exit(1); - } - - if (streqi(path.c_str(), L"")) + if (streqi(cmderStart.c_str(), L"")) { TCHAR buff[MAX_PATH]; const DWORD ret = GetEnvironmentVariable(L"USERPROFILE", buff, MAX_PATH); - path = buff; + cmderStart = buff; } if (is_single_mode) { - swprintf_s(args, L"/single /Icon \"%s\" /Title Cmder /dir \"%s\"", icoPath, path.c_str()); + 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 /dir \"%s\"", icoPath, path.c_str()); + 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()); + } } - if (!taskName.empty()) { - swprintf_s(args, L"%s /run {%s}", args, taskName.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. STARTUPINFO si = { 0 }; + si.cb = sizeof(STARTUPINFO); #if USE_TASKBAR_API si.lpTitle = appId; @@ -255,34 +310,33 @@ 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) @@ -299,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, @@ -308,35 +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"/TASK")) + else if (cmderOptions.error == true) { - StartCmder(L"", false, opt.second); - } - else if (streqi(opt.first.c_str(), L"/REGISTER")) - { - 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 \n /SINGLE \n /TASK \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; } diff --git a/vendor/cmder.sh b/vendor/cmder.sh index 5083d21..fc4d009 100644 --- a/vendor/cmder.sh +++ b/vendor/cmder.sh @@ -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 @@ -42,24 +56,28 @@ if [ ! -d "${CMDER_ROOT}/config/profile.d" ] ; then 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 *.sh 2>/dev/null) + runProfiled "${CMDER_ROOT}/config/profile.d" +fi - if [ ! "x${profile_d_scripts}" = "x" ] ; then - for x in ${profile_d_scripts} ; do - # echo Sourcing "${CMDER_ROOT}/config/profile.d/${x}"... - . "${CMDER_ROOT}/config/profile.d/${x}" - done - fi - popd >/dev/null +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: diff --git a/vendor/cmder_exinit b/vendor/cmder_exinit index 99b5ac4..f20bef1 100644 --- a/vendor/cmder_exinit +++ b/vendor/cmder_exinit @@ -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 @@ -55,28 +74,29 @@ if [ ! "$CMDER_ROOT" = "" ] ; then 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 *.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 "${CMDER_ROOT}/config/profile.d/${x}"... - . "${CMDER_ROOT}/config/profile.d/${x}" - done - fi - popd >/dev/null + runProfiled "${CMDER_ROOT}/config/profile.d" fi + 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: diff --git a/vendor/init.bat b/vendor/init.bat index 8952cf5..f6d11c8 100644 --- a/vendor/init.bat +++ b/vendor/init.bat @@ -6,36 +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 ( if defined ConEmuDir ( - for /f "delims=" %%i in ("%ConEmuDir%\..\..") do set "CMDER_ROOT=%%~fi" + for /f "delims=" %%i in ("%ConEmuDir%\..\..") do ( + set "CMDER_ROOT=%%~fi" + ) ) else ( - for /f "delims=" %%i in ("%~dp0\..") do set "CMDER_ROOT=%%~fi" + 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 @@ -57,39 +133,37 @@ setlocal enabledelayedexpansion call :read_version VENDORED "%CMDER_ROOT%\vendor\git-for-windows\cmd" :: check if git is in path... -setlocal enabledelayedexpansion -for /F "delims=" %%F in ('where git.exe 2^>nul') do @( - +for /F "delims=" %%F in ('where git.exe 2^>nul') do ( :: get the absolute path to the user provided git binary pushd %%~dpF set "test_dir=!CD!" popd :: get the version information for the user provided git binary - setlocal enabledelayedexpansion - call :read_version USER !test_dir! + call :read_version USER "!test_dir!" if !errorlevel! geq 0 ( - :: compare the user git version against the vendored version - setlocal enabledelayedexpansion 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 !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 ( - echo Found old !GIT_VERSION_USER! in "!test_dir!", but not using... + call :verbose-output Found old !GIT_VERSION_USER! in "!test_dir!", but not using... set test_dir= ) - ) else ( :: if the user provided git executable is not found if !errorlevel! equ -255 ( - echo No git at "!git_executable!" found. + call :verbose-output No git at "!git_executable!" found. set test_dir= ) @@ -101,8 +175,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" - 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 ) @@ -111,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. @@ -159,8 +242,13 @@ if not exist "%user-aliases%" ( type "%user-aliases%" | findstr /i ";= Add aliases below here" >nul if "!errorlevel!" == "1" ( echo Creating initial 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%" + 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%" + ) ) ) @@ -173,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.... - pushd "%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 + 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%" +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 :: 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. - ) > "%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 @@ -216,80 +318,95 @@ 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%" ( - :: return a negative error code if the executable doesn't exist + call :verbose-output "%git_executable%" does not exist! exit /b -255 ) :: get the git version in the provided directory - for /F "delims=" %%F in ('%git_executable% --version 2^>nul') do @( - set "GIT_VERSION_%~1=%%F" + 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! - -goto :eof + exit /b :parse_version - - :: process a `git version x.x.x.xxxx.x` formatted string + :: 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" ) - -goto :eof + exit /b :validate_version + :: now parse the version information into the corresponding variables + call :parse_version %~1 %~2 - :: check if we have a valid version string - if /I "%~2 %~3"=="GIT VERSION" ( - - :: now parse the version information into the corresponding variables - call :parse_version %~1 %~4 - - :: ... and maybe display it, for debugging purposes. - call :verbose-output Found Git Version for %~1: !%~1_MAJOR!.!%~1_MINOR!.!%~1_PATCH!.!%~1_BUILD! - - ) else ( - :: invalid format returned, use the vendored git instead - echo Invalid git version at "%git_executable%" detected! - call :verbose-output Returned version: %~2 %~3 %~4 - - rem or directly call the VENDORED_GIT - set test_dir= - exit /b -127 - ) - -goto :eof + :: ... 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 :verbose-output Comparing: - :: call :verbose-output %~1: !%~1_MAJOR!.!%~1_MINOR!.!%~1_PATCH!.!%~1_BUILD! - :: call :verbose-output %~2: !%~2_MAJOR!.!%~2_MINOR!.!%~2_PATCH!.!%~2_BUILD! + :: 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) @@ -306,4 +423,124 @@ goto :eof :: looks like we have the same versions. exit /b 0 -goto :eof +: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] Fully qualified directory path. Ex: "c:\bin" +::: +:::dptions: +::: +::: [max_depth] Max recuse depth. Default: 1 +::: +::: append Append instead rather than pre-pend "[dir_path]" +::: +:::output: +::: +::: path 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 diff --git a/vendor/profile.ps1 b/vendor/profile.ps1 index e6e487f..f8360a2 100644 --- a/vendor/profile.ps1 +++ b/vendor/profile.ps1 @@ -9,6 +9,10 @@ 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 ) { @@ -25,6 +29,10 @@ $ENV:CMDER_ROOT = (($ENV:CMDER_ROOT).trimend("\")) # -> 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/" @@ -130,10 +138,32 @@ foreach ($x in Get-ChildItem *.ps1) { } 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" + +} + +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 From 91651fc98b7b419abeac13d0d10a69f6f2cd1b40 Mon Sep 17 00:00:00 2001 From: Benjamin Staneck Date: Tue, 13 Mar 2018 23:40:07 +0100 Subject: [PATCH 124/306] Drop Windows XP support --- launcher/src/CmderLauncher.cpp | 69 +++++++++++++++------------------- 1 file changed, 30 insertions(+), 39 deletions(-) diff --git a/launcher/src/CmderLauncher.cpp b/launcher/src/CmderLauncher.cpp index 861f5f2..b482f7d 100644 --- a/launcher/src/CmderLauncher.cpp +++ b/launcher/src/CmderLauncher.cpp @@ -5,8 +5,8 @@ #include #include -#include -#include +#include +#include #pragma comment(lib, "Shlwapi.lib") @@ -16,8 +16,6 @@ #define USE_TASKBAR_API (_WIN32_WINNT >= _WIN32_WINNT_WIN7) -#define XP (_WIN32_WINNT < _WIN32_WINNT_VISTA) - #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" @@ -140,7 +138,7 @@ void StartCmder(std::wstring path = L"", bool is_single_mode = false, std::wstr { 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! Restart Cmder as Administrator." : L"Failed to copy ConEmu.xml file to ConEmu-%COMPUTERNAME%.xml backup location!", MB_TITLE, MB_ICONSTOP); exit(1); } @@ -151,12 +149,11 @@ void StartCmder(std::wstring path = L"", bool is_single_mode = false, std::wstr { 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! 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)) { @@ -164,7 +161,7 @@ void StartCmder(std::wstring path = L"", bool is_single_mode = false, std::wstr { 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! Restart Cmder as Administrator." : L"Failed to copy ConEmu.xml file to backup location!", MB_TITLE, MB_ICONSTOP); exit(1); } @@ -175,7 +172,7 @@ void StartCmder(std::wstring path = L"", bool is_single_mode = false, std::wstr { 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! Restart Cmder as Administrator." : L"Failed to copy ConEmu.xml file to vendored ConEmu.xml location!", MB_TITLE, MB_ICONSTOP); exit(1); } @@ -186,7 +183,7 @@ void StartCmder(std::wstring path = L"", bool is_single_mode = false, std::wstr { 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! Restart Cmder as Administrator." : L"Failed to copy ConEmu.xml file to user-conemu.xml backup location!", MB_TITLE, MB_ICONSTOP); exit(1); } @@ -196,7 +193,7 @@ void StartCmder(std::wstring path = L"", bool is_single_mode = false, std::wstr { 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! Restart Cmder as Administrator." : L"Failed to copy Cmder default ConEmu.xml file to vendored ConEmu.xml location!", MB_TITLE, MB_ICONSTOP); exit(1); } @@ -237,7 +234,6 @@ void StartCmder(std::wstring path = L"", bool is_single_mode = false, std::wstr } } - SetEnvironmentVariable(L"CMDER_ROOT", exeDir); if (wcscmp(userConfigDirPath, configDirPath) != 0) { @@ -310,33 +306,33 @@ 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 -HKEY root = GetRootKey(opt); + // Now set the registry keys + 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) @@ -344,11 +340,7 @@ 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)); -#if XP - FAIL_ON_ERROR(SHDeleteKey(cmderKey, NULL)); -#else FAIL_ON_ERROR(RegDeleteTree(cmderKey, NULL)); -#endif RegCloseKey(cmderKey); RegCloseKey(root); } @@ -363,7 +355,6 @@ struct cmderOptions bool registerApp = false; bool unRegisterApp = false; bool error = false; - }; cmderOptions GetOption() @@ -418,7 +409,7 @@ cmderOptions GetOption() 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]; @@ -464,11 +455,11 @@ int APIENTRY _tWinMain(_In_ HINSTANCE hInstance, cmderOptions cmderOptions = GetOption(); - if (cmderOptions.registerApp == true ) { + if (cmderOptions.registerApp == true) { RegisterShellMenu(cmderOptions.cmderRegScope, SHELL_MENU_REGISTRY_PATH_BACKGROUND); RegisterShellMenu(cmderOptions.cmderRegScope, SHELL_MENU_REGISTRY_PATH_LISTITEM); } - else if (cmderOptions.unRegisterApp == true ) + else if (cmderOptions.unRegisterApp == true) { UnregisterShellMenu(cmderOptions.cmderRegScope, SHELL_MENU_REGISTRY_PATH_BACKGROUND); UnregisterShellMenu(cmderOptions.cmderRegScope, SHELL_MENU_REGISTRY_PATH_LISTITEM); @@ -481,6 +472,6 @@ int APIENTRY _tWinMain(_In_ HINSTANCE hInstance, { StartCmder(cmderOptions.cmderStart, cmderOptions.cmderSingle, cmderOptions.cmderTask, cmderOptions.cmderCfgRoot); } - + return 0; } From 60880362a99e1b1ccf8d98d94b62c5af0fc4ae3e Mon Sep 17 00:00:00 2001 From: Benjamin Staneck Date: Tue, 13 Mar 2018 23:53:33 +0100 Subject: [PATCH 125/306] No longer use the special _xp platform tools since we no longer support XP --- launcher/CmderLauncher.vcxproj | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/launcher/CmderLauncher.vcxproj b/launcher/CmderLauncher.vcxproj index 1a11d53..fc5d40e 100644 --- a/launcher/CmderLauncher.vcxproj +++ b/launcher/CmderLauncher.vcxproj @@ -14,6 +14,7 @@ {4A8485A5-B7DD-4C44-B7F6-3E2765DD0CD3} Win32Proj CmderLauncher + 10.0.16299.0 @@ -25,9 +26,9 @@ Application false - v141_xp true Unicode + v141 From b37001b591a42371a240416d0688e383cf7521e4 Mon Sep 17 00:00:00 2001 From: Dax T Games Date: Tue, 13 Mar 2018 18:18:46 -0500 Subject: [PATCH 126/306] Update CHANGELOG.md Update Changelog Tag url after merge --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c59b895..5a6bfb5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,6 @@ # Change Log -## [1.3.6-pre1](https://github.com/cmderdev/cmder) (2018-03-01) +## [1.3.6-pre1](https://github.com/cmderdev/cmder/tree/v1.3.6-pre1) (2018-03-01) **Fixed bugs:** From 17247f2065f48ad99385abb519b196981e054825 Mon Sep 17 00:00:00 2001 From: Benjamin Staneck Date: Mon, 19 Mar 2018 20:57:10 +0100 Subject: [PATCH 127/306] :arrow_up: ConEmu to 180318 release notes: https://conemu.github.io/en/Whats_New.html --- vendor/sources.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/vendor/sources.json b/vendor/sources.json index c496a01..34fa08c 100644 --- a/vendor/sources.json +++ b/vendor/sources.json @@ -11,8 +11,8 @@ }, { "name": "conemu-maximus5", - "version": "180206", - "url": "https://github.com/Maximus5/ConEmu/releases/download/v18.02.06/ConEmuPack.180206.7z" + "version": "180318", + "url": "https://github.com/Maximus5/ConEmu/releases/download/v18.03.18/ConEmuPack.180318.7z" }, { "name": "clink-completions", From 66d36fdc1c6fa4cf95a62c3557d018da6a1731cb Mon Sep 17 00:00:00 2001 From: David Refoua Date: Fri, 23 Mar 2018 18:02:15 +0430 Subject: [PATCH 128/306] Created `issue_template.md` (#1723) Purpose: - Prevent duplicated/similar issues - Explain the suitable repo for each issue, avoiding ConEmu issues here. - Help users to provide a better explanation to identify the problem --- .github/issue_template.md | 67 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 .github/issue_template.md diff --git a/.github/issue_template.md b/.github/issue_template.md new file mode 100644 index 0000000..064a3f4 --- /dev/null +++ b/.github/issue_template.md @@ -0,0 +1,67 @@ + + + + +### Purpose of the issue +- [ ] Bug report (encountered problems/errors) +- [ ] Feature request (request for new functionality) +- [ ] Question + +### Description of the issue + From 471369f73b0415f652cbbb379d04411f332b4e5a Mon Sep 17 00:00:00 2001 From: Dax T Games Date: Fri, 23 Mar 2018 09:20:07 -0500 Subject: [PATCH 129/306] Made all sub-routines in init.bat importable libs (#1706) --- .gitignore | 1 + CHANGELOG.md | 11 ++ README.md | 1 - launcher/CmderLauncher.vcxproj | 2 +- launcher/src/CmderLauncher.cpp | 1 + vendor/init.bat | 286 ++++----------------------------- vendor/lib/lib_base.cmd | 48 ++++++ vendor/lib/lib_console.cmd | 80 +++++++++ vendor/lib/lib_git.cmd | 168 +++++++++++++++++++ vendor/lib/lib_path.cmd | 155 ++++++++++++++++++ vendor/lib/lib_profile.cmd | 46 ++++++ 11 files changed, 543 insertions(+), 256 deletions(-) create mode 100644 vendor/lib/lib_base.cmd create mode 100644 vendor/lib/lib_console.cmd create mode 100644 vendor/lib/lib_git.cmd create mode 100644 vendor/lib/lib_path.cmd create mode 100644 vendor/lib/lib_profile.cmd diff --git a/.gitignore b/.gitignore index e506967..cf231c5 100644 --- a/.gitignore +++ b/.gitignore @@ -2,6 +2,7 @@ ## Those files should be taken from their repositary vendor/*/* +!vendor/lib/* !vendor/* !vendor/psmodules/PsGet diff --git a/CHANGELOG.md b/CHANGELOG.md index 5a6bfb5..ef9afe0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,16 @@ # Change Log +## [1.3.6-pre2](https://github.com/cmderdev/cmder/tree/v1.3.6-pre2) (2018-03-01) + +**Updates:** + +* Removed all sub routines from `init.bat` and made them into importable libraries that can be used in any `*.bat|cmd` file. + + * Libraries are in `%cmder_root%\vendor\lib` + * Import libraries into any `*.bat|cmd` file using `call "%cmder_root%\vendor\lib\[library file name]"` + * Call library methods by typing `"%lib_path% enhance_path "c:\bin"` + * Get help on library method usage by typing `"%cmder_root%\vendor\lib\[library file name]" /h` + ## [1.3.6-pre1](https://github.com/cmderdev/cmder/tree/v1.3.6-pre1) (2018-03-01) **Fixed bugs:** diff --git a/README.md b/README.md index 7b8ec06..66f5220 100644 --- a/README.md +++ b/README.md @@ -160,7 +160,6 @@ You can write *.cmd|*.bat, *.ps1, and *.sh scripts and just drop them in the %CM | PowerShell | $ENV:CMDER_ROOT\\config\\profile.d\\\*.ps1 | | Bash/Mintty | $CMDER_ROOT/config/profile.d/*.sh | - ### Aliases #### Cmder(Cmd.exe) Aliases You can define simple aliases for `cmd.exe` sessions with a command like `alias name=command`. Cmd.exe aliases support optional parameters through the `$1-9` or the `$*` special characters so the alias `vi=vim.exe $*` typed as `vi [filename]` will open `[filename]` in `vim.exe`. diff --git a/launcher/CmderLauncher.vcxproj b/launcher/CmderLauncher.vcxproj index fc5d40e..879bb5a 100644 --- a/launcher/CmderLauncher.vcxproj +++ b/launcher/CmderLauncher.vcxproj @@ -102,4 +102,4 @@ - \ No newline at end of file + diff --git a/launcher/src/CmderLauncher.cpp b/launcher/src/CmderLauncher.cpp index b482f7d..3261ae7 100644 --- a/launcher/src/CmderLauncher.cpp +++ b/launcher/src/CmderLauncher.cpp @@ -444,6 +444,7 @@ cmderOptions GetOption() return cmderOptions; } + int APIENTRY _tWinMain(_In_ HINSTANCE hInstance, _In_opt_ HINSTANCE hPrevInstance, _In_ LPTSTR lpCmdLine, diff --git a/vendor/init.bat b/vendor/init.bat index f6d11c8..a4d9e09 100644 --- a/vendor/init.bat +++ b/vendor/init.bat @@ -27,6 +27,12 @@ if not defined CMDER_ROOT ( :: Remove trailing '\' from %CMDER_ROOT% if "%CMDER_ROOT:~-1%" == "\" SET "CMDER_ROOT=%CMDER_ROOT:~0,-1%" +call "%cmder_root%\vendor\lib\lib_base" +call "%cmder_root%\vendor\lib\lib_path" +call "%cmder_root%\vendor\lib\lib_console" +call "%cmder_root%\vendor\lib\lib_git" +call "%cmder_root%\vendor\lib\lib_profile" + :var_loop if "%~1" == "" ( goto :start @@ -39,7 +45,7 @@ if "%CMDER_ROOT:~-1%" == "\" SET "CMDER_ROOT=%CMDER_ROOT:~0,-1%" set "max_depth=%~2" shift ) else ( - call :show_error '/max_depth' requires a number between 1 and 5! + %lib_console% show_error "'/max_depth' requires a number between 1 and 5!" exit /b ) ) else if "%1" == "/c" ( @@ -60,7 +66,7 @@ if "%CMDER_ROOT:~-1%" == "\" SET "CMDER_ROOT=%CMDER_ROOT:~0,-1%" set "GIT_INSTALL_ROOT=%~2" shift ) else ( - call :show_error The Git install root folder "%2", you specified does not exist! + %lib_console% show_error "The Git install root folder "%~2", you specified does not exist!" exit /b ) ) else if "%1" == "/home" ( @@ -68,7 +74,7 @@ if "%CMDER_ROOT:~-1%" == "\" SET "CMDER_ROOT=%CMDER_ROOT:~0,-1%" set "HOME=%~2" shift ) else ( - call :show_error The home folder "%2", you specified does not exist! + %lib_console% show_error The home folder "%2", you specified does not exist! exit /b ) ) else if "%1" == "/svn_ssh" ( @@ -79,12 +85,11 @@ if "%CMDER_ROOT:~-1%" == "\" SET "CMDER_ROOT=%CMDER_ROOT:~0,-1%" 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% +%lib_console% debug-output init.bat "Env Var - CMDER_ROOT=%CMDER_ROOT%" +%lib_console% 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%'! + %lib_console% debug-output init.bat "CMDER IS ALSO USING INDIVIDUAL USER CONFIG FROM '%CMDER_USER_CONFIG%'!" ) :: Pick right version of clink @@ -125,12 +130,13 @@ if not defined TERM set TERM=cygwin :: * last, use our vendored git :: 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) + if exist "%GIT_INSTALL_ROOT%\cmd\git.exe" goto :FOUND_GIT) ) :: get the version information for vendored git binary setlocal enabledelayedexpansion -call :read_version VENDORED "%CMDER_ROOT%\vendor\git-for-windows\cmd" +%lib_git% read_version VENDORED "%CMDER_ROOT%\vendor\git-for-windows\cmd" +%lib_git% validate_version VENDORED !GIT_VERSION_VENDORED! :: check if git is in path... for /F "delims=" %%F in ('where git.exe 2^>nul') do ( @@ -140,11 +146,12 @@ for /F "delims=" %%F in ('where git.exe 2^>nul') do ( popd :: get the version information for the user provided git binary - call :read_version USER "!test_dir!" + %lib_git% read_version USER "!test_dir!" + %lib_git% validate_version USER !GIT_VERSION_USER! if !errorlevel! geq 0 ( :: compare the user git version against the vendored version - call :compare_versions USER VENDORED + %lib_git% 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" ( @@ -175,7 +182,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" - call :enhance_path "!GIT_INSTALL_ROOT!\cmd" + %lib_path% enhance_path "!GIT_INSTALL_ROOT!\cmd" ) else ( goto :NO_GIT ) @@ -184,33 +191,34 @@ 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 - if exist "!GIT_INSTALL_ROOT!\cmd\git.exe" call :enhance_path "!GIT_INSTALL_ROOT!\cmd" append + if exist "!GIT_INSTALL_ROOT!\cmd\git.exe" %lib_path% enhance_path "!GIT_INSTALL_ROOT!\cmd" append if exist "!GIT_INSTALL_ROOT!\mingw32" ( - call :enhance_path "!GIT_INSTALL_ROOT!\mingw32" append + %lib_path% enhance_path "!GIT_INSTALL_ROOT!\mingw32" append ) else if exist "!GIT_INSTALL_ROOT!\mingw64" ( - call :enhance_path "!GIT_INSTALL_ROOT!\mingw64" append + %lib_path% enhance_path "!GIT_INSTALL_ROOT!\mingw64" append ) - if exist "!GIT_INSTALL_ROOT!\usr\bin" call :enhance_path "%GIT_INSTALL_ROOT%\usr\bin" append + %lib_path% 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% +%lib_console% debug-output init.bat "Env Var - GIT_INSTALL_ROOT=%GIT_INSTALL_ROOT%" :: Enhance Path -call :enhance_path_recursive "%CMDER_ROOT%\bin" %max_depth% +%lib_path% enhance_path_recursive "%CMDER_ROOT%\bin" %max_depth% if defined CMDER_USER_BIN ( - call :enhance_path "%CMDER_USER_BIN%" %max_depth% + %lib_path% enhance_path_recursive "%CMDER_USER_BIN%" %max_depth% ) -call :enhance_path "%CMDER_ROOT%" append +%lib_path% enhance_path "%CMDER_ROOT%" append :: Drop *.bat and *.cmd files into "%CMDER_ROOT%\config\profile.d" :: to run them at startup. -call :run_profile_d "%CMDER_ROOT%\config\profile.d" +%lib_profile% run_profile_d "%CMDER_ROOT%\config\profile.d" if defined CMDER_USER_CONFIG ( - call :run_profile_d "%CMDER_USER_CONFIG%\profile.d" + %lib_profile% run_profile_d "%CMDER_USER_CONFIG%\profile.d" ) :: Allows user to override default aliases store using profile.d @@ -269,7 +277,7 @@ 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" ( - call :verbose-output Running Git for Windows one time Post Install.... + %lib_console% verbose-output "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 popd @@ -277,7 +285,7 @@ if exist "%GIT_INSTALL_ROOT%\post-install.bat" ( :: Set home path if not defined HOME set "HOME=%USERPROFILE%" -call :debug-output init.bat - Env Var - HOME=%HOME% +%lib_console% 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 @@ -314,233 +322,3 @@ echo @echo off ) exit /b - -:: -:: sub-routines below here -:: -: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] Fully qualified directory path. Ex: "c:\bin" -::: -:::dptions: -::: -::: [max_depth] Max recuse depth. Default: 1 -::: -::: append Append instead rather than pre-pend "[dir_path]" -::: -:::output: -::: -::: path 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 diff --git a/vendor/lib/lib_base.cmd b/vendor/lib/lib_base.cmd new file mode 100644 index 0000000..6ab50e8 --- /dev/null +++ b/vendor/lib/lib_base.cmd @@ -0,0 +1,48 @@ +@echo off + +set lib_base=call "%~dp0lib_base.cmd" + +if "%~1" == "/h" ( + %lib_base% help "%0" +) else if "%1" neq "" ( + call :%* +) + +exit /b + +:help +:::=============================================================================== +:::show_subs - shows all sub routines in a .bat/.cmd file with documentation +:::. +:::include: +:::. +::: call "$0" +:::. +:::usage: +:::. +::: %lib_base% show_subs "file" +:::. +:::options: +:::. +::: file full path to file containing lib_routines to display +:::. +:::------------------------------------------------------------------------------- + + for /f "tokens=* delims=:" %%a in ('type "%~1" ^| findstr /i /r "^:::"') do ( + rem echo a="%%a" + + if "%%a"==" " ( + echo. + if "%%a"=="." ( + echo. + ) else if /i "%%a" == "usage" ( + echo %%a: + ) else if /i "%%a" == "options" ( + echo %%a: + ) else if not "%%a" == "" ( + echo %%a + ) + ) + + pause + exit /b diff --git a/vendor/lib/lib_console.cmd b/vendor/lib/lib_console.cmd new file mode 100644 index 0000000..38f40b4 --- /dev/null +++ b/vendor/lib/lib_console.cmd @@ -0,0 +1,80 @@ +@echo off + +rem set args=%* + +call "%~dp0lib_base.cmd" +set lib_console=call "%~dp0lib_console.cmd" + +if "%~1" == "/h" ( + %lib_base% help "%0" +) else if "%1" neq "" ( + call :%* +) + +exit /b + +:debug-output +:::=============================================================================== +:::debug-output - Output a debug message to the console. +:::. +:::include: +:::. +::: call "$0" +:::. +:::usage: +:::. +::: %lib_console% debug-output [caller] [message] +:::. +:::required: +:::. +::: [caller] Script/sub routine name calling debug-output +:::. +::: [message] Message text to display. +:::. +:::------------------------------------------------------------------------------- + + if %debug-output% gtr 0 echo DEBUG(%~1): %~2 & echo. + exit /b + +:verbose-output +:::=============================================================================== +:::verbose-output - Output a debug message to the console. +:::. +:::include: +:::. +::: call "$0" +:::. +:::usage: +:::. +::: %lib_console% verbose-output "[message]" +:::. +:::required: +:::. +::: [message] Message text to display. +:::. +:::------------------------------------------------------------------------------- + + if %verbose-output% gtr 0 echo %~1 + exit /b + +:show_error +:::=============================================================================== +:::show_error - Output an error message to the console. +:::. +:::include: +:::. +::: call "$0" +:::. +:::usage: +:::. +::: %lib_console% show_error "[message]" +:::. +:::required: +:::. +::: [message] Message text to display. +:::. +:::------------------------------------------------------------------------------- + + echo ERROR: %~1 + echo CMDER Shell Initialization has Failed! + exit /b diff --git a/vendor/lib/lib_git.cmd b/vendor/lib/lib_git.cmd new file mode 100644 index 0000000..7ff9562 --- /dev/null +++ b/vendor/lib/lib_git.cmd @@ -0,0 +1,168 @@ +@echo off + + +call "%~dp0lib_base.cmd" +call "%%~dp0lib_console.cmd" +set lib_git=call "%~dp0lib_git.cmd" + + +if "%~1" == "/h" ( + %lib_base% help "%0" +) else if "%1" neq "" ( + call :%* +) + +exit /b + +:read_version +:::=============================================================================== +:::read_version - Get the git.exe verion +:::. +:::include: +:::. +::: call "$0" +:::. +:::usage: +:::. +::: %lib_git% read_version "[dir_path]" +:::. +:::required: +:::. +::: [GIT SCOPE] USER | VENDORED +::: [GIT PATH] Fully qualified path to the Git command root. +:::. +:::output: +:::. +::: GIT_VERSION_[GIT SCOPE] Env variable containing Git semantic version string +:::------------------------------------------------------------------------------- + + setlocal enabledelayedexpansion + :: clear the variables + set GIT_VERSION_%~1= + + :: set the executable path + set "git_executable=%~2\git.exe" + %lib_console% debug-output :read_version "Env Var - git_executable=%git_executable%" + + :: check if the executable actually exists + if not exist "%git_executable%" ( + %lib_console% show_error "%git_executable%" does not exist! + exit /b -255 + ) + + :: get the git version in the provided directory + for /F "tokens=1,2,3 usebackq" %%A in (`"%git_executable%" --version 2^>nul`) do ( + if /i "%%A %%B" == "git version" ( + set "GIT_VERSION_%~1=%%C" + %lib_console% debug-output :read_version "Env Var - GIT_VERSION_%~1=%%C" + ) else ( + %lib_console% show_error "git --version" returned an inproper version string! + pause + exit /b + ) + ) + + endlocal & set GIT_VERSION%~1=!GIT_VERSION%~1! + exit /b + +:parse_version +:::=============================================================================== +:::parse_version - Parse semantic version string 'x.x.x.x' and return the pieces +:::. +:::include: +:::. +::: call "$0" +:::. +:::usage: +:::. +::: %lib_git% parse_version "[VERSION]" +:::. +:::required: +:::. +::: [SCOPE] USER | VENDORED +::: [VERSION] Semantic version String. Ex: 1.2.3.4 +:::. +:::output: +:::. +::: [SCOPE]_MAJOR Scoped Major version. +::: [SCOPE]_MINOR Scoped Minor version. +::: [SCOPE]_PATCH Scoped Patch version. +::: [SCOPE]_BUILD Scoped Build version. +:::------------------------------------------------------------------------------- + + setlocal enabledelayedexpansion + :: 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" + ) + + 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 +:::=============================================================================== +:::validate_version - Validate semantic version string 'x.x.x.x'. +:::. +:::include: +:::. +::: call "$0" +:::. +:::usage: +:::. +::: %lib_git% validate_version [SCOPE] [VERSION] +:::. +:::required: +:::. +::: [SCOPE] Example: USER | VENDORED +::: [VERSION] Semantic version String. Ex: 1.2.3.4 +:::------------------------------------------------------------------------------- + + :: now parse the version information into the corresponding variables + call :parse_version %~1 %~2 + + :: ... and maybe display it, for debugging purposes. + %lib_console% debug-output :validate_version "Found Git Version for %~1: !%~1_MAJOR!.!%~1_MINOR!.!%~1_PATCH!.!%~1_BUILD!" + exit /b + +:compare_versions +:::=============================================================================== +:::compare_version - Compare semantic versions return latest version. +:::. +:::include: +:::. +::: call "$0" +:::. +:::usage: +:::. +::: %lib_git% validate_version [SCOPE1] [SCOPE2] +:::. +:::required: +:::. +::: [SCOPE1] Example: USER +::: [SCOPE2] Example: VENDOR +:::------------------------------------------------------------------------------- + + :: 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. + + :: %lib_console% debug-output Comparing: + :: %lib_console% debug-output %~1: !%~1_MAJOR!.!%~1_MINOR!.!%~1_PATCH!.!%~1_BUILD! + :: %lib_console% 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 diff --git a/vendor/lib/lib_path.cmd b/vendor/lib/lib_path.cmd new file mode 100644 index 0000000..7cd08a7 --- /dev/null +++ b/vendor/lib/lib_path.cmd @@ -0,0 +1,155 @@ +@echo off + + +call "%~dp0lib_base.cmd" +call "%%~dp0lib_console" +set lib_path=call "%~dp0lib_path.cmd" + +if "%~1" == "/h" ( + %lib_base% help "%0" +) else if "%1" neq "" ( + call :%* +) + +exit /b + +:enhance_path +:::=============================================================================== +:::enhance_path - Add a directory to the path env variable if required. +::: +:::include: +::: +::: call "$0" +::: +:::usage: +::: +::: %lib_path% enhance_path "[dir_path]" [append] +::: +:::required: +::: +::: [dir_path] Fully qualified directory path. Ex: "c:\bin" +::: +:::options: +::: +::: append Append to the path env variable rather than pre-pend. +::: +:::output: +::: +::: path Sets the path env variable if required. +:::------------------------------------------------------------------------------- + + setlocal enabledelayedexpansion + if "%~1" neq "" ( + set "add_path=%~1" + ) else ( + %lib_console% 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 + + %lib_console% debug-output :enhance_path "Env Var - find_query=%find_query%" + echo "%PATH%"|findstr >nul /I /R ";%find_query%\"$" + if "!ERRORLEVEL!" == "0" set found=1 + + %lib_console% 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 + %lib_console% debug-output :enhance_path "Env Var 2 - found=!found!" + ) + + if "%found%" == "0" ( + %lib_console% debug-output :enhance_path "BEFORE Env Var - PATH=!path!" + if /i "%position%" == "append" ( + %lib_console% debug-output :enhance_path "Appending '%add_path%'" + set "PATH=%PATH%;%add_path%" + ) else ( + %lib_console% debug-output :enhance_path "Prepending '%add_path%'" + set "PATH=%add_path%;%PATH%" + ) + + %lib_console% 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] Fully qualified directory path. Ex: "c:\bin" +:::. +:::options: +:::. +::: [max_depth] Max recuse depth. Default: 1 +:::. +::: append Append instead to path env variable rather than pre-pend. +:::. +:::output: +:::. +::: path Sets the path env variable if required. +:::------------------------------------------------------------------------------- + + setlocal enabledelayedexpansion + if "%~1" neq "" ( + set "add_path=%~1" + ) else ( + %lib_console% show_error "You must specify a 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 + + %lib_console% debug-output :enhance_path_recursive "Env Var - add_path=%add_path%" + %lib_console% debug-output :enhance_path_recursive "Env Var - position=%position%" + %lib_console% debug-output :enhance_path_recursive "Env Var - max_depth=%max_depth%" + + if %max_depth% gtr !depth! ( + %lib_console% 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 ( + %lib_console% debug-output :enhance_path_recursive "Env Var BEFORE - depth=!depth!" + %lib_console% debug-output :enhance_path_recursive "Found Subdirectory - '%%~fi'" + call :enhance_path_recursive "%%~fi" %max_depth% %position% + %lib_console% debug-output :enhance_path_recursive "Env Var AFTER- depth=!depth!" + ) + ) + + endlocal & set "PATH=%PATH%" + exit /b diff --git a/vendor/lib/lib_profile.cmd b/vendor/lib/lib_profile.cmd new file mode 100644 index 0000000..77eebf8 --- /dev/null +++ b/vendor/lib/lib_profile.cmd @@ -0,0 +1,46 @@ +@echo off + + +call "%~dp0lib_base.cmd" +call "%%~dp0lib_console" +set lib_profile=call "%~dp0lib_profile.cmd" + +if "%~1" == "/h" ( + %lib_base% help "%0" +) else if "%1" neq "" ( + call :%* +) + +exit /b + +:run_profile_d +:::=============================================================================== +:::run_profile_d - Run all scripts in the passed dir path +::: +:::include: +::: +::: call "$0" +::: +:::usage: +::: +::: %lib_profile% "[dir_path]" +::: +:::required: +::: +::: [dir_path] Fully qualified directory path containing init *.cmd|*.bat. +::: Example: "c:\bin" +::: +::: path Sets the path env variable if required. +:::------------------------------------------------------------------------------- + + if not exist "%~1" ( + mkdir "%~1" + ) + + pushd "%~1" + for /f "usebackq" %%x in ( `dir /b *.bat *.cmd 2^>nul` ) do ( + %lib_console% verbose-output "Calling '%~1\%%x'..." + call "%~1\%%x" + ) + popd + exit /b From 0438ce5763e171b809849068498b90c6af3fc70c Mon Sep 17 00:00:00 2001 From: Benjamin Staneck Date: Fri, 23 Mar 2018 23:11:05 +0100 Subject: [PATCH 130/306] :arrow_up: Update Git to 2.16.3 Release notes: https://github.com/git-for-windows/git/releases/v2.16.3.windows.1 --- vendor/sources.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/vendor/sources.json b/vendor/sources.json index 34fa08c..a30657d 100644 --- a/vendor/sources.json +++ b/vendor/sources.json @@ -1,8 +1,8 @@ [ { "name": "git-for-windows", - "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" + "version": "v2.16.3.windows.1", + "url": "https://github.com/git-for-windows/git/releases/download/v2.16.3.windows.1/PortableGit-2.16.3-64-bit.7z.exe" }, { "name": "clink", From 6543c204b716fbe3190f1697b54179540ad557d0 Mon Sep 17 00:00:00 2001 From: Benjamin Staneck Date: Fri, 23 Mar 2018 23:29:24 +0100 Subject: [PATCH 131/306] add default WSL bash task --- config/ConEmu.xml | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/config/ConEmu.xml b/config/ConEmu.xml index f9b17cf..2c5c0f1 100644 --- a/config/ConEmu.xml +++ b/config/ConEmu.xml @@ -504,7 +504,7 @@ - + @@ -513,7 +513,7 @@ - + @@ -559,6 +559,15 @@ + + + + + + + + + From afb8f52516ba11a85af31425be72e94fc51d90fd Mon Sep 17 00:00:00 2001 From: Benjamin Staneck Date: Fri, 23 Mar 2018 23:34:05 +0100 Subject: [PATCH 132/306] ignore .github dir and markdown files for packaging --- packignore | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packignore b/packignore index 6e7b5b4..a69813c 100644 --- a/packignore +++ b/packignore @@ -2,7 +2,8 @@ launcher .gitignore .gitattributes .git -*.rb +.github +*.md build scripts config\.history @@ -19,4 +20,3 @@ appveyor.yml vendor\cmder.sh vendor\git-prompt.sh config\user-* -.github_changelog_generator \ No newline at end of file From 19bad7dfa9b072071ff66b31530c95b3d6f8dd36 Mon Sep 17 00:00:00 2001 From: Dax T Games Date: Fri, 23 Mar 2018 17:38:53 -0500 Subject: [PATCH 133/306] open cmder in the current working dir as every other windows app works (#1725) open cmder in the current working dir as every other Windows app works --- launcher/src/CmderLauncher.cpp | 7 ------- 1 file changed, 7 deletions(-) diff --git a/launcher/src/CmderLauncher.cpp b/launcher/src/CmderLauncher.cpp index 3261ae7..6e3c923 100644 --- a/launcher/src/CmderLauncher.cpp +++ b/launcher/src/CmderLauncher.cpp @@ -208,13 +208,6 @@ void StartCmder(std::wstring path = L"", bool is_single_mode = false, std::wstr PathCombine(conEmuPath, exeDir, L"vendor\\conemu-maximus5\\ConEmu.exe"); } - if (streqi(cmderStart.c_str(), L"")) - { - TCHAR buff[MAX_PATH]; - const DWORD ret = GetEnvironmentVariable(L"USERPROFILE", buff, MAX_PATH); - cmderStart = buff; - } - if (is_single_mode) { if (!streqi(cmderTask.c_str(), L"")) { From 91f5c5379a5cf20fcadd2d90456818cc3b245b74 Mon Sep 17 00:00:00 2001 From: Benjamin Staneck Date: Fri, 23 Mar 2018 23:49:45 +0100 Subject: [PATCH 134/306] actually show the new task --- config/ConEmu.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/ConEmu.xml b/config/ConEmu.xml index 2c5c0f1..ef62ad0 100644 --- a/config/ConEmu.xml +++ b/config/ConEmu.xml @@ -484,7 +484,7 @@ - + From 72ab0f064f118820af757a1d19b2e48b2af8d9ef Mon Sep 17 00:00:00 2001 From: Benjamin Staneck Date: Sat, 24 Mar 2018 00:01:08 +0100 Subject: [PATCH 135/306] update psget to the latest version --- vendor/psmodules/PsGet/PsGet.psm1 | 81 ++++++++++++++++++++----------- 1 file changed, 52 insertions(+), 29 deletions(-) diff --git a/vendor/psmodules/PsGet/PsGet.psm1 b/vendor/psmodules/PsGet/PsGet.psm1 index 1a2412f..ad3f886 100644 --- a/vendor/psmodules/PsGet/PsGet.psm1 +++ b/vendor/psmodules/PsGet/PsGet.psm1 @@ -9,8 +9,16 @@ #region Setup Write-Debug 'Set up the global scope config variables.' -$global:UserModuleBasePath = Join-Path -Path ([Environment]::GetFolderPath('MyDocuments')) -ChildPath 'WindowsPowerShell\Modules' -$global:CommonGlobalModuleBasePath = Join-Path -Path $env:CommonProgramFiles -ChildPath 'Modules' +if ([Environment]::GetFolderPath('MyDocuments')) { + $global:UserModuleBasePath = Join-Path -Path ([Environment]::GetFolderPath('MyDocuments')) -ChildPath 'WindowsPowerShell\Modules' +} +else { + # Support scenarios where PSGet is running without a MyDocuments special folder (e.g. executing within a DSC resource) + $global:UserModuleBasePath = Join-Path -Path $env:ProgramFiles -ChildPath 'WindowsPowerShell\Modules' +} + +# NOTE: Path changed to align with current MS conventions +$global:CommonGlobalModuleBasePath = Join-Path -Path $env:ProgramFiles -ChildPath 'WindowsPowerShell\Modules' if (-not (Test-Path -Path:variable:global:PsGetDirectoryUrl)) { $global:PsGetDirectoryUrl = 'https://github.com/psget/psget/raw/master/Directory.xml' @@ -96,16 +104,16 @@ Set-Variable -Name PSGET_PSD1 -Value 'PSD1' -Option Constant -Scope Script .PARAMETER DoNotPostInstall If defined, the PostInstallHook is not executed. - .PARAMERTER PostInstallHook + .PARAMETER PostInstallHook Defines the name of a script inside the installed module folder which should be executed after installation. Default: definition in directory file or 'Install.ps1' .PARAMETER Force - OBSOLATE + OBSOLETE Alternative name for 'Update'. .PARAMETER Startup - OBSOLATE + OBSOLETE Alternative name for 'AddToProfile'. .LINK @@ -349,7 +357,7 @@ function Install-Module { .PARAMETER DoNotPostInstall If defined, the PostInstallHook is not executed. - .PARAMERTER PostInstallHook + .PARAMETER PostInstallHook Defines the name of a script inside the installed module folder which should be executed after installation. Will not be check in combination with -All switch. Default: 'Install.ps1' @@ -414,7 +422,7 @@ function Update-Module { } else { - Install-Module -Module:$Module -Destination:$Destination -ModuleHash:$ModuleHash -Global:$Global -DoNotImport:$DoNotImport -AddToProfile:$AddToProfile -DirectoryUrl:$DirectoryUrl -Updat -DoNotPostInstall:$DoNotPostInstall -PostInstallHook:$PostInstallHook + Install-Module -Module:$Module -Destination:$Destination -ModuleHash:$ModuleHash -Global:$Global -DoNotImport:$DoNotImport -AddToProfile:$AddToProfile -DirectoryUrl:$DirectoryUrl -Update -DoNotPostInstall:$DoNotPostInstall -PostInstallHook:$PostInstallHook } } } @@ -480,7 +488,9 @@ function Get-PsGetModuleInfo { try { Write-Verbose "Downloading modules repository from $DirectoryUrl" - $repoRaw = $client.DownloadString($DirectoryUrl) + $stream = $client.OpenRead($DirectoryUrl) + $repoXmlTemp = New-Object -TypeName System.Xml.XmlDocument + $repoXmlTemp.Load($stream) $StatusCode = 200 } catch [System.Net.WebException] { @@ -489,7 +499,7 @@ function Get-PsGetModuleInfo { } if ($StatusCode -eq 200) { - $repoXml = [xml]$repoRaw + $repoXml = [xml]$repoXmlTemp $CacheEntry.ETag = $client.ResponseHeaders['ETag'] if (-not (Test-Path -Path $PsGetDataPath)) { @@ -629,7 +639,7 @@ function Get-PsGetModuleHash { .PARAMETER DoNotPostInstall If defined, the PostInstallHook is not executed. - .PARAMERTER PostInstallHook + .PARAMETER PostInstallHook Defines the name of a script inside the installed module folder which should be executed after installation. Default: definition in directory file or 'Install.ps1' #> @@ -754,7 +764,7 @@ function Install-ModuleFromDirectory { .PARAMETER DoNotPostInstall If defined, the PostInstallHook is not executed. - .PARAMERTER PostInstallHook + .PARAMETER PostInstallHook Defines the name of a script inside the installed module folder which should be executed after installation. Default: 'Install.ps1' #> @@ -863,7 +873,7 @@ function Install-ModuleFromWeb { .PARAMETER DoNotPostInstall If defined, the PostInstallHook is not executed. - .PARAMERTER PostInstallHook + .PARAMETER PostInstallHook Defines the name of a script inside the installed module folder which should be executed after installation. Default: 'Install.ps1' #> @@ -1010,7 +1020,7 @@ function Install-ModuleFromLocal { .PARAMETER DoNotPostInstall If defined, the PostInstallHook is not executed. - .PARAMERTER PostInstallHook + .PARAMETER PostInstallHook Defines the name of a script inside the installed module folder which should be executed after installation. Default: 'Install.ps1' #> @@ -1311,6 +1321,13 @@ function Import-ModuleGlobally { Write-Verbose "Importing installed module '$ModuleName' from '$($installedModule.ModuleBase)'" Import-Module -Name $ModuleBase -Global -Force:$Force + # For psget no further checks are needed and their execution cause + # an error for the update process of 'psget' + # https://github.com/psget/psget/issues/186 + if ($ModuleName -eq 'PsGet') { + return + } + $IdentityExtension = [System.IO.Path]::GetExtension((Get-ModuleFile -Path $ModuleBase -ModuleName $ModuleName)) if ($IdentityExtension -eq '.dll') { # import module twice for binary modules to workaround PowerShell bug: @@ -1514,7 +1531,7 @@ function Invoke-DownloadModuleFromWeb { .PARAMETER DoNotPostInstall If defined, the PostInstallHook is not executed. - .PARAMERTER PostInstallHook + .PARAMETER PostInstallHook Defines the name of a script inside the installed module folder which should be executed after installation. #> function Install-ModuleToDestination { @@ -1628,7 +1645,7 @@ function Install-ModuleToDestination { $isDestinationInPSModulePath = $env:PSModulePath.Contains($Destination) if ($isDestinationInPSModulePath) { - if (-not (Get-Module $ModuleName -ListAvailable)) { + if (-not (Get-Module $InstallWithModuleName -ListAvailable)) { throw 'For some unexpected reasons module was not installed.' } } @@ -1639,14 +1656,14 @@ function Install-ModuleToDestination { } if ($Update) { - Write-Host "Module $ModuleName was successfully updated." -Foreground Green + Write-Host "Module $InstallWithModuleName was successfully updated." -Foreground Green } else { - Write-Host "Module $ModuleName was successfully installed." -Foreground Green + Write-Host "Module $InstallWithModuleName was successfully installed." -Foreground Green } if (-not $DoNotImport) { - Import-ModuleGlobally -ModuleName:$ModuleName -ModuleBase:$targetFolderPath -Force:$Update + Import-ModuleGlobally -ModuleName:$InstallWithModuleName -ModuleBase:$targetFolderPath -Force:$Update } if ($isDestinationInPSModulePath -and $AddToProfile) { @@ -1657,8 +1674,8 @@ function Install-ModuleToDestination { New-Item $PROFILE -Type File -Force -ErrorAction Stop } - if (Select-String $PROFILE -Pattern "Import-Module $ModuleName") { - Write-Verbose "Import-Module $ModuleName command already in your profile" + if (Select-String $PROFILE -Pattern "Import-Module $InstallWithModuleName") { + Write-Verbose "Import-Module $InstallWithModuleName command already in your profile" } else { $signature = Get-AuthenticodeSignature -FilePath $PROFILE @@ -1667,8 +1684,8 @@ function Install-ModuleToDestination { Write-Error "PsGet cannot modify code-signed profile '$PROFILE'." } else { - Write-Verbose "Add Import-Module $ModuleName command to the profile" - "`nImport-Module $ModuleName" | Add-Content $PROFILE + Write-Verbose "Add Import-Module $InstallWithModuleName command to the profile" + "`nImport-Module $InstallWithModuleName" | Add-Content $PROFILE } } } @@ -1736,7 +1753,7 @@ function Test-ModuleInstalledAndImport { return $false } - Write-Warning "The module '$ModuleName' was installed at more then one location. Installed paths:`n`t$($installedModule.ModuleBase | Format-List | Out-String)`n'$($firstInstalledModule.ModuleBase)' is the searched destination." + Write-Warning "The module '$ModuleName' was installed at more than one location. Installed paths:`n`t$($installedModule.ModuleBase | Format-List | Out-String)`n'$($firstInstalledModule.ModuleBase)' is the searched destination." $installedModule = $targetModule } elseif ((Split-Path $installedModule.ModuleBase) -ne $Destination) { @@ -1801,7 +1818,7 @@ function Expand-ZipModule { # Check if powershell v3+ and .net v4.5 is available $netFailed = $true - if ( $PSVersionTable.PSVersion.Major -ge 3 -and (Get-ChildItem -Path 'HKLM:\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4' -Recurse | Get-ItemProperty -Name Version | Where-Object { $_.Version -like '4.5*' }) ) { + if ( $PSVersionTable.PSVersion.Major -ge 3 -and (Get-ChildItem -Path 'HKLM:\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4' -Recurse | Get-ItemProperty -Name Version | Where-Object { $_.Version -like '4.5*' -Or $_.Version -ge '4.5' }) ) { Write-Debug 'Attempting unzip using the .NET Framework...' try { @@ -1910,14 +1927,20 @@ function Invoke-DownloadNuGetPackage { } Write-Verbose "Querying '$Source' repository for package with Id '$NuGetPackageId'" - $Url = "{1}Packages()?`$filter=tolower(Id)+eq+'{0}'&`$orderby=Id" -f $NuGetPackageId.ToLower(), $Source - Write-Debug "NuGet query url: $Url" - try { + $Url = "{1}Packages()?`$filter=tolower(Id)+eq+'{0}'&`$orderby=Id" -f $NuGetPackageId.ToLower(), $Source + Write-Debug "Trying NuGet query url: $Url" $XmlDoc = [xml]$WebClient.DownloadString($Url) } catch { - throw "Unable to download from NuGet feed: $($_.Exception.InnerException.Message)" + try { + $Url = "{1}Packages(Id='{0}')?`$orderby=Id" -f $NuGetPackageId, $Source + Write-Debug "Trying NuGet query url: $Url" + $XmlDoc = [xml]$WebClient.DownloadString($Url) + } + catch { + throw "Unable to download from NuGet feed: $($_.Exception.InnerException.Message)" + } } if ($PackageVersion) { @@ -2110,7 +2133,7 @@ function TabExpansion { Get-PsGetModuleInfo -ModuleName "$lastword*" | % { $_.Id } | sort -Unique } elseif ( Test-Path -Path Function:\$tabExpansionBackup ) { - & $teBackup $line $lastWord + & $tabExpansionBackup $line $lastWord } } } From bcf8527f74b9081a26657bace451e89e25b2f3e8 Mon Sep 17 00:00:00 2001 From: Benjamin Staneck Date: Sat, 24 Mar 2018 03:34:39 +0100 Subject: [PATCH 136/306] run markdownlint and update changelog --- CHANGELOG.md | 1484 +++++++++++++++++++++++++------------------------- 1 file changed, 744 insertions(+), 740 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ef9afe0..0cb69ea 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,14 +2,18 @@ ## [1.3.6-pre2](https://github.com/cmderdev/cmder/tree/v1.3.6-pre2) (2018-03-01) +**Updated components:** + +* Git updated to v2.16.3.windows.1 +* ConEmu updated to 180318 + **Updates:** * Removed all sub routines from `init.bat` and made them into importable libraries that can be used in any `*.bat|cmd` file. - - * Libraries are in `%cmder_root%\vendor\lib` - * Import libraries into any `*.bat|cmd` file using `call "%cmder_root%\vendor\lib\[library file name]"` - * Call library methods by typing `"%lib_path% enhance_path "c:\bin"` - * Get help on library method usage by typing `"%cmder_root%\vendor\lib\[library file name]" /h` + * Libraries are in `%cmder_root%\vendor\lib`. + * Import libraries into any `*.bat|cmd` file using `call "%cmder_root%\vendor\lib\[library file name]"`. + * Call library methods by typing `"%lib_path% enhance_path "c:\bin"`. + * Get help on library method usage by typing `"%cmder_root%\vendor\lib\[library file name]" /h`. ## [1.3.6-pre1](https://github.com/cmderdev/cmder/tree/v1.3.6-pre1) (2018-03-01) @@ -19,24 +23,24 @@ **Updates:** -* 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. +* 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 +* Reworked README.md tables to make them more readable in editors. **Implemented enhancements:** -* Added `cmder.exe` command line args documenttion to `README.md` +* Added `cmder.exe` command line args documentation 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. + * 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' | @@ -47,42 +51,44 @@ | /v | Enables verbose output. | not set | * Added new `cmder.exe /C \` 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 - ``` + * 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. - * 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] + ```plain + 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 + +* 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)) +* 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) @@ -90,14 +96,13 @@ We now use a forked version of clink since it's original author is missing and w **Updated components:** -- Git: v2.15.0.windows.1 +* 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) - +* 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) @@ -105,711 +110,710 @@ We now use a forked version of clink since it's original author is missing and w **Updated components:** -- Git: v2.14.3.windows.1 -- ConEmu: 170910 -- Clink: 0.4.9-FORK -- Clink-Completions: 0.3.3 +* 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) -- Git Credential Cache [\#184](https://github.com/cmderdev/cmder/issues/184) -- Crawling for executables in /bin [\#61](https://github.com/cmderdev/cmder/issues/61) -- 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) ([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)) +* 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) +* Git Credential Cache [\#184](https://github.com/cmderdev/cmder/issues/184) +* Crawling for executables in /bin [\#61](https://github.com/cmderdev/cmder/issues/61) +* 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) ([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) -- Path issues on startup [\#487](https://github.com/cmderdev/cmder/issues/487) -- Missing DLL: MSVCP140.dll [\#482](https://github.com/cmderdev/cmder/issues/482) -- Single mode does not set current directory [\#420](https://github.com/cmderdev/cmder/issues/420) -- Fails to parse path in PATH system variable with '&' [\#185](https://github.com/cmderdev/cmder/issues/185) -- Cmder hangs after idling for a few minutes or when clicking above the cursor [\#109](https://github.com/cmderdev/cmder/issues/109) -- No color scheme in tabs opened as Administrator [\#94](https://github.com/cmderdev/cmder/issues/94) -- Bug in alias.bat [\#52](https://github.com/cmderdev/cmder/issues/52) -- Clicking/selecting text on terminal causes slowdown [\#40](https://github.com/cmderdev/cmder/issues/40) +* 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) +* Path issues on startup [\#487](https://github.com/cmderdev/cmder/issues/487) +* Missing DLL: MSVCP140.dll [\#482](https://github.com/cmderdev/cmder/issues/482) +* Single mode does not set current directory [\#420](https://github.com/cmderdev/cmder/issues/420) +* Fails to parse path in PATH system variable with '&' [\#185](https://github.com/cmderdev/cmder/issues/185) +* Cmder hangs after idling for a few minutes or when clicking above the cursor [\#109](https://github.com/cmderdev/cmder/issues/109) +* No color scheme in tabs opened as Administrator [\#94](https://github.com/cmderdev/cmder/issues/94) +* Bug in alias.bat [\#52](https://github.com/cmderdev/cmder/issues/52) +* Clicking/selecting text on terminal causes slowdown [\#40](https://github.com/cmderdev/cmder/issues/40) **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 \/cmd instead of \/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) -- % variable expansion in config/alias [\#791](https://github.com/cmderdev/cmder/issues/791) -- Problems with node [\#790](https://github.com/cmderdev/cmder/issues/790) -- Resizing adds new lines [\#789](https://github.com/cmderdev/cmder/issues/789) -- 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) -- e. shortcut not working ? [\#712](https://github.com/cmderdev/cmder/issues/712) -- "Cmder here" doesn't work if set start-up dir [\#709](https://github.com/cmderdev/cmder/issues/709) -- Is cmder support scrolling with touch screen? [\#706](https://github.com/cmderdev/cmder/issues/706) -- npm\_prompt.lua:11: attempt to concatenate local 'package\_version' \(a nil value\) [\#700](https://github.com/cmderdev/cmder/issues/700) -- Cmder \(cmd.exe\) startup crashes at clink step [\#699](https://github.com/cmderdev/cmder/issues/699) -- Doesn't run cmder.exe [\#696](https://github.com/cmderdev/cmder/issues/696) -- Not getting git status in 1.2.9 prompt [\#692](https://github.com/cmderdev/cmder/issues/692) -- 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) -- Restore last session with history on start [\#672](https://github.com/cmderdev/cmder/issues/672) -- Restart As Admin bug [\#669](https://github.com/cmderdev/cmder/issues/669) -- git for windows 2.6.1 ssh folder [\#661](https://github.com/cmderdev/cmder/issues/661) -- der [\#660](https://github.com/cmderdev/cmder/issues/660) -- Cannot clean the terminal [\#659](https://github.com/cmderdev/cmder/issues/659) -- Cmder do not run if username has spaces between [\#658](https://github.com/cmderdev/cmder/issues/658) -- When exiting vim, cursor goes to first line of terminal instead of the end of it [\#656](https://github.com/cmderdev/cmder/issues/656) -- Cmder suddenly start crashing on startup [\#650](https://github.com/cmderdev/cmder/issues/650) -- Cannot switch to mapped network drive [\#649](https://github.com/cmderdev/cmder/issues/649) -- Ctrl + D? [\#648](https://github.com/cmderdev/cmder/issues/648) -- 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) -- Problem with install on window 7? [\#637](https://github.com/cmderdev/cmder/issues/637) -- 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) -- 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) -- No Unix commands? [\#610](https://github.com/cmderdev/cmder/issues/610) -- using user installed git \(2.5\) with the suggested /bin/agent.cmd does not work [\#609](https://github.com/cmderdev/cmder/issues/609) -- vendor/init.bat is overwritten with new versions -\> use a user startup file? [\#608](https://github.com/cmderdev/cmder/issues/608) -- Git autocomplete is not working as in git bash [\#607](https://github.com/cmderdev/cmder/issues/607) -- api-ms-win-crt-runtime-l1-1-0.dll is missing error \(Windows 8.1\) [\#604](https://github.com/cmderdev/cmder/issues/604) -- Prevent inactive cmder windows to be dimmed [\#603](https://github.com/cmderdev/cmder/issues/603) -- Git for Windows 2.5 [\#602](https://github.com/cmderdev/cmder/issues/602) -- Incompatibility with conemu 150716+ / double pinned icon on taskbar [\#599](https://github.com/cmderdev/cmder/issues/599) -- Cant get it working on windows xp [\#598](https://github.com/cmderdev/cmder/issues/598) -- ls parameters error in Windows 10 [\#597](https://github.com/cmderdev/cmder/issues/597) -- Resizing split windows [\#596](https://github.com/cmderdev/cmder/issues/596) -- 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) -- Downloads for v1.2 missing DLLs [\#558](https://github.com/cmderdev/cmder/issues/558) -- Can't get rid of "unrecognized parameter" error [\#557](https://github.com/cmderdev/cmder/issues/557) -- How to use cmder in a batch file? [\#556](https://github.com/cmderdev/cmder/issues/556) -- Run init.bat before any new scripts [\#554](https://github.com/cmderdev/cmder/issues/554) -- ssh not working [\#552](https://github.com/cmderdev/cmder/issues/552) -- Restore opened tabs setting opens root drive [\#551](https://github.com/cmderdev/cmder/issues/551) -- Maximize single view/terminal/console to whole window [\#550](https://github.com/cmderdev/cmder/issues/550) -- not run successfully [\#547](https://github.com/cmderdev/cmder/issues/547) -- compass not working with cmder ? [\#546](https://github.com/cmderdev/cmder/issues/546) -- Bad unicode support \(wrong glyphs on alsamixer\) [\#545](https://github.com/cmderdev/cmder/issues/545) -- 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) -- Symantec refuses to access cmder [\#484](https://github.com/cmderdev/cmder/issues/484) -- Missing MSVCP140.dll [\#480](https://github.com/cmderdev/cmder/issues/480) -- Windows 10 compatibility issues [\#478](https://github.com/cmderdev/cmder/issues/478) -- update msysgit [\#473](https://github.com/cmderdev/cmder/issues/473) -- Notifications about composer.json and CRLF [\#472](https://github.com/cmderdev/cmder/issues/472) -- How to add more commands beyond mysisgit? [\#470](https://github.com/cmderdev/cmder/issues/470) -- ~ should mean user home directory [\#466](https://github.com/cmderdev/cmder/issues/466) -- mklink /d creates symlink with wrong slashes [\#462](https://github.com/cmderdev/cmder/issues/462) -- Does cmder come with GCC or not? [\#461](https://github.com/cmderdev/cmder/issues/461) -- Question: How to start cmder with a command [\#457](https://github.com/cmderdev/cmder/issues/457) -- PATH environment variable has space problem [\#456](https://github.com/cmderdev/cmder/issues/456) -- Feature Request : Save opened tabs and locations of the tabs [\#455](https://github.com/cmderdev/cmder/issues/455) -- Error on cmder launch: "The syntax of the command is incorrect" [\#454](https://github.com/cmderdev/cmder/issues/454) -- Lag returning to prompt \(especially\) in git repo [\#447](https://github.com/cmderdev/cmder/issues/447) -- 'MySQL' is not recognized as an internal or external command, operable program or batch file. [\#443](https://github.com/cmderdev/cmder/issues/443) -- Not scaling on Windows 8.1 with High-DPI Monitor [\#437](https://github.com/cmderdev/cmder/issues/437) -- Shortcut missing icon in context menu [\#433](https://github.com/cmderdev/cmder/issues/433) -- How to update Git? [\#428](https://github.com/cmderdev/cmder/issues/428) -- How to redirect Window's cmd.exe to Cmder's cmder.exe? [\#426](https://github.com/cmderdev/cmder/issues/426) -- cmder exits with exitcode 4294967295 [\#423](https://github.com/cmderdev/cmder/issues/423) -- How do you create an alias? [\#421](https://github.com/cmderdev/cmder/issues/421) -- Git pull not working [\#419](https://github.com/cmderdev/cmder/issues/419) -- Create files from cmder. [\#417](https://github.com/cmderdev/cmder/issues/417) -- Error popup window on opening [\#416](https://github.com/cmderdev/cmder/issues/416) -- 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) -- UI broken characters [\#375](https://github.com/cmderdev/cmder/issues/375) -- Possible to change TSA icon? [\#373](https://github.com/cmderdev/cmder/issues/373) -- 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) -- How to reload system variable [\#340](https://github.com/cmderdev/cmder/issues/340) -- SVN commands support [\#339](https://github.com/cmderdev/cmder/issues/339) -- Is it possible to show the current folder in front of cursor on the current line? [\#338](https://github.com/cmderdev/cmder/issues/338) -- backspace not work [\#334](https://github.com/cmderdev/cmder/issues/334) -- 'awk' is not recognized [\#330](https://github.com/cmderdev/cmder/issues/330) -- Cannot pin 1.1.4.1 to Win7 taskbar [\#329](https://github.com/cmderdev/cmder/issues/329) -- {lamb} instead of lambda sign \(possibly a UTF-8 problem?\) [\#322](https://github.com/cmderdev/cmder/issues/322) -- Instructions refer to Cmder.bat but it doesn't exist in download .zip [\#319](https://github.com/cmderdev/cmder/issues/319) -- Wrong link on https://bliker.github.io/cmder/ for msysgit [\#317](https://github.com/cmderdev/cmder/issues/317) -- 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) -- Can't start cmder 1.4.1.1 [\#252](https://github.com/cmderdev/cmder/issues/252) -- Cmder icon reverts to ConEmu icon when "Startup options" option is changed [\#251](https://github.com/cmderdev/cmder/issues/251) -- Old version files in v1.1.4 release archives [\#247](https://github.com/cmderdev/cmder/issues/247) -- "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) -- Add link to bliker.github.io/cmder to repo description/website [\#134](https://github.com/cmderdev/cmder/issues/134) -- Environmental variables are not reloaded on new console [\#132](https://github.com/cmderdev/cmder/issues/132) -- Git Branch Autocomplete [\#130](https://github.com/cmderdev/cmder/issues/130) -- The nice lambda left me :\( [\#129](https://github.com/cmderdev/cmder/issues/129) -- `ls` with output redirection writes ansi escape sequences to destination file [\#127](https://github.com/cmderdev/cmder/issues/127) -- Lamba prompt and git status scripts not running [\#126](https://github.com/cmderdev/cmder/issues/126) -- how to open specail directory? in sublime Terminal plugin? [\#123](https://github.com/cmderdev/cmder/issues/123) -- clink installed allready cmder hangs after install [\#122](https://github.com/cmderdev/cmder/issues/122) -- "The system cannot find the path specified" [\#121](https://github.com/cmderdev/cmder/issues/121) -- "chcp 65001" \(UTF-8\) support for cmd [\#119](https://github.com/cmderdev/cmder/issues/119) -- Incorrect version of clink is being used [\#117](https://github.com/cmderdev/cmder/issues/117) -- .bash\_profile equivalent? [\#113](https://github.com/cmderdev/cmder/issues/113) -- Startup directory on new tab [\#112](https://github.com/cmderdev/cmder/issues/112) -- Looking for a contributor/Cmder user [\#110](https://github.com/cmderdev/cmder/issues/110) -- Terminate batch job bug \(I think?\) [\#108](https://github.com/cmderdev/cmder/issues/108) -- latin1 characters [\#107](https://github.com/cmderdev/cmder/issues/107) -- Script cleanup [\#105](https://github.com/cmderdev/cmder/issues/105) -- Changed "λ" to "?" [\#104](https://github.com/cmderdev/cmder/issues/104) -- How to search history using PgUp and PgDown [\#103](https://github.com/cmderdev/cmder/issues/103) -- Folder shortcuts doesn't seem to work in FAR manager under cmder [\#102](https://github.com/cmderdev/cmder/issues/102) -- opening cmder.bat on windows 8 [\#101](https://github.com/cmderdev/cmder/issues/101) -- Change the builder from google code [\#99](https://github.com/cmderdev/cmder/issues/99) -- Text color not honored upon restart [\#97](https://github.com/cmderdev/cmder/issues/97) -- Launcher is not recognized as a valid Win32 application on windows XP. [\#96](https://github.com/cmderdev/cmder/issues/96) -- Allow the launcher to be pinned to the taskbar [\#95](https://github.com/cmderdev/cmder/issues/95) -- VS2013 runtime requirement [\#93](https://github.com/cmderdev/cmder/issues/93) -- git flow [\#92](https://github.com/cmderdev/cmder/issues/92) -- How to start in a given directory [\#91](https://github.com/cmderdev/cmder/issues/91) -- Can't type backslash \(clink issue\) [\#89](https://github.com/cmderdev/cmder/issues/89) -- command history [\#87](https://github.com/cmderdev/cmder/issues/87) -- Install cmder [\#86](https://github.com/cmderdev/cmder/issues/86) -- Can not work well with Chinese [\#81](https://github.com/cmderdev/cmder/issues/81) -- Does not work with Julia [\#80](https://github.com/cmderdev/cmder/issues/80) -- Build script does not work through proxy [\#79](https://github.com/cmderdev/cmder/issues/79) -- "C:\Users\bliker" reference in config/ConEmu.xml [\#71](https://github.com/cmderdev/cmder/issues/71) -- Is it possible to install wget into cmder\(clink, or ConEmu\) ? [\#69](https://github.com/cmderdev/cmder/issues/69) -- cyrillic characters problem [\#68](https://github.com/cmderdev/cmder/issues/68) -- Unable to run in Windows XP if path contains spaces [\#67](https://github.com/cmderdev/cmder/issues/67) -- Path not set correctly on Windows XP [\#66](https://github.com/cmderdev/cmder/issues/66) -- Filenames with special characters e.g. ! are not handled correctly [\#64](https://github.com/cmderdev/cmder/issues/64) -- Clink completion does not work [\#59](https://github.com/cmderdev/cmder/issues/59) -- Git hosts defined in .ssh/config not working in cmder [\#58](https://github.com/cmderdev/cmder/issues/58) -- Setting cmder startup directory. [\#57](https://github.com/cmderdev/cmder/issues/57) -- cmder doesn't work with gvim [\#55](https://github.com/cmderdev/cmder/issues/55) -- vendor\msysgit\libexec\git-core dir contains 1.45mb git.exe duplicated 110 times. [\#54](https://github.com/cmderdev/cmder/issues/54) -- "terminal is not fully functional" [\#50](https://github.com/cmderdev/cmder/issues/50) -- Open new tab as Admin by default. [\#49](https://github.com/cmderdev/cmder/issues/49) -- Chinese characters overlapped [\#45](https://github.com/cmderdev/cmder/issues/45) -- `screen irssi`, `mutt` - Cannot find terminfo entry for 'msys'. [\#44](https://github.com/cmderdev/cmder/issues/44) -- ps doesn't work [\#43](https://github.com/cmderdev/cmder/issues/43) -- Pinning Cmder to taskbar doesn't work as expected [\#39](https://github.com/cmderdev/cmder/issues/39) -- Prompt does not work with clink 0.4 [\#35](https://github.com/cmderdev/cmder/issues/35) -- vendor/init.bat fails on paths with spaces [\#28](https://github.com/cmderdev/cmder/issues/28) -- "windows cannot find ...\cmder\vendor/conemu-maximus5/ConEmu.exe" [\#27](https://github.com/cmderdev/cmder/issues/27) -- Issue with SSH and tmux [\#25](https://github.com/cmderdev/cmder/issues/25) -- PWD, VI, VIM commands don't work on windows 7. [\#23](https://github.com/cmderdev/cmder/issues/23) -- Include icon [\#21](https://github.com/cmderdev/cmder/issues/21) -- init.bat failing on Vista x64 [\#19](https://github.com/cmderdev/cmder/issues/19) -- Not possible to write @ on Norwegian keyboard [\#17](https://github.com/cmderdev/cmder/issues/17) -- Weird output when starting cmder [\#16](https://github.com/cmderdev/cmder/issues/16) -- Set a name for the Tab on a task [\#14](https://github.com/cmderdev/cmder/issues/14) -- Git branch name [\#13](https://github.com/cmderdev/cmder/issues/13) -- bin directories not loaded in path [\#12](https://github.com/cmderdev/cmder/issues/12) -- Cmder ssh keys for github [\#11](https://github.com/cmderdev/cmder/issues/11) -- How to use cmder with integration mode [\#10](https://github.com/cmderdev/cmder/issues/10) -- tab manipulation problem [\#9](https://github.com/cmderdev/cmder/issues/9) -- Remove ugly black startup window [\#8](https://github.com/cmderdev/cmder/issues/8) -- Unable to `cd` to another drive [\#6](https://github.com/cmderdev/cmder/issues/6) -- cant change start directory [\#4](https://github.com/cmderdev/cmder/issues/4) -- lalt + arrow left/right not working as a macro hotkey [\#3](https://github.com/cmderdev/cmder/issues/3) -- alt gr + 2 opens new powershell [\#2](https://github.com/cmderdev/cmder/issues/2) -- Gvim preferences are not used in {cmd} [\#1](https://github.com/cmderdev/cmder/issues/1) +* 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 \/cmd instead of \/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) +* % variable expansion in config/alias [\#791](https://github.com/cmderdev/cmder/issues/791) +* Problems with node [\#790](https://github.com/cmderdev/cmder/issues/790) +* Resizing adds new lines [\#789](https://github.com/cmderdev/cmder/issues/789) +* 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) +* e. shortcut not working ? [\#712](https://github.com/cmderdev/cmder/issues/712) +* "Cmder here" doesn't work if set start-up dir [\#709](https://github.com/cmderdev/cmder/issues/709) +* Is cmder support scrolling with touch screen? [\#706](https://github.com/cmderdev/cmder/issues/706) +* npm_prompt.lua:11: attempt to concatenate local 'package_version' \(a nil value\) [\#700](https://github.com/cmderdev/cmder/issues/700) +* Cmder \(cmd.exe\) startup crashes at clink step [\#699](https://github.com/cmderdev/cmder/issues/699) +* Doesn't run cmder.exe [\#696](https://github.com/cmderdev/cmder/issues/696) +* Not getting git status in 1.2.9 prompt [\#692](https://github.com/cmderdev/cmder/issues/692) +* 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) +* Restore last session with history on start [\#672](https://github.com/cmderdev/cmder/issues/672) +* Restart As Admin bug [\#669](https://github.com/cmderdev/cmder/issues/669) +* git for windows 2.6.1 ssh folder [\#661](https://github.com/cmderdev/cmder/issues/661) +* der [\#660](https://github.com/cmderdev/cmder/issues/660) +* Cannot clean the terminal [\#659](https://github.com/cmderdev/cmder/issues/659) +* Cmder do not run if username has spaces between [\#658](https://github.com/cmderdev/cmder/issues/658) +* When exiting vim, cursor goes to first line of terminal instead of the end of it [\#656](https://github.com/cmderdev/cmder/issues/656) +* Cmder suddenly start crashing on startup [\#650](https://github.com/cmderdev/cmder/issues/650) +* Cannot switch to mapped network drive [\#649](https://github.com/cmderdev/cmder/issues/649) +* Ctrl + D? [\#648](https://github.com/cmderdev/cmder/issues/648) +* 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) +* Problem with install on window 7? [\#637](https://github.com/cmderdev/cmder/issues/637) +* 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) +* 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) +* No Unix commands? [\#610](https://github.com/cmderdev/cmder/issues/610) +* using user installed git \(2.5\) with the suggested /bin/agent.cmd does not work [\#609](https://github.com/cmderdev/cmder/issues/609) +* vendor/init.bat is overwritten with new versions -\> use a user startup file? [\#608](https://github.com/cmderdev/cmder/issues/608) +* Git autocomplete is not working as in git bash [\#607](https://github.com/cmderdev/cmder/issues/607) +* api-ms-win-crt-runtime-l1-1-0.dll is missing error \(Windows 8.1\) [\#604](https://github.com/cmderdev/cmder/issues/604) +* Prevent inactive cmder windows to be dimmed [\#603](https://github.com/cmderdev/cmder/issues/603) +* Git for Windows 2.5 [\#602](https://github.com/cmderdev/cmder/issues/602) +* Incompatibility with conemu 150716+ / double pinned icon on taskbar [\#599](https://github.com/cmderdev/cmder/issues/599) +* Cant get it working on windows xp [\#598](https://github.com/cmderdev/cmder/issues/598) +* ls parameters error in Windows 10 [\#597](https://github.com/cmderdev/cmder/issues/597) +* Resizing split windows [\#596](https://github.com/cmderdev/cmder/issues/596) +* 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) +* Downloads for v1.2 missing DLLs [\#558](https://github.com/cmderdev/cmder/issues/558) +* Can't get rid of "unrecognized parameter" error [\#557](https://github.com/cmderdev/cmder/issues/557) +* How to use cmder in a batch file? [\#556](https://github.com/cmderdev/cmder/issues/556) +* Run init.bat before any new scripts [\#554](https://github.com/cmderdev/cmder/issues/554) +* ssh not working [\#552](https://github.com/cmderdev/cmder/issues/552) +* Restore opened tabs setting opens root drive [\#551](https://github.com/cmderdev/cmder/issues/551) +* Maximize single view/terminal/console to whole window [\#550](https://github.com/cmderdev/cmder/issues/550) +* not run successfully [\#547](https://github.com/cmderdev/cmder/issues/547) +* compass not working with cmder ? [\#546](https://github.com/cmderdev/cmder/issues/546) +* Bad unicode support \(wrong glyphs on alsamixer\) [\#545](https://github.com/cmderdev/cmder/issues/545) +* 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) +* Symantec refuses to access cmder [\#484](https://github.com/cmderdev/cmder/issues/484) +* Missing MSVCP140.dll [\#480](https://github.com/cmderdev/cmder/issues/480) +* Windows 10 compatibility issues [\#478](https://github.com/cmderdev/cmder/issues/478) +* update msysgit [\#473](https://github.com/cmderdev/cmder/issues/473) +* Notifications about composer.json and CRLF [\#472](https://github.com/cmderdev/cmder/issues/472) +* How to add more commands beyond mysisgit? [\#470](https://github.com/cmderdev/cmder/issues/470) +* ~ should mean user home directory [\#466](https://github.com/cmderdev/cmder/issues/466) +* mklink /d creates symlink with wrong slashes [\#462](https://github.com/cmderdev/cmder/issues/462) +* Does cmder come with GCC or not? [\#461](https://github.com/cmderdev/cmder/issues/461) +* Question: How to start cmder with a command [\#457](https://github.com/cmderdev/cmder/issues/457) +* PATH environment variable has space problem [\#456](https://github.com/cmderdev/cmder/issues/456) +* Feature Request : Save opened tabs and locations of the tabs [\#455](https://github.com/cmderdev/cmder/issues/455) +* Error on cmder launch: "The syntax of the command is incorrect" [\#454](https://github.com/cmderdev/cmder/issues/454) +* Lag returning to prompt \(especially\) in git repo [\#447](https://github.com/cmderdev/cmder/issues/447) +* 'MySQL' is not recognized as an internal or external command, operable program or batch file. [\#443](https://github.com/cmderdev/cmder/issues/443) +* Not scaling on Windows 8.1 with High-DPI Monitor [\#437](https://github.com/cmderdev/cmder/issues/437) +* Shortcut missing icon in context menu [\#433](https://github.com/cmderdev/cmder/issues/433) +* How to update Git? [\#428](https://github.com/cmderdev/cmder/issues/428) +* How to redirect Window's cmd.exe to Cmder's cmder.exe? [\#426](https://github.com/cmderdev/cmder/issues/426) +* cmder exits with exitcode 4294967295 [\#423](https://github.com/cmderdev/cmder/issues/423) +* How do you create an alias? [\#421](https://github.com/cmderdev/cmder/issues/421) +* Git pull not working [\#419](https://github.com/cmderdev/cmder/issues/419) +* Create files from cmder. [\#417](https://github.com/cmderdev/cmder/issues/417) +* Error popup window on opening [\#416](https://github.com/cmderdev/cmder/issues/416) +* 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) +* UI broken characters [\#375](https://github.com/cmderdev/cmder/issues/375) +* Possible to change TSA icon? [\#373](https://github.com/cmderdev/cmder/issues/373) +* 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) +* How to reload system variable [\#340](https://github.com/cmderdev/cmder/issues/340) +* SVN commands support [\#339](https://github.com/cmderdev/cmder/issues/339) +* Is it possible to show the current folder in front of cursor on the current line? [\#338](https://github.com/cmderdev/cmder/issues/338) +* backspace not work [\#334](https://github.com/cmderdev/cmder/issues/334) +* 'awk' is not recognized [\#330](https://github.com/cmderdev/cmder/issues/330) +* Cannot pin 1.1.4.1 to Win7 taskbar [\#329](https://github.com/cmderdev/cmder/issues/329) +* {lamb} instead of lambda sign \(possibly a UTF-8 problem?\) [\#322](https://github.com/cmderdev/cmder/issues/322) +* Instructions refer to Cmder.bat but it doesn't exist in download .zip [\#319](https://github.com/cmderdev/cmder/issues/319) +* Wrong link on cmder.net for msysgit [\#317](https://github.com/cmderdev/cmder/issues/317) +* 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) +* Can't start cmder 1.4.1.1 [\#252](https://github.com/cmderdev/cmder/issues/252) +* Cmder icon reverts to ConEmu icon when "Startup options" option is changed [\#251](https://github.com/cmderdev/cmder/issues/251) +* Old version files in v1.1.4 release archives [\#247](https://github.com/cmderdev/cmder/issues/247) +* "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) +* Add link to bliker.github.io/cmder to repo description/website [\#134](https://github.com/cmderdev/cmder/issues/134) +* Environmental variables are not reloaded on new console [\#132](https://github.com/cmderdev/cmder/issues/132) +* Git Branch Autocomplete [\#130](https://github.com/cmderdev/cmder/issues/130) +* The nice lambda left me :\( [\#129](https://github.com/cmderdev/cmder/issues/129) +* `ls` with output redirection writes ansi escape sequences to destination file [\#127](https://github.com/cmderdev/cmder/issues/127) +* Lamba prompt and git status scripts not running [\#126](https://github.com/cmderdev/cmder/issues/126) +* how to open specail directory? in sublime Terminal plugin? [\#123](https://github.com/cmderdev/cmder/issues/123) +* clink installed allready cmder hangs after install [\#122](https://github.com/cmderdev/cmder/issues/122) +* "The system cannot find the path specified" [\#121](https://github.com/cmderdev/cmder/issues/121) +* "chcp 65001" \(UTF-8\) support for cmd [\#119](https://github.com/cmderdev/cmder/issues/119) +* Incorrect version of clink is being used [\#117](https://github.com/cmderdev/cmder/issues/117) +* .bash_profile equivalent? [\#113](https://github.com/cmderdev/cmder/issues/113) +* Startup directory on new tab [\#112](https://github.com/cmderdev/cmder/issues/112) +* Looking for a contributor/Cmder user [\#110](https://github.com/cmderdev/cmder/issues/110) +* Terminate batch job bug \(I think?\) [\#108](https://github.com/cmderdev/cmder/issues/108) +* latin1 characters [\#107](https://github.com/cmderdev/cmder/issues/107) +* Script cleanup [\#105](https://github.com/cmderdev/cmder/issues/105) +* Changed "λ" to "?" [\#104](https://github.com/cmderdev/cmder/issues/104) +* How to search history using PgUp and PgDown [\#103](https://github.com/cmderdev/cmder/issues/103) +* Folder shortcuts doesn't seem to work in FAR manager under cmder [\#102](https://github.com/cmderdev/cmder/issues/102) +* opening cmder.bat on windows 8 [\#101](https://github.com/cmderdev/cmder/issues/101) +* Change the builder from google code [\#99](https://github.com/cmderdev/cmder/issues/99) +* Text color not honored upon restart [\#97](https://github.com/cmderdev/cmder/issues/97) +* Launcher is not recognized as a valid Win32 application on windows XP. [\#96](https://github.com/cmderdev/cmder/issues/96) +* Allow the launcher to be pinned to the taskbar [\#95](https://github.com/cmderdev/cmder/issues/95) +* VS2013 runtime requirement [\#93](https://github.com/cmderdev/cmder/issues/93) +* git flow [\#92](https://github.com/cmderdev/cmder/issues/92) +* How to start in a given directory [\#91](https://github.com/cmderdev/cmder/issues/91) +* Can't type backslash \(clink issue\) [\#89](https://github.com/cmderdev/cmder/issues/89) +* command history [\#87](https://github.com/cmderdev/cmder/issues/87) +* Install cmder [\#86](https://github.com/cmderdev/cmder/issues/86) +* Can not work well with Chinese [\#81](https://github.com/cmderdev/cmder/issues/81) +* Does not work with Julia [\#80](https://github.com/cmderdev/cmder/issues/80) +* Build script does not work through proxy [\#79](https://github.com/cmderdev/cmder/issues/79) +* "C:\Users\bliker" reference in config/ConEmu.xml [\#71](https://github.com/cmderdev/cmder/issues/71) +* Is it possible to install wget into cmder\(clink, or ConEmu\) ? [\#69](https://github.com/cmderdev/cmder/issues/69) +* cyrillic characters problem [\#68](https://github.com/cmderdev/cmder/issues/68) +* Unable to run in Windows XP if path contains spaces [\#67](https://github.com/cmderdev/cmder/issues/67) +* Path not set correctly on Windows XP [\#66](https://github.com/cmderdev/cmder/issues/66) +* Filenames with special characters e.g. ! are not handled correctly [\#64](https://github.com/cmderdev/cmder/issues/64) +* Clink completion does not work [\#59](https://github.com/cmderdev/cmder/issues/59) +* Git hosts defined in .ssh/config not working in cmder [\#58](https://github.com/cmderdev/cmder/issues/58) +* Setting cmder startup directory. [\#57](https://github.com/cmderdev/cmder/issues/57) +* cmder doesn't work with gvim [\#55](https://github.com/cmderdev/cmder/issues/55) +* vendor\msysgit\libexec\git-core dir contains 1.45mb git.exe duplicated 110 times. [\#54](https://github.com/cmderdev/cmder/issues/54) +* "terminal is not fully functional" [\#50](https://github.com/cmderdev/cmder/issues/50) +* Open new tab as Admin by default. [\#49](https://github.com/cmderdev/cmder/issues/49) +* Chinese characters overlapped [\#45](https://github.com/cmderdev/cmder/issues/45) +* `screen irssi`, `mutt` - Cannot find terminfo entry for 'msys'. [\#44](https://github.com/cmderdev/cmder/issues/44) +* ps doesn't work [\#43](https://github.com/cmderdev/cmder/issues/43) +* Pinning Cmder to taskbar doesn't work as expected [\#39](https://github.com/cmderdev/cmder/issues/39) +* Prompt does not work with clink 0.4 [\#35](https://github.com/cmderdev/cmder/issues/35) +* vendor/init.bat fails on paths with spaces [\#28](https://github.com/cmderdev/cmder/issues/28) +* "windows cannot find ...\cmder\vendor/conemu-maximus5/ConEmu.exe" [\#27](https://github.com/cmderdev/cmder/issues/27) +* Issue with SSH and tmux [\#25](https://github.com/cmderdev/cmder/issues/25) +* PWD, VI, VIM commands don't work on windows 7. [\#23](https://github.com/cmderdev/cmder/issues/23) +* Include icon [\#21](https://github.com/cmderdev/cmder/issues/21) +* init.bat failing on Vista x64 [\#19](https://github.com/cmderdev/cmder/issues/19) +* Not possible to write @ on Norwegian keyboard [\#17](https://github.com/cmderdev/cmder/issues/17) +* Weird output when starting cmder [\#16](https://github.com/cmderdev/cmder/issues/16) +* Set a name for the Tab on a task [\#14](https://github.com/cmderdev/cmder/issues/14) +* Git branch name [\#13](https://github.com/cmderdev/cmder/issues/13) +* bin directories not loaded in path [\#12](https://github.com/cmderdev/cmder/issues/12) +* Cmder ssh keys for github [\#11](https://github.com/cmderdev/cmder/issues/11) +* How to use cmder with integration mode [\#10](https://github.com/cmderdev/cmder/issues/10) +* tab manipulation problem [\#9](https://github.com/cmderdev/cmder/issues/9) +* Remove ugly black startup window [\#8](https://github.com/cmderdev/cmder/issues/8) +* Unable to `cd` to another drive [\#6](https://github.com/cmderdev/cmder/issues/6) +* cant change start directory [\#4](https://github.com/cmderdev/cmder/issues/4) +* lalt + arrow left/right not working as a macro hotkey [\#3](https://github.com/cmderdev/cmder/issues/3) +* alt gr + 2 opens new powershell [\#2](https://github.com/cmderdev/cmder/issues/2) +* Gvim preferences are not used in {cmd} [\#1](https://github.com/cmderdev/cmder/issues/1) **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)) -- Fixed get\_git\_dir\(\) to take submodules into account. Fixes \#833 [\#841](https://github.com/cmderdev/cmder/pull/841) ([gpakosz](https://github.com/gpakosz)) -- Add appveyor batch to README [\#837](https://github.com/cmderdev/cmder/pull/837) ([janschulz](https://github.com/janschulz)) -- Fixed checkGit\(\) in case of submodules [\#835](https://github.com/cmderdev/cmder/pull/835) ([gpakosz](https://github.com/gpakosz)) -- 1.3 Pre-Release Merge [\#831](https://github.com/cmderdev/cmder/pull/831) ([MartiUK](https://github.com/MartiUK)) -- Fix build script not exiting on msbuild failure. [\#804](https://github.com/cmderdev/cmder/pull/804) ([MartiUK](https://github.com/MartiUK)) -- Set tasks to always use CMDER\_START [\#803](https://github.com/cmderdev/cmder/pull/803) ([MartiUK](https://github.com/MartiUK)) -- Make "cmder here" work again [\#798](https://github.com/cmderdev/cmder/pull/798) ([janschulz](https://github.com/janschulz)) -- Reorganize how clink settings are loaded [\#794](https://github.com/cmderdev/cmder/pull/794) ([janschulz](https://github.com/janschulz)) -- Bump clink to 0.4.6 [\#781](https://github.com/cmderdev/cmder/pull/781) ([vladimir-kotikov](https://github.com/vladimir-kotikov)) -- Fix vendor/init.bat when the PATH contains spaces. [\#773](https://github.com/cmderdev/cmder/pull/773) ([glureau](https://github.com/glureau)) -- Merge latest development [\#771](https://github.com/cmderdev/cmder/pull/771) ([MartiUK](https://github.com/MartiUK)) -- Bump clink-completions to 0.2.2 [\#766](https://github.com/cmderdev/cmder/pull/766) ([vladimir-kotikov](https://github.com/vladimir-kotikov)) -- Fix: don't garble the input line for long lines in git projects [\#756](https://github.com/cmderdev/cmder/pull/756) ([janschulz](https://github.com/janschulz)) -- README.md Updates [\#746](https://github.com/cmderdev/cmder/pull/746) ([daxgames](https://github.com/daxgames)) -- Cmder exinit [\#740](https://github.com/cmderdev/cmder/pull/740) ([daxgames](https://github.com/daxgames)) -- added config\user-\* to packignore [\#738](https://github.com/cmderdev/cmder/pull/738) ([daxgames](https://github.com/daxgames)) -- Use consistent naming: user-profile.{sh|bat|ps1} [\#737](https://github.com/cmderdev/cmder/pull/737) ([janschulz](https://github.com/janschulz)) -- More config [\#736](https://github.com/cmderdev/cmder/pull/736) ([janschulz](https://github.com/janschulz)) -- Do not overwrite aliases on update [\#735](https://github.com/cmderdev/cmder/pull/735) ([janschulz](https://github.com/janschulz)) -- Added check for git install path in init.bat. [\#734](https://github.com/cmderdev/cmder/pull/734) ([chase-miller](https://github.com/chase-miller)) -- Fix icons [\#731](https://github.com/cmderdev/cmder/pull/731) ([daxgames](https://github.com/daxgames)) -- Fixed - Powershell vim/vim alias opening a new tab when editing a file [\#729](https://github.com/cmderdev/cmder/pull/729) ([daxgames](https://github.com/daxgames)) -- Added vi/vim aliases and fixed powershell startup errors [\#726](https://github.com/cmderdev/cmder/pull/726) ([daxgames](https://github.com/daxgames)) -- Release 1.3 [\#723](https://github.com/cmderdev/cmder/pull/723) ([MartiUK](https://github.com/MartiUK)) -- Update to conemu 151119 [\#722](https://github.com/cmderdev/cmder/pull/722) ([MartiUK](https://github.com/MartiUK)) -- Disable appveyor test search [\#720](https://github.com/cmderdev/cmder/pull/720) ([MartiUK](https://github.com/MartiUK)) -- Fix gitter webhook [\#719](https://github.com/cmderdev/cmder/pull/719) ([MartiUK](https://github.com/MartiUK)) -- Publish appveyor artefacts [\#718](https://github.com/cmderdev/cmder/pull/718) ([MartiUK](https://github.com/MartiUK)) -- add bundled vim to path [\#705](https://github.com/cmderdev/cmder/pull/705) ([wenzowski](https://github.com/wenzowski)) -- Fix batch files [\#698](https://github.com/cmderdev/cmder/pull/698) ([daxgames](https://github.com/daxgames)) -- Speed up git prompt filtering [\#697](https://github.com/cmderdev/cmder/pull/697) ([vladimir-kotikov](https://github.com/vladimir-kotikov)) -- Upgrade clink-completions to 0.2.1 [\#676](https://github.com/cmderdev/cmder/pull/676) ([vladimir-kotikov](https://github.com/vladimir-kotikov)) -- Enable the '/single' switch \(\#577\) [\#673](https://github.com/cmderdev/cmder/pull/673) ([DoCode](https://github.com/DoCode)) -- Fixed problem with Invoke-Expression [\#667](https://github.com/cmderdev/cmder/pull/667) ([Pireax](https://github.com/Pireax)) -- Add user startup file for powershell [\#666](https://github.com/cmderdev/cmder/pull/666) ([Pireax](https://github.com/Pireax)) -- Build from behind proxy & appveyor [\#665](https://github.com/cmderdev/cmder/pull/665) ([MartiUK](https://github.com/MartiUK)) -- Fix init.bat generation [\#663](https://github.com/cmderdev/cmder/pull/663) ([janschulz](https://github.com/janschulz)) -- Upgrade clink-completions to 0.2.0 [\#653](https://github.com/cmderdev/cmder/pull/653) ([vladimir-kotikov](https://github.com/vladimir-kotikov)) -- Make wording clearer [\#652](https://github.com/cmderdev/cmder/pull/652) ([jkingsman](https://github.com/jkingsman)) -- fix typos and better phrasing [\#651](https://github.com/cmderdev/cmder/pull/651) ([jkingsman](https://github.com/jkingsman)) -- Revert 8b8f98c [\#634](https://github.com/cmderdev/cmder/pull/634) ([Stanzilla](https://github.com/Stanzilla)) -- Update clink to 0.4.5 [\#619](https://github.com/cmderdev/cmder/pull/619) ([Stanzilla](https://github.com/Stanzilla)) -- Add a user startup file which can be modified [\#612](https://github.com/cmderdev/cmder/pull/612) ([janschulz](https://github.com/janschulz)) -- Update README.md [\#606](https://github.com/cmderdev/cmder/pull/606) ([pyprism](https://github.com/pyprism)) -- Converting msysgit support to git-for-windows support. [\#605](https://github.com/cmderdev/cmder/pull/605) ([Stanzilla](https://github.com/Stanzilla)) -- :arrow\_up: ConEmu@150816 [\#601](https://github.com/cmderdev/cmder/pull/601) ([Stanzilla](https://github.com/Stanzilla)) -- Use standard path for ConEmu.xml [\#600](https://github.com/cmderdev/cmder/pull/600) ([Maximus5](https://github.com/Maximus5)) -- Revert "Run PowerShell as default" [\#585](https://github.com/cmderdev/cmder/pull/585) ([Stanzilla](https://github.com/Stanzilla)) -- update VS to 2015 release version and switch to /MT for static linking [\#578](https://github.com/cmderdev/cmder/pull/578) ([Stanzilla](https://github.com/Stanzilla)) -- Enhance Path in profile.ps1 [\#575](https://github.com/cmderdev/cmder/pull/575) ([Bobo1239](https://github.com/Bobo1239)) -- Fixed: 'Enable-GitColors is Obsolete...' warning [\#569](https://github.com/cmderdev/cmder/pull/569) ([eeree](https://github.com/eeree)) -- Update .gitignore [\#548](https://github.com/cmderdev/cmder/pull/548) ([thomgit](https://github.com/thomgit)) -- Add `-ExecutionPolicy Bypass` to powershell tasks [\#543](https://github.com/cmderdev/cmder/pull/543) ([malobre](https://github.com/malobre)) -- Remove depreciated Enable-GitColors in posh-git [\#517](https://github.com/cmderdev/cmder/pull/517) ([bondz](https://github.com/bondz)) -- Fix cleanup script. [\#479](https://github.com/cmderdev/cmder/pull/479) ([MartiUK](https://github.com/MartiUK)) -- Fix link to msysgit's site. Google's repo was moved or removed. [\#465](https://github.com/cmderdev/cmder/pull/465) ([TheMolkaPL](https://github.com/TheMolkaPL)) -- Update sources.json [\#451](https://github.com/cmderdev/cmder/pull/451) ([MartiUK](https://github.com/MartiUK)) -- Merge development into master for 1.2 [\#450](https://github.com/cmderdev/cmder/pull/450) ([MartiUK](https://github.com/MartiUK)) -- Helper function using powershell to register the cmder context menu [\#441](https://github.com/cmderdev/cmder/pull/441) ([Jackbennett](https://github.com/Jackbennett)) -- git and Posh-git check [\#440](https://github.com/cmderdev/cmder/pull/440) ([Jackbennett](https://github.com/Jackbennett)) -- Improves performance of prompt filtering [\#438](https://github.com/cmderdev/cmder/pull/438) ([vladimir-kotikov](https://github.com/vladimir-kotikov)) -- Preview PR for including external completions into Cmder [\#434](https://github.com/cmderdev/cmder/pull/434) ([vladimir-kotikov](https://github.com/vladimir-kotikov)) -- Revert new line from commit dc834cc28f [\#432](https://github.com/cmderdev/cmder/pull/432) ([Jackbennett](https://github.com/Jackbennett)) -- Leverage the Module Autoload path and save doing it ourselves. [\#431](https://github.com/cmderdev/cmder/pull/431) ([Jackbennett](https://github.com/Jackbennett)) -- Adds support for PS 4.0 native hash command to remove a dependency [\#430](https://github.com/cmderdev/cmder/pull/430) ([Jackbennett](https://github.com/Jackbennett)) -- Fix build script removing a trailing comma. Download into a temp folder. [\#429](https://github.com/cmderdev/cmder/pull/429) ([Jackbennett](https://github.com/Jackbennett)) -- Update clink url [\#425](https://github.com/cmderdev/cmder/pull/425) ([danneu](https://github.com/danneu)) -- Added git shell task. [\#422](https://github.com/cmderdev/cmder/pull/422) ([ragekit](https://github.com/ragekit)) -- Public site docs update matching the repo readme [\#411](https://github.com/cmderdev/cmder/pull/411) ([Jackbennett](https://github.com/Jackbennett)) -- Install steps clarity [\#410](https://github.com/cmderdev/cmder/pull/410) ([Jackbennett](https://github.com/Jackbennett)) -- Update Conemu \, update clink 4.4 [\#407](https://github.com/cmderdev/cmder/pull/407) ([Jackbennett](https://github.com/Jackbennett)) -- Use a -Full parameter to download all sources rather than the minimum [\#406](https://github.com/cmderdev/cmder/pull/406) ([Jackbennett](https://github.com/Jackbennett)) -- Adding mercuial prompt [\#401](https://github.com/cmderdev/cmder/pull/401) ([utek](https://github.com/utek)) -- Handle quoted paths [\#398](https://github.com/cmderdev/cmder/pull/398) ([mikesigs](https://github.com/mikesigs)) -- Add a Gitter chat badge to README.md [\#390](https://github.com/cmderdev/cmder/pull/390) ([gitter-badger](https://github.com/gitter-badger)) -- Support UTF-8 file list [\#378](https://github.com/cmderdev/cmder/pull/378) ([asika32764](https://github.com/asika32764)) -- Updated vendor references [\#374](https://github.com/cmderdev/cmder/pull/374) ([CumpsD](https://github.com/CumpsD)) -- Prefer user installed git over cmder one. [\#364](https://github.com/cmderdev/cmder/pull/364) ([narnaud](https://github.com/narnaud)) -- Update clink to latest \(0.4.3\) version [\#362](https://github.com/cmderdev/cmder/pull/362) ([vladimir-kotikov](https://github.com/vladimir-kotikov)) -- Rework `alias` command to not to use external tools [\#358](https://github.com/cmderdev/cmder/pull/358) ([vladimir-kotikov](https://github.com/vladimir-kotikov)) -- Updating to msysgit 1.9.5 [\#353](https://github.com/cmderdev/cmder/pull/353) ([Celeo](https://github.com/Celeo)) -- Adding script to enable SSH-agent \#193 [\#352](https://github.com/cmderdev/cmder/pull/352) ([ogrim](https://github.com/ogrim)) -- Docs update for issue \#319 [\#337](https://github.com/cmderdev/cmder/pull/337) ([Jackbennett](https://github.com/Jackbennett)) -- changes copied from PR\#256 [\#326](https://github.com/cmderdev/cmder/pull/326) ([kohenkatz](https://github.com/kohenkatz)) -- Border less window mode [\#324](https://github.com/cmderdev/cmder/pull/324) ([cgrail](https://github.com/cgrail)) -- Update alias.bat to show an existing alias [\#314](https://github.com/cmderdev/cmder/pull/314) ([glucas](https://github.com/glucas)) -- Add an unalias command [\#313](https://github.com/cmderdev/cmder/pull/313) ([glucas](https://github.com/glucas)) -- Revert "Add single mode support." [\#312](https://github.com/cmderdev/cmder/pull/312) ([MartiUK](https://github.com/MartiUK)) -- FIX CMDER\_ROOT for admin launch [\#311](https://github.com/cmderdev/cmder/pull/311) ([sescandell](https://github.com/sescandell)) -- Lambda color in powershell was changed to DarkGray [\#308](https://github.com/cmderdev/cmder/pull/308) ([SheGe](https://github.com/SheGe)) -- Add option to reload aliases from file [\#304](https://github.com/cmderdev/cmder/pull/304) ([glucas](https://github.com/glucas)) -- Clean aliases script [\#300](https://github.com/cmderdev/cmder/pull/300) ([melku](https://github.com/melku)) -- Adding history alias [\#299](https://github.com/cmderdev/cmder/pull/299) ([robgithub](https://github.com/robgithub)) -- Fixes the ambiguity about notice and parameter [\#298](https://github.com/cmderdev/cmder/pull/298) ([LeoColomb](https://github.com/LeoColomb)) -- Fixed small issue in README [\#296](https://github.com/cmderdev/cmder/pull/296) ([brunowego](https://github.com/brunowego)) -- Fixes small Powershell' loader issues [\#273](https://github.com/cmderdev/cmder/pull/273) ([LeoColomb](https://github.com/LeoColomb)) -- Update Dev Branch [\#272](https://github.com/cmderdev/cmder/pull/272) ([MartiUK](https://github.com/MartiUK)) -- Add custom loader for Powershell & improve its implementation [\#271](https://github.com/cmderdev/cmder/pull/271) ([LeoColomb](https://github.com/LeoColomb)) -- Add single mode support. [\#256](https://github.com/cmderdev/cmder/pull/256) ([TheCjw](https://github.com/TheCjw)) -- Revert "Start in the HOME folder." [\#253](https://github.com/cmderdev/cmder/pull/253) ([MartiUK](https://github.com/MartiUK)) -- Ensure-Exists is necessary for build.ps1, add it back. [\#249](https://github.com/cmderdev/cmder/pull/249) ([narnaud](https://github.com/narnaud)) -- Fix clink version [\#244](https://github.com/cmderdev/cmder/pull/244) ([narnaud](https://github.com/narnaud)) -- Start in the HOME folder. [\#243](https://github.com/cmderdev/cmder/pull/243) ([narnaud](https://github.com/narnaud)) -- The latest msysgit comes with vim 7.4. [\#241](https://github.com/cmderdev/cmder/pull/241) ([narnaud](https://github.com/narnaud)) -- Bump versions [\#208](https://github.com/cmderdev/cmder/pull/208) ([MartiUK](https://github.com/MartiUK)) -- New section for user help with an integration feature of Cmder. [\#199](https://github.com/cmderdev/cmder/pull/199) ([Jackbennett](https://github.com/Jackbennett)) -- Fix typos [\#198](https://github.com/cmderdev/cmder/pull/198) ([mtsk](https://github.com/mtsk)) -- Update Clink URL [\#180](https://github.com/cmderdev/cmder/pull/180) ([CoolOppo](https://github.com/CoolOppo)) -- Try to find 7-zip if it's installed before an error. [\#177](https://github.com/cmderdev/cmder/pull/177) ([Jackbennett](https://github.com/Jackbennett)) -- Update clink hyperlink [\#173](https://github.com/cmderdev/cmder/pull/173) ([gmsantos](https://github.com/gmsantos)) -- Typo fix [\#172](https://github.com/cmderdev/cmder/pull/172) ([robinbijlani](https://github.com/robinbijlani)) -- Only cd to $HOME if started in CMDER\_ROOT. [\#167](https://github.com/cmderdev/cmder/pull/167) ([schlamar](https://github.com/schlamar)) -- Find cmder files when running as Administrator. [\#166](https://github.com/cmderdev/cmder/pull/166) ([glucas](https://github.com/glucas)) -- Allow for existing HOME variable [\#165](https://github.com/cmderdev/cmder/pull/165) ([glucas](https://github.com/glucas)) -- Minor changes for \#152 [\#162](https://github.com/cmderdev/cmder/pull/162) ([Jackbennett](https://github.com/Jackbennett)) -- Add registration for right-click on folder item; Add context-menu icon [\#159](https://github.com/cmderdev/cmder/pull/159) ([kohenkatz](https://github.com/kohenkatz)) -- Getting the build script to a working state [\#157](https://github.com/cmderdev/cmder/pull/157) ([Jackbennett](https://github.com/Jackbennett)) -- Update index.html [\#145](https://github.com/cmderdev/cmder/pull/145) ([CoolOppo](https://github.com/CoolOppo)) -- Update fast new tab shortcut in gh-pages/index.html [\#131](https://github.com/cmderdev/cmder/pull/131) ([sopel](https://github.com/sopel)) -- Update links on the webpage to latest version. [\#111](https://github.com/cmderdev/cmder/pull/111) ([sc0tt](https://github.com/sc0tt)) -- Update fast new tab shortcut in README. [\#98](https://github.com/cmderdev/cmder/pull/98) ([jcheng31](https://github.com/jcheng31)) -- Make application use Cmder icon [\#88](https://github.com/cmderdev/cmder/pull/88) ([sc0tt](https://github.com/sc0tt)) -- Git exe Cleanup. [\#85](https://github.com/cmderdev/cmder/pull/85) ([MartiUK](https://github.com/MartiUK)) -- Fixed errors and grammar in README files. [\#78](https://github.com/cmderdev/cmder/pull/78) ([sicil1ano](https://github.com/sicil1ano)) -- Fixed a couple tiny typos in the readme [\#77](https://github.com/cmderdev/cmder/pull/77) ([jdsumsion](https://github.com/jdsumsion)) -- Change TERM from msys to cygwin. [\#75](https://github.com/cmderdev/cmder/pull/75) ([brkc](https://github.com/brkc)) -- Removed "C:\Users\bliker" reference in config/ConEmu.xml [\#74](https://github.com/cmderdev/cmder/pull/74) ([MartiUK](https://github.com/MartiUK)) -- Updated links on gh-pages to newer release of cmder [\#70](https://github.com/cmderdev/cmder/pull/70) ([MartiUK](https://github.com/MartiUK)) -- Add launcher [\#62](https://github.com/cmderdev/cmder/pull/62) ([austinwagner](https://github.com/austinwagner)) -- Remove wget dependency and verify existence of 7z.exe in build script [\#60](https://github.com/cmderdev/cmder/pull/60) ([austinwagner](https://github.com/austinwagner)) -- Allow use of Vim from msysgit. [\#51](https://github.com/cmderdev/cmder/pull/51) ([MartiUK](https://github.com/MartiUK)) -- Fix line ending handling if autocrlf is false. [\#34](https://github.com/cmderdev/cmder/pull/34) ([schlamar](https://github.com/schlamar)) -- Fix spelling in init.bat [\#32](https://github.com/cmderdev/cmder/pull/32) ([Shoozza](https://github.com/Shoozza)) -- Added minimal validation and usage help. [\#26](https://github.com/cmderdev/cmder/pull/26) ([Vivix](https://github.com/Vivix)) -- Fix spelling [\#22](https://github.com/cmderdev/cmder/pull/22) ([Shoozza](https://github.com/Shoozza)) -- Proofreading index.html [\#20](https://github.com/cmderdev/cmder/pull/20) ([manolomartinez](https://github.com/manolomartinez)) -- Fixed grammar [\#18](https://github.com/cmderdev/cmder/pull/18) ([tonylau](https://github.com/tonylau)) -- Fixed issue when rootDir contains spaces. [\#15](https://github.com/cmderdev/cmder/pull/15) ([jyggen](https://github.com/jyggen)) -- Another typo. Fixed link to msysgit. [\#7](https://github.com/cmderdev/cmder/pull/7) ([BeingTomGreen](https://github.com/BeingTomGreen)) -- minor typo fix [\#5](https://github.com/cmderdev/cmder/pull/5) ([BeingTomGreen](https://github.com/BeingTomGreen)) +* 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)) +* Fixed get_git_dir\(\) to take submodules into account. Fixes \#833 [\#841](https://github.com/cmderdev/cmder/pull/841) ([gpakosz](https://github.com/gpakosz)) +* Add appveyor batch to README [\#837](https://github.com/cmderdev/cmder/pull/837) ([janschulz](https://github.com/janschulz)) +* Fixed checkGit\(\) in case of submodules [\#835](https://github.com/cmderdev/cmder/pull/835) ([gpakosz](https://github.com/gpakosz)) +* 1.3 Pre-Release Merge [\#831](https://github.com/cmderdev/cmder/pull/831) ([MartiUK](https://github.com/MartiUK)) +* Fix build script not exiting on msbuild failure. [\#804](https://github.com/cmderdev/cmder/pull/804) ([MartiUK](https://github.com/MartiUK)) +* Set tasks to always use CMDER_START [\#803](https://github.com/cmderdev/cmder/pull/803) ([MartiUK](https://github.com/MartiUK)) +* Make "cmder here" work again [\#798](https://github.com/cmderdev/cmder/pull/798) ([janschulz](https://github.com/janschulz)) +* Reorganize how clink settings are loaded [\#794](https://github.com/cmderdev/cmder/pull/794) ([janschulz](https://github.com/janschulz)) +* Bump clink to 0.4.6 [\#781](https://github.com/cmderdev/cmder/pull/781) ([vladimir-kotikov](https://github.com/vladimir-kotikov)) +* Fix vendor/init.bat when the PATH contains spaces. [\#773](https://github.com/cmderdev/cmder/pull/773) ([glureau](https://github.com/glureau)) +* Merge latest development [\#771](https://github.com/cmderdev/cmder/pull/771) ([MartiUK](https://github.com/MartiUK)) +* Bump clink-completions to 0.2.2 [\#766](https://github.com/cmderdev/cmder/pull/766) ([vladimir-kotikov](https://github.com/vladimir-kotikov)) +* Fix: don't garble the input line for long lines in git projects [\#756](https://github.com/cmderdev/cmder/pull/756) ([janschulz](https://github.com/janschulz)) +* README.md Updates [\#746](https://github.com/cmderdev/cmder/pull/746) ([daxgames](https://github.com/daxgames)) +* Cmder exinit [\#740](https://github.com/cmderdev/cmder/pull/740) ([daxgames](https://github.com/daxgames)) +* added config\user-\* to packignore [\#738](https://github.com/cmderdev/cmder/pull/738) ([daxgames](https://github.com/daxgames)) +* Use consistent naming: user-profile.{sh|bat|ps1} [\#737](https://github.com/cmderdev/cmder/pull/737) ([janschulz](https://github.com/janschulz)) +* More config [\#736](https://github.com/cmderdev/cmder/pull/736) ([janschulz](https://github.com/janschulz)) +* Do not overwrite aliases on update [\#735](https://github.com/cmderdev/cmder/pull/735) ([janschulz](https://github.com/janschulz)) +* Added check for git install path in init.bat. [\#734](https://github.com/cmderdev/cmder/pull/734) ([chase-miller](https://github.com/chase-miller)) +* Fix icons [\#731](https://github.com/cmderdev/cmder/pull/731) ([daxgames](https://github.com/daxgames)) +* Fixed - Powershell vim/vim alias opening a new tab when editing a file [\#729](https://github.com/cmderdev/cmder/pull/729) ([daxgames](https://github.com/daxgames)) +* Added vi/vim aliases and fixed powershell startup errors [\#726](https://github.com/cmderdev/cmder/pull/726) ([daxgames](https://github.com/daxgames)) +* Release 1.3 [\#723](https://github.com/cmderdev/cmder/pull/723) ([MartiUK](https://github.com/MartiUK)) +* Update to conemu 151119 [\#722](https://github.com/cmderdev/cmder/pull/722) ([MartiUK](https://github.com/MartiUK)) +* Disable appveyor test search [\#720](https://github.com/cmderdev/cmder/pull/720) ([MartiUK](https://github.com/MartiUK)) +* Fix gitter webhook [\#719](https://github.com/cmderdev/cmder/pull/719) ([MartiUK](https://github.com/MartiUK)) +* Publish appveyor artefacts [\#718](https://github.com/cmderdev/cmder/pull/718) ([MartiUK](https://github.com/MartiUK)) +* add bundled vim to path [\#705](https://github.com/cmderdev/cmder/pull/705) ([wenzowski](https://github.com/wenzowski)) +* Fix batch files [\#698](https://github.com/cmderdev/cmder/pull/698) ([daxgames](https://github.com/daxgames)) +* Speed up git prompt filtering [\#697](https://github.com/cmderdev/cmder/pull/697) ([vladimir-kotikov](https://github.com/vladimir-kotikov)) +* Upgrade clink-completions to 0.2.1 [\#676](https://github.com/cmderdev/cmder/pull/676) ([vladimir-kotikov](https://github.com/vladimir-kotikov)) +* Enable the '/single' switch \(\#577\) [\#673](https://github.com/cmderdev/cmder/pull/673) ([DoCode](https://github.com/DoCode)) +* Fixed problem with Invoke-Expression [\#667](https://github.com/cmderdev/cmder/pull/667) ([Pireax](https://github.com/Pireax)) +* Add user startup file for powershell [\#666](https://github.com/cmderdev/cmder/pull/666) ([Pireax](https://github.com/Pireax)) +* Build from behind proxy & appveyor [\#665](https://github.com/cmderdev/cmder/pull/665) ([MartiUK](https://github.com/MartiUK)) +* Fix init.bat generation [\#663](https://github.com/cmderdev/cmder/pull/663) ([janschulz](https://github.com/janschulz)) +* Upgrade clink-completions to 0.2.0 [\#653](https://github.com/cmderdev/cmder/pull/653) ([vladimir-kotikov](https://github.com/vladimir-kotikov)) +* Make wording clearer [\#652](https://github.com/cmderdev/cmder/pull/652) ([jkingsman](https://github.com/jkingsman)) +* fix typos and better phrasing [\#651](https://github.com/cmderdev/cmder/pull/651) ([jkingsman](https://github.com/jkingsman)) +* Revert 8b8f98c [\#634](https://github.com/cmderdev/cmder/pull/634) ([Stanzilla](https://github.com/Stanzilla)) +* Update clink to 0.4.5 [\#619](https://github.com/cmderdev/cmder/pull/619) ([Stanzilla](https://github.com/Stanzilla)) +* Add a user startup file which can be modified [\#612](https://github.com/cmderdev/cmder/pull/612) ([janschulz](https://github.com/janschulz)) +* Update README.md [\#606](https://github.com/cmderdev/cmder/pull/606) ([pyprism](https://github.com/pyprism)) +* Converting msysgit support to git-for-windows support. [\#605](https://github.com/cmderdev/cmder/pull/605) ([Stanzilla](https://github.com/Stanzilla)) +* :arrow_up: ConEmu@150816 [\#601](https://github.com/cmderdev/cmder/pull/601) ([Stanzilla](https://github.com/Stanzilla)) +* Use standard path for ConEmu.xml [\#600](https://github.com/cmderdev/cmder/pull/600) ([Maximus5](https://github.com/Maximus5)) +* Revert "Run PowerShell as default" [\#585](https://github.com/cmderdev/cmder/pull/585) ([Stanzilla](https://github.com/Stanzilla)) +* update VS to 2015 release version and switch to /MT for static linking [\#578](https://github.com/cmderdev/cmder/pull/578) ([Stanzilla](https://github.com/Stanzilla)) +* Enhance Path in profile.ps1 [\#575](https://github.com/cmderdev/cmder/pull/575) ([Bobo1239](https://github.com/Bobo1239)) +* Fixed: 'Enable-GitColors is Obsolete...' warning [\#569](https://github.com/cmderdev/cmder/pull/569) ([eeree](https://github.com/eeree)) +* Update .gitignore [\#548](https://github.com/cmderdev/cmder/pull/548) ([thomgit](https://github.com/thomgit)) +* Add `-ExecutionPolicy Bypass` to powershell tasks [\#543](https://github.com/cmderdev/cmder/pull/543) ([malobre](https://github.com/malobre)) +* Remove depreciated Enable-GitColors in posh-git [\#517](https://github.com/cmderdev/cmder/pull/517) ([bondz](https://github.com/bondz)) +* Fix cleanup script. [\#479](https://github.com/cmderdev/cmder/pull/479) ([MartiUK](https://github.com/MartiUK)) +* Fix link to msysgit's site. Google's repo was moved or removed. [\#465](https://github.com/cmderdev/cmder/pull/465) ([TheMolkaPL](https://github.com/TheMolkaPL)) +* Update sources.json [\#451](https://github.com/cmderdev/cmder/pull/451) ([MartiUK](https://github.com/MartiUK)) +* Merge development into master for 1.2 [\#450](https://github.com/cmderdev/cmder/pull/450) ([MartiUK](https://github.com/MartiUK)) +* Helper function using powershell to register the cmder context menu [\#441](https://github.com/cmderdev/cmder/pull/441) ([Jackbennett](https://github.com/Jackbennett)) +* git and Posh-git check [\#440](https://github.com/cmderdev/cmder/pull/440) ([Jackbennett](https://github.com/Jackbennett)) +* Improves performance of prompt filtering [\#438](https://github.com/cmderdev/cmder/pull/438) ([vladimir-kotikov](https://github.com/vladimir-kotikov)) +* Preview PR for including external completions into Cmder [\#434](https://github.com/cmderdev/cmder/pull/434) ([vladimir-kotikov](https://github.com/vladimir-kotikov)) +* Revert new line from commit dc834cc28f [\#432](https://github.com/cmderdev/cmder/pull/432) ([Jackbennett](https://github.com/Jackbennett)) +* Leverage the Module Autoload path and save doing it ourselves. [\#431](https://github.com/cmderdev/cmder/pull/431) ([Jackbennett](https://github.com/Jackbennett)) +* Adds support for PS 4.0 native hash command to remove a dependency [\#430](https://github.com/cmderdev/cmder/pull/430) ([Jackbennett](https://github.com/Jackbennett)) +* Fix build script removing a trailing comma. Download into a temp folder. [\#429](https://github.com/cmderdev/cmder/pull/429) ([Jackbennett](https://github.com/Jackbennett)) +* Update clink url [\#425](https://github.com/cmderdev/cmder/pull/425) ([danneu](https://github.com/danneu)) +* Added git shell task. [\#422](https://github.com/cmderdev/cmder/pull/422) ([ragekit](https://github.com/ragekit)) +* Public site docs update matching the repo readme [\#411](https://github.com/cmderdev/cmder/pull/411) ([Jackbennett](https://github.com/Jackbennett)) +* Install steps clarity [\#410](https://github.com/cmderdev/cmder/pull/410) ([Jackbennett](https://github.com/Jackbennett)) +* Update Conemu \, update clink 4.4 [\#407](https://github.com/cmderdev/cmder/pull/407) ([Jackbennett](https://github.com/Jackbennett)) +* Use a -Full parameter to download all sources rather than the minimum [\#406](https://github.com/cmderdev/cmder/pull/406) ([Jackbennett](https://github.com/Jackbennett)) +* Adding mercuial prompt [\#401](https://github.com/cmderdev/cmder/pull/401) ([utek](https://github.com/utek)) +* Handle quoted paths [\#398](https://github.com/cmderdev/cmder/pull/398) ([mikesigs](https://github.com/mikesigs)) +* Add a Gitter chat badge to README.md [\#390](https://github.com/cmderdev/cmder/pull/390) ([gitter-badger](https://github.com/gitter-badger)) +* Support UTF-8 file list [\#378](https://github.com/cmderdev/cmder/pull/378) ([asika32764](https://github.com/asika32764)) +* Updated vendor references [\#374](https://github.com/cmderdev/cmder/pull/374) ([CumpsD](https://github.com/CumpsD)) +* Prefer user installed git over cmder one. [\#364](https://github.com/cmderdev/cmder/pull/364) ([narnaud](https://github.com/narnaud)) +* Update clink to latest \(0.4.3\) version [\#362](https://github.com/cmderdev/cmder/pull/362) ([vladimir-kotikov](https://github.com/vladimir-kotikov)) +* Rework `alias` command to not to use external tools [\#358](https://github.com/cmderdev/cmder/pull/358) ([vladimir-kotikov](https://github.com/vladimir-kotikov)) +* Updating to msysgit 1.9.5 [\#353](https://github.com/cmderdev/cmder/pull/353) ([Celeo](https://github.com/Celeo)) +* Adding script to enable SSH-agent \#193 [\#352](https://github.com/cmderdev/cmder/pull/352) ([ogrim](https://github.com/ogrim)) +* Docs update for issue \#319 [\#337](https://github.com/cmderdev/cmder/pull/337) ([Jackbennett](https://github.com/Jackbennett)) +* changes copied from PR\#256 [\#326](https://github.com/cmderdev/cmder/pull/326) ([kohenkatz](https://github.com/kohenkatz)) +* Border less window mode [\#324](https://github.com/cmderdev/cmder/pull/324) ([cgrail](https://github.com/cgrail)) +* Update alias.bat to show an existing alias [\#314](https://github.com/cmderdev/cmder/pull/314) ([glucas](https://github.com/glucas)) +* Add an unalias command [\#313](https://github.com/cmderdev/cmder/pull/313) ([glucas](https://github.com/glucas)) +* Revert "Add single mode support." [\#312](https://github.com/cmderdev/cmder/pull/312) ([MartiUK](https://github.com/MartiUK)) +* FIX CMDER_ROOT for admin launch [\#311](https://github.com/cmderdev/cmder/pull/311) ([sescandell](https://github.com/sescandell)) +* Lambda color in powershell was changed to DarkGray [\#308](https://github.com/cmderdev/cmder/pull/308) ([SheGe](https://github.com/SheGe)) +* Add option to reload aliases from file [\#304](https://github.com/cmderdev/cmder/pull/304) ([glucas](https://github.com/glucas)) +* Clean aliases script [\#300](https://github.com/cmderdev/cmder/pull/300) ([melku](https://github.com/melku)) +* Adding history alias [\#299](https://github.com/cmderdev/cmder/pull/299) ([robgithub](https://github.com/robgithub)) +* Fixes the ambiguity about notice and parameter [\#298](https://github.com/cmderdev/cmder/pull/298) ([LeoColomb](https://github.com/LeoColomb)) +* Fixed small issue in README [\#296](https://github.com/cmderdev/cmder/pull/296) ([brunowego](https://github.com/brunowego)) +* Fixes small Powershell' loader issues [\#273](https://github.com/cmderdev/cmder/pull/273) ([LeoColomb](https://github.com/LeoColomb)) +* Update Dev Branch [\#272](https://github.com/cmderdev/cmder/pull/272) ([MartiUK](https://github.com/MartiUK)) +* Add custom loader for Powershell & improve its implementation [\#271](https://github.com/cmderdev/cmder/pull/271) ([LeoColomb](https://github.com/LeoColomb)) +* Add single mode support. [\#256](https://github.com/cmderdev/cmder/pull/256) ([TheCjw](https://github.com/TheCjw)) +* Revert "Start in the HOME folder." [\#253](https://github.com/cmderdev/cmder/pull/253) ([MartiUK](https://github.com/MartiUK)) +* Ensure-Exists is necessary for build.ps1, add it back. [\#249](https://github.com/cmderdev/cmder/pull/249) ([narnaud](https://github.com/narnaud)) +* Fix clink version [\#244](https://github.com/cmderdev/cmder/pull/244) ([narnaud](https://github.com/narnaud)) +* Start in the HOME folder. [\#243](https://github.com/cmderdev/cmder/pull/243) ([narnaud](https://github.com/narnaud)) +* The latest msysgit comes with vim 7.4. [\#241](https://github.com/cmderdev/cmder/pull/241) ([narnaud](https://github.com/narnaud)) +* Bump versions [\#208](https://github.com/cmderdev/cmder/pull/208) ([MartiUK](https://github.com/MartiUK)) +* New section for user help with an integration feature of Cmder. [\#199](https://github.com/cmderdev/cmder/pull/199) ([Jackbennett](https://github.com/Jackbennett)) +* Fix typos [\#198](https://github.com/cmderdev/cmder/pull/198) ([mtsk](https://github.com/mtsk)) +* Update Clink URL [\#180](https://github.com/cmderdev/cmder/pull/180) ([CoolOppo](https://github.com/CoolOppo)) +* Try to find 7-zip if it's installed before an error. [\#177](https://github.com/cmderdev/cmder/pull/177) ([Jackbennett](https://github.com/Jackbennett)) +* Update clink hyperlink [\#173](https://github.com/cmderdev/cmder/pull/173) ([gmsantos](https://github.com/gmsantos)) +* Typo fix [\#172](https://github.com/cmderdev/cmder/pull/172) ([robinbijlani](https://github.com/robinbijlani)) +* Only cd to $HOME if started in CMDER_ROOT. [\#167](https://github.com/cmderdev/cmder/pull/167) ([schlamar](https://github.com/schlamar)) +* Find cmder files when running as Administrator. [\#166](https://github.com/cmderdev/cmder/pull/166) ([glucas](https://github.com/glucas)) +* Allow for existing HOME variable [\#165](https://github.com/cmderdev/cmder/pull/165) ([glucas](https://github.com/glucas)) +* Minor changes for \#152 [\#162](https://github.com/cmderdev/cmder/pull/162) ([Jackbennett](https://github.com/Jackbennett)) +* Add registration for right-click on folder item; Add context-menu icon [\#159](https://github.com/cmderdev/cmder/pull/159) ([kohenkatz](https://github.com/kohenkatz)) +* Getting the build script to a working state [\#157](https://github.com/cmderdev/cmder/pull/157) ([Jackbennett](https://github.com/Jackbennett)) +* Update index.html [\#145](https://github.com/cmderdev/cmder/pull/145) ([CoolOppo](https://github.com/CoolOppo)) +* Update fast new tab shortcut in gh-pages/index.html [\#131](https://github.com/cmderdev/cmder/pull/131) ([sopel](https://github.com/sopel)) +* Update links on the webpage to latest version. [\#111](https://github.com/cmderdev/cmder/pull/111) ([sc0tt](https://github.com/sc0tt)) +* Update fast new tab shortcut in README. [\#98](https://github.com/cmderdev/cmder/pull/98) ([jcheng31](https://github.com/jcheng31)) +* Make application use Cmder icon [\#88](https://github.com/cmderdev/cmder/pull/88) ([sc0tt](https://github.com/sc0tt)) +* Git exe Cleanup. [\#85](https://github.com/cmderdev/cmder/pull/85) ([MartiUK](https://github.com/MartiUK)) +* Fixed errors and grammar in README files. [\#78](https://github.com/cmderdev/cmder/pull/78) ([sicil1ano](https://github.com/sicil1ano)) +* Fixed a couple tiny typos in the readme [\#77](https://github.com/cmderdev/cmder/pull/77) ([jdsumsion](https://github.com/jdsumsion)) +* Change TERM from msys to cygwin. [\#75](https://github.com/cmderdev/cmder/pull/75) ([brkc](https://github.com/brkc)) +* Removed "C:\Users\bliker" reference in config/ConEmu.xml [\#74](https://github.com/cmderdev/cmder/pull/74) ([MartiUK](https://github.com/MartiUK)) +* Updated links on gh-pages to newer release of cmder [\#70](https://github.com/cmderdev/cmder/pull/70) ([MartiUK](https://github.com/MartiUK)) +* Add launcher [\#62](https://github.com/cmderdev/cmder/pull/62) ([austinwagner](https://github.com/austinwagner)) +* Remove wget dependency and verify existence of 7z.exe in build script [\#60](https://github.com/cmderdev/cmder/pull/60) ([austinwagner](https://github.com/austinwagner)) +* Allow use of Vim from msysgit. [\#51](https://github.com/cmderdev/cmder/pull/51) ([MartiUK](https://github.com/MartiUK)) +* Fix line ending handling if autocrlf is false. [\#34](https://github.com/cmderdev/cmder/pull/34) ([schlamar](https://github.com/schlamar)) +* Fix spelling in init.bat [\#32](https://github.com/cmderdev/cmder/pull/32) ([Shoozza](https://github.com/Shoozza)) +* Added minimal validation and usage help. [\#26](https://github.com/cmderdev/cmder/pull/26) ([Vivix](https://github.com/Vivix)) +* Fix spelling [\#22](https://github.com/cmderdev/cmder/pull/22) ([Shoozza](https://github.com/Shoozza)) +* Proofreading index.html [\#20](https://github.com/cmderdev/cmder/pull/20) ([manolomartinez](https://github.com/manolomartinez)) +* Fixed grammar [\#18](https://github.com/cmderdev/cmder/pull/18) ([tonylau](https://github.com/tonylau)) +* Fixed issue when rootDir contains spaces. [\#15](https://github.com/cmderdev/cmder/pull/15) ([jyggen](https://github.com/jyggen)) +* Another typo. Fixed link to msysgit. [\#7](https://github.com/cmderdev/cmder/pull/7) ([BeingTomGreen](https://github.com/BeingTomGreen)) +* minor typo fix [\#5](https://github.com/cmderdev/cmder/pull/5) ([BeingTomGreen](https://github.com/BeingTomGreen)) - - -\* *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)_ From 864f7780998512f066d3146cba99705cca457fda Mon Sep 17 00:00:00 2001 From: "Dax T. Games" Date: Sat, 24 Mar 2018 08:03:28 -0500 Subject: [PATCH 137/306] load user clink --- .gitignore | 1 + vendor/clink.lua | 22 ++++++++++++++++++++++ 2 files changed, 23 insertions(+) diff --git a/.gitignore b/.gitignore index cf231c5..eb66319 100644 --- a/.gitignore +++ b/.gitignore @@ -14,6 +14,7 @@ build/ Version v* *.bak config/user-* +config/*.lua config/settings config/aliases config/profile.d diff --git a/vendor/clink.lua b/vendor/clink.lua index 12d0616..e692951 100644 --- a/vendor/clink.lua +++ b/vendor/clink.lua @@ -351,3 +351,25 @@ for _,lua_module in ipairs(clink.find_files(completions_dir..'*.lua')) do dofile(filename) end end + +local cmder_config_dir = clink.get_env('CMDER_ROOT')..'/config/' +for _,lua_module in ipairs(clink.find_files(cmder_config_dir..'*.lua')) do + -- Skip files that starts with _. This could be useful if some files should be ignored + if not string.match(lua_module, '^_.*') then + local filename = cmder_config_dir..lua_module + -- use dofile instead of require because require caches loaded modules + -- so config reloading using Alt-Q won't reload updated modules. + dofile(filename) + end +end + +local cmder_user_config_dir = clink.get_env('CMDER_USER_CONFIG')..'/' +for _,lua_module in ipairs(clink.find_files(cmder_user_config_dir..'*.lua')) do + -- Skip files that starts with _. This could be useful if some files should be ignored + if not string.match(lua_module, '^_.*') then + local filename = cmder_user_config_dir..lua_module + -- use dofile instead of require because require caches loaded modules + -- so config reloading using Alt-Q won't reload updated modules. + dofile(filename) + end +end From 9462315789a57b155df26aac2ffecdba75ab4dd6 Mon Sep 17 00:00:00 2001 From: "Dax T. Games" Date: Sat, 24 Mar 2018 08:57:14 -0500 Subject: [PATCH 138/306] fix /unregister --- launcher/src/CmderLauncher.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/launcher/src/CmderLauncher.cpp b/launcher/src/CmderLauncher.cpp index 6e3c923..bb62614 100644 --- a/launcher/src/CmderLauncher.cpp +++ b/launcher/src/CmderLauncher.cpp @@ -332,7 +332,7 @@ 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)); FAIL_ON_ERROR(RegDeleteTree(cmderKey, NULL)); RegCloseKey(cmderKey); RegCloseKey(root); From 1662678ebf99b4f862b2f57a55fccfedf76393f4 Mon Sep 17 00:00:00 2001 From: David Refoua Date: Wed, 28 Mar 2018 18:16:14 +0430 Subject: [PATCH 139/306] fixed line endings --- launcher/src/Resource.rc | Bin 3226 -> 1612 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/launcher/src/Resource.rc b/launcher/src/Resource.rc index 9d4ec33b65e2c0b97ed422a28fc9fc9ffad731e0..7f0b9067ebea6bd65c077946118a489e6ba96965 100644 GIT binary patch literal 1612 zcmcIkQE!_t5PnDEKiud`qgJrBzkq~UfogD{OtP-8<8U@cx_GJs+-5tD9PDQC`4T8$97Zn9r3AR_ZX*iB)+%R6X zeNDmoh}&DsG%!%phH(n+_jHr_VN$G#>nCyaTBNV5WfG-2f5vqx$8jJSDsDu#1GS~F zAupRS_M*%u@Gvy;M+XPSv59m2GnRJ5spkmD-_W=M9zgh8%j6brGtM-JsX{8{Vt_y% znPLrmIb4h|QHjR;P^UtVU5@SuK@o;(bZ@F88 zTC7~;95bzP{^RBROIvR!uaN>=Sobh413uS6D6BgE0S#WPO*k;Mg|<6TsUY;>N7?oi z_H9|Ab{Zzot2&@u_JTsW-?ywP6~jDsJ`07lD;bx7wq#OKt^mVj+k*Uw=1$_!g??Cg zE1#@&%cB)~Njx%#U(2@hTz~o&ndjB6rou)8F`r=fA8Ma@s*kds4)(y?%vb40F=ELs$zV~ej8NmI`Kd$AEcAN3Zi zkJdSEHzEJ#+*C>oID5#QC(L3V_85h%OzkWu3evrtnt6XcxRqNIG@jcFqAKK6kNg>s zU3GRI5nXMX^nRteqmq4ebcx{+QXS;a{H|@N9jF8PrjOG|34Bd-x5(9(_88qg_-ass z%pu2!)sWR80(6$+5up6I;v}!wweinkL4KCUm{70pDLy;SS>xnQj}zj}$J?Pj*c499 zddIs#(s}Rd?Vx(%;9Sv!TVsz;GjEOa^L@KQ-CDq-H$sYJusdZgOH>tQk7T5EPSacC z%Wic+A1a+JZh=5`UID6#UHDG57MyxLoZ{JEE3r?7m>u5qI-BfDJ#|c_79y=#4=W+g zkH_8L!S?+)DAqW}oDgD)pZ-_8{yF2GLWU@Rv#+!)#{K}T C28J2{ From a85cd81f00f684ac358f9e3b6ea6327c706265bd Mon Sep 17 00:00:00 2001 From: David Refoua Date: Wed, 28 Mar 2018 18:37:46 +0430 Subject: [PATCH 140/306] added version resources and manifest. --- launcher/src/Resource.rc | 51 ++++++++++++++++++++++++++++++++++++++-- 1 file changed, 49 insertions(+), 2 deletions(-) diff --git a/launcher/src/Resource.rc b/launcher/src/Resource.rc index 7f0b906..ccbdeab 100644 --- a/launcher/src/Resource.rc +++ b/launcher/src/Resource.rc @@ -1,6 +1,14 @@ -// Microsoft Visual C++ generated resource script. -// +/* _ + ___ _ __ ___ __| | ___ _ __ + / __| '_ ` _ \ / _` |/ _ \ '__| +| (__| | | | | | (_| | __/ | + \___|_| |_| |_|\__,_|\___|_| +============================================================================= + The Cmder Console Emulator Project +*/ + #include "resource.h" +#include "version.rc2" #define APSTUDIO_READONLY_SYMBOLS ///////////////////////////////////////////////////////////////////////////// @@ -54,6 +62,45 @@ IDI_CMDER ICON "..\\..\\icons\\cmder.ico" #endif // English (United States) resources ///////////////////////////////////////////////////////////////////////////// +///////////////////////////////////////////////////////////////////////////// +// +// Version +// + +VS_VERSION_INFO VERSIONINFO + FILEVERSION CMDER_MAJOR_VERSION,CMDER_MINOR_VERSION,CMDER_REVISION_VERSION + PRODUCTVERSION CMDER_MAJOR_VERSION,CMDER_MINOR_VERSION,CMDER_REVISION_VERSION + FILEFLAGSMASK VS_FFI_FILEFLAGSMASK + FILEFLAGS (CMDER_DEBUGFLAG | CMDER_BUILDFLAGS) + FILEOS VOS_NT_WINDOWS32 + FILETYPE VFT_APP + FILESUBTYPE VFT2_UNKNOWN +BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "100904b0" + BEGIN + VALUE "CompanyName", CMDER_COMPANY_NAME_STR "\0" + VALUE "FileDescription", CMDER_FILE_DESCRIPTION_STR "\0" + VALUE "FileVersion", CMDER_VERSION_STR "\0" + VALUE "InternalName", CMDER_INTERNAL_NAME_STR "\0" + VALUE "LegalCopyright", "Copyright (C) " CMDER_COPYRIGHT_YEAR_STR " " CMDER_COMPANY_NAME_STR "\0" + VALUE "OriginalFilename", CMDER_ORIGINAL_FILENAME_STR "\0" + VALUE "ProductName", CMDER_PRODUCT_NAME_STR "\0" + VALUE "ProductVersion", CMDER_VERSION_STR "\0" + END + END + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x1009, 1200 + END +END + +///////////////////////////////////////////////////////////////////////////// + +// Manifest +1 24 DISCARDABLE "Cmder.manifest" + #ifndef APSTUDIO_INVOKED ///////////////////////////////////////////////////////////////////////////// // From dc9e385365bf60a80de3742f1fd022ac7529c1a9 Mon Sep 17 00:00:00 2001 From: David Refoua Date: Wed, 28 Mar 2018 18:43:41 +0430 Subject: [PATCH 141/306] add cmder manifest file --- launcher/src/Cmder.manifest | 54 +++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 launcher/src/Cmder.manifest diff --git a/launcher/src/Cmder.manifest b/launcher/src/Cmder.manifest new file mode 100644 index 0000000..3352a4b --- /dev/null +++ b/launcher/src/Cmder.manifest @@ -0,0 +1,54 @@ + + + + + + Cmder Console Emulator + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true/pm + + + + From 96736feecc288e577dc4d101bc0d41f0b4c1106f Mon Sep 17 00:00:00 2001 From: David Refoua Date: Wed, 28 Mar 2018 20:38:12 +0430 Subject: [PATCH 142/306] added version.rc2.sample this file controls how the version strings appears in the final compiled .exe file --- launcher/src/version.rc2.sample | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 launcher/src/version.rc2.sample diff --git a/launcher/src/version.rc2.sample b/launcher/src/version.rc2.sample new file mode 100644 index 0000000..cc6637d --- /dev/null +++ b/launcher/src/version.rc2.sample @@ -0,0 +1,22 @@ + +/** + * WARNING: do NOT modify this file! the content of this file should be + * automatically genereted before AppVeyor builds using the + * respective .ps1 Powershell scripts. + * + */ + +///////////////////////////////////////////////////////////////////////////// +// Define the version numbers and build information manually here: + +#define CMDER_MAJOR_VERSION {Cmder-Major-Version} +#define CMDER_MINOR_VERSION {Cmder-Minor-Version} +#define CMDER_REVISION_VERSION {Cmder-Revision-Version} + +#define CMDER_PRODUCT_NAME_STR "Cmder" +#define CMDER_FILE_DESCRIPTION_STR "Cmder: Lovely Console Emulator." +#define CMDER_INTERNAL_NAME_STR "Cmder" +#define CMDER_ORIGINAL_FILENAME_STR "Cmder.exe" +#define CMDER_COMPANY_NAME_STR "Samuel Vasko" +#define CMDER_COPYRIGHT_YEAR_STR "2016" +///////////////////////////////////////////////////////////////////////////// From f4321bbc33026e80df4228efce8ab4b8a66c3e89 Mon Sep 17 00:00:00 2001 From: David Refoua Date: Wed, 28 Mar 2018 20:41:18 +0430 Subject: [PATCH 143/306] add functions to get version and generate rc these functions can be used to a) extract the version from `CHANGELOG.md` and b) create a .rc2 file from the `sample` template by replacing its content --- scripts/utils.ps1 | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/scripts/utils.ps1 b/scripts/utils.ps1 index e3a47fc..7474a58 100644 --- a/scripts/utils.ps1 +++ b/scripts/utils.ps1 @@ -62,6 +62,43 @@ function Digest-Hash($path) { return Invoke-Expression "md5sum $path" } +function Get-Version-Str($file) { + + # Define the regular expression to match the version string from changelog + [regex]$regex = '^## \[(?[\w\-\.]+)\]\([^\n()]+\)\s+\([^\n()]+\)$'; + + # Find the first match of the version string which means the latest version + $version = Select-String -Path $file -Pattern $regex | Select-Object -First 1 | % { $_.Matches.Groups[1].Value } + + return $version +} + +function Create-RC($version, $path) { + + if ( !(Test-Path "$path.sample") ) { + Write-Error "Invalid path provided for resources file." + return + } + + $resource = Get-Content -Path "$path.sample" + $pattern = @( "Cmder-Major-Version", "Cmder-Minor-Version", "Cmder-Revision-Version" ) + $index = 0 + + # Replace all non-numeric characters to dots and split to array + $version = $version -replace '[^0-9]+','.' -split '\.' + + foreach ($fragment in $version) { + if ( !$fragment ) { break } + elseif ($index -lt $pattern.length) { + $resource = $resource.Replace( "{" + $pattern[$index++] + "}", $fragment ) + } + } + + # Write the results + Set-Content -Path $path -Value $resource + +} + function Register-Cmder() { [CmdletBinding()] Param From eaf7048ed7ccc2dc3d25047679241ec095a1100f Mon Sep 17 00:00:00 2001 From: David Refoua Date: Wed, 28 Mar 2018 20:48:57 +0430 Subject: [PATCH 144/306] add automatic version creation with this commit, the build script extracts the latest version string found in `CHANGELOG.md`, and then creates appropriate resource files for the executable compilation --- scripts/build.ps1 | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/scripts/build.ps1 b/scripts/build.ps1 index 62eb4e5..7a0cb07 100644 --- a/scripts/build.ps1 +++ b/scripts/build.ps1 @@ -64,6 +64,9 @@ $ErrorActionPreference = "Stop" Push-Location -Path $saveTo $sources = Get-Content $sourcesPath | Out-String | Convertfrom-Json +# Get the version string +$Version = Get-Version-Str ($PSScriptRoot + '\..\' + 'CHANGELOG.md') + # Check for requirements Ensure-Exists $sourcesPath Ensure-Executable "7z" @@ -116,6 +119,7 @@ Pop-Location if($Compile) { Push-Location -Path $launcher + Create-RC $Version ($launcher + '\src\version.rc2'); msbuild CmderLauncher.vcxproj /p:configuration=Release if ($LastExitCode -ne 0) { throw "msbuild failed to build the executable." From 249f7b9baf816945d0c3f0bb2133ee5293a2c975 Mon Sep 17 00:00:00 2001 From: David Refoua Date: Wed, 28 Mar 2018 21:07:14 +0430 Subject: [PATCH 145/306] add build flags; use spaces --- launcher/src/version.rc2.sample | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/launcher/src/version.rc2.sample b/launcher/src/version.rc2.sample index cc6637d..4d32c9b 100644 --- a/launcher/src/version.rc2.sample +++ b/launcher/src/version.rc2.sample @@ -9,14 +9,17 @@ ///////////////////////////////////////////////////////////////////////////// // Define the version numbers and build information manually here: -#define CMDER_MAJOR_VERSION {Cmder-Major-Version} -#define CMDER_MINOR_VERSION {Cmder-Minor-Version} -#define CMDER_REVISION_VERSION {Cmder-Revision-Version} +#define CMDER_MAJOR_VERSION {Cmder-Major-Version} +#define CMDER_MINOR_VERSION {Cmder-Minor-Version} +#define CMDER_REVISION_VERSION {Cmder-Revision-Version} -#define CMDER_PRODUCT_NAME_STR "Cmder" -#define CMDER_FILE_DESCRIPTION_STR "Cmder: Lovely Console Emulator." -#define CMDER_INTERNAL_NAME_STR "Cmder" -#define CMDER_ORIGINAL_FILENAME_STR "Cmder.exe" -#define CMDER_COMPANY_NAME_STR "Samuel Vasko" -#define CMDER_COPYRIGHT_YEAR_STR "2016" +#define CMDER_PRODUCT_NAME_STR "Cmder" +#define CMDER_FILE_DESCRIPTION_STR "Cmder: Lovely Console Emulator." +#define CMDER_INTERNAL_NAME_STR "Cmder" +#define CMDER_ORIGINAL_FILENAME_STR "Cmder.exe" +#define CMDER_COMPANY_NAME_STR "Samuel Vasko" +#define CMDER_COPYRIGHT_YEAR_STR "2016" + +#define CMDER_DEBUGFLAG 0x0L // set to 0x1L to enable debug mode +#define CMDER_BUILDFLAGS 0x0L ///////////////////////////////////////////////////////////////////////////// From f8359fc3f78dc6221ae0122f3b6aa740dc282208 Mon Sep 17 00:00:00 2001 From: David Refoua Date: Wed, 28 Mar 2018 21:11:31 +0430 Subject: [PATCH 146/306] add verbose version info --- scripts/build.ps1 | 1 + 1 file changed, 1 insertion(+) diff --git a/scripts/build.ps1 b/scripts/build.ps1 index 7a0cb07..47f8626 100644 --- a/scripts/build.ps1 +++ b/scripts/build.ps1 @@ -124,6 +124,7 @@ if($Compile) { if ($LastExitCode -ne 0) { throw "msbuild failed to build the executable." } + else Write-Verbose "successfully built Cmder $Version!" Pop-Location } else { Write-Warning "You are not building a launcher, Use -Compile" From 018bf45df462f4ecc2d68309d5e3425acb3abd78 Mon Sep 17 00:00:00 2001 From: David Refoua Date: Wed, 28 Mar 2018 21:13:55 +0430 Subject: [PATCH 147/306] add version string handler --- scripts/utils.ps1 | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/scripts/utils.ps1 b/scripts/utils.ps1 index 7474a58..5cc6035 100644 --- a/scripts/utils.ps1 +++ b/scripts/utils.ps1 @@ -75,9 +75,10 @@ function Get-Version-Str($file) { function Create-RC($version, $path) { + $string = $version + if ( !(Test-Path "$path.sample") ) { - Write-Error "Invalid path provided for resources file." - return + throw "Invalid path provided for resources file." } $resource = Get-Content -Path "$path.sample" @@ -93,6 +94,9 @@ function Create-RC($version, $path) { $resource = $resource.Replace( "{" + $pattern[$index++] + "}", $fragment ) } } + + # Add the version string + $resource = $resource.Replace( "{Cmder-Version-Str}", $string ) # Write the results Set-Content -Path $path -Value $resource From 57a28f118d0bdb197d9272d8f723252039d26d93 Mon Sep 17 00:00:00 2001 From: David Refoua Date: Wed, 28 Mar 2018 21:14:15 +0430 Subject: [PATCH 148/306] add template for version string --- launcher/src/version.rc2.sample | 1 + 1 file changed, 1 insertion(+) diff --git a/launcher/src/version.rc2.sample b/launcher/src/version.rc2.sample index 4d32c9b..e8eeefd 100644 --- a/launcher/src/version.rc2.sample +++ b/launcher/src/version.rc2.sample @@ -12,6 +12,7 @@ #define CMDER_MAJOR_VERSION {Cmder-Major-Version} #define CMDER_MINOR_VERSION {Cmder-Minor-Version} #define CMDER_REVISION_VERSION {Cmder-Revision-Version} +#define CMDER_VERSION_STR {Cmder-Version-Str} #define CMDER_PRODUCT_NAME_STR "Cmder" #define CMDER_FILE_DESCRIPTION_STR "Cmder: Lovely Console Emulator." From 3aeca3c97217cce5ce1657ba21ae8449dd0ed39e Mon Sep 17 00:00:00 2001 From: David Refoua Date: Wed, 28 Mar 2018 21:16:27 +0430 Subject: [PATCH 149/306] add required block to else statement --- scripts/build.ps1 | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/scripts/build.ps1 b/scripts/build.ps1 index 47f8626..1c32bb0 100644 --- a/scripts/build.ps1 +++ b/scripts/build.ps1 @@ -124,7 +124,9 @@ if($Compile) { if ($LastExitCode -ne 0) { throw "msbuild failed to build the executable." } - else Write-Verbose "successfully built Cmder $Version!" + else { + Write-Verbose "successfully built Cmder $Version!" + } Pop-Location } else { Write-Warning "You are not building a launcher, Use -Compile" From ae473ecea699e11a690d799390c49c69e13ebea0 Mon Sep 17 00:00:00 2001 From: David Refoua Date: Wed, 28 Mar 2018 21:24:02 +0430 Subject: [PATCH 150/306] add escaped quotes handling --- scripts/utils.ps1 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/utils.ps1 b/scripts/utils.ps1 index 5cc6035..c1d2400 100644 --- a/scripts/utils.ps1 +++ b/scripts/utils.ps1 @@ -91,7 +91,7 @@ function Create-RC($version, $path) { foreach ($fragment in $version) { if ( !$fragment ) { break } elseif ($index -lt $pattern.length) { - $resource = $resource.Replace( "{" + $pattern[$index++] + "}", $fragment ) + $resource = $resource.Replace( "{" + $pattern[$index++] + "}", '"' + $fragment + '"' ) } } From 2bc17c4ff2b13eb48e3184f7b8b2ef264b2a2cb2 Mon Sep 17 00:00:00 2001 From: David Refoua Date: Wed, 28 Mar 2018 22:22:56 +0430 Subject: [PATCH 151/306] renamed app.manifest --- launcher/src/{Cmder.manifest => app.manifest} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename launcher/src/{Cmder.manifest => app.manifest} (100%) diff --git a/launcher/src/Cmder.manifest b/launcher/src/app.manifest similarity index 100% rename from launcher/src/Cmder.manifest rename to launcher/src/app.manifest From 1dadade661d72b2438dfbe1d9cb225d654878a12 Mon Sep 17 00:00:00 2001 From: David Refoua Date: Wed, 28 Mar 2018 22:24:26 +0430 Subject: [PATCH 152/306] replaces spaces to tabs --- launcher/src/app.manifest | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/launcher/src/app.manifest b/launcher/src/app.manifest index 3352a4b..bf133f7 100644 --- a/launcher/src/app.manifest +++ b/launcher/src/app.manifest @@ -2,33 +2,33 @@ - + Cmder Console Emulator - - + + - - + + + level="asInvoker" + uiAccess="false" /> - - + + @@ -43,12 +43,12 @@ - - + + true/pm - + From cb4d95e7a3d59d515ec913d221fc23667208a3cd Mon Sep 17 00:00:00 2001 From: David Refoua Date: Wed, 28 Mar 2018 22:26:17 +0430 Subject: [PATCH 153/306] added build number, removed duplicated manifest --- launcher/src/Resource.rc | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/launcher/src/Resource.rc b/launcher/src/Resource.rc index ccbdeab..fa9a64f 100644 --- a/launcher/src/Resource.rc +++ b/launcher/src/Resource.rc @@ -68,8 +68,8 @@ IDI_CMDER ICON "..\\..\\icons\\cmder.ico" // VS_VERSION_INFO VERSIONINFO - FILEVERSION CMDER_MAJOR_VERSION,CMDER_MINOR_VERSION,CMDER_REVISION_VERSION - PRODUCTVERSION CMDER_MAJOR_VERSION,CMDER_MINOR_VERSION,CMDER_REVISION_VERSION + FILEVERSION CMDER_MAJOR_VERSION,CMDER_MINOR_VERSION,CMDER_REVISION_VERSION,CMDER_BUILD_VERSION + PRODUCTVERSION CMDER_MAJOR_VERSION,CMDER_MINOR_VERSION,CMDER_REVISION_VERSION,CMDER_BUILD_VERSION FILEFLAGSMASK VS_FFI_FILEFLAGSMASK FILEFLAGS (CMDER_DEBUGFLAG | CMDER_BUILDFLAGS) FILEOS VOS_NT_WINDOWS32 @@ -98,9 +98,6 @@ END ///////////////////////////////////////////////////////////////////////////// -// Manifest -1 24 DISCARDABLE "Cmder.manifest" - #ifndef APSTUDIO_INVOKED ///////////////////////////////////////////////////////////////////////////// // From 2f3f1d474a3d11a83ece1f78fc8164bde70d8bfa Mon Sep 17 00:00:00 2001 From: David Refoua Date: Wed, 28 Mar 2018 22:28:01 +0430 Subject: [PATCH 154/306] specified custom manifest file --- launcher/CmderLauncher.vcxproj | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/launcher/CmderLauncher.vcxproj b/launcher/CmderLauncher.vcxproj index 879bb5a..08deaeb 100644 --- a/launcher/CmderLauncher.vcxproj +++ b/launcher/CmderLauncher.vcxproj @@ -1,4 +1,4 @@ - + @@ -61,6 +61,9 @@ Windows true + + src/app.manifest %(AdditionalManifestFiles) + _USING_V110_SDK71_;%(PreprocessorDefinitions) @@ -84,6 +87,9 @@ true true + + src/app.manifest %(AdditionalManifestFiles) + copy $(TargetPath) $(SolutionDir)..\$(TargetFileName) From 236aefe8c6b9bd09ecac17ed6baa825fd25c5a2d Mon Sep 17 00:00:00 2001 From: David Refoua Date: Wed, 28 Mar 2018 22:28:33 +0430 Subject: [PATCH 155/306] add build version string --- launcher/src/version.rc2.sample | 1 + 1 file changed, 1 insertion(+) diff --git a/launcher/src/version.rc2.sample b/launcher/src/version.rc2.sample index e8eeefd..003621d 100644 --- a/launcher/src/version.rc2.sample +++ b/launcher/src/version.rc2.sample @@ -12,6 +12,7 @@ #define CMDER_MAJOR_VERSION {Cmder-Major-Version} #define CMDER_MINOR_VERSION {Cmder-Minor-Version} #define CMDER_REVISION_VERSION {Cmder-Revision-Version} +#define CMDER_BUILD_VERSION {Cmder-Build-Version} #define CMDER_VERSION_STR {Cmder-Version-Str} #define CMDER_PRODUCT_NAME_STR "Cmder" From c817df2032db7813a966627ab728710b563ed0b3 Mon Sep 17 00:00:00 2001 From: David Refoua Date: Wed, 28 Mar 2018 22:30:09 +0430 Subject: [PATCH 156/306] add build version str; fix padding --- scripts/utils.ps1 | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/scripts/utils.ps1 b/scripts/utils.ps1 index c1d2400..e98e83e 100644 --- a/scripts/utils.ps1 +++ b/scripts/utils.ps1 @@ -73,16 +73,16 @@ function Get-Version-Str($file) { return $version } -function Create-RC($version, $path) { +function Create-RC($string, $path) { - $string = $version + $version = $string + '.0.0.0.0' # padding for version string if ( !(Test-Path "$path.sample") ) { throw "Invalid path provided for resources file." } $resource = Get-Content -Path "$path.sample" - $pattern = @( "Cmder-Major-Version", "Cmder-Minor-Version", "Cmder-Revision-Version" ) + $pattern = @( "Cmder-Major-Version", "Cmder-Minor-Version", "Cmder-Revision-Version", "Cmder-Build-Version" ) $index = 0 # Replace all non-numeric characters to dots and split to array @@ -90,13 +90,13 @@ function Create-RC($version, $path) { foreach ($fragment in $version) { if ( !$fragment ) { break } - elseif ($index -lt $pattern.length) { - $resource = $resource.Replace( "{" + $pattern[$index++] + "}", '"' + $fragment + '"' ) + elseif ($index -le $pattern.length) { + $resource = $resource.Replace( "{" + $pattern[$index++] + "}", $fragment ) } } # Add the version string - $resource = $resource.Replace( "{Cmder-Version-Str}", $string ) + $resource = $resource.Replace( "{Cmder-Version-Str}", '"' + $string + '"' ) # Write the results Set-Content -Path $path -Value $resource From 624deec2f0f76c96301580b535c58ef949466cb6 Mon Sep 17 00:00:00 2001 From: David Refoua Date: Wed, 28 Mar 2018 22:34:28 +0430 Subject: [PATCH 157/306] =?UTF-8?q?minor=20edit=20=E2=80=93=20added=20a=20?= =?UTF-8?q?character=20to=20the=20verbose=20output?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scripts/build.ps1 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/build.ps1 b/scripts/build.ps1 index 1c32bb0..d4c201c 100644 --- a/scripts/build.ps1 +++ b/scripts/build.ps1 @@ -125,7 +125,7 @@ if($Compile) { throw "msbuild failed to build the executable." } else { - Write-Verbose "successfully built Cmder $Version!" + Write-Verbose "successfully built Cmder v$Version!" } Pop-Location } else { From 93d2c427ad4cda8ded2c0895b36bd8e32e3b0154 Mon Sep 17 00:00:00 2001 From: David Refoua Date: Thu, 29 Mar 2018 01:18:57 +0430 Subject: [PATCH 158/306] respect powershell naming convention --- scripts/build.ps1 | 2 +- scripts/utils.ps1 | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/build.ps1 b/scripts/build.ps1 index d4c201c..099f857 100644 --- a/scripts/build.ps1 +++ b/scripts/build.ps1 @@ -65,7 +65,7 @@ Push-Location -Path $saveTo $sources = Get-Content $sourcesPath | Out-String | Convertfrom-Json # Get the version string -$Version = Get-Version-Str ($PSScriptRoot + '\..\' + 'CHANGELOG.md') +$Version = Get-VersionStr ($PSScriptRoot + '\..\' + 'CHANGELOG.md') # Check for requirements Ensure-Exists $sourcesPath diff --git a/scripts/utils.ps1 b/scripts/utils.ps1 index e98e83e..fc43d0e 100644 --- a/scripts/utils.ps1 +++ b/scripts/utils.ps1 @@ -62,7 +62,7 @@ function Digest-Hash($path) { return Invoke-Expression "md5sum $path" } -function Get-Version-Str($file) { +function Get-VersionStr($file) { # Define the regular expression to match the version string from changelog [regex]$regex = '^## \[(?[\w\-\.]+)\]\([^\n()]+\)\s+\([^\n()]+\)$'; From 3965852c262c8dd9e7f790fedad9229089884706 Mon Sep 17 00:00:00 2001 From: David Refoua Date: Thu, 29 Mar 2018 03:23:18 +0430 Subject: [PATCH 159/306] clean before build --- scripts/build.ps1 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/build.ps1 b/scripts/build.ps1 index 099f857..aa6eacd 100644 --- a/scripts/build.ps1 +++ b/scripts/build.ps1 @@ -120,7 +120,7 @@ Pop-Location if($Compile) { Push-Location -Path $launcher Create-RC $Version ($launcher + '\src\version.rc2'); - msbuild CmderLauncher.vcxproj /p:configuration=Release + msbuild CmderLauncher.vcxproj /t:Clean,Build /p:configuration=Release if ($LastExitCode -ne 0) { throw "msbuild failed to build the executable." } From b36b8a4cb379efc7d093f11ba0816978b5c145a3 Mon Sep 17 00:00:00 2001 From: David Refoua Date: Fri, 30 Mar 2018 23:23:44 +0430 Subject: [PATCH 160/306] new version handle logic --- scripts/build.ps1 | 8 ++++---- scripts/pack.ps1 | 2 +- scripts/utils.ps1 | 42 ++++++++++++++++++++++++++++++++++++++++-- 3 files changed, 45 insertions(+), 7 deletions(-) diff --git a/scripts/build.ps1 b/scripts/build.ps1 index aa6eacd..a3b9580 100644 --- a/scripts/build.ps1 +++ b/scripts/build.ps1 @@ -58,14 +58,14 @@ $ScriptRoot = Split-Path -Parent -Path $MyInvocation.MyCommand.Definition $cmder_root = $ScriptRoot.replace("\scripts","") # Dot source util functions into this scope -. ".\utils.ps1" +. "$PSScriptRoot\utils.ps1" $ErrorActionPreference = "Stop" Push-Location -Path $saveTo $sources = Get-Content $sourcesPath | Out-String | Convertfrom-Json # Get the version string -$Version = Get-VersionStr ($PSScriptRoot + '\..\' + 'CHANGELOG.md') +$version = Get-VersionStr # Check for requirements Ensure-Exists $sourcesPath @@ -119,13 +119,13 @@ Pop-Location if($Compile) { Push-Location -Path $launcher - Create-RC $Version ($launcher + '\src\version.rc2'); + Create-RC $version ($launcher + '\src\version.rc2'); msbuild CmderLauncher.vcxproj /t:Clean,Build /p:configuration=Release if ($LastExitCode -ne 0) { throw "msbuild failed to build the executable." } else { - Write-Verbose "successfully built Cmder v$Version!" + Write-Verbose "successfully built Cmder v$version!" } Pop-Location } else { diff --git a/scripts/pack.ps1 b/scripts/pack.ps1 index 1b76a67..8382d5f 100644 --- a/scripts/pack.ps1 +++ b/scripts/pack.ps1 @@ -48,7 +48,7 @@ $targets = @{ Delete-Existing "..\Version*" Delete-Existing "..\build\*" -$version = Invoke-Expression "git describe --abbrev=0 --tags" +$version = Get-VersionStr (New-Item -ItemType file "$cmderRoot\Version $version") | Out-Null foreach ($t in $targets.GetEnumerator()) { diff --git a/scripts/utils.ps1 b/scripts/utils.ps1 index fc43d0e..ab7fec5 100644 --- a/scripts/utils.ps1 +++ b/scripts/utils.ps1 @@ -62,7 +62,45 @@ function Digest-Hash($path) { return Invoke-Expression "md5sum $path" } -function Get-VersionStr($file) { +function Get-VersionStr() { + + # Clear existing variable + Clear-Variable -name string + + # Determine if git is available + if (Get-Command "git.exe" -ErrorAction SilentlyContinue) + { + + # Determine if the current diesctory is a git repository + $GitPresent = Invoke-Expression "git rev-parse --is-inside-work-tree" -erroraction SilentlyContinue 2>$null + + if ( $GitPresent -eq 'true' ) + { + $string = Invoke-Expression "git describe --abbrev=0 --tags" + } + + } + + # Fallback used when Git is not available + if ( -not($string) ) + { + $string = Parse-Changelog ($PSScriptRoot + '\..\' + 'CHANGELOG.md') + } + + # Add build number, if AppVeyor is present + if ( $Env:APPVEYOR -eq 'True' ) + { + $string = $string + '.' + $Env:APPVEYOR_BUILD_NUMBER + } + + # Remove starting 'v' characters + $string = $string -replace '^v+','' # normalize version string + + return $string + +} + +function Parse-Changelog($file) { # Define the regular expression to match the version string from changelog [regex]$regex = '^## \[(?[\w\-\.]+)\]\([^\n()]+\)\s+\([^\n()]+\)$'; @@ -75,7 +113,7 @@ function Get-VersionStr($file) { function Create-RC($string, $path) { - $version = $string + '.0.0.0.0' # padding for version string + $version = $string + '.0.0.0.0' # padding for version string if ( !(Test-Path "$path.sample") ) { throw "Invalid path provided for resources file." From 502129d4f943d92e93465209038b486d83671a7d Mon Sep 17 00:00:00 2001 From: David Refoua Date: Fri, 30 Mar 2018 23:31:51 +0430 Subject: [PATCH 161/306] minor fix --- scripts/utils.ps1 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/utils.ps1 b/scripts/utils.ps1 index ab7fec5..c5a62cd 100644 --- a/scripts/utils.ps1 +++ b/scripts/utils.ps1 @@ -65,7 +65,7 @@ function Digest-Hash($path) { function Get-VersionStr() { # Clear existing variable - Clear-Variable -name string + if ($string) { Clear-Variable -name string } # Determine if git is available if (Get-Command "git.exe" -ErrorAction SilentlyContinue) From 5c3f46fd885ca5a2ac53f22521c7de9aa0baaf85 Mon Sep 17 00:00:00 2001 From: David Refoua Date: Fri, 30 Mar 2018 23:46:48 +0430 Subject: [PATCH 162/306] fix git detection statement --- scripts/utils.ps1 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/utils.ps1 b/scripts/utils.ps1 index c5a62cd..a01f7dd 100644 --- a/scripts/utils.ps1 +++ b/scripts/utils.ps1 @@ -72,7 +72,7 @@ function Get-VersionStr() { { # Determine if the current diesctory is a git repository - $GitPresent = Invoke-Expression "git rev-parse --is-inside-work-tree" -erroraction SilentlyContinue 2>$null + $GitPresent = Invoke-Expression "git rev-parse --is-inside-work-tree" -erroraction SilentlyContinue if ( $GitPresent -eq 'true' ) { From 7d04ded1c278e3bbafc24d650b92940728a4b375 Mon Sep 17 00:00:00 2001 From: David Refoua Date: Fri, 30 Mar 2018 23:52:32 +0430 Subject: [PATCH 163/306] add appveyor message --- scripts/build.ps1 | 3 +++ 1 file changed, 3 insertions(+) diff --git a/scripts/build.ps1 b/scripts/build.ps1 index a3b9580..07409a5 100644 --- a/scripts/build.ps1 +++ b/scripts/build.ps1 @@ -126,6 +126,9 @@ if($Compile) { } else { Write-Verbose "successfully built Cmder v$version!" + if ( $Env:APPVEYOR -eq 'True' ) { + Add-AppveyorMessage -Message "Building Cmder v$version was successfull." -Category Information + } } Pop-Location } else { From d6569192fc91167f555c3eff58402ff01f1197ea Mon Sep 17 00:00:00 2001 From: David Refoua Date: Fri, 30 Mar 2018 23:57:21 +0430 Subject: [PATCH 164/306] replace tabs to spaces --- scripts/utils.ps1 | 48 +++++++++++++++++++++++------------------------ 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/scripts/utils.ps1 b/scripts/utils.ps1 index a01f7dd..08d40d0 100644 --- a/scripts/utils.ps1 +++ b/scripts/utils.ps1 @@ -102,42 +102,42 @@ function Get-VersionStr() { function Parse-Changelog($file) { - # Define the regular expression to match the version string from changelog - [regex]$regex = '^## \[(?[\w\-\.]+)\]\([^\n()]+\)\s+\([^\n()]+\)$'; + # Define the regular expression to match the version string from changelog + [regex]$regex = '^## \[(?[\w\-\.]+)\]\([^\n()]+\)\s+\([^\n()]+\)$'; - # Find the first match of the version string which means the latest version - $version = Select-String -Path $file -Pattern $regex | Select-Object -First 1 | % { $_.Matches.Groups[1].Value } + # Find the first match of the version string which means the latest version + $version = Select-String -Path $file -Pattern $regex | Select-Object -First 1 | % { $_.Matches.Groups[1].Value } - return $version + return $version } function Create-RC($string, $path) { $version = $string + '.0.0.0.0' # padding for version string - if ( !(Test-Path "$path.sample") ) { - throw "Invalid path provided for resources file." - } + if ( !(Test-Path "$path.sample") ) { + throw "Invalid path provided for resources file." + } - $resource = Get-Content -Path "$path.sample" - $pattern = @( "Cmder-Major-Version", "Cmder-Minor-Version", "Cmder-Revision-Version", "Cmder-Build-Version" ) - $index = 0 + $resource = Get-Content -Path "$path.sample" + $pattern = @( "Cmder-Major-Version", "Cmder-Minor-Version", "Cmder-Revision-Version", "Cmder-Build-Version" ) + $index = 0 - # Replace all non-numeric characters to dots and split to array - $version = $version -replace '[^0-9]+','.' -split '\.' + # Replace all non-numeric characters to dots and split to array + $version = $version -replace '[^0-9]+','.' -split '\.' - foreach ($fragment in $version) { - if ( !$fragment ) { break } - elseif ($index -le $pattern.length) { - $resource = $resource.Replace( "{" + $pattern[$index++] + "}", $fragment ) - } - } - - # Add the version string - $resource = $resource.Replace( "{Cmder-Version-Str}", '"' + $string + '"' ) + foreach ($fragment in $version) { + if ( !$fragment ) { break } + elseif ($index -le $pattern.length) { + $resource = $resource.Replace( "{" + $pattern[$index++] + "}", $fragment ) + } + } + + # Add the version string + $resource = $resource.Replace( "{Cmder-Version-Str}", '"' + $string + '"' ) - # Write the results - Set-Content -Path $path -Value $resource + # Write the results + Set-Content -Path $path -Value $resource } From 94e7c24b72818c02d15c542f35b98f0d00041b01 Mon Sep 17 00:00:00 2001 From: David Refoua Date: Sat, 31 Mar 2018 00:03:39 +0430 Subject: [PATCH 165/306] minor typo fix --- scripts/build.ps1 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/build.ps1 b/scripts/build.ps1 index 07409a5..7a78a85 100644 --- a/scripts/build.ps1 +++ b/scripts/build.ps1 @@ -127,7 +127,7 @@ if($Compile) { else { Write-Verbose "successfully built Cmder v$version!" if ( $Env:APPVEYOR -eq 'True' ) { - Add-AppveyorMessage -Message "Building Cmder v$version was successfull." -Category Information + Add-AppveyorMessage -Message "Building Cmder v$version was successful." -Category Information } } Pop-Location From 65bf25f1d0acc3254f16f80e038a1f2acc2aaa1f Mon Sep 17 00:00:00 2001 From: "Dax T. Games" Date: Tue, 3 Apr 2018 13:20:49 -0400 Subject: [PATCH 166/306] fix bash and powershell init scripts --- vendor/cmder.sh | 20 ++++++++++---------- vendor/init.bat | 45 +++++++++++++++++++++++---------------------- vendor/profile.ps1 | 2 +- 3 files changed, 34 insertions(+), 33 deletions(-) diff --git a/vendor/cmder.sh b/vendor/cmder.sh index fc4d009..a89164f 100644 --- a/vendor/cmder.sh +++ b/vendor/cmder.sh @@ -14,7 +14,7 @@ function runProfiled { if [ ! "x${profile_d_scripts}" = "x" ] ; then for x in ${profile_d_scripts} ; do - echo Sourcing "${1}/${x}"... + # echo Sourcing "${1}/${x}"... . "${1}/${x}" done fi @@ -63,21 +63,21 @@ if [ -d "${CMDER_USER_CONFIG}/profile.d" ] ; then runProfiled "${CMDER_USER_CONFIG}/profile.d" fi +initialConfig="${CMDER_ROOT}/config/user-profile.sh" 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 +if [ "${CMDER_USER_CONFIG}" != "" ] ; then + initialConfig="${CMDER_USER_CONFIG}/user-profile.sh" + if [ -f "${CMDER_USER_CONFIG}/user-profile.sh" ] ; then . "${CMDER_USER_CONFIG}/user-profile.sh" -else - if [ "${CMDER_USER_CONFIG}" != "" ] ; then - initialProfile="${CMDER_USER_CONFIG}/user-profile.sh" - else - initialProfile="${CMDER_ROOT}/config/user-profile.sh" - fi + fi +fi - echo Creating user startup file: "${initialProfile}" - cat <<-eof >"${initialProfile}" +if [ ! -f "${initialConfig}" ] ; then + echo Creating user startup file: "${initialConfig}" + cat <<-eof >"${initialCodfig}" # use this file to run your own startup commands for msys2 bash' # To add a new vendor to the path, do something like: diff --git a/vendor/init.bat b/vendor/init.bat index a4d9e09..0db4741 100644 --- a/vendor/init.bat +++ b/vendor/init.bat @@ -36,11 +36,11 @@ call "%cmder_root%\vendor\lib\lib_profile" :var_loop if "%~1" == "" ( goto :start - ) else if "%1"=="/v" ( + ) else if /i "%1"=="/v" ( set verbose-output=1 - ) else if "%1"=="/d" ( + ) else if /i "%1"=="/d" ( set debug-output=1 - ) else if "%1" == "/max_depth" ( + ) else if /i "%1" == "/max_depth" ( if "%~2" geq "1" if "%~2" leq "5" ( set "max_depth=%~2" shift @@ -48,7 +48,7 @@ call "%cmder_root%\vendor\lib\lib_profile" %lib_console% show_error "'/max_depth' requires a number between 1 and 5!" exit /b ) - ) else if "%1" == "/c" ( + ) else if /i "%1" == "/c" ( if exist "%~2" ( if not exist "%~2\bin" mkdir "%~2\bin" set "cmder_user_bin=%~2\bin" @@ -56,12 +56,12 @@ call "%cmder_root%\vendor\lib\lib_profile" set "cmder_user_config=%~2\config" shift ) - ) else if "%1" == "/user_aliases" ( + ) else if /i "%1" == "/user_aliases" ( if exist "%~2" ( set "user-aliases=%~2" shift ) - ) else if "%1" == "/git_install_root" ( + ) else if /i "%1" == "/git_install_root" ( if exist "%~2" ( set "GIT_INSTALL_ROOT=%~2" shift @@ -69,7 +69,7 @@ call "%cmder_root%\vendor\lib\lib_profile" %lib_console% show_error "The Git install root folder "%~2", you specified does not exist!" exit /b ) - ) else if "%1" == "/home" ( + ) else if /i "%1" == "/home" ( if exist "%~2" ( set "HOME=%~2" shift @@ -77,7 +77,7 @@ call "%cmder_root%\vendor\lib\lib_profile" %lib_console% show_error The home folder "%2", you specified does not exist! exit /b ) - ) else if "%1" == "/svn_ssh" ( + ) else if /i "%1" == "/svn_ssh" ( set SVN_SSH=%2 shift ) @@ -182,7 +182,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_path% enhance_path "!GIT_INSTALL_ROOT!\cmd" + %lib_path% enhance_path "!GIT_INSTALL_ROOT!\cmd" ) else ( goto :NO_GIT ) @@ -208,7 +208,7 @@ endlocal & set "PATH=%PATH%" & set "SVN_SSH=%SVN_SSH%" & set "GIT_INSTALL_ROOT=% %lib_console% debug-output init.bat "Env Var - GIT_INSTALL_ROOT=%GIT_INSTALL_ROOT%" :: Enhance Path -%lib_path% enhance_path_recursive "%CMDER_ROOT%\bin" %max_depth% +%lib_path% enhance_path_recursive "%CMDER_ROOT%\bin" %max_depth% if defined CMDER_USER_BIN ( %lib_path% enhance_path_recursive "%CMDER_USER_BIN%" %max_depth% ) @@ -287,17 +287,23 @@ if exist "%GIT_INSTALL_ROOT%\post-install.bat" ( if not defined HOME set "HOME=%USERPROFILE%" %lib_console% debug-output init.bat "Env Var - HOME=%HOME%" +set "initialConfig=%CMDER_ROOT%\config\user-profile.cmd" 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" +if defined CMDER_USER_CONFIG ( + set "initialConfig=%CMDER_USER_CONFIG%\user-profile.cmd" + 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" + ) +) + +if not exist "%initialConfig%" ( ( + echo Creating user startup file: "%initialConfig%" echo :: use this file to run your own startup commands echo :: use in front of the command to prevent printing the command echo. @@ -312,13 +318,8 @@ 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" - ) +) >"%initialConfig%" ) +set initialConfig= exit /b diff --git a/vendor/profile.ps1 b/vendor/profile.ps1 index f8360a2..20f81c7 100644 --- a/vendor/profile.ps1 +++ b/vendor/profile.ps1 @@ -140,7 +140,7 @@ 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")) { +if ($ENV:CMDER_USER_CONFIG -ne "" -and (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 From 7294092618b62b46add33f98591565d10c2e0a50 Mon Sep 17 00:00:00 2001 From: Benjamin Staneck Date: Fri, 6 Apr 2018 00:00:11 +0200 Subject: [PATCH 167/306] fix a typo --- vendor/cmder.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/vendor/cmder.sh b/vendor/cmder.sh index a89164f..90bca50 100644 --- a/vendor/cmder.sh +++ b/vendor/cmder.sh @@ -4,7 +4,7 @@ # these customizations will follow Cmder if $CMDER_ROOT is copied # to another machine. # -# Add system specific users customizations to $HOME/.bashrc, these +# Add system specific users customizations to $HOME/.bashrc, these # customizations will not follow Cmder to another machine. function runProfiled { @@ -77,7 +77,7 @@ fi if [ ! -f "${initialConfig}" ] ; then echo Creating user startup file: "${initialConfig}" - cat <<-eof >"${initialCodfig}" + cat <<-eof >"${initialConfig}" # use this file to run your own startup commands for msys2 bash' # To add a new vendor to the path, do something like: From 55d9b25f57e577a834407c9e5313fc3ab0a5dfcb Mon Sep 17 00:00:00 2001 From: Benjamin Staneck Date: Fri, 6 Apr 2018 18:08:28 +0200 Subject: [PATCH 168/306] double quote more paths fixes #1681 --- config/ConEmu.xml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/config/ConEmu.xml b/config/ConEmu.xml index ef62ad0..0a62f5e 100644 --- a/config/ConEmu.xml +++ b/config/ConEmu.xml @@ -517,7 +517,7 @@ - + @@ -527,7 +527,7 @@ - + @@ -536,10 +536,10 @@ - + - + @@ -548,14 +548,14 @@ - + - + From 78a9711447c1d3db0168bd4a8e6161754690a084 Mon Sep 17 00:00:00 2001 From: "Dax T. Games" Date: Thu, 12 Apr 2018 21:05:38 -0400 Subject: [PATCH 169/306] fix unreg cleanup --- launcher/src/CmderLauncher.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/launcher/src/CmderLauncher.cpp b/launcher/src/CmderLauncher.cpp index 6e3c923..9481047 100644 --- a/launcher/src/CmderLauncher.cpp +++ b/launcher/src/CmderLauncher.cpp @@ -334,6 +334,7 @@ void UnregisterShellMenu(std::wstring opt, wchar_t* keyBaseName) HKEY cmderKey; FAIL_ON_ERROR(RegCreateKeyEx(root, keyBaseName, 0, NULL, REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, &cmderKey, NULL)); FAIL_ON_ERROR(RegDeleteTree(cmderKey, NULL)); + RegDeleteKeyEx(root, keyBaseName, KEY_ALL_ACCESS, NULL); RegCloseKey(cmderKey); RegCloseKey(root); } From bc72f20a2d189e06716dd3dd6cb3f429893a22b2 Mon Sep 17 00:00:00 2001 From: "Dax T. Games" Date: Thu, 12 Apr 2018 21:06:00 -0400 Subject: [PATCH 170/306] reposition echo --- vendor/init.bat | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vendor/init.bat b/vendor/init.bat index 0db4741..380100a 100644 --- a/vendor/init.bat +++ b/vendor/init.bat @@ -302,8 +302,8 @@ if defined CMDER_USER_CONFIG ( ) if not exist "%initialConfig%" ( - ( echo Creating user startup file: "%initialConfig%" + ( echo :: use this file to run your own startup commands echo :: use in front of the command to prevent printing the command echo. From 063f30c1936c931ea5b04013b55625a8a5242539 Mon Sep 17 00:00:00 2001 From: "Dax T. Games" Date: Thu, 12 Apr 2018 21:32:38 -0400 Subject: [PATCH 171/306] fix git missing error on cmder mini cmd shell --- vendor/lib/lib_console.cmd | 1 - vendor/lib/lib_git.cmd | 25 +++++++++++-------------- 2 files changed, 11 insertions(+), 15 deletions(-) diff --git a/vendor/lib/lib_console.cmd b/vendor/lib/lib_console.cmd index 38f40b4..d94561b 100644 --- a/vendor/lib/lib_console.cmd +++ b/vendor/lib/lib_console.cmd @@ -76,5 +76,4 @@ exit /b :::------------------------------------------------------------------------------- echo ERROR: %~1 - echo CMDER Shell Initialization has Failed! exit /b diff --git a/vendor/lib/lib_git.cmd b/vendor/lib/lib_git.cmd index 7ff9562..ce3d0c8 100644 --- a/vendor/lib/lib_git.cmd +++ b/vendor/lib/lib_git.cmd @@ -45,20 +45,17 @@ exit /b %lib_console% debug-output :read_version "Env Var - git_executable=%git_executable%" :: check if the executable actually exists - if not exist "%git_executable%" ( - %lib_console% show_error "%git_executable%" does not exist! - exit /b -255 - ) - - :: get the git version in the provided directory - for /F "tokens=1,2,3 usebackq" %%A in (`"%git_executable%" --version 2^>nul`) do ( - if /i "%%A %%B" == "git version" ( - set "GIT_VERSION_%~1=%%C" - %lib_console% debug-output :read_version "Env Var - GIT_VERSION_%~1=%%C" - ) else ( - %lib_console% show_error "git --version" returned an inproper version string! - pause - exit /b + if exist "%git_executable%" ( + :: get the git version in the provided directory + for /F "tokens=1,2,3 usebackq" %%A in (`"%git_executable%" --version 2^>nul`) do ( + if /i "%%A %%B" == "git version" ( + set "GIT_VERSION_%~1=%%C" + %lib_console% debug-output :read_version "Env Var - GIT_VERSION_%~1=%%C" + ) else ( + %lib_console% show_error "git --version" returned an inproper version string! + pause + exit /b + ) ) ) From b8890ed29771180e9074685ba1369c80897e54a3 Mon Sep 17 00:00:00 2001 From: "Dax T. Games" Date: Thu, 12 Apr 2018 21:39:52 -0400 Subject: [PATCH 172/306] switch to debug output --- vendor/lib/lib_git.cmd | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/vendor/lib/lib_git.cmd b/vendor/lib/lib_git.cmd index ce3d0c8..54b4e80 100644 --- a/vendor/lib/lib_git.cmd +++ b/vendor/lib/lib_git.cmd @@ -45,17 +45,20 @@ exit /b %lib_console% debug-output :read_version "Env Var - git_executable=%git_executable%" :: check if the executable actually exists - if exist "%git_executable%" ( - :: get the git version in the provided directory - for /F "tokens=1,2,3 usebackq" %%A in (`"%git_executable%" --version 2^>nul`) do ( - if /i "%%A %%B" == "git version" ( - set "GIT_VERSION_%~1=%%C" - %lib_console% debug-output :read_version "Env Var - GIT_VERSION_%~1=%%C" - ) else ( - %lib_console% show_error "git --version" returned an inproper version string! - pause - exit /b - ) + if not exist "%git_executable%" ( + %lib_console% debug-output :reda_version "%git_executable% does not exist." + exit /b -255 + ) + + :: get the git version in the provided directory + for /F "tokens=1,2,3 usebackq" %%A in (`"%git_executable%" --version 2^>nul`) do ( + if /i "%%A %%B" == "git version" ( + set "GIT_VERSION_%~1=%%C" + %lib_console% debug-output :read_version "Env Var - GIT_VERSION_%~1=%%C" + ) else ( + %lib_console% show_error "git --version" returned an inproper version string! + pause + exit /b ) ) From 12e37610177778d6647be3985b5a95e773126a08 Mon Sep 17 00:00:00 2001 From: "Dax T. Games" Date: Thu, 12 Apr 2018 21:41:42 -0400 Subject: [PATCH 173/306] fix tab --- launcher/src/CmderLauncher.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/launcher/src/CmderLauncher.cpp b/launcher/src/CmderLauncher.cpp index 9481047..f417764 100644 --- a/launcher/src/CmderLauncher.cpp +++ b/launcher/src/CmderLauncher.cpp @@ -334,7 +334,7 @@ void UnregisterShellMenu(std::wstring opt, wchar_t* keyBaseName) HKEY cmderKey; FAIL_ON_ERROR(RegCreateKeyEx(root, keyBaseName, 0, NULL, REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, &cmderKey, NULL)); FAIL_ON_ERROR(RegDeleteTree(cmderKey, NULL)); - RegDeleteKeyEx(root, keyBaseName, KEY_ALL_ACCESS, NULL); + RegDeleteKeyEx(root, keyBaseName, KEY_ALL_ACCESS, NULL); RegCloseKey(cmderKey); RegCloseKey(root); } From 2a18ba084cdc0346bbac03736fac71bbcb0bf3df Mon Sep 17 00:00:00 2001 From: "Dax T. Games" Date: Thu, 12 Apr 2018 21:43:31 -0400 Subject: [PATCH 174/306] fix spelling --- vendor/lib/lib_git.cmd | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vendor/lib/lib_git.cmd b/vendor/lib/lib_git.cmd index 54b4e80..19fb98a 100644 --- a/vendor/lib/lib_git.cmd +++ b/vendor/lib/lib_git.cmd @@ -46,7 +46,7 @@ exit /b :: check if the executable actually exists if not exist "%git_executable%" ( - %lib_console% debug-output :reda_version "%git_executable% does not exist." + %lib_console% debug-output :read_version "%git_executable% does not exist." exit /b -255 ) From 9d0729fe42998687bcf05e47a911572cf88be00f Mon Sep 17 00:00:00 2001 From: Benjamin Staneck Date: Fri, 13 Apr 2018 20:19:23 +0200 Subject: [PATCH 175/306] :arrow_up: ConEmu to 180411 release notes: https://conemu.github.io/en/Whats_New.html --- vendor/sources.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/vendor/sources.json b/vendor/sources.json index a30657d..53026e5 100644 --- a/vendor/sources.json +++ b/vendor/sources.json @@ -11,8 +11,8 @@ }, { "name": "conemu-maximus5", - "version": "180318", - "url": "https://github.com/Maximus5/ConEmu/releases/download/v18.03.18/ConEmuPack.180318.7z" + "version": "180411", + "url": "https://github.com/Maximus5/ConEmu/releases/download/v18.04.11/ConEmuPack.180411.7z" }, { "name": "clink-completions", From b2262522c99a6b42f8a47ee0815c3e81da901930 Mon Sep 17 00:00:00 2001 From: Benjamin Staneck Date: Fri, 13 Apr 2018 20:20:50 +0200 Subject: [PATCH 176/306] :arrow_up: Update Git to 2.17.0 Release notes: https://github.com/git-for-windows/git/releases/tag/v2.17.0.windows.1 --- vendor/sources.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/vendor/sources.json b/vendor/sources.json index 53026e5..b61b50e 100644 --- a/vendor/sources.json +++ b/vendor/sources.json @@ -1,8 +1,8 @@ [ { "name": "git-for-windows", - "version": "v2.16.3.windows.1", - "url": "https://github.com/git-for-windows/git/releases/download/v2.16.3.windows.1/PortableGit-2.16.3-64-bit.7z.exe" + "version": "v2.17.0.windows.1", + "url": "https://github.com/git-for-windows/git/releases/download/v2.17.0.windows.1/PortableGit-2.17.0-64-bit.7z.exe" }, { "name": "clink", From dc8e572ca5de24432d9000a6ad71bde41c04a51c Mon Sep 17 00:00:00 2001 From: Benjamin Staneck Date: Thu, 19 Apr 2018 09:07:55 +0200 Subject: [PATCH 177/306] :arrow_up: ConEmu to 180416 release notes: https://conemu.github.io/en/Whats_New.html --- vendor/sources.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/vendor/sources.json b/vendor/sources.json index b61b50e..c110c89 100644 --- a/vendor/sources.json +++ b/vendor/sources.json @@ -11,8 +11,8 @@ }, { "name": "conemu-maximus5", - "version": "180411", - "url": "https://github.com/Maximus5/ConEmu/releases/download/v18.04.11/ConEmuPack.180411.7z" + "version": "180416", + "url": "https://github.com/Maximus5/ConEmu/releases/download/v18.04.16/ConEmuPack.180416.7z" }, { "name": "clink-completions", From 13ea026dc9f3525626346785b6e5e18934b6c084 Mon Sep 17 00:00:00 2001 From: Dax T Games Date: Thu, 26 Apr 2018 19:06:18 -0400 Subject: [PATCH 178/306] Fix git install root This is untested so don't merge yet. I'll test tonight. --- vendor/init.bat | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/vendor/init.bat b/vendor/init.bat index 380100a..4c156ef 100644 --- a/vendor/init.bat +++ b/vendor/init.bat @@ -197,15 +197,15 @@ if defined GIT_INSTALL_ROOT ( ) else if exist "!GIT_INSTALL_ROOT!\mingw64" ( %lib_path% enhance_path "!GIT_INSTALL_ROOT!\mingw64" append ) - %lib_path% enhance_path "%GIT_INSTALL_ROOT%\usr\bin" append + %lib_path% 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%" -%lib_console% debug-output init.bat "Env Var - GIT_INSTALL_ROOT=%GIT_INSTALL_ROOT%" +endlocal & set "PATH=%PATH%" & set "SVN_SSH=%SVN_SSH%" & set "GIT_INSTALL_ROOT=!GIT_INSTALL_ROOT!" +%lib_console% debug-output init.bat "Env Var - GIT_INSTALL_ROOT=!GIT_INSTALL_ROOT!" :: Enhance Path %lib_path% enhance_path_recursive "%CMDER_ROOT%\bin" %max_depth% From a06d4e93ec3f033646c9b4f559ba6b3ef96fd7db Mon Sep 17 00:00:00 2001 From: xiazeyu_2011 Date: Mon, 30 Apr 2018 20:31:01 +0800 Subject: [PATCH 179/306] Pass arguments to user-profile.cmd --- vendor/init.bat | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/vendor/init.bat b/vendor/init.bat index 380100a..6783116 100644 --- a/vendor/init.bat +++ b/vendor/init.bat @@ -290,14 +290,14 @@ if not defined HOME set "HOME=%USERPROFILE%" set "initialConfig=%CMDER_ROOT%\config\user-profile.cmd" 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" + call "%CMDER_ROOT%\config\user-profile.cmd" %* ) if defined CMDER_USER_CONFIG ( set "initialConfig=%CMDER_USER_CONFIG%\user-profile.cmd" 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" + call "%CMDER_USER_CONFIG%\user-profile.cmd" %* ) ) From 99f51b0fc0ffa0195d3d0f11903834f56a241bf1 Mon Sep 17 00:00:00 2001 From: xiazeyu_2011 Date: Tue, 1 May 2018 13:02:21 +0800 Subject: [PATCH 180/306] fix conflict with init.bat build-in command parser, update user-profile.cmd --- vendor/init.bat | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/vendor/init.bat b/vendor/init.bat index 6783116..e68b331 100644 --- a/vendor/init.bat +++ b/vendor/init.bat @@ -81,6 +81,7 @@ call "%cmder_root%\vendor\lib\lib_profile" set SVN_SSH=%2 shift ) + set "CMDER_FLAGS=%CMDER_FLAGS% %1" shift goto var_loop @@ -290,14 +291,14 @@ if not defined HOME set "HOME=%USERPROFILE%" set "initialConfig=%CMDER_ROOT%\config\user-profile.cmd" 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" %* + call "%CMDER_ROOT%\config\user-profile.cmd" %CMDER_FLAGS% ) if defined CMDER_USER_CONFIG ( set "initialConfig=%CMDER_USER_CONFIG%\user-profile.cmd" 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" %* + call "%CMDER_USER_CONFIG%\user-profile.cmd" %CMDER_FLAGS% ) ) @@ -317,6 +318,12 @@ echo. echo :: you can add your plugins to the cmder path like so echo :: set "PATH=%%CMDER_ROOT%%\vendor\whatever;%%PATH%%" echo. +echo :: pass your custom arguments to init.bat, and you can parse them like so +echo :: echo %* | find /i "/noautorun">nul +echo :: if "%ERRORLEVEL%" == "1" ( +echo :: call vsCode +echo :: ) +echo. echo @echo off ) >"%initialConfig%" ) From 9a3a8f23d077cf591ff13d9de651197eae305466 Mon Sep 17 00:00:00 2001 From: Dax T Games Date: Tue, 1 May 2018 08:57:02 -0400 Subject: [PATCH 181/306] Little Changes --- vendor/init.bat | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/vendor/init.bat b/vendor/init.bat index e68b331..7379dae 100644 --- a/vendor/init.bat +++ b/vendor/init.bat @@ -10,6 +10,7 @@ set verbose-output=0 set debug-output=0 set max_depth=1 +set "CMDER_FLAGS=" :: Find root dir if not defined CMDER_ROOT ( @@ -80,8 +81,9 @@ call "%cmder_root%\vendor\lib\lib_profile" ) else if /i "%1" == "/svn_ssh" ( set SVN_SSH=%2 shift + ) else ( + set "CMDER_FLAGS=%CMDER_FLAGS% %1" ) - set "CMDER_FLAGS=%CMDER_FLAGS% %1" shift goto var_loop @@ -318,7 +320,14 @@ echo. echo :: you can add your plugins to the cmder path like so echo :: set "PATH=%%CMDER_ROOT%%\vendor\whatever;%%PATH%%" echo. -echo :: pass your custom arguments to init.bat, and you can parse them like so +echo :: Pass custom arguments to init.bat, and you can parse them like so: +echo :: If found... +echo :: echo %* | find /i "/noautorun">nul +echo :: if "%ERRORLEVEL%" == "0" ( +echo :: call vsCode +echo :: ) +echo. +echo :: If NOT found... echo :: echo %* | find /i "/noautorun">nul echo :: if "%ERRORLEVEL%" == "1" ( echo :: call vsCode From a843e85c8be9ff4678d311f3f9eada4471a65b59 Mon Sep 17 00:00:00 2001 From: Dax T Games Date: Thu, 3 May 2018 18:28:14 -0400 Subject: [PATCH 182/306] Fix GitHub download failures (#1760) * Github changed to only accept TLS 1.2 connections, this fixes the resulting failures. --- scripts/utils.ps1 | 2 ++ 1 file changed, 2 insertions(+) diff --git a/scripts/utils.ps1 b/scripts/utils.ps1 index 08d40d0..fe5aa47 100644 --- a/scripts/utils.ps1 +++ b/scripts/utils.ps1 @@ -200,6 +200,8 @@ function Download-File { $Url, $File ) + [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 + # I think this is the problem $File = $File -Replace "/", "\" Write-Verbose "Downloading from $Url to $File" From 36403df91ed89b1fd70151911b0dc3a58e66a164 Mon Sep 17 00:00:00 2001 From: David Refoua Date: Fri, 4 May 2018 02:59:25 +0430 Subject: [PATCH 183/306] Updates issue template, notes on README.me and fixes line ending (#1751) * add integration notes, refined docs * change img size * verbose issue template * move docs from README to WIKI * increased politeness factor by 10% --- .github/issue_template.md | 27 +++-- README.md | 31 ++++-- launcher/src/Resource.rc | 216 +++++++++++++++++++------------------- 3 files changed, 151 insertions(+), 123 deletions(-) diff --git a/.github/issue_template.md b/.github/issue_template.md index 064a3f4..5ebdb9c 100644 --- a/.github/issue_template.md +++ b/.github/issue_template.md @@ -4,7 +4,7 @@ ------------------------------------------------------------------ Please make sure you read and follow the following instructions - before reporting bugs, and/or requesting new features. + carefully before reporting bugs, and/or requesting new features. Make sure that you have: @@ -24,17 +24,22 @@ https://github.com/Maximus5/ConEmu/issues?q=is:issue - If there isn't an existing issue, you may open a new one. + If there isn't an existing issue, you may open a new one there. (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 + • 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 Guides section first: - - - https://github.com/cmderdev/cmder/issues?q=label:Guide - - https://github.com/cmderdev/cmder/issues?q=label:Question + 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 @@ -42,6 +47,9 @@ 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. + + 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! @@ -56,6 +64,9 @@ - Post a screenshot or the command the triggered the problem, if applicable. - Avoid using ambiguous phrases like: doesn't work, there'a problem, etc. 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. + - ⚠ Read the following page to avoid posting a bad issue: https://conemu.github.io/en/BadIssue.html --> ### Purpose of the issue @@ -64,4 +75,4 @@ - [ ] Question ### Description of the issue - + diff --git a/README.md b/README.md index 66f5220..2d18f18 100644 --- a/README.md +++ b/README.md @@ -10,6 +10,8 @@ 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. +The Cmder's user interface is also designed to be more eye pleasing, and you can compare the main differences between Cmder and ConEmu [here](https://conemu.github.io/en/cmder.html). + ## Installation ### Single User Portable Config @@ -79,7 +81,7 @@ In a file explorer window right click in or on a directory to see "Cmder Here" i * Ctrl + R : History search * Shift + Mouse : Select and copy text from buffer -(Some shortcuts are not yet documented, though they exist - please document them here) +_(Some shortcuts are not yet documented, though they exist - please document them here)_ ## Features @@ -88,7 +90,7 @@ 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 | 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. | @@ -99,9 +101,13 @@ You can open multiple tabs each containing one of the following shells: 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. -Mintty tabs use a program called 'mintty' as the terminal that is not based on the Windows Console API so some differences in functionality are normal, as a result mintty specific config is done via the '[%USERPROFILE%|$HOME]/.minttyrc' file. +⚠ *NOTE:* Only the full edition of Cmder comes with a pre-installed bash, using a vendored [git-for-windows](https://gitforwindows.org/) installation. The pre-configured Bash tabs may not work on Cmder mini eidition without additional configuration. -Mintty differs from the other tabs in that it supports xterm/xterm-256color TERM types, and does not work with ConEmu settings like color schemes and key bindings. For more on Mintty and its config click [here](https://github.com/mintty/mintty). +You may however, choose to use an external installation of bash, such as Microsoft's [Subsystem for Linux](https://docs.microsoft.com/en-us/windows/wsl/install-win10) (called WSL) or the [Cygwin](https://cygwin.com/) project which provides POSIX support on windows. + +⚠ *NOTE:* Mintty tabs use a program called 'mintty' as the terminal emulator that is not based on the Windows Console API, rather it's rendered graphically by ConEmu. Mintty differs from the other tabs in that it supports xterm/xterm-256color TERM types, and does not work with ConEmu settings like color schemes and key bindings. As such, some differences in functionality are to be expected, such as Cmder not being able to apply a system-wide configuration to it. + +As a result mintty specific config is done via the '[%USERPROFILE%|$HOME]/.minttyrc' file. You may read more about Mintty and its config file [here](https://github.com/mintty/mintty). An example of setting Cmder portable terminal colors for mintty: @@ -114,6 +120,8 @@ cd mintty-colors-solarized/ echo source \$CMDER_ROOT/vendor/mintty-colors-solarized/mintty-solarized-dark.sh>>$CMDER_ROOT/config/user-profile.sh ``` +You may find some Monokai color schemes for mintty to match Cmder [here](https://github.com/PhilipDaniels/mintty/blob/master/themes/Monokai) or [here](https://github.com/oumu/mintty-color-schemes/blob/master/base16-monokai-mod.minttyrc). + ### Changing Cmder Default 'cmd.exe' Shell Startup Behaviour Using Task Arguments 1. Press Win + Alt + T @@ -211,7 +219,9 @@ Cmder is by default shipped with a vendored Git installation. On each instance 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. +### Using external Cygwin/Babun, MSys2, WSL, or Git for Windows SDK with Cmder. + +You may run bash (the default shell used on Linux, macOS and GNU/Hurd) externally on Cmder, using the following instructions: 1. Setup a new task by pressing 'Win +Alt + T'. 1. Click the '+' button to add a task. @@ -219,7 +229,7 @@ You may use your favorite version of Git by including its path in the `%PATH%` e 1. Provide task parameters, this is optional. 1. Add ```cmd /c "[path_to_external_env]\bin\bash --login -i" -new_console``` to the `Commands` text box. -Recommended Optional Steps: +**Recommended Optional Steps:** Copy the 'vendor/cmder_exinit' file to the Cygwin/Babun, MSys2, or Git for Windows SDK environments ```/etc/profile.d/``` folder to use portable settings in the $CMDER_ROOT/config folder. @@ -236,9 +246,16 @@ 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. ``` +### Integrating Cmder with [Hyper](https://github.com/zeit/hyper), [Microsoft VS Code](https://code.visualstudio.com/), and your favorite IDEs +Cmder by default comes with a vendored ConEmu installation as the underlying terminal emulator, as stated [here](https://conemu.github.io/en/cmder.html). + +However, Cmder can in fact run in a variety of other terminal emulators, and even integrated IDEs. Assuming you have the latest version of Cmder, follow the following instructions to get Cmder working with your own terminal emulator. + +For instructions on how to integrate Cmder with your IDE, please read our [Wiki section](https://github.com/cmderdev/cmder/wiki#cmder-integration). + ## Upgrading -The process of upgrading Cmder depends on the version/build you are currently running +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: diff --git a/launcher/src/Resource.rc b/launcher/src/Resource.rc index fa9a64f..55e2772 100644 --- a/launcher/src/Resource.rc +++ b/launcher/src/Resource.rc @@ -1,108 +1,108 @@ -/* _ - ___ _ __ ___ __| | ___ _ __ - / __| '_ ` _ \ / _` |/ _ \ '__| -| (__| | | | | | (_| | __/ | - \___|_| |_| |_|\__,_|\___|_| -============================================================================= - The Cmder Console Emulator Project -*/ - -#include "resource.h" -#include "version.rc2" - -#define APSTUDIO_READONLY_SYMBOLS -///////////////////////////////////////////////////////////////////////////// -// -// Generated from the TEXTINCLUDE 2 resource. -// -#include "winres.h" - -///////////////////////////////////////////////////////////////////////////// -#undef APSTUDIO_READONLY_SYMBOLS - -///////////////////////////////////////////////////////////////////////////// -// English (United States) resources - -#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) -LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US - -#ifdef APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// TEXTINCLUDE -// - -1 TEXTINCLUDE -BEGIN -"resource.h\0" -END - -2 TEXTINCLUDE -BEGIN -"#include ""winres.h""\r\n" -"\0" -END - -3 TEXTINCLUDE -BEGIN -"\r\n" -"\0" -END - -#endif // APSTUDIO_INVOKED - -///////////////////////////////////////////////////////////////////////////// -// -// Icon -// - -// Icon with lowest ID value placed first to ensure application icon -// remains consistent on all systems. -IDI_CMDER ICON "..\\..\\icons\\cmder.ico" -#endif // English (United States) resources -///////////////////////////////////////////////////////////////////////////// - -///////////////////////////////////////////////////////////////////////////// -// -// Version -// - -VS_VERSION_INFO VERSIONINFO - FILEVERSION CMDER_MAJOR_VERSION,CMDER_MINOR_VERSION,CMDER_REVISION_VERSION,CMDER_BUILD_VERSION - PRODUCTVERSION CMDER_MAJOR_VERSION,CMDER_MINOR_VERSION,CMDER_REVISION_VERSION,CMDER_BUILD_VERSION - FILEFLAGSMASK VS_FFI_FILEFLAGSMASK - FILEFLAGS (CMDER_DEBUGFLAG | CMDER_BUILDFLAGS) - FILEOS VOS_NT_WINDOWS32 - FILETYPE VFT_APP - FILESUBTYPE VFT2_UNKNOWN -BEGIN - BLOCK "StringFileInfo" - BEGIN - BLOCK "100904b0" - BEGIN - VALUE "CompanyName", CMDER_COMPANY_NAME_STR "\0" - VALUE "FileDescription", CMDER_FILE_DESCRIPTION_STR "\0" - VALUE "FileVersion", CMDER_VERSION_STR "\0" - VALUE "InternalName", CMDER_INTERNAL_NAME_STR "\0" - VALUE "LegalCopyright", "Copyright (C) " CMDER_COPYRIGHT_YEAR_STR " " CMDER_COMPANY_NAME_STR "\0" - VALUE "OriginalFilename", CMDER_ORIGINAL_FILENAME_STR "\0" - VALUE "ProductName", CMDER_PRODUCT_NAME_STR "\0" - VALUE "ProductVersion", CMDER_VERSION_STR "\0" - END - END - BLOCK "VarFileInfo" - BEGIN - VALUE "Translation", 0x1009, 1200 - END -END - -///////////////////////////////////////////////////////////////////////////// - -#ifndef APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// Generated from the TEXTINCLUDE 3 resource. -// - -///////////////////////////////////////////////////////////////////////////// -#endif // not APSTUDIO_INVOKED +/* _ + ___ _ __ ___ __| | ___ _ __ + / __| '_ ` _ \ / _` |/ _ \ '__| +| (__| | | | | | (_| | __/ | + \___|_| |_| |_|\__,_|\___|_| +============================================================================= + The Cmder Console Emulator Project +*/ + +#include "resource.h" +#include "version.rc2" + +#define APSTUDIO_READONLY_SYMBOLS +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 2 resource. +// +#include "winres.h" + +///////////////////////////////////////////////////////////////////////////// +#undef APSTUDIO_READONLY_SYMBOLS + +///////////////////////////////////////////////////////////////////////////// +// English (United States) resources + +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) +LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US + +#ifdef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// TEXTINCLUDE +// + +1 TEXTINCLUDE +BEGIN +"resource.h\0" +END + +2 TEXTINCLUDE +BEGIN +"#include ""winres.h""\r\n" +"\0" +END + +3 TEXTINCLUDE +BEGIN +"\r\n" +"\0" +END + +#endif // APSTUDIO_INVOKED + +///////////////////////////////////////////////////////////////////////////// +// +// Icon +// + +// Icon with lowest ID value placed first to ensure application icon +// remains consistent on all systems. +IDI_CMDER ICON "..\\..\\icons\\cmder.ico" +#endif // English (United States) resources +///////////////////////////////////////////////////////////////////////////// + +///////////////////////////////////////////////////////////////////////////// +// +// Version +// + +VS_VERSION_INFO VERSIONINFO + FILEVERSION CMDER_MAJOR_VERSION,CMDER_MINOR_VERSION,CMDER_REVISION_VERSION,CMDER_BUILD_VERSION + PRODUCTVERSION CMDER_MAJOR_VERSION,CMDER_MINOR_VERSION,CMDER_REVISION_VERSION,CMDER_BUILD_VERSION + FILEFLAGSMASK VS_FFI_FILEFLAGSMASK + FILEFLAGS (CMDER_DEBUGFLAG | CMDER_BUILDFLAGS) + FILEOS VOS_NT_WINDOWS32 + FILETYPE VFT_APP + FILESUBTYPE VFT2_UNKNOWN +BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "100904b0" + BEGIN + VALUE "CompanyName", CMDER_COMPANY_NAME_STR "\0" + VALUE "FileDescription", CMDER_FILE_DESCRIPTION_STR "\0" + VALUE "FileVersion", CMDER_VERSION_STR "\0" + VALUE "InternalName", CMDER_INTERNAL_NAME_STR "\0" + VALUE "LegalCopyright", "Copyright (C) " CMDER_COPYRIGHT_YEAR_STR " " CMDER_COMPANY_NAME_STR "\0" + VALUE "OriginalFilename", CMDER_ORIGINAL_FILENAME_STR "\0" + VALUE "ProductName", CMDER_PRODUCT_NAME_STR "\0" + VALUE "ProductVersion", CMDER_VERSION_STR "\0" + END + END + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x1009, 1200 + END +END + +///////////////////////////////////////////////////////////////////////////// + +#ifndef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 3 resource. +// + +///////////////////////////////////////////////////////////////////////////// +#endif // not APSTUDIO_INVOKED From daa94c5462b864f4b0e6aab2ccc0eab5fe28a9b1 Mon Sep 17 00:00:00 2001 From: xiazeyu_2011 Date: Fri, 4 May 2018 20:14:40 +0800 Subject: [PATCH 184/306] Optimize comments of using arguments in user-profile.cmd --- vendor/init.bat | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/vendor/init.bat b/vendor/init.bat index 7379dae..0b060f7 100644 --- a/vendor/init.bat +++ b/vendor/init.bat @@ -320,17 +320,15 @@ echo. echo :: you can add your plugins to the cmder path like so echo :: set "PATH=%%CMDER_ROOT%%\vendor\whatever;%%PATH%%" echo. -echo :: Pass custom arguments to init.bat, and you can parse them like so: -echo :: If found... -echo :: echo %* | find /i "/noautorun">nul -echo :: if "%ERRORLEVEL%" == "0" ( -echo :: call vsCode -echo :: ) +echo :: arguments in this batch are passed from init.bat, you can parse them like so: echo. -echo :: If NOT found... -echo :: echo %* | find /i "/noautorun">nul -echo :: if "%ERRORLEVEL%" == "1" ( -echo :: call vsCode +echo :: echo %* | find /i "/customOption">nul +echo :: if "%ERRORLEVEL%" == "0" ( +echo :: echo found /customOption. +echo :: do something. +echo :: ) else ( +echo :: echo not found /customOption. +echo :: do something. echo :: ) echo. echo @echo off From 7d31eeaa5a04fe8b7f69c024d50d84b98a60045b Mon Sep 17 00:00:00 2001 From: Benjamin Staneck Date: Thu, 17 May 2018 15:49:50 +0200 Subject: [PATCH 185/306] enable unc paths by default --- config/ConEmu.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/config/ConEmu.xml b/config/ConEmu.xml index 0a62f5e..db45a6a 100644 --- a/config/ConEmu.xml +++ b/config/ConEmu.xml @@ -59,6 +59,7 @@ + From bf6dae4a24477a59cb98bac06ac4b895f59f90d5 Mon Sep 17 00:00:00 2001 From: xiazeyu_2011 Date: Fri, 18 May 2018 20:32:05 +0800 Subject: [PATCH 186/306] feat: add have.bat as a wrapper --- bin/have.bat | 109 ++++++++++++++++++++++++++++++++++++++++++++++++ vendor/init.bat | 20 ++++----- 2 files changed, 118 insertions(+), 11 deletions(-) create mode 100644 bin/have.bat diff --git a/bin/have.bat b/bin/have.bat new file mode 100644 index 0000000..8007877 --- /dev/null +++ b/bin/have.bat @@ -0,0 +1,109 @@ +@echo off +setlocal + +if "%~1" equ "" goto :wrongSyntax + +if not defined CMDER_USER_FLAGS ( + exit /b +) + +set "haveBatNOT=false" +goto :parseArgument + +:doShift + shift + +:parseArgument +set "currenTarg=%~1" +if /i "%currenTarg%" == "/?" ( + goto :help +) else if /i "%currenTarg%" equ "/help" ( + goto :help +) else if /i "%currenTarg%" equ "/h" ( + goto :help +) else if /i "%currenTarg%" equ "NOT" ( + set "haveBatNOT=true" + goto :doShift +) else ( + if "%~1" equ "" goto :wrongSyntax + if "%~2" equ "" goto :wrongSyntax + set "haveBatArgName=%~1" + set "haveBatCommand=%~2" + goto :detect +) + +:detect +:: to avoid erroneous deteciton like "/do" "/doNOT", both have a "/do" +:: but if it works like "/do " "/doNOT ", "/do " won't match "/doN" +set "CMDER_USER_FLAGS=%CMDER_USER_FLAGS% " +set "haveBatArgName=%haveBatArgName% " +:: echo. +:: echo %CMDER_USER_FLAGS% +:: echo %haveBatNOT% +:: echo %haveBatArgName% +:: echo %haveBatCommand% +:: echo. +echo %CMDER_USER_FLAGS% | find /i "%haveBatArgName%">nul +if "%ERRORLEVEL%" == "0" ( + if "%haveBatNOT%" == "false" ( + call "%haveBatCommand%" + ) +) else ( + if "%haveBatNOT%" == "true" ( + call "%haveBatCommand%" + ) +) +exit /b + +:wrongSyntax +echo The syntax of the command is incorrect. +echo. +echo use /? for help +echo. +exit /b + +:help +echo have.bat +echo Handles with custom arguments for cmder's init.bat +echo written by xiazeyu, inspired DRSDavidSoft +echo. +echo Usage: +echo. +echo HAVE [NOT] argName command +echo. +echo NOT Specifies that have.bat should carry out +echo the command only if the condition is false. +echo. +echo argName Specifies which argument name is to detect. +echo. +echo command Specifies the command to carry out if the +echo argument name is detected. It's recommand to +echo use a pair of double quotation marks to +echo wrap your command to avoid exceed expectation. +echo. +echo Examples: +echo. +echo these examples are expected to be writted in /config/user-profile.cmd +echo it will use the environment varible "CMDER_USER_FLAGS" +echo. +echo Case 1: +echo. +echo The following command in user-profile.cmd would execute "notepad.exe" +echo. +echo call have "/startNotepad" "cmd /c start notepad.exe" +echo. +echo if you pass parameter to init.bat like: +echo. +echo init.bat /startNotepad +echo. +echo Case 2: +echo. +echo The following command in user-profile.cmd would execute "notepad.exe" +echo. +echo call have NOT "/dontStartNotepad" "cmd /c start notepad.exe" +echo. +echo UNLESS you pass parameter to init.bat like: +echo. +echo init.bat /dontStartNotepad +echo. +exit /b diff --git a/vendor/init.bat b/vendor/init.bat index 0b060f7..ef5c449 100644 --- a/vendor/init.bat +++ b/vendor/init.bat @@ -308,28 +308,26 @@ if not exist "%initialConfig%" ( echo Creating user startup file: "%initialConfig%" ( echo :: use this file to run your own startup commands -echo :: use in front of the command to prevent printing the command +echo :: use in front of the command to prevent printing the command +echo. +echo :: the next one lines is for "have" shortcut, a custom arguments handler +echo :: don't remove it if you need it +echo set "CMDER_USER_FLAGS=%*" 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 :: uncomment the 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 :: arguments in this batch are passed from init.bat, you can parse them like so: +echo :: arguments in this batch are passed from init.bat, you can quickly parse them like so: +echo :: more useage can be seen by typing "have /?" echo. -echo :: echo %* | find /i "/customOption">nul -echo :: if "%ERRORLEVEL%" == "0" ( -echo :: echo found /customOption. -echo :: do something. -echo :: ) else ( -echo :: echo not found /customOption. -echo :: do something. -echo :: ) +echo :: have "/customOption" "your custom command" echo. echo @echo off ) >"%initialConfig%" From add82a247b5cf9ad21a9a0dd244227be6d2603ae Mon Sep 17 00:00:00 2001 From: xiazeyu_2011 Date: Fri, 18 May 2018 20:34:10 +0800 Subject: [PATCH 187/306] docs: update doc for have.bat --- README.md | 68 ++++++++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 65 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 66f5220..f3920fe 100644 --- a/README.md +++ b/README.md @@ -236,14 +236,76 @@ 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. ``` +### Handling with custom arguments when using init.bat + +You can pass custom arguments to `init.bat` and use `have.bat` (or `have` for shortcut) to detect it. + +It is useful when you have multiple modes to execute cmder. + +If you use + +```batch + +init.bat /startNotepad + +``` + +to start init.bat with custom argument(`/startNotepad`) and put + +```batch + +call have "/startNotepad" "cmd /c start notepad.exe"` + +``` + +into `/config/user-profile.cmd`, then `notepad.exe` will be executed, and once you use + +```batch + +init.bat + +``` + +the `notepad.exe` won't be executed. + +Detailed usage of `have` can be seen by typing `have /?` in cmder. + +This feature is usually for external execution. + +In my case, I use `cmder` as an **entry point** of my portable working system, + +and I [integrated VSCode with cmder](https://github.com/cmderdev/cmder/wiki/Seamless-VS-Code-Integration), it will **automatic execute VSCode** when I use `cmder.exe` to start. + +And when using integrated console in VSCode, VSCode **won't be executed again** as I use + +```json + +"terminal.integrated.shellArgs.windows": [ + "/k", + "%cmder_root%\\vendor\\init.bat", + "/noautorun" +], + +``` + +for `terminal.integrated.shellArgs.windows`, + +And here's the related fragment of my `user-profile.cmd`: + +```batch + +call have NOT "/noautorun" "cmd /c "start %cmder_root%\bin\vsCode\Code.exe --user-data-dir %vsCodeUserData% --extensions-dir %vsCodeExtensionsDir% %* %vsCodeUserData%\code.code-workspace" + +``` + ## 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: +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`. @@ -253,7 +315,7 @@ 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`. From 0ce1db97d05259efe40f69665486a0c2f031d903 Mon Sep 17 00:00:00 2001 From: xiazeyu_2011 Date: Fri, 18 May 2018 21:02:36 +0800 Subject: [PATCH 188/306] fix: bug when no argument is passed in --- README.md | 2 +- bin/have.bat | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index f3920fe..2751efe 100644 --- a/README.md +++ b/README.md @@ -294,7 +294,7 @@ And here's the related fragment of my `user-profile.cmd`: ```batch -call have NOT "/noautorun" "cmd /c "start %cmder_root%\bin\vsCode\Code.exe --user-data-dir %vsCodeUserData% --extensions-dir %vsCodeExtensionsDir% %* %vsCodeUserData%\code.code-workspace" +call have NOT "/noautorun" "cmd /c start %cmder_root%\bin\vsCode\Code.exe --user-data-dir %vsCodeUserData% --extensions-dir %vsCodeExtensionsDir% %* %vsCodeUserData%\code.code-workspace" ``` diff --git a/bin/have.bat b/bin/have.bat index 8007877..0e5ad21 100644 --- a/bin/have.bat +++ b/bin/have.bat @@ -4,7 +4,7 @@ setlocal if "%~1" equ "" goto :wrongSyntax if not defined CMDER_USER_FLAGS ( - exit /b + set "CMDER_USER_FLAGS= " ) set "haveBatNOT=false" From 861f99d64b7bf6e73948a87f0eae6972cede20d1 Mon Sep 17 00:00:00 2001 From: xiazeyu_2011 Date: Sun, 27 May 2018 10:22:44 +0800 Subject: [PATCH 189/306] rename /bin/have.bat to /vendor/lib/flag_exists.cmd Please use %flag_exists% instead of using have --- README.md | 12 +++--- vendor/init.bat | 9 +++-- bin/have.bat => vendor/lib/flag_exists.cmd | 45 ++++++++++++---------- 3 files changed, 35 insertions(+), 31 deletions(-) rename bin/have.bat => vendor/lib/flag_exists.cmd (69%) diff --git a/README.md b/README.md index 9b8f99d..0895c2c 100644 --- a/README.md +++ b/README.md @@ -105,7 +105,7 @@ Cmder, PowerShell, and Bash tabs all run on top of the Windows Console API and w You may however, choose to use an external installation of bash, such as Microsoft's [Subsystem for Linux](https://docs.microsoft.com/en-us/windows/wsl/install-win10) (called WSL) or the [Cygwin](https://cygwin.com/) project which provides POSIX support on windows. -⚠ *NOTE:* Mintty tabs use a program called 'mintty' as the terminal emulator that is not based on the Windows Console API, rather it's rendered graphically by ConEmu. Mintty differs from the other tabs in that it supports xterm/xterm-256color TERM types, and does not work with ConEmu settings like color schemes and key bindings. As such, some differences in functionality are to be expected, such as Cmder not being able to apply a system-wide configuration to it. +⚠ *NOTE:* Mintty tabs use a program called 'mintty' as the terminal emulator that is not based on the Windows Console API, rather it's rendered graphically by ConEmu. Mintty differs from the other tabs in that it supports xterm/xterm-256color TERM types, and does not work with ConEmu settings like color schemes and key bindings. As such, some differences in functionality are to be expected, such as Cmder not being able to apply a system-wide configuration to it. As a result mintty specific config is done via the '[%USERPROFILE%|$HOME]/.minttyrc' file. You may read more about Mintty and its config file [here](https://github.com/mintty/mintty). @@ -248,7 +248,7 @@ Uncomment and edit the below line in the script to use Cmder config even when la ### Handling with custom arguments when using init.bat -You can pass custom arguments to `init.bat` and use `have.bat` (or `have` for shortcut) to detect it. +You can pass custom arguments to `init.bat` and use `%flag_exists%` to detect it. It is useful when you have multiple modes to execute cmder. @@ -264,7 +264,7 @@ to start init.bat with custom argument(`/startNotepad`) and put ```batch -call have "/startNotepad" "cmd /c start notepad.exe"` +call %flag_exists% "/startNotepad" "cmd /c start notepad.exe"` ``` @@ -278,7 +278,7 @@ init.bat the `notepad.exe` won't be executed. -Detailed usage of `have` can be seen by typing `have /?` in cmder. +Detailed usage of `%flag_exists%` can be seen by typing `%flag_exists% /?` in cmder. This feature is usually for external execution. @@ -304,11 +304,11 @@ And here's the related fragment of my `user-profile.cmd`: ```batch -call have NOT "/noautorun" "cmd /c start %cmder_root%\bin\vsCode\Code.exe --user-data-dir %vsCodeUserData% --extensions-dir %vsCodeExtensionsDir% %* %vsCodeUserData%\code.code-workspace" +call %flag_exists% NOT "/noautorun" "cmd /c start %cmder_root%\bin\vsCode\Code.exe --user-data-dir %vsCodeUserData% --extensions-dir %vsCodeExtensionsDir% %* %vsCodeUserData%\code.code-workspace" ``` -### Integrating Cmder with [Hyper](https://github.com/zeit/hyper), [Microsoft VS Code](https://code.visualstudio.com/), and your favorite IDEs +### Integrating Cmder with [Hyper](https://github.com/zeit/hyper), [Microsoft VS Code](https://code.visualstudio.com/), and your favorite IDEs Cmder by default comes with a vendored ConEmu installation as the underlying terminal emulator, as stated [here](https://conemu.github.io/en/cmder.html). However, Cmder can in fact run in a variety of other terminal emulators, and even integrated IDEs. Assuming you have the latest version of Cmder, follow the following instructions to get Cmder working with your own terminal emulator. diff --git a/vendor/init.bat b/vendor/init.bat index 5e4561e..4b1eef1 100644 --- a/vendor/init.bat +++ b/vendor/init.bat @@ -310,9 +310,10 @@ if not exist "%initialConfig%" ( echo :: use this file to run your own startup commands echo :: use in front of the command to prevent printing the command echo. -echo :: the next one lines is for "have" shortcut, a custom arguments handler +echo :: the next two lines is for "%%flag_exists%%" shortcut, a custom arguments handler echo :: don't remove it if you need it -echo set "CMDER_USER_FLAGS=%*" +echo set "CMDER_USER_FLAGS=%%*" +echo call "%%cmder_root%%\vendor\lib\flag_exists" echo. echo :: uncomment this to have the ssh agent load when cmder starts echo :: call "%%GIT_INSTALL_ROOT%%/cmd/start-ssh-agent.cmd" @@ -325,9 +326,9 @@ echo :: you can add your plugins to the cmder path like so echo :: set "PATH=%%CMDER_ROOT%%\vendor\whatever;%%PATH%%" echo. echo :: arguments in this batch are passed from init.bat, you can quickly parse them like so: -echo :: more useage can be seen by typing "have /?" +echo :: more useage can be seen by typing "%%flag_exists%% /?" echo. -echo :: have "/customOption" "your custom command" +echo :: %%flag_exists%% "/customOption" "your custom command" echo. echo @echo off ) >"%initialConfig%" diff --git a/bin/have.bat b/vendor/lib/flag_exists.cmd similarity index 69% rename from bin/have.bat rename to vendor/lib/flag_exists.cmd index 0e5ad21..776aafb 100644 --- a/bin/have.bat +++ b/vendor/lib/flag_exists.cmd @@ -1,4 +1,5 @@ @echo off +set "flag_exists=%~dp0flag_exists" setlocal if "%~1" equ "" goto :wrongSyntax @@ -7,7 +8,7 @@ if not defined CMDER_USER_FLAGS ( set "CMDER_USER_FLAGS= " ) -set "haveBatNOT=false" +set "feNOT=false" goto :parseArgument :doShift @@ -22,13 +23,13 @@ if /i "%currenTarg%" == "/?" ( ) else if /i "%currenTarg%" equ "/h" ( goto :help ) else if /i "%currenTarg%" equ "NOT" ( - set "haveBatNOT=true" + set "feNOT=true" goto :doShift ) else ( if "%~1" equ "" goto :wrongSyntax if "%~2" equ "" goto :wrongSyntax - set "haveBatArgName=%~1" - set "haveBatCommand=%~2" + set "feArgName=%~1" + set "feCommand=%~2" goto :detect ) @@ -36,21 +37,21 @@ if /i "%currenTarg%" == "/?" ( :: to avoid erroneous deteciton like "/do" "/doNOT", both have a "/do" :: but if it works like "/do " "/doNOT ", "/do " won't match "/doN" set "CMDER_USER_FLAGS=%CMDER_USER_FLAGS% " -set "haveBatArgName=%haveBatArgName% " +set "feArgName=%feArgName% " :: echo. :: echo %CMDER_USER_FLAGS% -:: echo %haveBatNOT% -:: echo %haveBatArgName% -:: echo %haveBatCommand% +:: echo %feNOT% +:: echo %feArgName% +:: echo %feCommand% :: echo. -echo %CMDER_USER_FLAGS% | find /i "%haveBatArgName%">nul +echo %CMDER_USER_FLAGS% | find /i "%feArgName%">nul if "%ERRORLEVEL%" == "0" ( - if "%haveBatNOT%" == "false" ( - call "%haveBatCommand%" + if "%feNOT%" == "false" ( + call "%feCommand%" ) ) else ( - if "%haveBatNOT%" == "true" ( - call "%haveBatCommand%" + if "%feNOT%" == "true" ( + call "%feCommand%" ) ) exit /b @@ -63,22 +64,24 @@ echo. exit /b :help -echo have.bat -echo Handles with custom arguments for cmder's init.bat -echo written by xiazeyu, inspired DRSDavidSoft +echo. +echo %%flag_exists%% +echo. +echo Handles with custom arguments for cmder's init.bat. +echo written by xiazeyu, inspired DRSDavidSoft. echo. echo Usage: echo. -echo HAVE [NOT] argName command +echo %%flag_exists%% [NOT] argName command echo. -echo NOT Specifies that have.bat should carry out +echo NOT Specifies that %%flag_exists%% should carry out echo the command only if the condition is false. echo. echo argName Specifies which argument name is to detect. echo. echo command Specifies the command to carry out if the echo argument name is detected. It's recommand to -echo use a pair of double quotation marks to +echo use a pair of double quotation marks to echo wrap your command to avoid exceed expectation. echo. echo Examples: @@ -90,7 +93,7 @@ echo Case 1: echo. echo The following command in user-profile.cmd would execute "notepad.exe" echo. -echo call have "/startNotepad" "cmd /c start notepad.exe" +echo call %%flag_exists%% "/startNotepad" "cmd /c start notepad.exe" echo. echo if you pass parameter to init.bat like: echo. @@ -100,7 +103,7 @@ echo Case 2: echo. echo The following command in user-profile.cmd would execute "notepad.exe" echo. -echo call have NOT "/dontStartNotepad" "cmd /c start notepad.exe" +echo call %%flag_exists%% NOT "/dontStartNotepad" "cmd /c start notepad.exe" echo. echo UNLESS you pass parameter to init.bat like: echo. From 83f411384cc8e48d7ca1d5a5f9d5450814615e5e Mon Sep 17 00:00:00 2001 From: Benjamin Staneck Date: Tue, 29 May 2018 22:37:21 +0200 Subject: [PATCH 190/306] :arrow_up: Update Git to 2.17.1 Release notes: https://github.com/git-for-windows/git/releases/tag/v2.17.1.windows.2 --- vendor/sources.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/vendor/sources.json b/vendor/sources.json index c110c89..96f134a 100644 --- a/vendor/sources.json +++ b/vendor/sources.json @@ -1,8 +1,8 @@ [ { "name": "git-for-windows", - "version": "v2.17.0.windows.1", - "url": "https://github.com/git-for-windows/git/releases/download/v2.17.0.windows.1/PortableGit-2.17.0-64-bit.7z.exe" + "version": "v2.17.1.windows.2", + "url": "https://github.com/git-for-windows/git/releases/download/v2.17.1.windows.2/PortableGit-2.17.1.2-64-bit.7z.exe" }, { "name": "clink", From 44aadccbecc6903918d749c693771c211ebb8fce Mon Sep 17 00:00:00 2001 From: Benjamin Staneck Date: Tue, 29 May 2018 22:42:32 +0200 Subject: [PATCH 191/306] :arrow_up: ConEmu to 180528 release notes: https://conemu.github.io/en/Whats_New.html --- vendor/sources.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/vendor/sources.json b/vendor/sources.json index 96f134a..437a4ee 100644 --- a/vendor/sources.json +++ b/vendor/sources.json @@ -11,8 +11,8 @@ }, { "name": "conemu-maximus5", - "version": "180416", - "url": "https://github.com/Maximus5/ConEmu/releases/download/v18.04.16/ConEmuPack.180416.7z" + "version": "180528", + "url": "https://github.com/Maximus5/ConEmu/releases/download/v18.05.28/ConEmuPack.180528.7z" }, { "name": "clink-completions", From 19d5a872249967ebd6fee33af20b6aee7cc2f14d Mon Sep 17 00:00:00 2001 From: "Dax T. Games" Date: Sat, 26 May 2018 13:29:19 -0500 Subject: [PATCH 192/306] Fix GIT_INSTALL_ROOT again --- vendor/init.bat | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/vendor/init.bat b/vendor/init.bat index 4c156ef..1328fc7 100644 --- a/vendor/init.bat +++ b/vendor/init.bat @@ -129,12 +129,14 @@ if not defined TERM set TERM=cygwin :: * 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 by examining the version string +setlocal enabledelayedexpansion if defined GIT_INSTALL_ROOT ( if exist "%GIT_INSTALL_ROOT%\cmd\git.exe" goto :FOUND_GIT) ) +%lib_console% debug-output init.bat "Looking for Git install root..." + :: get the version information for vendored git binary -setlocal enabledelayedexpansion %lib_git% read_version VENDORED "%CMDER_ROOT%\vendor\git-for-windows\cmd" %lib_git% validate_version VENDORED !GIT_VERSION_VENDORED! @@ -203,11 +205,16 @@ if defined GIT_INSTALL_ROOT ( 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!" -%lib_console% debug-output init.bat "Env Var - GIT_INSTALL_ROOT=!GIT_INSTALL_ROOT!" +endlocal & set "PATH=%PATH%" & set "SVN_SSH=%SVN_SSH%" & set "GIT_INSTALL_ROOT=%GIT_INSTALL_ROOT%" +%lib_console% debug-output init.bat "Env Var - GIT_INSTALL_ROOT=%GIT_INSTALL_ROOT%" +%lib_console% debug-output init.bat "Found Git in: '%GIT_INSTALL_ROOT%'" +goto :PATH_ENHANCE -:: Enhance Path +:NO_GIT +:: Skip this if GIT WAS FOUND else we did 'endlocal' above! +endlocal + +:PATH_ENHANCE %lib_path% enhance_path_recursive "%CMDER_ROOT%\bin" %max_depth% if defined CMDER_USER_BIN ( %lib_path% enhance_path_recursive "%CMDER_USER_BIN%" %max_depth% From 40b9ca4e28d5abf32b5d01495254ef50cda3d166 Mon Sep 17 00:00:00 2001 From: Benjamin Staneck Date: Wed, 30 May 2018 01:17:12 +0200 Subject: [PATCH 193/306] Update CHANGELOG.md --- CHANGELOG.md | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0cb69ea..aaf7120 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,16 @@ # Change Log +## [1.3.6](https://github.com/cmderdev/cmder/tree/v1.3.6) (2018-05-30) +**Updated components:** + +* Git updated to v2.17.1.windows.2 +* ConEmu updated to 180528 + +**Updates:** + +* Cmder now opens in the in the current working dir +* TBD + ## [1.3.6-pre2](https://github.com/cmderdev/cmder/tree/v1.3.6-pre2) (2018-03-01) **Updated components:** From 4df1d744d3cda68214b686b3c71250e63b9c90c9 Mon Sep 17 00:00:00 2001 From: Dax T Games Date: Thu, 31 May 2018 07:35:02 -0500 Subject: [PATCH 194/306] Fix lib base (#1794) * Fix GIT_INSTALL_ROOT again * fixed lib_base error * fix lib help * fix lib help --- vendor/lib/lib_base.cmd | 7 ++----- vendor/lib/lib_console.cmd | 4 ++-- vendor/lib/lib_git.cmd | 4 ++-- vendor/lib/lib_path.cmd | 4 ++-- vendor/lib/lib_profile.cmd | 4 ++-- 5 files changed, 10 insertions(+), 13 deletions(-) diff --git a/vendor/lib/lib_base.cmd b/vendor/lib/lib_base.cmd index 6ab50e8..37a1072 100644 --- a/vendor/lib/lib_base.cmd +++ b/vendor/lib/lib_base.cmd @@ -3,7 +3,7 @@ set lib_base=call "%~dp0lib_base.cmd" if "%~1" == "/h" ( - %lib_base% help "%0" + %lib_base% help "%~0" ) else if "%1" neq "" ( call :%* ) @@ -16,7 +16,7 @@ exit /b :::. :::include: :::. -::: call "$0" +::: call "lib_base.cmd" :::. :::usage: :::. @@ -27,12 +27,9 @@ exit /b ::: file full path to file containing lib_routines to display :::. :::------------------------------------------------------------------------------- - for /f "tokens=* delims=:" %%a in ('type "%~1" ^| findstr /i /r "^:::"') do ( rem echo a="%%a" - if "%%a"==" " ( - echo. if "%%a"=="." ( echo. ) else if /i "%%a" == "usage" ( diff --git a/vendor/lib/lib_console.cmd b/vendor/lib/lib_console.cmd index d94561b..4de7525 100644 --- a/vendor/lib/lib_console.cmd +++ b/vendor/lib/lib_console.cmd @@ -6,7 +6,7 @@ call "%~dp0lib_base.cmd" set lib_console=call "%~dp0lib_console.cmd" if "%~1" == "/h" ( - %lib_base% help "%0" + %lib_base% help "%~0" ) else if "%1" neq "" ( call :%* ) @@ -19,7 +19,7 @@ exit /b :::. :::include: :::. -::: call "$0" +::: call "lib_console.cmd" :::. :::usage: :::. diff --git a/vendor/lib/lib_git.cmd b/vendor/lib/lib_git.cmd index 19fb98a..d703e58 100644 --- a/vendor/lib/lib_git.cmd +++ b/vendor/lib/lib_git.cmd @@ -7,7 +7,7 @@ set lib_git=call "%~dp0lib_git.cmd" if "%~1" == "/h" ( - %lib_base% help "%0" + %lib_base% help "%~0" ) else if "%1" neq "" ( call :%* ) @@ -20,7 +20,7 @@ exit /b :::. :::include: :::. -::: call "$0" +::: call "lib_git.cmd" :::. :::usage: :::. diff --git a/vendor/lib/lib_path.cmd b/vendor/lib/lib_path.cmd index 7cd08a7..1d8c9e7 100644 --- a/vendor/lib/lib_path.cmd +++ b/vendor/lib/lib_path.cmd @@ -6,7 +6,7 @@ call "%%~dp0lib_console" set lib_path=call "%~dp0lib_path.cmd" if "%~1" == "/h" ( - %lib_base% help "%0" + %lib_base% help "%~0" ) else if "%1" neq "" ( call :%* ) @@ -19,7 +19,7 @@ exit /b ::: :::include: ::: -::: call "$0" +::: call "lib_path.cmd" ::: :::usage: ::: diff --git a/vendor/lib/lib_profile.cmd b/vendor/lib/lib_profile.cmd index 77eebf8..82dbb4a 100644 --- a/vendor/lib/lib_profile.cmd +++ b/vendor/lib/lib_profile.cmd @@ -6,7 +6,7 @@ call "%%~dp0lib_console" set lib_profile=call "%~dp0lib_profile.cmd" if "%~1" == "/h" ( - %lib_base% help "%0" + %lib_base% help "%~0" ) else if "%1" neq "" ( call :%* ) @@ -19,7 +19,7 @@ exit /b ::: :::include: ::: -::: call "$0" +::: call "lib_profile.cmd" ::: :::usage: ::: From 34554d6b080e348c4fa408fc7e6def37b2dc5c4e Mon Sep 17 00:00:00 2001 From: Aaron Arney Date: Wed, 30 May 2018 20:49:12 -0400 Subject: [PATCH 195/306] Update README Add formatting to code, path, and executable identifiers to promote readability/scanability. --- README.md | 104 +++++++++++++++++++++++++++--------------------------- 1 file changed, 52 insertions(+), 52 deletions(-) diff --git a/README.md b/README.md index 2d18f18..70bd5e6 100644 --- a/README.md +++ b/README.md @@ -18,7 +18,7 @@ The Cmder's user interface is also designed to be more eye pleasing, and you can 1. Download the [latest release](https://github.com/cmderdev/cmder/releases/) 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 +4. Run `Cmder.exe` ### Shared Cmder install with Non-Portable Individual User Config 1. Download the [latest release](https://github.com/cmderdev/cmder/releases/) @@ -26,7 +26,7 @@ The Cmder's user interface is also designed to be more eye pleasing, and you can 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` +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. ``` @@ -43,10 +43,10 @@ The Cmder's user interface is also designed to be more eye pleasing, and you can | 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. | +| `/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 @@ -90,14 +90,14 @@ 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 '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 | `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. @@ -107,7 +107,7 @@ You may however, choose to use an external installation of bash, such as Microso ⚠ *NOTE:* Mintty tabs use a program called 'mintty' as the terminal emulator that is not based on the Windows Console API, rather it's rendered graphically by ConEmu. Mintty differs from the other tabs in that it supports xterm/xterm-256color TERM types, and does not work with ConEmu settings like color schemes and key bindings. As such, some differences in functionality are to be expected, such as Cmder not being able to apply a system-wide configuration to it. -As a result mintty specific config is done via the '[%USERPROFILE%|$HOME]/.minttyrc' file. You may read more about Mintty and its config file [here](https://github.com/mintty/mintty). +As a result mintty specific config is done via the `[%USERPROFILE%|$HOME]/.minttyrc` file. You may read more about Mintty and its config file [here](https://github.com/mintty/mintty). An example of setting Cmder portable terminal colors for mintty: @@ -122,7 +122,7 @@ echo source \$CMDER_ROOT/vendor/mintty-colors-solarized/mintty-solarized-dark.sh You may find some Monokai color schemes for mintty to match Cmder [here](https://github.com/PhilipDaniels/mintty/blob/master/themes/Monokai) or [here](https://github.com/oumu/mintty-color-schemes/blob/master/base16-monokai-mod.minttyrc). -### Changing Cmder Default 'cmd.exe' Shell Startup Behaviour Using Task Arguments +### Changing Cmder Default `cmd.exe` Shell Startup Behaviour Using Task Arguments 1. Press Win + Alt + T 1. Click either: @@ -140,36 +140,36 @@ You may find some Monokai color schemes for mintty to match Cmder [here](https:/ | 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 | +| `/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 | +| 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'. +Note: Bash and Mintty sessions will also source the `$HOME/.bashrc` file if it exists after it sources `$CMDER_ROOT/config/user-profile.sh`. -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. +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 | +| 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 | +| 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 -#### Cmder(Cmd.exe) Aliases +#### Cmder(`Cmd.exe`) Aliases You can define simple aliases for `cmd.exe` sessions with a command like `alias name=command`. Cmd.exe aliases support optional parameters through the `$1-9` or the `$*` special characters so the alias `vi=vim.exe $*` typed as `vi [filename]` will open `[filename]` in `vim.exe`. 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' @@ -178,22 +178,22 @@ Aliases defined using the `alias.bat` command will automatically be saved in the 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. +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' +* `%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 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. +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' +* `$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. @@ -202,7 +202,7 @@ PowerShell has native simple alias support, for example `[new-alias | set-alias] 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. +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' @@ -223,22 +223,22 @@ You may use your favorite version of Git by including its path in the `%PATH%` e You may run bash (the default shell used on Linux, macOS and GNU/Hurd) externally on Cmder, using the following instructions: -1. Setup a new task by pressing 'Win +Alt + T'. -1. Click the '+' button to add a task. +1. Setup a new task by pressing Win +Alt + T. +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``` 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:** -Copy the 'vendor/cmder_exinit' file to the Cygwin/Babun, MSys2, or Git for Windows SDK environments ```/etc/profile.d/``` folder to use portable settings in the $CMDER_ROOT/config folder. +Copy the `vendor/cmder_exinit` file to the Cygwin/Babun, MSys2, or Git for Windows SDK environments `/etc/profile.d/` folder to use portable settings in the `$CMDER_ROOT/config` folder. -Note: MinGW could work if the init scripts include profile.d but this has not been tested. +Note: MinGW could work if the init scripts include `profile.d` but this has not been tested. The destination file extension depends on the shell you use in that environment. For example: -* bash - Copy to /etc/profile.d/cmder_exinit.sh -* zsh - Copy to /etc/profile.d/cmder_exinit.zsh +* bash - Copy to `/etc/profile.d/cmder_exinit.sh` +* zsh - Copy to `/etc/profile.d/cmder_exinit.zsh` Uncomment and edit the below line in the script to use Cmder config even when launched from outside Cmder. @@ -265,7 +265,7 @@ If you have a `[cmder_root]/config/user-conemu.xml`, you are running a newer ver 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. + * 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. @@ -276,7 +276,7 @@ If you do not have a `[cmder_root]/config/user-conemu.xml`, you are running an o 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. + * 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. From 27f51f48a4349859a4b82470fd0bdd0d40831572 Mon Sep 17 00:00:00 2001 From: Dax T Games Date: Sat, 2 Jun 2018 17:15:33 -0500 Subject: [PATCH 196/306] Profile.ps1 (#1796) * Fix GIT_INSTALL_ROOT again * fix profile.ps1 --- vendor/profile.ps1 | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/vendor/profile.ps1 b/vendor/profile.ps1 index 20f81c7..b59e773 100644 --- a/vendor/profile.ps1 +++ b/vendor/profile.ps1 @@ -155,16 +155,16 @@ $CmderUserProfilePath = Join-Path $env:CMDER_ROOT "config\user-profile.ps1" if (Test-Path $CmderUserProfilePath) { # Create this file and place your own command in there. . "$CmderUserProfilePath" - } if ($ENV:CMDER_USER_CONFIG) { $CmderUserProfilePath = Join-Path $ENV:CMDER_USER_CONFIG "user-profile.ps1" + if (Test-Path $CmderUserProfilePath) { + . "$CmderUserProfilePath" + } } -if (Test-Path $CmderUserProfilePath) { - . "$CmderUserProfilePath" -} else { +if (! (Test-Path $CmderUserProfilePath) ) { # 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" From 0b2d7bd6557c6517b3fd106a6f2434fdb55acff8 Mon Sep 17 00:00:00 2001 From: Benjamin Staneck Date: Thu, 7 Jun 2018 16:08:53 +0200 Subject: [PATCH 197/306] sanitize dir before assigning to prompt Fixes #1265 --- vendor/clink.lua | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/vendor/clink.lua b/vendor/clink.lua index 12d0616..aa357d5 100644 --- a/vendor/clink.lua +++ b/vendor/clink.lua @@ -41,6 +41,13 @@ local function set_prompt_filter() -- color codes: "\x1b[1;37;40m" local cmder_prompt = "\x1b[1;32;40m{cwd} {git}{hg}{svn} \n\x1b[1;39;40m{lamb} \x1b[0m" local lambda = "λ" + local function sanitize_dir(str) + str = string.gsub(str, "+", " ") + str = string.gsub(str, "%%(%x%x)", function(h) return string.char(tonumber(h,16)) end) + str = string.gsub(str, "\r\n", "\n") + return str + end + cmder_prompt = sanitize_dir(cmder_prompt) cmder_prompt = string.gsub(cmder_prompt, "{cwd}", cwd) if env ~= nil then lambda = "("..env..") "..lambda @@ -235,7 +242,7 @@ end -- Get the status of working dir -- @return {bool} --- -function get_svn_status() +local function get_svn_status() local file = io.popen("svn status -q") for line in file:lines() do file:close() From 6c016788d43dec13d0a342ed75503efb43859972 Mon Sep 17 00:00:00 2001 From: Benjamin Staneck Date: Thu, 7 Jun 2018 17:04:06 +0200 Subject: [PATCH 198/306] Revert "sanitize dir before assigning to prompt" This reverts commit 0b2d7bd6557c6517b3fd106a6f2434fdb55acff8. --- vendor/clink.lua | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/vendor/clink.lua b/vendor/clink.lua index aa357d5..12d0616 100644 --- a/vendor/clink.lua +++ b/vendor/clink.lua @@ -41,13 +41,6 @@ local function set_prompt_filter() -- color codes: "\x1b[1;37;40m" local cmder_prompt = "\x1b[1;32;40m{cwd} {git}{hg}{svn} \n\x1b[1;39;40m{lamb} \x1b[0m" local lambda = "λ" - local function sanitize_dir(str) - str = string.gsub(str, "+", " ") - str = string.gsub(str, "%%(%x%x)", function(h) return string.char(tonumber(h,16)) end) - str = string.gsub(str, "\r\n", "\n") - return str - end - cmder_prompt = sanitize_dir(cmder_prompt) cmder_prompt = string.gsub(cmder_prompt, "{cwd}", cwd) if env ~= nil then lambda = "("..env..") "..lambda @@ -242,7 +235,7 @@ end -- Get the status of working dir -- @return {bool} --- -local function get_svn_status() +function get_svn_status() local file = io.popen("svn status -q") for line in file:lines() do file:close() From e3cdf43afc88b514045e80e30689b6f35cbdc925 Mon Sep 17 00:00:00 2001 From: Benjamin Staneck Date: Thu, 7 Jun 2018 18:29:48 +0200 Subject: [PATCH 199/306] better fix for #1265 --- vendor/clink.lua | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/vendor/clink.lua b/vendor/clink.lua index 12d0616..5c64c03 100644 --- a/vendor/clink.lua +++ b/vendor/clink.lua @@ -41,13 +41,19 @@ local function set_prompt_filter() -- color codes: "\x1b[1;37;40m" local cmder_prompt = "\x1b[1;32;40m{cwd} {git}{hg}{svn} \n\x1b[1;39;40m{lamb} \x1b[0m" local lambda = "λ" + cwd = string.gsub(cwd, "%%", "{percent}") cmder_prompt = string.gsub(cmder_prompt, "{cwd}", cwd) + if env ~= nil then lambda = "("..env..") "..lambda end clink.prompt.value = string.gsub(cmder_prompt, "{lamb}", lambda) end +local function percent_prompt_filter() + clink.prompt.value = string.gsub(clink.prompt.value, "{percent}", "%%") +end + --- -- Resolves closest directory location for specified directory. -- Navigates subsequently up one level and tries to find specified directory @@ -235,7 +241,7 @@ end -- Get the status of working dir -- @return {bool} --- -function get_svn_status() +local function get_svn_status() local file = io.popen("svn status -q") for line in file:lines() do file:close() @@ -340,6 +346,7 @@ 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) +clink.prompt.register_filter(percent_prompt_filter, 51) local completions_dir = clink.get_env('CMDER_ROOT')..'/vendor/clink-completions/' for _,lua_module in ipairs(clink.find_files(completions_dir..'*.lua')) do From 431c6300e5dc47bc66668d4e3c0edefe063f17bf Mon Sep 17 00:00:00 2001 From: Thorsten Sommer Date: Sun, 10 Jun 2018 12:40:37 +0200 Subject: [PATCH 200/306] Fixed spelling --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 70bd5e6..bbb74f7 100644 --- a/README.md +++ b/README.md @@ -189,7 +189,7 @@ Bash shells support simple and complex aliases with optional parameters natively 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. +Note: These are loaded in this order by `$CMDER_ROOT/vendor/git-for-windows/etc/profile.d/cmder.sh`. Anything 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` From 0f99f66b42158f3ecf528e16bc3a8692b6e38e22 Mon Sep 17 00:00:00 2001 From: Bob Hood Date: Fri, 6 Jul 2018 14:34:48 -0600 Subject: [PATCH 201/306] Refactored the Mercurial prompt code to be more efficient. --- vendor/clink.lua | 49 ++++++++++++++++++++++++++++-------------------- 1 file changed, 29 insertions(+), 20 deletions(-) diff --git a/vendor/clink.lua b/vendor/clink.lua index 5c64c03..153aa8f 100644 --- a/vendor/clink.lua +++ b/vendor/clink.lua @@ -285,31 +285,40 @@ end local function hg_prompt_filter() - -- Colors for mercurial status - local colors = { - clean = "\x1b[1;37;40m", - dirty = "\x1b[31;1m", - } + local result = "" - 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 + local hg_dir = get_hg_dir() + if hg_dir then + -- Colors for mercurial status + local colors = { + clean = "\x1b[1;37;40m", + 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 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 + local color = colors.clean + -- split elements on space delimiter + local items = {} + for i in string.gmatch(output, "%S+") do + table.insert(items, i) end - - clink.prompt.value = string.gsub(clink.prompt.value, "{hg}", color.."("..branch..")") - return false + -- 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) end end - -- No mercurial present or not in mercurial file - clink.prompt.value = string.gsub(clink.prompt.value, "{hg}", "") + clink.prompt.value = string.gsub(clink.prompt.value, "{hg}", result) return false end From b57e146e7a2b096f435c1855b451a53e72e3e1e2 Mon Sep 17 00:00:00 2001 From: xiazeyu_2011 Date: Tue, 17 Jul 2018 14:11:16 +0800 Subject: [PATCH 202/306] docs: migrated instructions to the wiki pages --- README.md | 29 +---------------------------- 1 file changed, 1 insertion(+), 28 deletions(-) diff --git a/README.md b/README.md index 0895c2c..73d12ec 100644 --- a/README.md +++ b/README.md @@ -280,35 +280,8 @@ the `notepad.exe` won't be executed. Detailed usage of `%flag_exists%` can be seen by typing `%flag_exists% /?` in cmder. -This feature is usually for external execution. - -In my case, I use `cmder` as an **entry point** of my portable working system, - -and I [integrated VSCode with cmder](https://github.com/cmderdev/cmder/wiki/Seamless-VS-Code-Integration), it will **automatic execute VSCode** when I use `cmder.exe` to start. - -And when using integrated console in VSCode, VSCode **won't be executed again** as I use - -```json - -"terminal.integrated.shellArgs.windows": [ - "/k", - "%cmder_root%\\vendor\\init.bat", - "/noautorun" -], - -``` - -for `terminal.integrated.shellArgs.windows`, - -And here's the related fragment of my `user-profile.cmd`: - -```batch - -call %flag_exists% NOT "/noautorun" "cmd /c start %cmder_root%\bin\vsCode\Code.exe --user-data-dir %vsCodeUserData% --extensions-dir %vsCodeExtensionsDir% %* %vsCodeUserData%\code.code-workspace" - -``` - ### Integrating Cmder with [Hyper](https://github.com/zeit/hyper), [Microsoft VS Code](https://code.visualstudio.com/), and your favorite IDEs + Cmder by default comes with a vendored ConEmu installation as the underlying terminal emulator, as stated [here](https://conemu.github.io/en/cmder.html). However, Cmder can in fact run in a variety of other terminal emulators, and even integrated IDEs. Assuming you have the latest version of Cmder, follow the following instructions to get Cmder working with your own terminal emulator. From b3200efa7ebabe3bbbd2a36b8941bbef935c1dda Mon Sep 17 00:00:00 2001 From: xiazeyu Date: Mon, 6 Aug 2018 11:25:27 +0800 Subject: [PATCH 203/306] doc: fix typo --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 73d12ec..50e1c16 100644 --- a/README.md +++ b/README.md @@ -44,7 +44,7 @@ The Cmder's user interface is also designed to be more eye pleasing, and you can | Argument | Description | | ------------------- | ----------------------------------------------------------------------- | | /C [user_root_path] | Individual user Cmder root folder. Example: %userprofile%\cmder_config | -| /SINGLE | Start Cmder is single mode. | +| /SINGLE | Start Cmder in single mode. | | /START [start_path] | Folder path to start in. | | /TASK [task_name] | Task to start after launch. | From f6c2d9c31e86666cae35ff17911c5495452b587b Mon Sep 17 00:00:00 2001 From: xiazeyu Date: Mon, 6 Aug 2018 13:09:59 +0800 Subject: [PATCH 204/306] refactor: reduce global varible useage, fixed quote issue, added parameters support --- README.md | 3 +- vendor/init.bat | 14 ++++---- vendor/lib/flag_exists.cmd | 73 ++++++++++++++++++++++++-------------- 3 files changed, 55 insertions(+), 35 deletions(-) diff --git a/README.md b/README.md index 50e1c16..4dcdfd0 100644 --- a/README.md +++ b/README.md @@ -148,6 +148,7 @@ You may find some Monokai color schemes for mintty to match Cmder [here](https:/ | /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 | +| (custom arguments) | User defined arguments processed by `flag_exists`. Type `%flag_exists% /?` for more useage. | 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: @@ -278,7 +279,7 @@ init.bat the `notepad.exe` won't be executed. -Detailed usage of `%flag_exists%` can be seen by typing `%flag_exists% /?` in cmder. +To see detailed usage of `%flag_exists%`, type `%flag_exists% /?` in cmder. ### Integrating Cmder with [Hyper](https://github.com/zeit/hyper), [Microsoft VS Code](https://code.visualstudio.com/), and your favorite IDEs diff --git a/vendor/init.bat b/vendor/init.bat index 4b1eef1..a9a553e 100644 --- a/vendor/init.bat +++ b/vendor/init.bat @@ -7,10 +7,11 @@ :: !!! Use "%CMDER_ROOT%\config\user-profile.cmd" to add your own startup commands :: Use /v command line arg or set to > 0 for verbose output to aid in debugging. +endlocal set verbose-output=0 set debug-output=0 set max_depth=1 -set "CMDER_FLAGS=" +set "CMDER_USER_FLAGS= " :: Find root dir if not defined CMDER_ROOT ( @@ -82,7 +83,7 @@ call "%cmder_root%\vendor\lib\lib_profile" set SVN_SSH=%2 shift ) else ( - set "CMDER_FLAGS=%CMDER_FLAGS% %1" + set "CMDER_USER_FLAGS=%1 %CMDER_USER_FLAGS%" ) shift goto var_loop @@ -293,14 +294,14 @@ if not defined HOME set "HOME=%USERPROFILE%" set "initialConfig=%CMDER_ROOT%\config\user-profile.cmd" 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" %CMDER_FLAGS% + call "%CMDER_ROOT%\config\user-profile.cmd" ) if defined CMDER_USER_CONFIG ( set "initialConfig=%CMDER_USER_CONFIG%\user-profile.cmd" 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" %CMDER_FLAGS% + call "%CMDER_USER_CONFIG%\user-profile.cmd" ) ) @@ -312,8 +313,7 @@ echo :: use in front of the command to prevent printing the command echo. echo :: the next two lines is for "%%flag_exists%%" shortcut, a custom arguments handler echo :: don't remove it if you need it -echo set "CMDER_USER_FLAGS=%%*" -echo call "%%cmder_root%%\vendor\lib\flag_exists" +echo call "%%cmder_root%%\vendor\lib\flag_exists" "/setPath" echo. echo :: uncomment this to have the ssh agent load when cmder starts echo :: call "%%GIT_INSTALL_ROOT%%/cmd/start-ssh-agent.cmd" @@ -328,7 +328,7 @@ echo. echo :: arguments in this batch are passed from init.bat, you can quickly parse them like so: echo :: more useage can be seen by typing "%%flag_exists%% /?" echo. -echo :: %%flag_exists%% "/customOption" "your custom command" +echo :: %%flag_exists%% "/customOption" "command/program" echo. echo @echo off ) >"%initialConfig%" diff --git a/vendor/lib/flag_exists.cmd b/vendor/lib/flag_exists.cmd index 776aafb..c144340 100644 --- a/vendor/lib/flag_exists.cmd +++ b/vendor/lib/flag_exists.cmd @@ -1,59 +1,67 @@ @echo off -set "flag_exists=%~dp0flag_exists" setlocal if "%~1" equ "" goto :wrongSyntax if not defined CMDER_USER_FLAGS ( + :: in case nothing was passed to %CMDER_USER_FLAGS% set "CMDER_USER_FLAGS= " ) -set "feNOT=false" +set "feNot=false" goto :parseArgument :doShift shift :parseArgument -set "currenTarg=%~1" -if /i "%currenTarg%" == "/?" ( +set "currenArgu=%~1" +if /i "%currenArgu%" equ "/setPath" ( + :: set %flag_exists% shortcut + endlocal + set "flag_exists=%~dp0flag_exists" +) else if /i "%currenArgu%" == "/?" ( goto :help -) else if /i "%currenTarg%" equ "/help" ( +) else if /i "%currenArgu%" equ "/help" ( goto :help -) else if /i "%currenTarg%" equ "/h" ( +) else if /i "%currenArgu%" equ "/h" ( goto :help -) else if /i "%currenTarg%" equ "NOT" ( - set "feNOT=true" +) else if /i "%currenArgu%" equ "NOT" ( + set "feNot=true" goto :doShift ) else ( if "%~1" equ "" goto :wrongSyntax if "%~2" equ "" goto :wrongSyntax - set "feArgName=%~1" + set "feFlagName=%~1" set "feCommand=%~2" + if not "%~3" equ "" ( + set "feParam=%~3" + ) goto :detect ) :detect -:: to avoid erroneous deteciton like "/do" "/doNOT", both have a "/do" -:: but if it works like "/do " "/doNOT ", "/do " won't match "/doN" -set "CMDER_USER_FLAGS=%CMDER_USER_FLAGS% " -set "feArgName=%feArgName% " +:: to avoid erroneous deteciton like "/do" "/doNOT", which both have a "/do" +:: we added a space after the flag name, like "/do ", which won't match "/doN" +set "feFlagName=%feFlagName% " :: echo. :: echo %CMDER_USER_FLAGS% :: echo %feNOT% -:: echo %feArgName% +:: echo %feFlagName% :: echo %feCommand% +:: echo %feParam% :: echo. -echo %CMDER_USER_FLAGS% | find /i "%feArgName%">nul +echo %CMDER_USER_FLAGS% | find /i "%feFlagName%">nul if "%ERRORLEVEL%" == "0" ( if "%feNOT%" == "false" ( - call "%feCommand%" + call %feCommand% %feParam% ) ) else ( if "%feNOT%" == "true" ( - call "%feCommand%" + call %feCommand% %feParam% ) ) +endlocal exit /b :wrongSyntax @@ -61,6 +69,7 @@ echo The syntax of the command is incorrect. echo. echo use /? for help echo. +endlocal exit /b :help @@ -72,17 +81,26 @@ echo written by xiazeyu, inspired DRSDavidSoft. echo. echo Usage: echo. -echo %%flag_exists%% [NOT] argName command +echo %%flag_exists%% [/setPath] [NOT] flagName command/program [parameters] echo. -echo NOT Specifies that %%flag_exists%% should carry out -echo the command only if the condition is false. +echo setPath Generate a global varible %%flag_exists%% for +echo quicker use. Following arguments will be ignored. echo. -echo argName Specifies which argument name is to detect. +echo NOT Specifies that %%flag_exists%% should carry out +echo the command only if the flag is missing. echo. -echo command Specifies the command to carry out if the -echo argument name is detected. It's recommand to -echo use a pair of double quotation marks to -echo wrap your command to avoid exceed expectation. +echo flagName Specifies which flag name is to detect. It's recommand +echo to use a pair of double quotation marks to wrap +echo your flag name to avoid exceed expectation. +echo. +echo command/program Specifies the command to carry out if the +echo argument name is detected. It's recommand to +echo use a pair of double quotation marks to +echo wrap your command to avoid exceed expectation. +echo. +echo parameters These are the parameters passed to the command/program. +echo It's recommand to use a pair of double quotation marks +echo to wrap your flag name to avoid exceed expectation. echo. echo Examples: echo. @@ -93,7 +111,7 @@ echo Case 1: echo. echo The following command in user-profile.cmd would execute "notepad.exe" echo. -echo call %%flag_exists%% "/startNotepad" "cmd /c start notepad.exe" +echo call %%flag_exists%% "/startNotepad" "start" "notepad.exe" echo. echo if you pass parameter to init.bat like: echo. @@ -103,10 +121,11 @@ echo Case 2: echo. echo The following command in user-profile.cmd would execute "notepad.exe" echo. -echo call %%flag_exists%% NOT "/dontStartNotepad" "cmd /c start notepad.exe" +echo call %%flag_exists%% NOT "/dontStartNotepad" "start" "notepad.exe" echo. echo UNLESS you pass parameter to init.bat like: echo. echo init.bat /dontStartNotepad echo. +endlocal exit /b From f4ee915678cef7dfdb664627212e27041537a593 Mon Sep 17 00:00:00 2001 From: xiazeyu Date: Mon, 6 Aug 2018 13:21:45 +0800 Subject: [PATCH 205/306] docs: update to latest useage --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 00008b4..b97204e 100644 --- a/README.md +++ b/README.md @@ -265,7 +265,7 @@ to start init.bat with custom argument(`/startNotepad`) and put ```batch -call %flag_exists% "/startNotepad" "cmd /c start notepad.exe"` +call %flag_exists% "/startNotepad" "start" "notepad.exe"` ``` From 39f47870a339c99e7526920ec3e06b875db8890b Mon Sep 17 00:00:00 2001 From: xiazeyu Date: Mon, 6 Aug 2018 16:05:31 +0800 Subject: [PATCH 206/306] chore: unite slash --- vendor/init.bat | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vendor/init.bat b/vendor/init.bat index a419482..99a86e7 100644 --- a/vendor/init.bat +++ b/vendor/init.bat @@ -320,7 +320,7 @@ echo :: use in front of the command to prevent printing the command echo. echo :: the next two lines is for "%%flag_exists%%" shortcut, a custom arguments handler echo :: don't remove it if you need it -echo call "%%cmder_root%%\vendor\lib\flag_exists" "/setPath" +echo call "%%cmder_root%%/vendor/lib/flag_exists" "/setPath" echo. echo :: uncomment this to have the ssh agent load when cmder starts echo :: call "%%GIT_INSTALL_ROOT%%/cmd/start-ssh-agent.cmd" From b901a4a569bbba59c977f20da9c48c543e4e40e8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E7=A5=BA?= Date: Thu, 23 Aug 2018 11:50:29 +0800 Subject: [PATCH 207/306] add LANG support --- vendor/init.bat | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/vendor/init.bat b/vendor/init.bat index 1328fc7..4a31844 100644 --- a/vendor/init.bat +++ b/vendor/init.bat @@ -203,9 +203,12 @@ if defined GIT_INSTALL_ROOT ( :: 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" + for /F "delims=" %%F in ('env /usr/bin/locale -uU 2^>nul') do ( + set "LANG=%%F" + ) ) -endlocal & set "PATH=%PATH%" & set "SVN_SSH=%SVN_SSH%" & set "GIT_INSTALL_ROOT=%GIT_INSTALL_ROOT%" +endlocal & set "PATH=%PATH%" & set "LANG=%LANG%" & set "SVN_SSH=%SVN_SSH%" & set "GIT_INSTALL_ROOT=%GIT_INSTALL_ROOT%" %lib_console% debug-output init.bat "Env Var - GIT_INSTALL_ROOT=%GIT_INSTALL_ROOT%" %lib_console% debug-output init.bat "Found Git in: '%GIT_INSTALL_ROOT%'" goto :PATH_ENHANCE From 34bb62409a5b2f31c5092cdca602d892a1b40dc4 Mon Sep 17 00:00:00 2001 From: "Dmitri S. Guskov" Date: Wed, 29 Aug 2018 14:38:59 +0300 Subject: [PATCH 208/306] Update profile.ps1 Fixes Powershell 5.1 error when Windows Software Restriction Policy is enabled: bin\vendor\profile.ps1 : Cannot dot-source this command because it was defined in a different language mode. To invoke this command without importing its contents, omit the '.' operator. At line:1 char:1 + . 'bin\vendor\conemu-maximus5\..\profi ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidOperation: (:) [profile.ps1], NotSupportedException + FullyQualifiedErrorId : DotSourceNotSupported,profile.ps1 --- vendor/profile.ps1 | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/vendor/profile.ps1 b/vendor/profile.ps1 index b59e773..2952618 100644 --- a/vendor/profile.ps1 +++ b/vendor/profile.ps1 @@ -134,7 +134,7 @@ if (-not (test-path "$ENV:CMDER_ROOT\config\profile.d")) { pushd $ENV:CMDER_ROOT\config\profile.d foreach ($x in Get-ChildItem *.ps1) { # write-host write-host Sourcing $x - . $x + Import-Module $x } popd @@ -144,7 +144,7 @@ if ($ENV:CMDER_USER_CONFIG -ne "" -and (test-path "$ENV:CMDER_USER_CONFIG\profil pushd $ENV:CMDER_USER_CONFIG\profile.d foreach ($x in Get-ChildItem *.ps1) { # write-host write-host Sourcing $x - . $x + Import-Module $x } popd } @@ -154,13 +154,13 @@ if ($ENV:CMDER_USER_CONFIG -ne "" -and (test-path "$ENV:CMDER_USER_CONFIG\profil $CmderUserProfilePath = Join-Path $env:CMDER_ROOT "config\user-profile.ps1" if (Test-Path $CmderUserProfilePath) { # Create this file and place your own command in there. - . "$CmderUserProfilePath" + Import-Module "$CmderUserProfilePath" } if ($ENV:CMDER_USER_CONFIG) { $CmderUserProfilePath = Join-Path $ENV:CMDER_USER_CONFIG "user-profile.ps1" if (Test-Path $CmderUserProfilePath) { - . "$CmderUserProfilePath" + Import-Module "$CmderUserProfilePath" } } From 21b1f009813fc7c4eef8c12a204424389ba413fb Mon Sep 17 00:00:00 2001 From: "Dmitri S. Guskov" Date: Wed, 29 Aug 2018 14:42:01 +0300 Subject: [PATCH 209/306] Powershell 5.1 compatibility Fixes Powershell 5.1 error when Windows Software Restriction Policy is enabled: bin\vendor\profile.ps1 : Cannot dot-source this command because it was defined in a different language mode. To invoke this command without importing its contents, omit the '.' operator. At line:1 char:1 + . 'bin\vendor\conemu-maximus5\..\profi ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidOperation: (:) [profile.ps1], NotSupportedException + FullyQualifiedErrorId : DotSourceNotSupported,profile.ps1 --- config/ConEmu.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/config/ConEmu.xml b/config/ConEmu.xml index db45a6a..c4f4fff 100644 --- a/config/ConEmu.xml +++ b/config/ConEmu.xml @@ -508,7 +508,7 @@ - + @@ -517,7 +517,7 @@ - + From e80ad2356f58716b430331e37b3fbb11043a5090 Mon Sep 17 00:00:00 2001 From: Arion Roberto Krause Date: Wed, 29 Aug 2018 22:07:26 -0300 Subject: [PATCH 210/306] Fixed typo --- launcher/src/CmderLauncher.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/launcher/src/CmderLauncher.cpp b/launcher/src/CmderLauncher.cpp index f417764..bcb7bca 100644 --- a/launcher/src/CmderLauncher.cpp +++ b/launcher/src/CmderLauncher.cpp @@ -386,7 +386,7 @@ cmderOptions GetOption() i++; } else { - MessageBox(NULL, szArgList[i + 1], L"/START - Folder doses not exist!", MB_OK); + MessageBox(NULL, szArgList[i + 1], L"/START - Folder does not exist!", MB_OK); } } else if (_wcsicmp(L"/task", szArgList[i]) == 0) From 08e1244fe523a74db59cc78674bbeaf4487defba Mon Sep 17 00:00:00 2001 From: David Refoua Date: Tue, 28 Aug 2018 18:03:38 +0430 Subject: [PATCH 211/306] fix some spelling issues --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index bbb74f7..ed6c1be 100644 --- a/README.md +++ b/README.md @@ -178,7 +178,7 @@ Aliases defined using the `alias.bat` command will automatically be saved in the 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. +Note: These are loaded in this order by `$CMDER_ROOT/vendor/init.bat`. Anything 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` @@ -202,7 +202,7 @@ PowerShell has native simple alias support, for example `[new-alias | set-alias] 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. +Note: These are loaded in this order by `$ENV:CMDER_ROOT\\vendor\\user-profile.ps1`. Anything 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' From d91438de47b47f7ceb4c3c09923cea9f20052673 Mon Sep 17 00:00:00 2001 From: Benjamin Staneck Date: Thu, 30 Aug 2018 15:21:51 +0200 Subject: [PATCH 212/306] replace user-aliases with user_aliases --- vendor/init.bat | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/vendor/init.bat b/vendor/init.bat index 1328fc7..09c797e 100644 --- a/vendor/init.bat +++ b/vendor/init.bat @@ -245,24 +245,24 @@ if not defined user-aliases ( :: The aliases environment variable is used by alias.bat to id :: the default file to store new aliases in. if not defined aliases ( - set "aliases=%user-aliases%" + set "aliases=%user_aliases%" ) :: Make sure we have a self-extracting user-aliases.cmd file setlocal enabledelayedexpansion -if not exist "%user-aliases%" ( - echo Creating initial user-aliases store in "%user-aliases%"... - copy "%CMDER_ROOT%\vendor\user-aliases.cmd.example" "%user-aliases%" +if not exist "%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 + type "%user_aliases%" | findstr /i ";= Add aliases below here" >nul if "!errorlevel!" == "1" ( - echo Creating initial user-aliases store in "%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%" + 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%" + copy "%user_aliases%" "%user_aliases%.old_format" + copy "%CMDER_ROOT%\vendor\user-aliases.cmd.example" "%user_aliases%" ) ) ) @@ -270,15 +270,15 @@ if not exist "%user-aliases%" ( :: Update old 'user-aliases' to new self executing 'user-aliases.cmd' if exist "%CMDER_ROOT%\config\aliases" ( echo Updating old "%CMDER_ROOT%\config\aliases" to new format... - type "%CMDER_ROOT%\config\aliases" >> "%user-aliases%" && del "%CMDER_ROOT%\config\aliases" -) else if exist "%user-aliases%.old_format" ( - echo Updating old "%user-aliases%" to new format... - type "%user-aliases%.old_format" >> "%user-aliases%" && del "%user-aliases%.old_format" + type "%CMDER_ROOT%\config\aliases" >> "%user_aliases%" && del "%CMDER_ROOT%\config\aliases" +) else if exist "%user_aliases%.old_format" ( + echo Updating old "%user_aliases%" to new format... + type "%user_aliases%.old_format" >> "%user_aliases%" && del "%user_aliases%.old_format" ) endlocal :: Add aliases to the environment -call "%user-aliases%" +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 From e4fb0d694b8007c48603e42add8e5b861064ce81 Mon Sep 17 00:00:00 2001 From: Benjamin Staneck Date: Fri, 31 Aug 2018 18:40:53 +0200 Subject: [PATCH 213/306] Revert "replace user-aliases with user_aliases" This reverts commit d91438de47b47f7ceb4c3c09923cea9f20052673. --- vendor/init.bat | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/vendor/init.bat b/vendor/init.bat index 09c797e..1328fc7 100644 --- a/vendor/init.bat +++ b/vendor/init.bat @@ -245,24 +245,24 @@ if not defined user-aliases ( :: The aliases environment variable is used by alias.bat to id :: the default file to store new aliases in. if not defined aliases ( - set "aliases=%user_aliases%" + set "aliases=%user-aliases%" ) :: Make sure we have a self-extracting user-aliases.cmd file setlocal enabledelayedexpansion -if not exist "%user_aliases%" ( - echo Creating initial user-aliases store in "%user_aliases%"... - copy "%CMDER_ROOT%\vendor\user-aliases.cmd.example" "%user_aliases%" +if not exist "%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 + type "%user-aliases%" | findstr /i ";= Add aliases below here" >nul if "!errorlevel!" == "1" ( - echo Creating initial user-aliases store in "%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%" + 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%" + copy "%user-aliases%" "%user-aliases%.old_format" + copy "%CMDER_ROOT%\vendor\user-aliases.cmd.example" "%user-aliases%" ) ) ) @@ -270,15 +270,15 @@ if not exist "%user_aliases%" ( :: Update old 'user-aliases' to new self executing 'user-aliases.cmd' if exist "%CMDER_ROOT%\config\aliases" ( echo Updating old "%CMDER_ROOT%\config\aliases" to new format... - type "%CMDER_ROOT%\config\aliases" >> "%user_aliases%" && del "%CMDER_ROOT%\config\aliases" -) else if exist "%user_aliases%.old_format" ( - echo Updating old "%user_aliases%" to new format... - type "%user_aliases%.old_format" >> "%user_aliases%" && del "%user_aliases%.old_format" + type "%CMDER_ROOT%\config\aliases" >> "%user-aliases%" && del "%CMDER_ROOT%\config\aliases" +) else if exist "%user-aliases%.old_format" ( + echo Updating old "%user-aliases%" to new format... + type "%user-aliases%.old_format" >> "%user-aliases%" && del "%user-aliases%.old_format" ) endlocal :: Add aliases to the environment -call "%user_aliases%" +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 From 49da3745bce7c4f850079c0cc5a92ee978207b56 Mon Sep 17 00:00:00 2001 From: Dax T Games Date: Fri, 31 Aug 2018 17:02:56 -0500 Subject: [PATCH 214/306] Fix #1806 #1675 (#1870) ## Rename user-profile.* user_profile.* to resolve #1806, #1675 * This is a backward compatible fix and will automatically and silently rename users '%cmder_root%/config/user-profile.\*' to '%cmder_root%/config/user_profile.\*' and '[user_specified_config_root]/user-profile.\*' to '[user_specified_config_root]/user_profile.\*' if the sources exist. * Cmder.exe does this for cmd.exe sessions. * The init scripts for bash and Powershell handles it for these shells --- .gitignore | 2 ++ README.md | 22 ++++++------- launcher/src/CmderLauncher.cpp | 33 ++++++++++++++++++- vendor/cmder.sh | 31 ++++++++++++------ vendor/cmder_exinit | 58 ++++++++++++++++++++-------------- vendor/init.bat | 14 ++++---- vendor/profile.ps1 | 18 ++++++++--- 7 files changed, 120 insertions(+), 58 deletions(-) diff --git a/.gitignore b/.gitignore index cf231c5..2ae90c5 100644 --- a/.gitignore +++ b/.gitignore @@ -14,8 +14,10 @@ build/ Version v* *.bak config/user-* +config/user_* config/settings config/aliases config/profile.d .github_changelog_generator launcher/.vs +launcher/src/version.rc2 diff --git a/README.md b/README.md index ed6c1be..b7e2f21 100644 --- a/README.md +++ b/README.md @@ -117,7 +117,7 @@ From a bash/mintty shell: cd $CMDER_ROOT/vendor git clone https://github.com/karlin/mintty-colors-solarized.git cd mintty-colors-solarized/ -echo source \$CMDER_ROOT/vendor/mintty-colors-solarized/mintty-solarized-dark.sh>>$CMDER_ROOT/config/user-profile.sh +echo source \$CMDER_ROOT/vendor/mintty-colors-solarized/mintty-solarized-dark.sh>>$CMDER_ROOT/config/user_profile.sh ``` You may find some Monokai color schemes for mintty to match Cmder [here](https://github.com/PhilipDaniels/mintty/blob/master/themes/Monokai) or [here](https://github.com/oumu/mintty-color-schemes/blob/master/base16-monokai-mod.minttyrc). @@ -154,11 +154,11 @@ Single user portable configuration is possible using the cmder specific shell co | 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` | +| 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`. +Note: Bash and Mintty sessions will also source the `$HOME/.bashrc` file if it exists after it sources `$CMDER_ROOT/config/user_profile.sh`. 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. @@ -182,7 +182,7 @@ Note: These are loaded in this order by `$CMDER_ROOT/vendor/init.bat`. Anything * `%CMDER_ROOT%\\config\\profile.d\\\*.cmd` and `\*.bat` * `%CMDER_ROOT%\\config\\user-aliases.cmd` -* `%CMDER_ROOT%\\config\\user-profile.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. @@ -192,26 +192,26 @@ To make an alias and/or any other profile settings permanent add it to one of th Note: These are loaded in this order by `$CMDER_ROOT/vendor/git-for-windows/etc/profile.d/cmder.sh`. Anything 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` +* `$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. +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`. Anything stored in `$ENV:CMDER_ROOT` will be a portable setting and will follow cmder to another machine. +Note: These are loaded in this order by `$ENV:CMDER_ROOT\\vendor\\user_profile.ps1`. Anything 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' +* '$ENV:CMDER_ROOT\\config\\user_profile.ps1' ### SSH Agent 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). +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 diff --git a/launcher/src/CmderLauncher.cpp b/launcher/src/CmderLauncher.cpp index bcb7bca..9f0a275 100644 --- a/launcher/src/CmderLauncher.cpp +++ b/launcher/src/CmderLauncher.cpp @@ -9,6 +9,7 @@ #include #pragma comment(lib, "Shlwapi.lib") +#pragma warning( disable : 4091 ) #ifndef UNICODE #error "Must be compiled with unicode support." @@ -85,6 +86,8 @@ void StartCmder(std::wstring path = L"", bool is_single_mode = false, std::wstr wchar_t userConfigDirPath[MAX_PATH] = { 0 }; wchar_t userBinDirPath[MAX_PATH] = { 0 }; wchar_t userProfiledDirPath[MAX_PATH] = { 0 }; + wchar_t userProfilePath[MAX_PATH] = { 0 }; + wchar_t legacyUserProfilePath[MAX_PATH] = { 0 }; wchar_t args[MAX_PATH * 2 + 256] = { 0 }; std::wstring cmderStart = path; @@ -104,6 +107,21 @@ void StartCmder(std::wstring path = L"", bool is_single_mode = false, std::wstr PathCombine(icoPath, exeDir, L"icons\\cmder.ico"); PathCombine(configDirPath, exeDir, L"config"); + + PathCombine(legacyUserProfilePath, configDirPath, L"user-profile.cmd"); + if (PathFileExists(legacyUserProfilePath)) { + PathCombine(userProfilePath, configDirPath, L"user_profile.cmd"); + + char *lPr = (char *)malloc(MAX_PATH); + char *pR = (char *)malloc(MAX_PATH); + size_t i; + wcstombs_s(&i, lPr, (size_t)MAX_PATH, + legacyUserProfilePath, (size_t)MAX_PATH); + wcstombs_s(&i, pR, (size_t)MAX_PATH, + userProfilePath, (size_t)MAX_PATH); + rename(lPr, pR); + } + if (wcscmp(userConfigDirPath, L"") == 0) { PathCombine(userConfigDirPath, exeDir, L"config"); @@ -118,6 +136,20 @@ void StartCmder(std::wstring path = L"", bool is_single_mode = false, std::wstr PathCombine(userProfiledDirPath, userConfigDirPath, L"profile.d"); SHCreateDirectoryEx(0, userProfiledDirPath, 0); + + PathCombine(legacyUserProfilePath, userConfigDirPath, L"user-profile.cmd"); + if (PathFileExists(legacyUserProfilePath)) { + PathCombine(userProfilePath, userConfigDirPath, L"user_profile.cmd"); + + char *lPr = (char *)malloc(MAX_PATH); + char *pR = (char *)malloc(MAX_PATH); + size_t i; + wcstombs_s(&i, lPr, (size_t)MAX_PATH, + legacyUserProfilePath, (size_t)MAX_PATH); + wcstombs_s(&i, pR, (size_t)MAX_PATH, + userProfilePath, (size_t)MAX_PATH); + rename(lPr, pR); + } } // Set path to vendored ConEmu config file @@ -131,7 +163,6 @@ void StartCmder(std::wstring path = L"", bool is_single_mode = false, std::wstr 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)) diff --git a/vendor/cmder.sh b/vendor/cmder.sh index 90bca50..aa59642 100644 --- a/vendor/cmder.sh +++ b/vendor/cmder.sh @@ -1,6 +1,6 @@ # DO NOT EDIT THIS FILE IT WILL BE OVERWRITTEN ON UPDATE # -# Add portable user customizations ${CMDER_ROOT}/config/user-profile.sh, +# Add portable user customizations ${CMDER_ROOT}/config/user_profile.sh, # these customizations will follow Cmder if $CMDER_ROOT is copied # to another machine. # @@ -63,21 +63,32 @@ if [ -d "${CMDER_USER_CONFIG}/profile.d" ] ; then runProfiled "${CMDER_USER_CONFIG}/profile.d" fi -initialConfig="${CMDER_ROOT}/config/user-profile.sh" -if [ -f "${CMDER_ROOT}/config/user-profile.sh" ] ; then - . "${CMDER_ROOT}/config/user-profile.sh" + +# Renaming to "config\user_profile.sh" to "user_profile.sh" for consistency. +if [ -f "$CMDER_ROOT/config/user-profile.sh" ] ; then + mv "$CMDER_ROOT/config/user-profile.sh" "$CMDER_ROOT/config/user_profile.sh" +fi + +CmderUserProfilePath="${CMDER_ROOT}/config/user_profile.sh" +if [ -f "${CMDER_ROOT}/config/user_profile.sh" ] ; then + . "${CMDER_ROOT}/config/user_profile.sh" fi if [ "${CMDER_USER_CONFIG}" != "" ] ; then - initialConfig="${CMDER_USER_CONFIG}/user-profile.sh" - if [ -f "${CMDER_USER_CONFIG}/user-profile.sh" ] ; then - . "${CMDER_USER_CONFIG}/user-profile.sh" + # Renaming to "config\user_profile.sh" to "user_profile.sh" for consistency. + if [ -f "$CMDER_USER_CONFIG/user-profile.sh" ] ; then + mv "$CMDER_USER_CONFIG/user-profile.sh" "$CMDER_USER_CONFIG/user_profile.sh" + fi + + CmderUserProfilePath="${CMDER_USER_CONFIG}/user_profile.sh" + if [ -f "${CMDER_USER_CONFIG}/user_profile.sh" ] ; then + . "${CMDER_USER_CONFIG}/user_profile.sh" fi fi -if [ ! -f "${initialConfig}" ] ; then - echo Creating user startup file: "${initialConfig}" - cat <<-eof >"${initialConfig}" +if [ ! -f "${CmderUserProfilePath}" ] ; then + echo Creating user startup file: "${CmderUserProfilePath}" + cat <<-eof >"${CmderUserProfilePath}" # use this file to run your own startup commands for msys2 bash' # To add a new vendor to the path, do something like: diff --git a/vendor/cmder_exinit b/vendor/cmder_exinit index f20bef1..c182aee 100644 --- a/vendor/cmder_exinit +++ b/vendor/cmder_exinit @@ -1,4 +1,4 @@ -# Copy this file to your non integrated *nix-like environment, +# Copy this file to your non integrated *nix-like environment, # Cygwin/MSys2/Git for Windows SDK, installs '/etc/profile.d/' # folder to integrate the externally installed Unix like environment # into Cmder so it has access to settings stored in Cmder/config @@ -15,7 +15,7 @@ # These customizations will follow Cmder if $CMDER_ROOT is copied # to another machine. # -# Add system specific users customizations to $HOME/.bashrc, these +# Add system specific users customizations to $HOME/.bashrc, these # customizations will not follow Cmder to another machine. # # Uncomment and edit the CMDER_ROOT line to use Cmder/config even when launched @@ -58,45 +58,55 @@ fi if [ ! "$CMDER_ROOT" = "" ] ; then # Remove any trailing '/' CMDER_ROOT=$(echo $CMDER_ROOT | sed 's:/*$::') - + echo "Using \"CMDER_ROOT\" at \"${CMDER_ROOT}\"." - + export CMDER_ROOT - + PATH=${CMDER_ROOT}/bin:$PATH:${CMDER_ROOT} - + 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" fi - + if [ -d "${CMDER_ROOT}/config/profile.d" ] ; then runProfiled "${CMDER_ROOT}/config/profile.d" fi - + 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" + + # Renaming to "config\user_profile.sh" to "user_profile.sh" for consistency. + if [ -f "$CMDER_ROOT/config/user-profile.sh" ] ; then + mv "$CMDER_ROOT/config/user-profile.sh" "$CMDER_ROOT/config/user_profile.sh" fi - - if [ -f "${CMDER_USER_CONFIG}/user-profile.sh" ] ; then - . "${CMDER_USER_CONFIG}/user-profile.sh" - else - 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}" + + CmderUserProfilePath="${CMDER_ROOT}/config/user_profile.sh" + if [ -f "${CMDER_ROOT}/config/user_profile.sh" ] ; then + . "${CMDER_ROOT}/config/user_profile.sh" + fi + + if [ "${CMDER_USER_CONFIG}" != "" ] ; then + # Renaming to "config\user_profile.sh" to "user_profile.sh" for consistency. + if [ -f "$CMDER_USER_CONFIG/user-profile.sh" ] ; then + mv "$CMDER_USER_CONFIG/user-profile.sh" "$CMDER_USER_CONFIG/user_profile.sh" + fi + + CmderUserProfilePath="${CMDER_USER_CONFIG}/user_profile.sh" + if [ -f "${CMDER_USER_CONFIG}/user_profile.sh" ] ; then + . "${CMDER_USER_CONFIG}/user_profile.sh" + fi + fi + + if [ ! -f "${CmderUserProfilePath}" ] ; then + echo Creating user startup file: "${CmderUserProfilePath}" + cat <<-eof >"${CmderUserProfilePath}" # use this file to run your own startup commands for msys2 bash' # To add a new vendor to the path, do something like: diff --git a/vendor/init.bat b/vendor/init.bat index 1328fc7..9959275 100644 --- a/vendor/init.bat +++ b/vendor/init.bat @@ -4,7 +4,7 @@ :: Created as part of cmder project :: !!! THIS FILE IS OVERWRITTEN WHEN CMDER IS UPDATED -:: !!! Use "%CMDER_ROOT%\config\user-profile.cmd" to add your own startup commands +:: !!! Use "%CMDER_ROOT%\config\user_profile.cmd" to add your own startup commands :: Use /v command line arg or set to > 0 for verbose output to aid in debugging. set verbose-output=0 @@ -294,17 +294,17 @@ if exist "%GIT_INSTALL_ROOT%\post-install.bat" ( if not defined HOME set "HOME=%USERPROFILE%" %lib_console% debug-output init.bat "Env Var - HOME=%HOME%" -set "initialConfig=%CMDER_ROOT%\config\user-profile.cmd" -if exist "%CMDER_ROOT%\config\user-profile.cmd" ( +set "initialConfig=%CMDER_ROOT%\config\user_profile.cmd" +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" + call "%CMDER_ROOT%\config\user_profile.cmd" ) if defined CMDER_USER_CONFIG ( - set "initialConfig=%CMDER_USER_CONFIG%\user-profile.cmd" - if exist "%CMDER_USER_CONFIG%\user-profile.cmd" ( + set "initialConfig=%CMDER_USER_CONFIG%\user_profile.cmd" + 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" + call "%CMDER_USER_CONFIG%\user_profile.cmd" ) ) diff --git a/vendor/profile.ps1 b/vendor/profile.ps1 index 2952618..8c9f207 100644 --- a/vendor/profile.ps1 +++ b/vendor/profile.ps1 @@ -2,7 +2,7 @@ # Created as part of cmder project # !!! THIS FILE IS OVERWRITTEN WHEN CMDER IS UPDATED -# !!! Use "%CMDER_ROOT%\config\user-profile.ps1" to add your own startup commands +# !!! Use "%CMDER_ROOT%\config\user_profile.ps1" to add your own startup commands # Compatibility with PS major versions <= 2 if(!$PSScriptRoot) { @@ -97,7 +97,7 @@ $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. +# 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. @@ -149,16 +149,24 @@ 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 +} - -$CmderUserProfilePath = Join-Path $env:CMDER_ROOT "config\user-profile.ps1" +$CmderUserProfilePath = Join-Path $env:CMDER_ROOT "config\user_profile.ps1" if (Test-Path $CmderUserProfilePath) { # Create this file and place your own command in there. Import-Module "$CmderUserProfilePath" } if ($ENV:CMDER_USER_CONFIG) { - $CmderUserProfilePath = Join-Path $ENV:CMDER_USER_CONFIG "user-profile.ps1" + # Renaming to "$env:CMDER_USER_CONFIG\user-profile.ps1" to "user_profile.ps1" for consistency. + if (test-path "$env:CMDER_USER_CONFIG\user-profile.ps1") { + rename-item "$env:CMDER_USER_CONFIG\user-profile.ps1" user_profile.ps1 + } + + $CmderUserProfilePath = Join-Path $ENV:CMDER_USER_CONFIG "user_profile.ps1" if (Test-Path $CmderUserProfilePath) { Import-Module "$CmderUserProfilePath" } From e69e7f9b82a5bd002412a5f684d5a52c1997457b Mon Sep 17 00:00:00 2001 From: "Dax T. Games" Date: Sat, 1 Sep 2018 14:59:40 -0400 Subject: [PATCH 215/306] run user lua afer cmder lua --- launcher/src/CmderLauncher.cpp | 2 +- vendor/clink.lua | 20 +++++++++++--------- 2 files changed, 12 insertions(+), 10 deletions(-) diff --git a/launcher/src/CmderLauncher.cpp b/launcher/src/CmderLauncher.cpp index bfb7918..9f0a275 100644 --- a/launcher/src/CmderLauncher.cpp +++ b/launcher/src/CmderLauncher.cpp @@ -363,7 +363,7 @@ 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)); FAIL_ON_ERROR(RegDeleteTree(cmderKey, NULL)); RegDeleteKeyEx(root, keyBaseName, KEY_ALL_ACCESS, NULL); RegCloseKey(cmderKey); diff --git a/vendor/clink.lua b/vendor/clink.lua index 35acb73..9db28fc 100644 --- a/vendor/clink.lua +++ b/vendor/clink.lua @@ -370,13 +370,15 @@ for _,lua_module in ipairs(clink.find_files(cmder_config_dir..'*.lua')) do end end -local cmder_user_config_dir = clink.get_env('CMDER_USER_CONFIG')..'/' -for _,lua_module in ipairs(clink.find_files(cmder_user_config_dir..'*.lua')) do - -- Skip files that starts with _. This could be useful if some files should be ignored - if not string.match(lua_module, '^_.*') then - local filename = cmder_user_config_dir..lua_module - -- use dofile instead of require because require caches loaded modules - -- so config reloading using Alt-Q won't reload updated modules. - dofile(filename) - end +if clink.get_env('CMDER_USER_CONFIG') then + local cmder_user_config_dir = clink.get_env('CMDER_USER_CONFIG')..'/' + for _,lua_module in ipairs(clink.find_files(cmder_user_config_dir..'*.lua')) do + -- Skip files that starts with _. This could be useful if some files should be ignored + if not string.match(lua_module, '^_.*') then + local filename = cmder_user_config_dir..lua_module + -- use dofile instead of require because require caches loaded modules + -- so config reloading using Alt-Q won't reload updated modules. + dofile(filename) + end + end end From 059a31618bf07e3e7351fb3ae9f5899a94d06d1a Mon Sep 17 00:00:00 2001 From: "Dax T. Games" Date: Sat, 1 Sep 2018 15:32:43 -0400 Subject: [PATCH 216/306] cleanup --- vendor/clink.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vendor/clink.lua b/vendor/clink.lua index 9db28fc..cc1bc83 100644 --- a/vendor/clink.lua +++ b/vendor/clink.lua @@ -370,7 +370,7 @@ for _,lua_module in ipairs(clink.find_files(cmder_config_dir..'*.lua')) do end end -if clink.get_env('CMDER_USER_CONFIG') then +if clink.get_env('CMDER_USER_CONFIG') then local cmder_user_config_dir = clink.get_env('CMDER_USER_CONFIG')..'/' for _,lua_module in ipairs(clink.find_files(cmder_user_config_dir..'*.lua')) do -- Skip files that starts with _. This could be useful if some files should be ignored From c25ff751871cd931e28cdbc9be755b023167e009 Mon Sep 17 00:00:00 2001 From: "Dax T. Games" Date: Sat, 1 Sep 2018 17:37:27 -0400 Subject: [PATCH 217/306] move bin\alias.bat to vendor\bin\alias.cmd --- bin/alias.bat | 131 ------------------------------------------------ vendor/init.bat | 13 +++++ 2 files changed, 13 insertions(+), 131 deletions(-) delete mode 100644 bin/alias.bat diff --git a/bin/alias.bat b/bin/alias.bat deleted file mode 100644 index 03696f6..0000000 --- a/bin/alias.bat +++ /dev/null @@ -1,131 +0,0 @@ -@echo off - - -if "%ALIASES%" == "" ( - set ALIASES="%CMDER_ROOT%\config\user-aliases.cmd" -) - -setlocal enabledelayedexpansion - -if "%~1" == "" echo Use /? for help & echo. & goto :p_show - -:: check command usage - -rem #region parseargument -goto parseargument - -:do_shift - shift - -:parseargument - set currentarg=%~1 - - if /i "%currentarg%" equ "/f" ( - set ALIASES=%~2 - shift - goto :do_shift - ) else if /i "%currentarg%" == "/reload" ( - goto :p_reload - ) else if "%currentarg%" equ "/?" ( - goto :p_help - ) else if /i "%currentarg%" equ "/d" ( - if "%~2" neq "" ( - if "%~3" equ "" ( - :: /d flag for delete existing alias - call :p_del %~2 - shift - goto :eof - ) - ) - ) else if "%currentarg%" neq "" ( - if "%~2" equ "" ( - :: Show the specified alias - doskey /macros | findstr /b %currentarg%= && exit /b - echo insufficient parameters. - goto :p_help - ) else ( - :: handle quotes within command definition, e.g. quoted long file names - set _x=%* - ) - ) -rem #endregion parseargument - -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%" - ) -) - -:: validate alias -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% - -:: trailing quotes added while validating -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 -) - -:: replace already defined alias -findstr /b /v /i "%alias_name%=" "%ALIASES%" >> "%ALIASES%.tmp" -echo %alias_name%=%alias_value% >> "%ALIASES%.tmp" && type "%ALIASES%.tmp" > "%ALIASES%" & @del /f /q "%ALIASES%.tmp" -doskey /macrofile="%ALIASES%" -endlocal -exit /b - -:p_del -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%" -goto:eof - -:p_reload -doskey /macrofile="%ALIASES%" -echo Aliases reloaded -exit /b - -:p_show -doskey /macros|findstr /v /r "^;=" | sort -exit /b - -:p_help -echo.Usage: -echo. -echo. alias [options] [alias=full 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. -echo. If alias is called with no parameters, it will display the list of existing aliases. -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/? -exit /b diff --git a/vendor/init.bat b/vendor/init.bat index bf0b120..1abffed 100644 --- a/vendor/init.bat +++ b/vendor/init.bat @@ -218,6 +218,7 @@ goto :PATH_ENHANCE endlocal :PATH_ENHANCE +%lib_path% enhance_path "%CMDER_ROOT%\vendor\bin" %lib_path% enhance_path_recursive "%CMDER_ROOT%\bin" %max_depth% if defined CMDER_USER_BIN ( %lib_path% enhance_path_recursive "%CMDER_USER_BIN%" %max_depth% @@ -331,5 +332,17 @@ echo @echo off ) >"%initialConfig%" ) +if exist "%CMDER_ROOT%\bin\alias.bat" if exist "%CMDER_ROOT%\vendor\bin\alias.cmd" ( + echo Cmder's 'alias' command has been moved into '%CMDER_ROOT%\vendor\bin\alias.cmd' + echo to get rid of this message either: + echo. + echo Delete the file '%CMDER_ROOT%\bin\alias.bat' + echo. + echo or + echo. + echo Rename '%CMDER_ROOT%\bin\alias.bat' to '%CMDER_ROOT%\bin\alias.cmd' if you + echo have customized it and want to continue using it instead of the included version. +) + set initialConfig= exit /b From 70788dc1e555e2ac3e18401dbb22653a3da9290e Mon Sep 17 00:00:00 2001 From: "Dax T. Games" Date: Sat, 1 Sep 2018 17:43:53 -0400 Subject: [PATCH 218/306] gitignore --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 96f5762..bb66d82 100644 --- a/.gitignore +++ b/.gitignore @@ -22,3 +22,4 @@ config/profile.d .github_changelog_generator launcher/.vs launcher/src/version.rc2 +!bin/Readme.md From 451fb46ce14df254734f5e2900bfd19a35c8d369 Mon Sep 17 00:00:00 2001 From: "Dax T. Games" Date: Sat, 1 Sep 2018 18:17:09 -0400 Subject: [PATCH 219/306] move user-aliases.cmd to user_aliases.cmd --- launcher/src/CmderLauncher.cpp | 30 +++++++++++++++++++++++ vendor/init.bat | 44 +++++++++++++++++----------------- 2 files changed, 52 insertions(+), 22 deletions(-) diff --git a/launcher/src/CmderLauncher.cpp b/launcher/src/CmderLauncher.cpp index 9f0a275..6ca5015 100644 --- a/launcher/src/CmderLauncher.cpp +++ b/launcher/src/CmderLauncher.cpp @@ -88,6 +88,8 @@ void StartCmder(std::wstring path = L"", bool is_single_mode = false, std::wstr wchar_t userProfiledDirPath[MAX_PATH] = { 0 }; wchar_t userProfilePath[MAX_PATH] = { 0 }; wchar_t legacyUserProfilePath[MAX_PATH] = { 0 }; + wchar_t userAliasesPath[MAX_PATH] = { 0 }; + wchar_t legacyUserAliasesPath[MAX_PATH] = { 0 }; wchar_t args[MAX_PATH * 2 + 256] = { 0 }; std::wstring cmderStart = path; @@ -122,6 +124,20 @@ void StartCmder(std::wstring path = L"", bool is_single_mode = false, std::wstr rename(lPr, pR); } + PathCombine(legacyUserAliasesPath, configDirPath, L"user-aliases.cmd"); + if (PathFileExists(legacyUserAliasesPath)) { + PathCombine(userAliasesPath, configDirPath, L"user_aliases.cmd"); + + char *lPr = (char *)malloc(MAX_PATH); + char *pR = (char *)malloc(MAX_PATH); + size_t i; + wcstombs_s(&i, lPr, (size_t)MAX_PATH, + legacyUserAliasesPath, (size_t)MAX_PATH); + wcstombs_s(&i, pR, (size_t)MAX_PATH, + userAliasesPath, (size_t)MAX_PATH); + rename(lPr, pR); + } + if (wcscmp(userConfigDirPath, L"") == 0) { PathCombine(userConfigDirPath, exeDir, L"config"); @@ -150,6 +166,20 @@ void StartCmder(std::wstring path = L"", bool is_single_mode = false, std::wstr userProfilePath, (size_t)MAX_PATH); rename(lPr, pR); } + + PathCombine(legacyUserAliasesPath, userConfigDirPath, L"user-aliases.cmd"); + if (PathFileExists(legacyUserAliasesPath)) { + PathCombine(userAliasesPath, userConfigDirPath, L"user_aliases.cmd"); + + char *lPr = (char *)malloc(MAX_PATH); + char *pR = (char *)malloc(MAX_PATH); + size_t i; + wcstombs_s(&i, lPr, (size_t)MAX_PATH, + legacyUserAliasesPath, (size_t)MAX_PATH); + wcstombs_s(&i, pR, (size_t)MAX_PATH, + userAliasesPath, (size_t)MAX_PATH); + rename(lPr, pR); + } } // Set path to vendored ConEmu config file diff --git a/vendor/init.bat b/vendor/init.bat index 1abffed..38909be 100644 --- a/vendor/init.bat +++ b/vendor/init.bat @@ -58,7 +58,7 @@ call "%cmder_root%\vendor\lib\lib_profile" ) ) else if /i "%1" == "/user_aliases" ( if exist "%~2" ( - set "user-aliases=%~2" + set "user_aliases=%~2" shift ) ) else if /i "%1" == "/git_install_root" ( @@ -236,53 +236,53 @@ if defined CMDER_USER_CONFIG ( :: 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', +:: must also be self executing, see '.\user_aliases.cmd.example', :: and be in profile.d folder. -if not defined user-aliases ( +if not defined user_aliases ( if defined CMDER_USER_CONFIG ( - set "user-aliases=%CMDER_USER_CONFIG%\user-aliases.cmd" + set "user_aliases=%CMDER_USER_CONFIG%\user_aliases.cmd" ) else ( - set "user-aliases=%CMDER_ROOT%\config\user-aliases.cmd" + 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. if not defined aliases ( - set "aliases=%user-aliases%" + set "aliases=%user_aliases%" ) -:: Make sure we have a self-extracting user-aliases.cmd file +:: Make sure we have a self-extracting user_aliases.cmd file setlocal enabledelayedexpansion -if not exist "%user-aliases%" ( - echo Creating initial user-aliases store in "%user-aliases%"... - copy "%CMDER_ROOT%\vendor\user-aliases.cmd.example" "%user-aliases%" +if not exist "%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 + type "%user_aliases%" | findstr /i ";= Add aliases below here" >nul if "!errorlevel!" == "1" ( - echo Creating initial user-aliases store in "%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%" + 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%" + copy "%user_aliases%" "%user_aliases%.old_format" + copy "%CMDER_ROOT%\vendor\user_aliases.cmd.example" "%user_aliases%" ) ) ) -:: Update old 'user-aliases' to new self executing 'user-aliases.cmd' +:: Update old 'user_aliases' to new self executing 'user_aliases.cmd' if exist "%CMDER_ROOT%\config\aliases" ( echo Updating old "%CMDER_ROOT%\config\aliases" to new format... - type "%CMDER_ROOT%\config\aliases" >> "%user-aliases%" && del "%CMDER_ROOT%\config\aliases" -) else if exist "%user-aliases%.old_format" ( - echo Updating old "%user-aliases%" to new format... - type "%user-aliases%.old_format" >> "%user-aliases%" && del "%user-aliases%.old_format" + type "%CMDER_ROOT%\config\aliases" >> "%user_aliases%" && del "%CMDER_ROOT%\config\aliases" +) else if exist "%user_aliases%.old_format" ( + echo Updating old "%user_aliases%" to new format... + type "%user_aliases%.old_format" >> "%user_aliases%" && del "%user_aliases%.old_format" ) endlocal :: Add aliases to the environment -call "%user-aliases%" +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 From 7d40ea4609cc9c04e597ee69b9cf2556042bf0ef Mon Sep 17 00:00:00 2001 From: "Dax T. Games" Date: Sat, 1 Sep 2018 18:32:21 -0400 Subject: [PATCH 220/306] modify message --- vendor/init.bat | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/vendor/init.bat b/vendor/init.bat index 38909be..7d35a0f 100644 --- a/vendor/init.bat +++ b/vendor/init.bat @@ -340,8 +340,9 @@ if exist "%CMDER_ROOT%\bin\alias.bat" if exist "%CMDER_ROOT%\vendor\bin\alias.cm echo. echo or echo. - echo Rename '%CMDER_ROOT%\bin\alias.bat' to '%CMDER_ROOT%\bin\alias.cmd' if you - echo have customized it and want to continue using it instead of the included version. + echo If you have customized it and want to continue using it instead of the included version + echo * Rename '%CMDER_ROOT%\bin\alias.bat' to '%CMDER_ROOT%\bin\alias.cmd'. + echo * Search for 'user-aliases' and replace it with 'user_aliases'. ) set initialConfig= From 75e6644d2a745b12aa309abaff92c48c16fbe699 Mon Sep 17 00:00:00 2001 From: "Dax T. Games" Date: Sat, 1 Sep 2018 18:35:02 -0400 Subject: [PATCH 221/306] rename --- vendor/{user-aliases.cmd.example => user_aliases.cmd.example} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename vendor/{user-aliases.cmd.example => user_aliases.cmd.example} (100%) diff --git a/vendor/user-aliases.cmd.example b/vendor/user_aliases.cmd.example similarity index 100% rename from vendor/user-aliases.cmd.example rename to vendor/user_aliases.cmd.example From 541fc16daf50fbe6cd8f87e2b570e04ab22c447e Mon Sep 17 00:00:00 2001 From: "Dax T. Games" Date: Sat, 1 Sep 2018 22:08:00 -0500 Subject: [PATCH 222/306] Trying to get tcc working --- vendor/init.bat | 135 +++++++++++++++++++------------------ vendor/lib/lib_console.cmd | 18 ++--- vendor/lib/lib_git.cmd | 14 ++-- vendor/lib/lib_path.cmd | 28 ++++---- 4 files changed, 101 insertions(+), 94 deletions(-) diff --git a/vendor/init.bat b/vendor/init.bat index 7d35a0f..ed3a900 100644 --- a/vendor/init.bat +++ b/vendor/init.bat @@ -7,8 +7,8 @@ :: !!! Use "%CMDER_ROOT%\config\user_profile.cmd" to add your own startup commands :: 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 verbose_output=0 +set debug_output=0 set max_depth=1 :: Find root dir @@ -37,9 +37,9 @@ call "%cmder_root%\vendor\lib\lib_profile" if "%~1" == "" ( goto :start ) else if /i "%1"=="/v" ( - set verbose-output=1 + set verbose_output=1 ) else if /i "%1"=="/d" ( - set debug-output=1 + set debug_output=1 ) else if /i "%1" == "/max_depth" ( if "%~2" geq "1" if "%~2" leq "5" ( set "max_depth=%~2" @@ -62,11 +62,11 @@ call "%cmder_root%\vendor\lib\lib_profile" shift ) ) else if /i "%1" == "/git_install_root" ( - if exist "%~2" ( + if exist "%2\cmd\git.exe" ( set "GIT_INSTALL_ROOT=%~2" shift ) else ( - %lib_console% show_error "The Git install root folder "%~2", you specified does not exist!" + %lib_console% show_error "The Git install root folder "%~2\cmd\git.exe", you specified does not exist!" exit /b ) ) else if /i "%1" == "/home" ( @@ -85,11 +85,11 @@ call "%cmder_root%\vendor\lib\lib_profile" goto var_loop :start -%lib_console% debug-output init.bat "Env Var - CMDER_ROOT=%CMDER_ROOT%" -%lib_console% debug-output init.bat "Env Var - debug-output=%debug-output%" +%lib_console% debug_output init.bat "Env Var - CMDER_ROOT=%CMDER_ROOT%" +%lib_console% debug_output init.bat "Env Var - debug_output=%debug_output%" if defined CMDER_USER_CONFIG ( - %lib_console% debug-output init.bat "CMDER IS ALSO USING INDIVIDUAL USER CONFIG FROM '%CMDER_USER_CONFIG%'!" + %lib_console% debug_output init.bat "CMDER IS ALSO USING INDIVIDUAL USER CONFIG FROM '%CMDER_USER_CONFIG%'!" ) :: Pick right version of clink @@ -101,21 +101,24 @@ if "%PROCESSOR_ARCHITECTURE%"=="x86" ( set architecture_bits=64 ) -:: Tell the user about the clink config files... -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.\ +echo %comspec% |find /i "tcc.exe">nul +if %errorlevel% == 1 ( + :: Tell the user about the clink config files... + 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. + ) -} 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 -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" + :: Run clink + 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 @@ -134,7 +137,7 @@ if defined GIT_INSTALL_ROOT ( if exist "%GIT_INSTALL_ROOT%\cmd\git.exe" goto :FOUND_GIT) ) -%lib_console% debug-output init.bat "Looking for Git install root..." +%lib_console% debug_output init.bat "Looking for Git install root..." :: get the version information for vendored git binary %lib_git% read_version VENDORED "%CMDER_ROOT%\vendor\git-for-windows\cmd" @@ -165,19 +168,18 @@ for /F "delims=" %%F in ('where git.exe 2^>nul') do ( set test_dir= goto :FOUND_GIT ) else ( - call :verbose-output Found old !GIT_VERSION_USER! in "!test_dir!", but not using... + call :verbose_output Found old !GIT_VERSION_USER! in "!test_dir!", but not using... set test_dir= ) ) else ( :: if the user provided git executable is not found if !errorlevel! equ -255 ( - call :verbose-output No git at "!git_executable!" found. + call :verbose_output No git at "!git_executable!" found. set test_dir= ) ) - ) :: our last hope: our own git... @@ -209,8 +211,8 @@ if defined GIT_INSTALL_ROOT ( ) endlocal & set "PATH=%PATH%" & set "LANG=%LANG%" & set "SVN_SSH=%SVN_SSH%" & set "GIT_INSTALL_ROOT=%GIT_INSTALL_ROOT%" -%lib_console% debug-output init.bat "Env Var - GIT_INSTALL_ROOT=%GIT_INSTALL_ROOT%" -%lib_console% debug-output init.bat "Found Git in: '%GIT_INSTALL_ROOT%'" +%lib_console% debug_output init.bat "Env Var - GIT_INSTALL_ROOT=%GIT_INSTALL_ROOT%" +%lib_console% debug_output init.bat "Found Git in: '%GIT_INSTALL_ROOT%'" goto :PATH_ENHANCE :NO_GIT @@ -246,41 +248,45 @@ if not defined user_aliases ( ) ) -:: The aliases environment variable is used by alias.bat to id -:: the default file to store new aliases in. -if not defined aliases ( - set "aliases=%user_aliases%" -) -:: Make sure we have a self-extracting user_aliases.cmd file -setlocal enabledelayedexpansion -if not exist "%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 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%" - ) - ) +echo %comspec% |find /i "tcc.exe">nul +if %errorlevel% == 1 ( + :: The aliases environment variable is used by alias.bat to id + :: the default file to store new aliases in. + if not defined aliases ( + set "aliases=%user_aliases%" + ) + + :: Make sure we have a self-extracting user_aliases.cmd file + setlocal enabledelayedexpansion + if not exist "%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 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%" + ) + ) + ) + + :: Update old 'user_aliases' to new self executing 'user_aliases.cmd' + if exist "%CMDER_ROOT%\config\aliases" ( + echo Updating old "%CMDER_ROOT%\config\aliases" to new format... + type "%CMDER_ROOT%\config\aliases" >> "%user_aliases%" && del "%CMDER_ROOT%\config\aliases" + ) else if exist "%user_aliases%.old_format" ( + echo Updating old "%user_aliases%" to new format... + type "%user_aliases%.old_format" >> "%user_aliases%" && del "%user_aliases%.old_format" + ) + endlocal ) -:: Update old 'user_aliases' to new self executing 'user_aliases.cmd' -if exist "%CMDER_ROOT%\config\aliases" ( - echo Updating old "%CMDER_ROOT%\config\aliases" to new format... - type "%CMDER_ROOT%\config\aliases" >> "%user_aliases%" && del "%CMDER_ROOT%\config\aliases" -) else if exist "%user_aliases%.old_format" ( - echo Updating old "%user_aliases%" to new format... - type "%user_aliases%.old_format" >> "%user_aliases%" && del "%user_aliases%.old_format" -) -endlocal - :: Add aliases to the environment call "%user_aliases%" @@ -288,7 +294,7 @@ 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...." + %lib_console% verbose_output "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 popd @@ -296,7 +302,7 @@ if exist "%GIT_INSTALL_ROOT%\post-install.bat" ( :: Set home path if not defined HOME set "HOME=%USERPROFILE%" -%lib_console% debug-output init.bat "Env Var - HOME=%HOME%" +%lib_console% debug_output init.bat "Env Var - HOME=%HOME%" set "initialConfig=%CMDER_ROOT%\config\user_profile.cmd" if exist "%CMDER_ROOT%\config\user_profile.cmd" ( @@ -332,7 +338,8 @@ echo @echo off ) >"%initialConfig%" ) -if exist "%CMDER_ROOT%\bin\alias.bat" if exist "%CMDER_ROOT%\vendor\bin\alias.cmd" ( +echo %comspec% |find /i "tcc.exe">nul +if %errorlevel% == 1 if exist "%CMDER_ROOT%\bin\alias.bat" if exist "%CMDER_ROOT%\vendor\bin\alias.cmd" ( echo Cmder's 'alias' command has been moved into '%CMDER_ROOT%\vendor\bin\alias.cmd' echo to get rid of this message either: echo. diff --git a/vendor/lib/lib_console.cmd b/vendor/lib/lib_console.cmd index 4de7525..3c174b0 100644 --- a/vendor/lib/lib_console.cmd +++ b/vendor/lib/lib_console.cmd @@ -13,9 +13,9 @@ if "%~1" == "/h" ( exit /b -:debug-output +:debug_output :::=============================================================================== -:::debug-output - Output a debug message to the console. +:::debug_output - Output a debug message to the console. :::. :::include: :::. @@ -23,22 +23,22 @@ exit /b :::. :::usage: :::. -::: %lib_console% debug-output [caller] [message] +::: %lib_console% debug_output [caller] [message] :::. :::required: :::. -::: [caller] Script/sub routine name calling debug-output +::: [caller] Script/sub routine name calling debug_output :::. ::: [message] Message text to display. :::. :::------------------------------------------------------------------------------- - if %debug-output% gtr 0 echo DEBUG(%~1): %~2 & echo. + if %debug_output% gtr 0 echo DEBUG(%~1): %~2 & echo. exit /b -:verbose-output +:verbose_output :::=============================================================================== -:::verbose-output - Output a debug message to the console. +:::verbose_output - Output a debug message to the console. :::. :::include: :::. @@ -46,7 +46,7 @@ exit /b :::. :::usage: :::. -::: %lib_console% verbose-output "[message]" +::: %lib_console% verbose_output "[message]" :::. :::required: :::. @@ -54,7 +54,7 @@ exit /b :::. :::------------------------------------------------------------------------------- - if %verbose-output% gtr 0 echo %~1 + if %verbose_output% gtr 0 echo %~1 exit /b :show_error diff --git a/vendor/lib/lib_git.cmd b/vendor/lib/lib_git.cmd index d703e58..fc040f0 100644 --- a/vendor/lib/lib_git.cmd +++ b/vendor/lib/lib_git.cmd @@ -42,11 +42,11 @@ exit /b :: set the executable path set "git_executable=%~2\git.exe" - %lib_console% debug-output :read_version "Env Var - git_executable=%git_executable%" + %lib_console% debug_output :read_version "Env Var - git_executable=%git_executable%" :: check if the executable actually exists if not exist "%git_executable%" ( - %lib_console% debug-output :read_version "%git_executable% does not exist." + %lib_console% debug_output :read_version "%git_executable% does not exist." exit /b -255 ) @@ -54,7 +54,7 @@ exit /b for /F "tokens=1,2,3 usebackq" %%A in (`"%git_executable%" --version 2^>nul`) do ( if /i "%%A %%B" == "git version" ( set "GIT_VERSION_%~1=%%C" - %lib_console% debug-output :read_version "Env Var - GIT_VERSION_%~1=%%C" + %lib_console% debug_output :read_version "Env Var - GIT_VERSION_%~1=%%C" ) else ( %lib_console% show_error "git --version" returned an inproper version string! pause @@ -124,7 +124,7 @@ exit /b call :parse_version %~1 %~2 :: ... and maybe display it, for debugging purposes. - %lib_console% debug-output :validate_version "Found Git Version for %~1: !%~1_MAJOR!.!%~1_MINOR!.!%~1_PATCH!.!%~1_BUILD!" + %lib_console% debug_output :validate_version "Found Git Version for %~1: !%~1_MAJOR!.!%~1_MINOR!.!%~1_PATCH!.!%~1_BUILD!" exit /b :compare_versions @@ -148,9 +148,9 @@ exit /b :: 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. - :: %lib_console% debug-output Comparing: - :: %lib_console% debug-output %~1: !%~1_MAJOR!.!%~1_MINOR!.!%~1_PATCH!.!%~1_BUILD! - :: %lib_console% debug-output %~2: !%~2_MAJOR!.!%~2_MINOR!.!%~2_PATCH!.!%~2_BUILD! + :: %lib_console% debug_output Comparing: + :: %lib_console% debug_output %~1: !%~1_MAJOR!.!%~1_MINOR!.!%~1_PATCH!.!%~1_BUILD! + :: %lib_console% 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) diff --git a/vendor/lib/lib_path.cmd b/vendor/lib/lib_path.cmd index 1d8c9e7..34831b3 100644 --- a/vendor/lib/lib_path.cmd +++ b/vendor/lib/lib_path.cmd @@ -57,28 +57,28 @@ exit /b set "find_query=%find_query: =\ %" set found=0 - %lib_console% debug-output :enhance_path "Env Var - find_query=%find_query%" + %lib_console% debug_output :enhance_path "Env Var - find_query=%find_query%" echo "%PATH%"|findstr >nul /I /R ";%find_query%\"$" if "!ERRORLEVEL!" == "0" set found=1 - %lib_console% debug-output :enhance_path "Env Var 1 - found=!found!" + %lib_console% 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 - %lib_console% debug-output :enhance_path "Env Var 2 - found=!found!" + %lib_console% debug_output :enhance_path "Env Var 2 - found=!found!" ) if "%found%" == "0" ( - %lib_console% debug-output :enhance_path "BEFORE Env Var - PATH=!path!" + %lib_console% debug_output :enhance_path "BEFORE Env Var - PATH=!path!" if /i "%position%" == "append" ( - %lib_console% debug-output :enhance_path "Appending '%add_path%'" + %lib_console% debug_output :enhance_path "Appending '%add_path%'" set "PATH=%PATH%;%add_path%" ) else ( - %lib_console% debug-output :enhance_path "Prepending '%add_path%'" + %lib_console% debug_output :enhance_path "Prepending '%add_path%'" set "PATH=%add_path%;%PATH%" ) - %lib_console% debug-output :enhance_path "AFTER Env Var - PATH=!path!" + %lib_console% debug_output :enhance_path "AFTER Env Var - PATH=!path!" ) endlocal & set "PATH=%PATH:;;=;%" @@ -134,20 +134,20 @@ exit /b if "%depth%" == "" set depth=0 - %lib_console% debug-output :enhance_path_recursive "Env Var - add_path=%add_path%" - %lib_console% debug-output :enhance_path_recursive "Env Var - position=%position%" - %lib_console% debug-output :enhance_path_recursive "Env Var - max_depth=%max_depth%" + %lib_console% debug_output :enhance_path_recursive "Env Var - add_path=%add_path%" + %lib_console% debug_output :enhance_path_recursive "Env Var - position=%position%" + %lib_console% debug_output :enhance_path_recursive "Env Var - max_depth=%max_depth%" if %max_depth% gtr !depth! ( - %lib_console% debug-output :enhance_path_recursive "Adding parent directory - '%add_path%'" + %lib_console% 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 ( - %lib_console% debug-output :enhance_path_recursive "Env Var BEFORE - depth=!depth!" - %lib_console% debug-output :enhance_path_recursive "Found Subdirectory - '%%~fi'" + %lib_console% debug_output :enhance_path_recursive "Env Var BEFORE - depth=!depth!" + %lib_console% debug_output :enhance_path_recursive "Found Subdirectory - '%%~fi'" call :enhance_path_recursive "%%~fi" %max_depth% %position% - %lib_console% debug-output :enhance_path_recursive "Env Var AFTER- depth=!depth!" + %lib_console% debug_output :enhance_path_recursive "Env Var AFTER- depth=!depth!" ) ) From 352a16f84d28272d57b107603a983fad7999fa82 Mon Sep 17 00:00:00 2001 From: "Dax T. Games" Date: Sun, 2 Sep 2018 09:04:46 -0500 Subject: [PATCH 223/306] trying to get tcc working --- vendor/init.bat | 30 ++++++++++++++++-------------- vendor/lib/lib_path.cmd | 4 ++-- vendor/lib/lib_profile.cmd | 2 +- 3 files changed, 19 insertions(+), 17 deletions(-) diff --git a/vendor/init.bat b/vendor/init.bat index ed3a900..22a18f7 100644 --- a/vendor/init.bat +++ b/vendor/init.bat @@ -101,8 +101,8 @@ if "%PROCESSOR_ARCHITECTURE%"=="x86" ( set architecture_bits=64 ) -echo %comspec% |find /i "tcc.exe">nul -if %errorlevel% == 1 ( +REM echo %comspec% |find /i "tcc.exe">nul +REM if %errorlevel% == 1 ( :: Tell the user about the clink config files... if defined "%CMDER_USER_CONFIG%\settings" if not exist "%CMDER_USER_CONFIG%\settings" ( echo Generating clink initial settings in "%CMDER_USER_CONFIG%\settings" @@ -119,7 +119,7 @@ if %errorlevel% == 1 ( ) else ( "%CMDER_ROOT%\vendor\clink\clink_x%architecture%.exe" inject --quiet --profile "%CMDER_ROOT%\config" --scripts "%CMDER_ROOT%\vendor" ) -) +REM ) :: Prepare for git-for-windows @@ -134,7 +134,7 @@ if not defined TERM set TERM=cygwin :: also check that we have a recent enough version of git by examining the version string setlocal enabledelayedexpansion if defined GIT_INSTALL_ROOT ( - if exist "%GIT_INSTALL_ROOT%\cmd\git.exe" goto :FOUND_GIT) + if exist "%GIT_INSTALL_ROOT%\cmd\git.exe" goto :FOUND_GIT ) %lib_console% debug_output init.bat "Looking for Git install root..." @@ -205,7 +205,8 @@ if defined GIT_INSTALL_ROOT ( :: 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" - for /F "delims=" %%F in ('env /usr/bin/locale -uU 2^>nul') do ( + + for /F "delims=" %%F in ('env /usr/bin/locale -uU 2') do ( set "LANG=%%F" ) ) @@ -249,15 +250,15 @@ if not defined user_aliases ( ) -echo %comspec% |find /i "tcc.exe">nul -if %errorlevel% == 1 ( - :: The aliases environment variable is used by alias.bat to id - :: the default file to store new aliases in. +echo %comspec% | find /i "tcc.exe">nul +if "%errorlevel%" == "1" ( + REM The aliases environment variable is used by alias.bat to id + REM the default file to store new aliases in. if not defined aliases ( set "aliases=%user_aliases%" ) - :: Make sure we have a self-extracting user_aliases.cmd file + REM Make sure we have a self-extracting user_aliases.cmd file setlocal enabledelayedexpansion if not exist "%user_aliases%" ( echo Creating initial user_aliases store in "%user_aliases%"... @@ -279,10 +280,12 @@ if %errorlevel% == 1 ( :: Update old 'user_aliases' to new self executing 'user_aliases.cmd' if exist "%CMDER_ROOT%\config\aliases" ( echo Updating old "%CMDER_ROOT%\config\aliases" to new format... - type "%CMDER_ROOT%\config\aliases" >> "%user_aliases%" && del "%CMDER_ROOT%\config\aliases" + type "%CMDER_ROOT%\config\aliases" >> "%user_aliases%" + del "%CMDER_ROOT%\config\aliases" ) else if exist "%user_aliases%.old_format" ( echo Updating old "%user_aliases%" to new format... - type "%user_aliases%.old_format" >> "%user_aliases%" && del "%user_aliases%.old_format" + type "%user_aliases%.old_format" >> "%user_aliases%" + del "%user_aliases%.old_format" ) endlocal ) @@ -337,8 +340,7 @@ echo. echo @echo off ) >"%initialConfig%" ) - -echo %comspec% |find /i "tcc.exe">nul +echo %comspec% | find /i "tcc.exe">nul if %errorlevel% == 1 if exist "%CMDER_ROOT%\bin\alias.bat" if exist "%CMDER_ROOT%\vendor\bin\alias.cmd" ( echo Cmder's 'alias' command has been moved into '%CMDER_ROOT%\vendor\bin\alias.cmd' echo to get rid of this message either: diff --git a/vendor/lib/lib_path.cmd b/vendor/lib/lib_path.cmd index 34831b3..fd63cda 100644 --- a/vendor/lib/lib_path.cmd +++ b/vendor/lib/lib_path.cmd @@ -58,12 +58,12 @@ exit /b set found=0 %lib_console% debug_output :enhance_path "Env Var - find_query=%find_query%" - echo "%PATH%"|findstr >nul /I /R ";%find_query%\"$" + echo %path%|findstr >nul /I /R ";%find_query%\"$" if "!ERRORLEVEL!" == "0" set found=1 %lib_console% debug_output :enhance_path "Env Var 1 - found=!found!" if "!found!" == "0" ( - echo "%PATH%"|findstr >nul /i /r ";%find_query%;" + echo %path%|findstr >nul /i /r ";%find_query%;" if "!ERRORLEVEL!" == "0" set found=1 %lib_console% debug_output :enhance_path "Env Var 2 - found=!found!" ) diff --git a/vendor/lib/lib_profile.cmd b/vendor/lib/lib_profile.cmd index 82dbb4a..98bc9f0 100644 --- a/vendor/lib/lib_profile.cmd +++ b/vendor/lib/lib_profile.cmd @@ -39,7 +39,7 @@ exit /b pushd "%~1" for /f "usebackq" %%x in ( `dir /b *.bat *.cmd 2^>nul` ) do ( - %lib_console% verbose-output "Calling '%~1\%%x'..." + %lib_console% verbose_output "Calling '%~1\%%x'..." call "%~1\%%x" ) popd From 34f8c43d9811408ff0dbbc89d0a6783682e6dea0 Mon Sep 17 00:00:00 2001 From: "Dax T. Games" Date: Sun, 2 Sep 2018 09:16:40 -0500 Subject: [PATCH 224/306] replace - with _ in debug-output and verbose-output --- vendor/init.bat | 28 ++++++++++++++-------------- vendor/lib/lib_console.cmd | 18 +++++++++--------- vendor/lib/lib_git.cmd | 14 +++++++------- vendor/lib/lib_path.cmd | 32 ++++++++++++++++---------------- vendor/lib/lib_profile.cmd | 2 +- 5 files changed, 47 insertions(+), 47 deletions(-) diff --git a/vendor/init.bat b/vendor/init.bat index 7d35a0f..656fc23 100644 --- a/vendor/init.bat +++ b/vendor/init.bat @@ -7,8 +7,8 @@ :: !!! Use "%CMDER_ROOT%\config\user_profile.cmd" to add your own startup commands :: 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 verbose_output=0 +set debug_output=0 set max_depth=1 :: Find root dir @@ -37,9 +37,9 @@ call "%cmder_root%\vendor\lib\lib_profile" if "%~1" == "" ( goto :start ) else if /i "%1"=="/v" ( - set verbose-output=1 + set verbose_output=1 ) else if /i "%1"=="/d" ( - set debug-output=1 + set debug_output=1 ) else if /i "%1" == "/max_depth" ( if "%~2" geq "1" if "%~2" leq "5" ( set "max_depth=%~2" @@ -85,11 +85,11 @@ call "%cmder_root%\vendor\lib\lib_profile" goto var_loop :start -%lib_console% debug-output init.bat "Env Var - CMDER_ROOT=%CMDER_ROOT%" -%lib_console% debug-output init.bat "Env Var - debug-output=%debug-output%" +%lib_console% debug_output init.bat "Env Var - CMDER_ROOT=%CMDER_ROOT%" +%lib_console% debug_output init.bat "Env Var - debug_output=%debug_output%" if defined CMDER_USER_CONFIG ( - %lib_console% debug-output init.bat "CMDER IS ALSO USING INDIVIDUAL USER CONFIG FROM '%CMDER_USER_CONFIG%'!" + %lib_console% debug_output init.bat "CMDER IS ALSO USING INDIVIDUAL USER CONFIG FROM '%CMDER_USER_CONFIG%'!" ) :: Pick right version of clink @@ -134,7 +134,7 @@ if defined GIT_INSTALL_ROOT ( if exist "%GIT_INSTALL_ROOT%\cmd\git.exe" goto :FOUND_GIT) ) -%lib_console% debug-output init.bat "Looking for Git install root..." +%lib_console% debug_output init.bat "Looking for Git install root..." :: get the version information for vendored git binary %lib_git% read_version VENDORED "%CMDER_ROOT%\vendor\git-for-windows\cmd" @@ -165,14 +165,14 @@ for /F "delims=" %%F in ('where git.exe 2^>nul') do ( set test_dir= goto :FOUND_GIT ) else ( - call :verbose-output Found old !GIT_VERSION_USER! in "!test_dir!", but not using... + call :verbose_output Found old !GIT_VERSION_USER! in "!test_dir!", but not using... set test_dir= ) ) else ( :: if the user provided git executable is not found if !errorlevel! equ -255 ( - call :verbose-output No git at "!git_executable!" found. + call :verbose_output No git at "!git_executable!" found. set test_dir= ) @@ -209,8 +209,8 @@ if defined GIT_INSTALL_ROOT ( ) endlocal & set "PATH=%PATH%" & set "LANG=%LANG%" & set "SVN_SSH=%SVN_SSH%" & set "GIT_INSTALL_ROOT=%GIT_INSTALL_ROOT%" -%lib_console% debug-output init.bat "Env Var - GIT_INSTALL_ROOT=%GIT_INSTALL_ROOT%" -%lib_console% debug-output init.bat "Found Git in: '%GIT_INSTALL_ROOT%'" +%lib_console% debug_output init.bat "Env Var - GIT_INSTALL_ROOT=%GIT_INSTALL_ROOT%" +%lib_console% debug_output init.bat "Found Git in: '%GIT_INSTALL_ROOT%'" goto :PATH_ENHANCE :NO_GIT @@ -288,7 +288,7 @@ 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...." + %lib_console% verbose_output "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 popd @@ -296,7 +296,7 @@ if exist "%GIT_INSTALL_ROOT%\post-install.bat" ( :: Set home path if not defined HOME set "HOME=%USERPROFILE%" -%lib_console% debug-output init.bat "Env Var - HOME=%HOME%" +%lib_console% debug_output init.bat "Env Var - HOME=%HOME%" set "initialConfig=%CMDER_ROOT%\config\user_profile.cmd" if exist "%CMDER_ROOT%\config\user_profile.cmd" ( diff --git a/vendor/lib/lib_console.cmd b/vendor/lib/lib_console.cmd index 4de7525..3c174b0 100644 --- a/vendor/lib/lib_console.cmd +++ b/vendor/lib/lib_console.cmd @@ -13,9 +13,9 @@ if "%~1" == "/h" ( exit /b -:debug-output +:debug_output :::=============================================================================== -:::debug-output - Output a debug message to the console. +:::debug_output - Output a debug message to the console. :::. :::include: :::. @@ -23,22 +23,22 @@ exit /b :::. :::usage: :::. -::: %lib_console% debug-output [caller] [message] +::: %lib_console% debug_output [caller] [message] :::. :::required: :::. -::: [caller] Script/sub routine name calling debug-output +::: [caller] Script/sub routine name calling debug_output :::. ::: [message] Message text to display. :::. :::------------------------------------------------------------------------------- - if %debug-output% gtr 0 echo DEBUG(%~1): %~2 & echo. + if %debug_output% gtr 0 echo DEBUG(%~1): %~2 & echo. exit /b -:verbose-output +:verbose_output :::=============================================================================== -:::verbose-output - Output a debug message to the console. +:::verbose_output - Output a debug message to the console. :::. :::include: :::. @@ -46,7 +46,7 @@ exit /b :::. :::usage: :::. -::: %lib_console% verbose-output "[message]" +::: %lib_console% verbose_output "[message]" :::. :::required: :::. @@ -54,7 +54,7 @@ exit /b :::. :::------------------------------------------------------------------------------- - if %verbose-output% gtr 0 echo %~1 + if %verbose_output% gtr 0 echo %~1 exit /b :show_error diff --git a/vendor/lib/lib_git.cmd b/vendor/lib/lib_git.cmd index d703e58..fc040f0 100644 --- a/vendor/lib/lib_git.cmd +++ b/vendor/lib/lib_git.cmd @@ -42,11 +42,11 @@ exit /b :: set the executable path set "git_executable=%~2\git.exe" - %lib_console% debug-output :read_version "Env Var - git_executable=%git_executable%" + %lib_console% debug_output :read_version "Env Var - git_executable=%git_executable%" :: check if the executable actually exists if not exist "%git_executable%" ( - %lib_console% debug-output :read_version "%git_executable% does not exist." + %lib_console% debug_output :read_version "%git_executable% does not exist." exit /b -255 ) @@ -54,7 +54,7 @@ exit /b for /F "tokens=1,2,3 usebackq" %%A in (`"%git_executable%" --version 2^>nul`) do ( if /i "%%A %%B" == "git version" ( set "GIT_VERSION_%~1=%%C" - %lib_console% debug-output :read_version "Env Var - GIT_VERSION_%~1=%%C" + %lib_console% debug_output :read_version "Env Var - GIT_VERSION_%~1=%%C" ) else ( %lib_console% show_error "git --version" returned an inproper version string! pause @@ -124,7 +124,7 @@ exit /b call :parse_version %~1 %~2 :: ... and maybe display it, for debugging purposes. - %lib_console% debug-output :validate_version "Found Git Version for %~1: !%~1_MAJOR!.!%~1_MINOR!.!%~1_PATCH!.!%~1_BUILD!" + %lib_console% debug_output :validate_version "Found Git Version for %~1: !%~1_MAJOR!.!%~1_MINOR!.!%~1_PATCH!.!%~1_BUILD!" exit /b :compare_versions @@ -148,9 +148,9 @@ exit /b :: 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. - :: %lib_console% debug-output Comparing: - :: %lib_console% debug-output %~1: !%~1_MAJOR!.!%~1_MINOR!.!%~1_PATCH!.!%~1_BUILD! - :: %lib_console% debug-output %~2: !%~2_MAJOR!.!%~2_MINOR!.!%~2_PATCH!.!%~2_BUILD! + :: %lib_console% debug_output Comparing: + :: %lib_console% debug_output %~1: !%~1_MAJOR!.!%~1_MINOR!.!%~1_PATCH!.!%~1_BUILD! + :: %lib_console% 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) diff --git a/vendor/lib/lib_path.cmd b/vendor/lib/lib_path.cmd index 1d8c9e7..fd63cda 100644 --- a/vendor/lib/lib_path.cmd +++ b/vendor/lib/lib_path.cmd @@ -57,28 +57,28 @@ exit /b set "find_query=%find_query: =\ %" set found=0 - %lib_console% debug-output :enhance_path "Env Var - find_query=%find_query%" - echo "%PATH%"|findstr >nul /I /R ";%find_query%\"$" + %lib_console% debug_output :enhance_path "Env Var - find_query=%find_query%" + echo %path%|findstr >nul /I /R ";%find_query%\"$" if "!ERRORLEVEL!" == "0" set found=1 - %lib_console% debug-output :enhance_path "Env Var 1 - found=!found!" + %lib_console% debug_output :enhance_path "Env Var 1 - found=!found!" if "!found!" == "0" ( - echo "%PATH%"|findstr >nul /i /r ";%find_query%;" + echo %path%|findstr >nul /i /r ";%find_query%;" if "!ERRORLEVEL!" == "0" set found=1 - %lib_console% debug-output :enhance_path "Env Var 2 - found=!found!" + %lib_console% debug_output :enhance_path "Env Var 2 - found=!found!" ) if "%found%" == "0" ( - %lib_console% debug-output :enhance_path "BEFORE Env Var - PATH=!path!" + %lib_console% debug_output :enhance_path "BEFORE Env Var - PATH=!path!" if /i "%position%" == "append" ( - %lib_console% debug-output :enhance_path "Appending '%add_path%'" + %lib_console% debug_output :enhance_path "Appending '%add_path%'" set "PATH=%PATH%;%add_path%" ) else ( - %lib_console% debug-output :enhance_path "Prepending '%add_path%'" + %lib_console% debug_output :enhance_path "Prepending '%add_path%'" set "PATH=%add_path%;%PATH%" ) - %lib_console% debug-output :enhance_path "AFTER Env Var - PATH=!path!" + %lib_console% debug_output :enhance_path "AFTER Env Var - PATH=!path!" ) endlocal & set "PATH=%PATH:;;=;%" @@ -134,20 +134,20 @@ exit /b if "%depth%" == "" set depth=0 - %lib_console% debug-output :enhance_path_recursive "Env Var - add_path=%add_path%" - %lib_console% debug-output :enhance_path_recursive "Env Var - position=%position%" - %lib_console% debug-output :enhance_path_recursive "Env Var - max_depth=%max_depth%" + %lib_console% debug_output :enhance_path_recursive "Env Var - add_path=%add_path%" + %lib_console% debug_output :enhance_path_recursive "Env Var - position=%position%" + %lib_console% debug_output :enhance_path_recursive "Env Var - max_depth=%max_depth%" if %max_depth% gtr !depth! ( - %lib_console% debug-output :enhance_path_recursive "Adding parent directory - '%add_path%'" + %lib_console% 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 ( - %lib_console% debug-output :enhance_path_recursive "Env Var BEFORE - depth=!depth!" - %lib_console% debug-output :enhance_path_recursive "Found Subdirectory - '%%~fi'" + %lib_console% debug_output :enhance_path_recursive "Env Var BEFORE - depth=!depth!" + %lib_console% debug_output :enhance_path_recursive "Found Subdirectory - '%%~fi'" call :enhance_path_recursive "%%~fi" %max_depth% %position% - %lib_console% debug-output :enhance_path_recursive "Env Var AFTER- depth=!depth!" + %lib_console% debug_output :enhance_path_recursive "Env Var AFTER- depth=!depth!" ) ) diff --git a/vendor/lib/lib_profile.cmd b/vendor/lib/lib_profile.cmd index 82dbb4a..98bc9f0 100644 --- a/vendor/lib/lib_profile.cmd +++ b/vendor/lib/lib_profile.cmd @@ -39,7 +39,7 @@ exit /b pushd "%~1" for /f "usebackq" %%x in ( `dir /b *.bat *.cmd 2^>nul` ) do ( - %lib_console% verbose-output "Calling '%~1\%%x'..." + %lib_console% verbose_output "Calling '%~1\%%x'..." call "%~1\%%x" ) popd From 823e6fee6e042011166288c31116d1b7f70b67cf Mon Sep 17 00:00:00 2001 From: "Dax T. Games" Date: Sun, 2 Sep 2018 17:32:20 -0500 Subject: [PATCH 225/306] add cmder_shell method --- vendor/init.bat | 10 +++++----- vendor/lib/lib_base.cmd | 21 +++++++++++++++++++++ 2 files changed, 26 insertions(+), 5 deletions(-) diff --git a/vendor/init.bat b/vendor/init.bat index 22a18f7..0ed4668 100644 --- a/vendor/init.bat +++ b/vendor/init.bat @@ -33,6 +33,7 @@ call "%cmder_root%\vendor\lib\lib_console" call "%cmder_root%\vendor\lib\lib_git" call "%cmder_root%\vendor\lib\lib_profile" + :var_loop if "%~1" == "" ( goto :start @@ -85,6 +86,7 @@ call "%cmder_root%\vendor\lib\lib_profile" goto var_loop :start +%lib_base% cmder_shell %lib_console% debug_output init.bat "Env Var - CMDER_ROOT=%CMDER_ROOT%" %lib_console% debug_output init.bat "Env Var - debug_output=%debug_output%" @@ -101,8 +103,7 @@ if "%PROCESSOR_ARCHITECTURE%"=="x86" ( set architecture_bits=64 ) -REM echo %comspec% |find /i "tcc.exe">nul -REM if %errorlevel% == 1 ( +if "%CMDER_SHELL%" neq "tcc.exe" ( :: Tell the user about the clink config files... if defined "%CMDER_USER_CONFIG%\settings" if not exist "%CMDER_USER_CONFIG%\settings" ( echo Generating clink initial settings in "%CMDER_USER_CONFIG%\settings" @@ -119,7 +120,7 @@ REM if %errorlevel% == 1 ( ) else ( "%CMDER_ROOT%\vendor\clink\clink_x%architecture%.exe" inject --quiet --profile "%CMDER_ROOT%\config" --scripts "%CMDER_ROOT%\vendor" ) -REM ) +) :: Prepare for git-for-windows @@ -250,8 +251,7 @@ if not defined user_aliases ( ) -echo %comspec% | find /i "tcc.exe">nul -if "%errorlevel%" == "1" ( +if "%CMDER_SHELL%" neq "tcc.exe" ( REM The aliases environment variable is used by alias.bat to id REM the default file to store new aliases in. if not defined aliases ( diff --git a/vendor/lib/lib_base.cmd b/vendor/lib/lib_base.cmd index 37a1072..6c2954a 100644 --- a/vendor/lib/lib_base.cmd +++ b/vendor/lib/lib_base.cmd @@ -43,3 +43,24 @@ exit /b pause exit /b + +:cmder_shell +:::=============================================================================== +:::show_subs - shows all sub routines in a .bat/.cmd file with documentation +:::. +:::include: +:::. +::: call "lib_base.cmd" +:::. +:::usage: +:::. +::: %lib_base% is_cmd +:::. +:::options: +:::. +::: file full path to file containing lib_routines to display +:::. +:::------------------------------------------------------------------------------- + echo %comspec% | find /i "\cmd.exe" > nul && set "CMDER_SHELL=cmd.exe" + echo %comspec% | find /i "\tcc.exe" > nul && set "CMDER_SHELL=tcc.exe" + exit /b From 823eeaf08227c0ec6fdaa8ed053c52f7c94faf1f Mon Sep 17 00:00:00 2001 From: "Dax T. Games" Date: Sun, 2 Sep 2018 18:18:59 -0500 Subject: [PATCH 226/306] cmder_shell settings --- vendor/init.bat | 33 ++++++++++++++++----------------- vendor/lib/lib_base.cmd | 14 ++++++++++++-- 2 files changed, 28 insertions(+), 19 deletions(-) diff --git a/vendor/init.bat b/vendor/init.bat index 0ed4668..274f73b 100644 --- a/vendor/init.bat +++ b/vendor/init.bat @@ -33,7 +33,6 @@ call "%cmder_root%\vendor\lib\lib_console" call "%cmder_root%\vendor\lib\lib_git" call "%cmder_root%\vendor\lib\lib_profile" - :var_loop if "%~1" == "" ( goto :start @@ -86,6 +85,7 @@ call "%cmder_root%\vendor\lib\lib_profile" goto var_loop :start +:: Sets CMDER_SHELL, CMDER_CLINK, CMDER_ALIASES %lib_base% cmder_shell %lib_console% debug_output init.bat "Env Var - CMDER_ROOT=%CMDER_ROOT%" %lib_console% debug_output init.bat "Env Var - debug_output=%debug_output%" @@ -103,22 +103,22 @@ if "%PROCESSOR_ARCHITECTURE%"=="x86" ( set architecture_bits=64 ) -if "%CMDER_SHELL%" neq "tcc.exe" ( - :: Tell the user about the clink config files... - 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. - ) +if "%CMDER_CLINK%" == "1" ( + %lib_console% verbose_output "Injecting Clink..." :: Run clink if defined CMDER_USER_CONFIG ( - "%CMDER_ROOT%\vendor\clink\clink_x%architecture%.exe" inject --quiet --profile "%CMDER_USER_CONFIG%" --scripts "%CMDER_ROOT%\vendor" + 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.\ + ) + "%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" + 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. + ) + "%CMDER_ROOT%\vendor\clink\clink_x%architecture%.exe" inject --quiet --profile "%CMDER_ROOT%\config" --scripts "%CMDER_ROOT%\vendor" ) ) @@ -250,8 +250,7 @@ if not defined user_aliases ( ) ) - -if "%CMDER_SHELL%" neq "tcc.exe" ( +if "%CMDER_ALIASES%" == "1" ( REM The aliases environment variable is used by alias.bat to id REM the default file to store new aliases in. if not defined aliases ( @@ -340,8 +339,8 @@ echo. echo @echo off ) >"%initialConfig%" ) -echo %comspec% | find /i "tcc.exe">nul -if %errorlevel% == 1 if exist "%CMDER_ROOT%\bin\alias.bat" if exist "%CMDER_ROOT%\vendor\bin\alias.cmd" ( + +if "%CMDER_ALIASES%" == "1" if exist "%CMDER_ROOT%\bin\alias.bat" if exist "%CMDER_ROOT%\vendor\bin\alias.cmd" ( echo Cmder's 'alias' command has been moved into '%CMDER_ROOT%\vendor\bin\alias.cmd' echo to get rid of this message either: echo. diff --git a/vendor/lib/lib_base.cmd b/vendor/lib/lib_base.cmd index 6c2954a..5c9a9af 100644 --- a/vendor/lib/lib_base.cmd +++ b/vendor/lib/lib_base.cmd @@ -61,6 +61,16 @@ exit /b ::: file full path to file containing lib_routines to display :::. :::------------------------------------------------------------------------------- - echo %comspec% | find /i "\cmd.exe" > nul && set "CMDER_SHELL=cmd.exe" - echo %comspec% | find /i "\tcc.exe" > nul && set "CMDER_SHELL=tcc.exe" + echo %comspec% | find /i "\cmd.exe" > nul && set "CMDER_SHELL=cmd" + echo %comspec% | find /i "\tcc.exe" > nul && set "CMDER_SHELL=tcc" + echo %comspec% | 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 + + set CMDER_ALIASES=1 + if "%CMDER_SHELL%" equ "tcc" set CMDER_ALIASES=0 + if "%CMDER_SHELL%" equ "tccle" set CMDER_ALIASES=0 + exit /b From 3f963366102c705f70bfb460c190638359c2a87f Mon Sep 17 00:00:00 2001 From: "Dax T. Games" Date: Sun, 2 Sep 2018 18:53:49 -0500 Subject: [PATCH 227/306] verbos output --- vendor/init.bat | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/vendor/init.bat b/vendor/init.bat index 274f73b..313b923 100644 --- a/vendor/init.bat +++ b/vendor/init.bat @@ -104,7 +104,7 @@ if "%PROCESSOR_ARCHITECTURE%"=="x86" ( ) if "%CMDER_CLINK%" == "1" ( - %lib_console% verbose_output "Injecting Clink..." + %lib_console% verbose_output "Injecting Clink!" :: Run clink if defined CMDER_USER_CONFIG ( @@ -120,6 +120,8 @@ if "%CMDER_CLINK%" == "1" ( ) "%CMDER_ROOT%\vendor\clink\clink_x%architecture%.exe" inject --quiet --profile "%CMDER_ROOT%\config" --scripts "%CMDER_ROOT%\vendor" ) +) else ( + %lib_console% verbose_output "WARNING: Incompatible 'ComSpec/Shell' Detetected Skipping Clink Injection!" ) :: Prepare for git-for-windows From 85c4a5b4aff6a7110c4d6b992410b7901234821e Mon Sep 17 00:00:00 2001 From: "Dax T. Games" Date: Sun, 2 Sep 2018 18:56:17 -0500 Subject: [PATCH 228/306] cleanup --- vendor/lib/lib_base.cmd | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/vendor/lib/lib_base.cmd b/vendor/lib/lib_base.cmd index 5c9a9af..8577637 100644 --- a/vendor/lib/lib_base.cmd +++ b/vendor/lib/lib_base.cmd @@ -54,7 +54,7 @@ exit /b :::. :::usage: :::. -::: %lib_base% is_cmd +::: %lib_base% cmder_shell :::. :::options: :::. @@ -68,7 +68,7 @@ exit /b 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 From 9869f9a3723aa2fd6cfdb10463a78231acd8eb98 Mon Sep 17 00:00:00 2001 From: "Dax T. Games" Date: Sun, 2 Sep 2018 18:59:14 -0500 Subject: [PATCH 229/306] cleanup --- vendor/init.bat | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/vendor/init.bat b/vendor/init.bat index 313b923..b10028e 100644 --- a/vendor/init.bat +++ b/vendor/init.bat @@ -258,7 +258,7 @@ if "%CMDER_ALIASES%" == "1" ( if not defined aliases ( set "aliases=%user_aliases%" ) - + REM Make sure we have a self-extracting user_aliases.cmd file setlocal enabledelayedexpansion if not exist "%user_aliases%" ( @@ -277,7 +277,7 @@ if "%CMDER_ALIASES%" == "1" ( ) ) ) - + :: Update old 'user_aliases' to new self executing 'user_aliases.cmd' if exist "%CMDER_ROOT%\config\aliases" ( echo Updating old "%CMDER_ROOT%\config\aliases" to new format... @@ -352,7 +352,7 @@ if "%CMDER_ALIASES%" == "1" if exist "%CMDER_ROOT%\bin\alias.bat" if exist "%CMD echo. echo If you have customized it and want to continue using it instead of the included version echo * Rename '%CMDER_ROOT%\bin\alias.bat' to '%CMDER_ROOT%\bin\alias.cmd'. - echo * Search for 'user-aliases' and replace it with 'user_aliases'. + echo * Search for 'user-aliases' and replace it with 'user_aliases'. ) set initialConfig= From 44b4b7a1954c49b6aec67794aaf7a0e26672f71b Mon Sep 17 00:00:00 2001 From: "Dax T. Games" Date: Sun, 2 Sep 2018 19:09:12 -0500 Subject: [PATCH 230/306] '.gitignore' --- .gitignore | 1 + vendor/bin/alias.cmd | 131 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 132 insertions(+) create mode 100644 vendor/bin/alias.cmd diff --git a/.gitignore b/.gitignore index bb66d82..a19ca87 100644 --- a/.gitignore +++ b/.gitignore @@ -2,6 +2,7 @@ ## Those files should be taken from their repositary vendor/*/* +!vendor/bin/* !vendor/lib/* !vendor/* !vendor/psmodules/PsGet diff --git a/vendor/bin/alias.cmd b/vendor/bin/alias.cmd new file mode 100644 index 0000000..50e22e7 --- /dev/null +++ b/vendor/bin/alias.cmd @@ -0,0 +1,131 @@ +@echo off + + +if "%ALIASES%" == "" ( + set ALIASES="%CMDER_ROOT%\config\user_aliases.cmd" +) + +setlocal enabledelayedexpansion + +if "%~1" == "" echo Use /? for help & echo. & goto :p_show + +:: check command usage + +rem #region parseargument +goto parseargument + +:do_shift + shift + +:parseargument + set currentarg=%~1 + + if /i "%currentarg%" equ "/f" ( + set ALIASES=%~2 + shift + goto :do_shift + ) else if /i "%currentarg%" == "/reload" ( + goto :p_reload + ) else if "%currentarg%" equ "/?" ( + goto :p_help + ) else if /i "%currentarg%" equ "/d" ( + if "%~2" neq "" ( + if "%~3" equ "" ( + :: /d flag for delete existing alias + call :p_del %~2 + shift + goto :eof + ) + ) + ) else if "%currentarg%" neq "" ( + if "%~2" equ "" ( + :: Show the specified alias + doskey /macros | findstr /b %currentarg%= && exit /b + echo insufficient parameters. + goto :p_help + ) else ( + :: handle quotes within command definition, e.g. quoted long file names + set _x=%* + ) + ) +rem #endregion parseargument + +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%" + ) +) + +:: validate alias +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% + +:: trailing quotes added while validating +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 +) + +:: replace already defined alias +findstr /b /v /i "%alias_name%=" "%ALIASES%" >> "%ALIASES%.tmp" +echo %alias_name%=%alias_value% >> "%ALIASES%.tmp" && type "%ALIASES%.tmp" > "%ALIASES%" & @del /f /q "%ALIASES%.tmp" +doskey /macrofile="%ALIASES%" +endlocal +exit /b + +:p_del +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%" +goto:eof + +:p_reload +doskey /macrofile="%ALIASES%" +echo Aliases reloaded +exit /b + +:p_show +doskey /macros|findstr /v /r "^;=" | sort +exit /b + +:p_help +echo.Usage: +echo. +echo. alias [options] [alias=full 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. +echo. If alias is called with no parameters, it will display the list of existing aliases. +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/? +exit /b From d58c6c207061c762a7429a440792468ea7406eab Mon Sep 17 00:00:00 2001 From: "Dax T. Games" Date: Sun, 2 Sep 2018 19:17:16 -0500 Subject: [PATCH 231/306] cleanup --- vendor/init.bat | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/vendor/init.bat b/vendor/init.bat index b10028e..fb82d2d 100644 --- a/vendor/init.bat +++ b/vendor/init.bat @@ -62,11 +62,11 @@ call "%cmder_root%\vendor\lib\lib_profile" shift ) ) else if /i "%1" == "/git_install_root" ( - if exist "%2\cmd\git.exe" ( + if exist "%2" ( set "GIT_INSTALL_ROOT=%~2" shift ) else ( - %lib_console% show_error "The Git install root folder "%~2\cmd\git.exe", you specified does not exist!" + %lib_console% show_error "The Git install root folder "%~2", you specified does not exist!" exit /b ) ) else if /i "%1" == "/home" ( From 12b9af99c542ae086ab16270f47612b0c1a6ea0b Mon Sep 17 00:00:00 2001 From: "Dax T. Games" Date: Mon, 3 Sep 2018 06:05:20 -0500 Subject: [PATCH 232/306] '.gitignore' --- .gitignore | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index a19ca87..3243549 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,8 @@ ## Those files should be taken from their repositary +bin/*/* +!bin/Readme.md vendor/*/* !vendor/bin/* !vendor/lib/* @@ -23,4 +25,3 @@ config/profile.d .github_changelog_generator launcher/.vs launcher/src/version.rc2 -!bin/Readme.md From ec4c815264696c7862b391dbac85578cd73c4506 Mon Sep 17 00:00:00 2001 From: "Dax T. Games" Date: Mon, 3 Sep 2018 06:08:44 -0500 Subject: [PATCH 233/306] cleanup --- vendor/init.bat | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vendor/init.bat b/vendor/init.bat index fb82d2d..d19a75f 100644 --- a/vendor/init.bat +++ b/vendor/init.bat @@ -62,7 +62,7 @@ call "%cmder_root%\vendor\lib\lib_profile" shift ) ) else if /i "%1" == "/git_install_root" ( - if exist "%2" ( + if exist "%~2" ( set "GIT_INSTALL_ROOT=%~2" shift ) else ( From b1aa687d4ff4e57cd6f508925e1ef07a854851dd Mon Sep 17 00:00:00 2001 From: "Dax T. Games" Date: Mon, 3 Sep 2018 11:06:39 -0500 Subject: [PATCH 234/306] handle start dir args with trailing \" --- launcher/src/CmderLauncher.cpp | 26 +++++++++++++++++++++++--- 1 file changed, 23 insertions(+), 3 deletions(-) diff --git a/launcher/src/CmderLauncher.cpp b/launcher/src/CmderLauncher.cpp index 6ca5015..7bd1b21 100644 --- a/launcher/src/CmderLauncher.cpp +++ b/launcher/src/CmderLauncher.cpp @@ -422,6 +422,7 @@ cmderOptions GetOption() for (int i = 1; i < argCount; i++) { + // MessageBox(NULL, szArgList[i], L"Arglist contents", MB_OK); if (_wcsicmp(L"/c", szArgList[i]) == 0) @@ -441,6 +442,12 @@ cmderOptions GetOption() } else if (_wcsicmp(L"/start", szArgList[i]) == 0) { + int len = wcslen(szArgList[i + 1]); + if (wcscmp(&szArgList[i + 1][len - 1], L"\"") == 0) + { + szArgList[i + 1][len - 1] = '\0'; + } + if (PathFileExists(szArgList[i + 1])) { cmderOptions.cmderStart = szArgList[i + 1]; @@ -476,7 +483,7 @@ cmderOptions GetOption() { cmderOptions.unRegisterApp = true; cmderOptions.registerApp = false; - if (szArgList[i + 1] != NULL) + if (szArgList[i + 1] != NULL) { if (_wcsicmp(L"all", szArgList[i + 1]) == 0 || _wcsicmp(L"user", szArgList[i + 1]) == 0) { @@ -485,9 +492,22 @@ cmderOptions GetOption() } } } - else if (cmderOptions.cmderStart == L"" && PathFileExists(szArgList[i])) + else if (cmderOptions.cmderStart == L"") { - cmderOptions.cmderStart = szArgList[i]; + int len = wcslen(szArgList[i]); + if (wcscmp(&szArgList[i][len - 1], L"\"") == 0) + { + szArgList[i][len - 1] = '\0'; + } + + if (PathFileExists(szArgList[i])) + { + cmderOptions.cmderStart = szArgList[i]; + i++; + } + else { + MessageBox(NULL, szArgList[i], L"Folder does not exist!", MB_OK); + } } 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); From 277972a7f25f9cd0ae022d2f86237b6f022889da Mon Sep 17 00:00:00 2001 From: "Dax T. Games" Date: Mon, 3 Sep 2018 12:59:43 -0400 Subject: [PATCH 235/306] fixed --- vendor/init.bat | 5 +++++ vendor/lib/lib_path.cmd | 4 ++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/vendor/init.bat b/vendor/init.bat index d19a75f..fc06547 100644 --- a/vendor/init.bat +++ b/vendor/init.bat @@ -95,6 +95,8 @@ if defined CMDER_USER_CONFIG ( ) :: Pick right version of clink +echo here + if "%PROCESSOR_ARCHITECTURE%"=="x86" ( set architecture=86 set architecture_bits=32 @@ -223,6 +225,7 @@ goto :PATH_ENHANCE :: Skip this if GIT WAS FOUND else we did 'endlocal' above! endlocal +echo here2 :PATH_ENHANCE %lib_path% enhance_path "%CMDER_ROOT%\vendor\bin" %lib_path% enhance_path_recursive "%CMDER_ROOT%\bin" %max_depth% @@ -356,4 +359,6 @@ if "%CMDER_ALIASES%" == "1" if exist "%CMDER_ROOT%\bin\alias.bat" if exist "%CMD ) set initialConfig= + + exit /b diff --git a/vendor/lib/lib_path.cmd b/vendor/lib/lib_path.cmd index fd63cda..0b478d4 100644 --- a/vendor/lib/lib_path.cmd +++ b/vendor/lib/lib_path.cmd @@ -58,12 +58,12 @@ exit /b set found=0 %lib_console% debug_output :enhance_path "Env Var - find_query=%find_query%" - echo %path%|findstr >nul /I /R ";%find_query%\"$" + echo "%path%"|findstr >nul /I /R ";%find_query%\"$" if "!ERRORLEVEL!" == "0" set found=1 %lib_console% debug_output :enhance_path "Env Var 1 - found=!found!" if "!found!" == "0" ( - echo %path%|findstr >nul /i /r ";%find_query%;" + echo "%path%"|findstr >nul /i /r ";%find_query%;" if "!ERRORLEVEL!" == "0" set found=1 %lib_console% debug_output :enhance_path "Env Var 2 - found=!found!" ) From 7b191d3caf48fc287ec9f54580984ac7d608bf51 Mon Sep 17 00:00:00 2001 From: "Dax T. Games" Date: Mon, 3 Sep 2018 14:54:52 -0500 Subject: [PATCH 236/306] cleanup --- vendor/init.bat | 3 --- 1 file changed, 3 deletions(-) diff --git a/vendor/init.bat b/vendor/init.bat index fc06547..3b05d34 100644 --- a/vendor/init.bat +++ b/vendor/init.bat @@ -95,8 +95,6 @@ if defined CMDER_USER_CONFIG ( ) :: Pick right version of clink -echo here - if "%PROCESSOR_ARCHITECTURE%"=="x86" ( set architecture=86 set architecture_bits=32 @@ -225,7 +223,6 @@ goto :PATH_ENHANCE :: Skip this if GIT WAS FOUND else we did 'endlocal' above! endlocal -echo here2 :PATH_ENHANCE %lib_path% enhance_path "%CMDER_ROOT%\vendor\bin" %lib_path% enhance_path_recursive "%CMDER_ROOT%\bin" %max_depth% From bd9cff2691f2f7ef810429b1de02652c29b2b69d Mon Sep 17 00:00:00 2001 From: "Dax T. Games" Date: Wed, 5 Sep 2018 18:07:27 -0500 Subject: [PATCH 237/306] cleanup --- vendor/init.bat | 1 - 1 file changed, 1 deletion(-) diff --git a/vendor/init.bat b/vendor/init.bat index 3b05d34..a689bde 100644 --- a/vendor/init.bat +++ b/vendor/init.bat @@ -357,5 +357,4 @@ if "%CMDER_ALIASES%" == "1" if exist "%CMDER_ROOT%\bin\alias.bat" if exist "%CMD set initialConfig= - exit /b From ab0de6d15794ae96c34a98273a849ae8af654239 Mon Sep 17 00:00:00 2001 From: Benjamin Staneck Date: Thu, 13 Sep 2018 17:58:29 +0200 Subject: [PATCH 238/306] :arrow_up: Update Git to 2.19.0 Release notes: https://github.com/git-for-windows/git/releases/tag/v2.19.0.windows.1 --- vendor/sources.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/vendor/sources.json b/vendor/sources.json index 437a4ee..2076b96 100644 --- a/vendor/sources.json +++ b/vendor/sources.json @@ -1,8 +1,8 @@ [ { "name": "git-for-windows", - "version": "v2.17.1.windows.2", - "url": "https://github.com/git-for-windows/git/releases/download/v2.17.1.windows.2/PortableGit-2.17.1.2-64-bit.7z.exe" + "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" }, { "name": "clink", From 2cfa7c45fc84cebf0b8094bf124f0a082d5434af Mon Sep 17 00:00:00 2001 From: Benjamin Staneck Date: Thu, 13 Sep 2018 18:05:36 +0200 Subject: [PATCH 239/306] :arrow_up: ConEmu to 180626 release notes: https://conemu.github.io/en/Whats_New.html --- vendor/sources.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/vendor/sources.json b/vendor/sources.json index 2076b96..72696ce 100644 --- a/vendor/sources.json +++ b/vendor/sources.json @@ -11,8 +11,8 @@ }, { "name": "conemu-maximus5", - "version": "180528", - "url": "https://github.com/Maximus5/ConEmu/releases/download/v18.05.28/ConEmuPack.180528.7z" + "version": "180626", + "url": "https://github.com/Maximus5/ConEmu/releases/download/v18.06.26/ConEmuPack.180626.7z" }, { "name": "clink-completions", From 669e99760261b02968fc43e7793b9e2661e78186 Mon Sep 17 00:00:00 2001 From: "Dax T. Games" Date: Sat, 15 Sep 2018 12:52:23 -0500 Subject: [PATCH 240/306] flag_exists.cmd to flag_exec.cmd, also to lib as an option --- .../flag_exists.cmd => bin/flag_exec.cmd} | 0 vendor/lib/lib_profile.cmd | 131 ++++++++++++++++++ 2 files changed, 131 insertions(+) rename vendor/{lib/flag_exists.cmd => bin/flag_exec.cmd} (100%) diff --git a/vendor/lib/flag_exists.cmd b/vendor/bin/flag_exec.cmd similarity index 100% rename from vendor/lib/flag_exists.cmd rename to vendor/bin/flag_exec.cmd diff --git a/vendor/lib/lib_profile.cmd b/vendor/lib/lib_profile.cmd index 98bc9f0..55fe62c 100644 --- a/vendor/lib/lib_profile.cmd +++ b/vendor/lib/lib_profile.cmd @@ -44,3 +44,134 @@ exit /b ) popd exit /b + +:flag_exec + @echo off + setlocal + + if "%~1" equ "" call :wrongSyntax + + if not defined CMDER_USER_FLAGS ( + :: in case nothing was passed to %CMDER_USER_FLAGS% + set "CMDER_USER_FLAGS= " + ) + + set "feNot=false" + goto :parseArgument + + :doShift + shift + + :parseArgument + set "currenArgu=%~1" + if /i "%currenArgu%" equ "/setPath" ( + :: set %flag_exists% shortcut + endlocal + set "flag_exists=%~dp0flag_exists" + ) else if /i "%currenArgu%" == "/?" ( + call :help + ) else if /i "%currenArgu%" equ "/help" ( + call :help + ) else if /i "%currenArgu%" equ "/h" ( + call :help + ) else if /i "%currenArgu%" equ "NOT" ( + set "feNot=true" + goto :doShift + ) else ( + if "%~1" equ "" call :wrongSyntax + if "%~2" equ "" call :wrongSyntax + set "feFlagName=%~1" + set "feCommand=%~2" + if not "%~3" equ "" ( + set "feParam=%~3" + ) + ) + + :: to avoid erroneous deteciton like "/do" "/doNOT", which both have a "/do" + :: we added a space after the flag name, like "/do ", which won't match "/doN" + set "feFlagName=%feFlagName% " + :: echo. + :: echo %CMDER_USER_FLAGS% + :: echo %feNOT% + :: echo %feFlagName% + :: echo %feCommand% + :: echo %feParam% + :: echo. + echo %CMDER_USER_FLAGS% | find /i "%feFlagName%">nul + if "%ERRORLEVEL%" == "0" ( + if "%feNOT%" == "false" ( + call %feCommand% %feParam% + ) + ) else ( + if "%feNOT%" == "true" ( + call %feCommand% %feParam% + ) + ) + endlocal + exit /b + + :wrongSyntax + echo The syntax of the command is incorrect. + echo. + echo use /? for help + echo. + endlocal + exit /b + + :help + echo. + echo %%flag_exists%% + echo. + echo Handles with custom arguments for cmder's init.bat. + echo written by xiazeyu, inspired DRSDavidSoft. + echo. + echo Usage: + echo. + echo %%flag_exists%% [/setPath] [NOT] flagName command/program [parameters] + echo. + echo setPath Generate a global varible %%flag_exists%% for + echo quicker use. Following arguments will be ignored. + echo. + echo NOT Specifies that %%flag_exists%% should carry out + echo the command only if the flag is missing. + echo. + echo flagName Specifies which flag name is to detect. It's recommand + echo to use a pair of double quotation marks to wrap + echo your flag name to avoid exceed expectation. + echo. + echo command/program Specifies the command to carry out if the + echo argument name is detected. It's recommand to + echo use a pair of double quotation marks to + echo wrap your command to avoid exceed expectation. + echo. + echo parameters These are the parameters passed to the command/program. + echo It's recommand to use a pair of double quotation marks + echo to wrap your flag name to avoid exceed expectation. + echo. + echo Examples: + echo. + echo these examples are expected to be writted in /config/user-profile.cmd + echo it will use the environment varible "CMDER_USER_FLAGS" + echo. + echo Case 1: + echo. + echo The following command in user-profile.cmd would execute "notepad.exe" + echo. + echo call %%flag_exists%% "/startNotepad" "start" "notepad.exe" + echo. + echo if you pass parameter to init.bat like: + echo. + echo init.bat /startNotepad + echo. + echo Case 2: + echo. + echo The following command in user-profile.cmd would execute "notepad.exe" + echo. + echo call %%flag_exists%% NOT "/dontStartNotepad" "start" "notepad.exe" + echo. + echo UNLESS you pass parameter to init.bat like: + echo. + echo init.bat /dontStartNotepad + echo. + endlocal + exit /b From 9dce9d0f62ca0546347bd490a95722db2eedc92d Mon Sep 17 00:00:00 2001 From: "Dax T. Games" Date: Sat, 15 Sep 2018 13:55:54 -0500 Subject: [PATCH 241/306] added exit codes --- README.md | 8 +++---- vendor/bin/{flag_exec.cmd => cexec.cmd} | 30 ++++++++++++++----------- vendor/init.bat | 1 + 3 files changed, 22 insertions(+), 17 deletions(-) rename vendor/bin/{flag_exec.cmd => cexec.cmd} (77%) diff --git a/README.md b/README.md index d50c61f..9e8e711 100644 --- a/README.md +++ b/README.md @@ -148,7 +148,7 @@ You may find some Monokai color schemes for mintty to match Cmder [here](https:/ | `/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 | -| (custom arguments) | User defined arguments processed by `flag_exists`. Type `%flag_exists% /?` for more useage. | not set | +| (custom arguments) | User defined arguments processed by `cexec`. Type `cexec /?` for more useage. | 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: @@ -249,7 +249,7 @@ Uncomment and edit the below line in the script to use Cmder config even when la ### Handling with custom arguments when using init.bat -You can pass custom arguments to `init.bat` and use `%flag_exists%` to detect it. +You can pass custom arguments to `init.bat` and use `cexec` to detect it. It is useful when you have multiple modes to execute cmder. @@ -265,7 +265,7 @@ to start init.bat with custom argument(`/startNotepad`) and put ```batch -call %flag_exists% "/startNotepad" "start" "notepad.exe"` +call cexec "/startNotepad" "start" "notepad.exe"` ``` @@ -279,7 +279,7 @@ init.bat the `notepad.exe` won't be executed. -To see detailed usage of `%flag_exists%`, type `%flag_exists% /?` in cmder. +To see detailed usage of `cexec`, type `cexec /?` in cmder. ### Integrating Cmder with [Hyper](https://github.com/zeit/hyper), [Microsoft VS Code](https://code.visualstudio.com/), and your favorite IDEs diff --git a/vendor/bin/flag_exec.cmd b/vendor/bin/cexec.cmd similarity index 77% rename from vendor/bin/flag_exec.cmd rename to vendor/bin/cexec.cmd index c144340..2b1c09f 100644 --- a/vendor/bin/flag_exec.cmd +++ b/vendor/bin/cexec.cmd @@ -19,9 +19,10 @@ set "currenArgu=%~1" if /i "%currenArgu%" equ "/setPath" ( :: set %flag_exists% shortcut endlocal - set "flag_exists=%~dp0flag_exists" + set "ccall=call %~dp0cexec.cmd" + set "cexec=%~dp0cexec.cmd" ) else if /i "%currenArgu%" == "/?" ( - goto :help + call :help ) else if /i "%currenArgu%" equ "/help" ( goto :help ) else if /i "%currenArgu%" equ "/h" ( @@ -55,14 +56,16 @@ echo %CMDER_USER_FLAGS% | find /i "%feFlagName%">nul if "%ERRORLEVEL%" == "0" ( if "%feNOT%" == "false" ( call %feCommand% %feParam% + exit /b 0 ) ) else ( if "%feNOT%" == "true" ( call %feCommand% %feParam% + exit /b 0 ) ) endlocal -exit /b +exit /b 1 :wrongSyntax echo The syntax of the command is incorrect. @@ -74,22 +77,22 @@ exit /b :help echo. -echo %%flag_exists%% +echo CExec - Conditional Exec echo. echo Handles with custom arguments for cmder's init.bat. echo written by xiazeyu, inspired DRSDavidSoft. echo. echo Usage: echo. -echo %%flag_exists%% [/setPath] [NOT] flagName command/program [parameters] +echo cexec [NOT] flagName command/program [parameters] echo. -echo setPath Generate a global varible %%flag_exists%% for +echo /setPath Generate a global varible %%cexec%% for echo quicker use. Following arguments will be ignored. echo. -echo NOT Specifies that %%flag_exists%% should carry out +echo NOT Specifies that cexec should carry out echo the command only if the flag is missing. echo. -echo flagName Specifies which flag name is to detect. It's recommand +echo /[flagName] Specifies which flag name is to detect. It's recommand echo to use a pair of double quotation marks to wrap echo your flag name to avoid exceed expectation. echo. @@ -104,16 +107,17 @@ echo to wrap your flag name to avoid exceed expectation. echo. echo Examples: echo. -echo these examples are expected to be writted in /config/user-profile.cmd -echo it will use the environment varible "CMDER_USER_FLAGS" +echo These examples are expected to be written in %cmder_root%/config/user-profile.cmd +echo CExec evaluates the environment varible "CMDER_USER_FLAGS" and conditionally +echo caries out actions based on flags that are passed. echo. echo Case 1: echo. echo The following command in user-profile.cmd would execute "notepad.exe" echo. -echo call %%flag_exists%% "/startNotepad" "start" "notepad.exe" +echo call cexec "/startNotepad" "start" "notepad.exe" echo. -echo if you pass parameter to init.bat like: +echo If you pass parameter to init.bat like: echo. echo init.bat /startNotepad echo. @@ -121,7 +125,7 @@ echo Case 2: echo. echo The following command in user-profile.cmd would execute "notepad.exe" echo. -echo call %%flag_exists%% NOT "/dontStartNotepad" "start" "notepad.exe" +echo call cexec NOT "/dontStartNotepad" "start" "notepad.exe" echo. echo UNLESS you pass parameter to init.bat like: echo. diff --git a/vendor/init.bat b/vendor/init.bat index f2f3880..6690c40 100644 --- a/vendor/init.bat +++ b/vendor/init.bat @@ -29,6 +29,7 @@ if not defined CMDER_ROOT ( :: Remove trailing '\' from %CMDER_ROOT% if "%CMDER_ROOT:~-1%" == "\" SET "CMDER_ROOT=%CMDER_ROOT:~0,-1%" +call "%cmder_root%\vendor\bin\cexec.cmd" /setpath call "%cmder_root%\vendor\lib\lib_base" call "%cmder_root%\vendor\lib\lib_path" call "%cmder_root%\vendor\lib\lib_console" From 0be94725bd8b138b9e3635e2eb1fb2cc4e8e75fb Mon Sep 17 00:00:00 2001 From: "Dax T. Games" Date: Sat, 15 Sep 2018 15:06:13 -0500 Subject: [PATCH 242/306] readme.md --- README.md | 52 +++++++++++++++++++++++++++++++++------------------- 1 file changed, 33 insertions(+), 19 deletions(-) diff --git a/README.md b/README.md index 9e8e711..a0548f7 100644 --- a/README.md +++ b/README.md @@ -247,37 +247,51 @@ 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. ``` -### Handling with custom arguments when using init.bat +### Customizing user sessions using `init.bat` custom arguments. -You can pass custom arguments to `init.bat` and use `cexec` to detect it. +You can pass custom arguments to `init.bat` and use `cexec` in your `user_profile.cmd` to evaluate these +arguments then execute commands based on a particular flag being detected or not. -It is useful when you have multiple modes to execute cmder. +`init.bat` creates two shortcuts for using `cexec` in your profile scripts. -If you use + Evaluate flags, runs commands if found, and returns to the calling script and continues. -```batch + ``` + ccall=call C:\Users\user\cmderdev\vendor\bin\cexec.cmd + ``` -init.bat /startNotepad + Example: `%ccall% /startnotepad start notepad.exe` + + Evaluate flags, runs commands if found, and does not return to the calling script. -``` + ``` + cexec=C:\Users\user\cmderdev\vendor\bin\cexec.cmd + ``` + + Example: `%cexec% /startnotepad start notepad.exe` -to start init.bat with custom argument(`/startNotepad`) and put +It is useful when you have multiple tasks to execute `cmder` and need it to initialize +the session differently depending on the task chosen. -```batch +To conditionally start `notepad.exe` when you start a specific `cmder` task: -call cexec "/startNotepad" "start" "notepad.exe"` +* Press win+alt+t +* Click `+` to add a new task. +* Add the below to the `Commands` block: -``` + ```batch + + cmd.exe /k ""%ConEmuDir%\..\init.bat" /startnotepad" + + ``` -into `/config/user-profile.cmd`, then `notepad.exe` will be executed, and once you use +* Add the below to your `%cmder_root%\config\user_profile.cmd` -```batch - -init.bat - -``` - -the `notepad.exe` won't be executed. + ```batch + + %ccall% "/startNotepad" "start" "notepad.exe"` + + ``` To see detailed usage of `cexec`, type `cexec /?` in cmder. From 4aec21ce199c1eb11370cbb6c09a10e2c48ae6e0 Mon Sep 17 00:00:00 2001 From: "Dax T. Games" Date: Sat, 15 Sep 2018 15:10:35 -0500 Subject: [PATCH 243/306] readme.md --- vendor/bin/cexec.cmd | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vendor/bin/cexec.cmd b/vendor/bin/cexec.cmd index 2b1c09f..fc0ac47 100644 --- a/vendor/bin/cexec.cmd +++ b/vendor/bin/cexec.cmd @@ -22,7 +22,7 @@ if /i "%currenArgu%" equ "/setPath" ( set "ccall=call %~dp0cexec.cmd" set "cexec=%~dp0cexec.cmd" ) else if /i "%currenArgu%" == "/?" ( - call :help + goto :help ) else if /i "%currenArgu%" equ "/help" ( goto :help ) else if /i "%currenArgu%" equ "/h" ( From 86544c91886d956d6ff07df18daf070c524c1ee1 Mon Sep 17 00:00:00 2001 From: "Dax T. Games" Date: Sat, 15 Sep 2018 15:11:50 -0500 Subject: [PATCH 244/306] readme.md --- vendor/bin/cexec.cmd | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vendor/bin/cexec.cmd b/vendor/bin/cexec.cmd index fc0ac47..b4bb81e 100644 --- a/vendor/bin/cexec.cmd +++ b/vendor/bin/cexec.cmd @@ -84,7 +84,7 @@ echo written by xiazeyu, inspired DRSDavidSoft. echo. echo Usage: echo. -echo cexec [NOT] flagName command/program [parameters] +echo cexec /setPath [NOT] flagName command/program [parameters] echo. echo /setPath Generate a global varible %%cexec%% for echo quicker use. Following arguments will be ignored. From f84da84e15201aaf121cea8de3322834d58da85c Mon Sep 17 00:00:00 2001 From: "Dax T. Games" Date: Sat, 15 Sep 2018 15:12:45 -0500 Subject: [PATCH 245/306] cleanup --- vendor/lib/lib_profile.cmd | 130 ------------------------------------- 1 file changed, 130 deletions(-) diff --git a/vendor/lib/lib_profile.cmd b/vendor/lib/lib_profile.cmd index 55fe62c..9bf08b9 100644 --- a/vendor/lib/lib_profile.cmd +++ b/vendor/lib/lib_profile.cmd @@ -45,133 +45,3 @@ exit /b popd exit /b -:flag_exec - @echo off - setlocal - - if "%~1" equ "" call :wrongSyntax - - if not defined CMDER_USER_FLAGS ( - :: in case nothing was passed to %CMDER_USER_FLAGS% - set "CMDER_USER_FLAGS= " - ) - - set "feNot=false" - goto :parseArgument - - :doShift - shift - - :parseArgument - set "currenArgu=%~1" - if /i "%currenArgu%" equ "/setPath" ( - :: set %flag_exists% shortcut - endlocal - set "flag_exists=%~dp0flag_exists" - ) else if /i "%currenArgu%" == "/?" ( - call :help - ) else if /i "%currenArgu%" equ "/help" ( - call :help - ) else if /i "%currenArgu%" equ "/h" ( - call :help - ) else if /i "%currenArgu%" equ "NOT" ( - set "feNot=true" - goto :doShift - ) else ( - if "%~1" equ "" call :wrongSyntax - if "%~2" equ "" call :wrongSyntax - set "feFlagName=%~1" - set "feCommand=%~2" - if not "%~3" equ "" ( - set "feParam=%~3" - ) - ) - - :: to avoid erroneous deteciton like "/do" "/doNOT", which both have a "/do" - :: we added a space after the flag name, like "/do ", which won't match "/doN" - set "feFlagName=%feFlagName% " - :: echo. - :: echo %CMDER_USER_FLAGS% - :: echo %feNOT% - :: echo %feFlagName% - :: echo %feCommand% - :: echo %feParam% - :: echo. - echo %CMDER_USER_FLAGS% | find /i "%feFlagName%">nul - if "%ERRORLEVEL%" == "0" ( - if "%feNOT%" == "false" ( - call %feCommand% %feParam% - ) - ) else ( - if "%feNOT%" == "true" ( - call %feCommand% %feParam% - ) - ) - endlocal - exit /b - - :wrongSyntax - echo The syntax of the command is incorrect. - echo. - echo use /? for help - echo. - endlocal - exit /b - - :help - echo. - echo %%flag_exists%% - echo. - echo Handles with custom arguments for cmder's init.bat. - echo written by xiazeyu, inspired DRSDavidSoft. - echo. - echo Usage: - echo. - echo %%flag_exists%% [/setPath] [NOT] flagName command/program [parameters] - echo. - echo setPath Generate a global varible %%flag_exists%% for - echo quicker use. Following arguments will be ignored. - echo. - echo NOT Specifies that %%flag_exists%% should carry out - echo the command only if the flag is missing. - echo. - echo flagName Specifies which flag name is to detect. It's recommand - echo to use a pair of double quotation marks to wrap - echo your flag name to avoid exceed expectation. - echo. - echo command/program Specifies the command to carry out if the - echo argument name is detected. It's recommand to - echo use a pair of double quotation marks to - echo wrap your command to avoid exceed expectation. - echo. - echo parameters These are the parameters passed to the command/program. - echo It's recommand to use a pair of double quotation marks - echo to wrap your flag name to avoid exceed expectation. - echo. - echo Examples: - echo. - echo these examples are expected to be writted in /config/user-profile.cmd - echo it will use the environment varible "CMDER_USER_FLAGS" - echo. - echo Case 1: - echo. - echo The following command in user-profile.cmd would execute "notepad.exe" - echo. - echo call %%flag_exists%% "/startNotepad" "start" "notepad.exe" - echo. - echo if you pass parameter to init.bat like: - echo. - echo init.bat /startNotepad - echo. - echo Case 2: - echo. - echo The following command in user-profile.cmd would execute "notepad.exe" - echo. - echo call %%flag_exists%% NOT "/dontStartNotepad" "start" "notepad.exe" - echo. - echo UNLESS you pass parameter to init.bat like: - echo. - echo init.bat /dontStartNotepad - echo. - endlocal - exit /b From 564ef5220e168893899ac1e6f25fba6a455ae065 Mon Sep 17 00:00:00 2001 From: "Dax T. Games" Date: Sat, 15 Sep 2018 16:25:31 -0500 Subject: [PATCH 246/306] allow conditionally setting environment variables --- vendor/bin/cexec.cmd | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/vendor/bin/cexec.cmd b/vendor/bin/cexec.cmd index b4bb81e..2efcacd 100644 --- a/vendor/bin/cexec.cmd +++ b/vendor/bin/cexec.cmd @@ -55,12 +55,12 @@ set "feFlagName=%feFlagName% " echo %CMDER_USER_FLAGS% | find /i "%feFlagName%">nul if "%ERRORLEVEL%" == "0" ( if "%feNOT%" == "false" ( - call %feCommand% %feParam% + endlocal && call %feCommand% %feParam% exit /b 0 ) ) else ( if "%feNOT%" == "true" ( - call %feCommand% %feParam% + endlocal && call %feCommand% %feParam% exit /b 0 ) ) From 1d36ba4ed4a8850b57f2718a2e858423735b67c5 Mon Sep 17 00:00:00 2001 From: "Dax T. Games" Date: Sun, 16 Sep 2018 10:18:10 -0500 Subject: [PATCH 247/306] fix user lua and git detection --- vendor/clink.lua | 26 ++++++-------------------- vendor/init.bat | 20 ++++++++++++++++---- vendor/lib/lib_git.cmd | 14 ++++++++------ vendor/lib/lib_path.cmd | 18 +++++++++++------- 4 files changed, 41 insertions(+), 37 deletions(-) diff --git a/vendor/clink.lua b/vendor/clink.lua index 2074664..0b2c6be 100644 --- a/vendor/clink.lua +++ b/vendor/clink.lua @@ -368,26 +368,12 @@ for _,lua_module in ipairs(clink.find_files(completions_dir..'*.lua')) do end end -local cmder_config_dir = clink.get_env('CMDER_ROOT')..'/config/' -for _,lua_module in ipairs(clink.find_files(cmder_config_dir..'*.lua')) do - -- Skip files that starts with _. This could be useful if some files should be ignored - if not string.match(lua_module, '^_.*') then - local filename = cmder_config_dir..lua_module - -- use dofile instead of require because require caches loaded modules - -- so config reloading using Alt-Q won't reload updated modules. - dofile(filename) - end -end - if clink.get_env('CMDER_USER_CONFIG') then - local cmder_user_config_dir = clink.get_env('CMDER_USER_CONFIG')..'/' - for _,lua_module in ipairs(clink.find_files(cmder_user_config_dir..'*.lua')) do - -- Skip files that starts with _. This could be useful if some files should be ignored - if not string.match(lua_module, '^_.*') then - local filename = cmder_user_config_dir..lua_module - -- use dofile instead of require because require caches loaded modules - -- so config reloading using Alt-Q won't reload updated modules. - dofile(filename) - end + local cmder_config_dir = clink.get_env('CMDER_ROOT')..'/config/' + for _,lua_module in ipairs(clink.find_files(cmder_config_dir..'*.lua')) do + local filename = cmder_config_dir..lua_module + -- use dofile instead of require because require caches loaded modules + -- so config reloading using Alt-Q won't reload updated modules. + dofile(filename) end end diff --git a/vendor/init.bat b/vendor/init.bat index a689bde..a745914 100644 --- a/vendor/init.bat +++ b/vendor/init.bat @@ -7,6 +7,7 @@ :: !!! Use "%CMDER_ROOT%\config\user_profile.cmd" to add your own startup commands :: Use /v command line arg or set to > 0 for verbose output to aid in debugging. +endlocal set verbose_output=0 set debug_output=0 set max_depth=1 @@ -137,14 +138,14 @@ if not defined TERM set TERM=cygwin :: also check that we have a recent enough version of git by examining the version string setlocal enabledelayedexpansion if defined GIT_INSTALL_ROOT ( - if exist "%GIT_INSTALL_ROOT%\cmd\git.exe" goto :FOUND_GIT + if exist "%GIT_INSTALL_ROOT%\cmd\git.exe" goto :SPECIFIED_GIT ) %lib_console% debug_output init.bat "Looking for Git install root..." :: get the version information for vendored git binary %lib_git% read_version VENDORED "%CMDER_ROOT%\vendor\git-for-windows\cmd" -%lib_git% validate_version VENDORED !GIT_VERSION_VENDORED! +%lib_git% validate_version VENDORED %GIT_VERSION_VENDORED% :: check if git is in path... for /F "delims=" %%F in ('where git.exe 2^>nul') do ( @@ -189,12 +190,22 @@ 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_path% enhance_path "!GIT_INSTALL_ROOT!\cmd" + goto :CONFIGURE_GIT ) else ( goto :NO_GIT ) +:SPECIFIED_GIT +%lib_console% debug_output "Using /GIT_INSTALL_ROOT from '%GIT_INSTALL_ROOT%..." +goto :CONFIGURE_GIT + :FOUND_GIT +%lib_console% debug_output "Using found Git from '%GIT_INSTALL_ROOT%..." +goto :CONFIGURE_GIT + +:CONFIGURE_GIT :: 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 @@ -326,12 +337,12 @@ if not exist "%initialConfig%" ( echo Creating user startup file: "%initialConfig%" ( echo :: use this file to run your own startup commands -echo :: use in front of the command to prevent printing the command +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 :: uncomment the 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. @@ -356,5 +367,6 @@ if "%CMDER_ALIASES%" == "1" if exist "%CMDER_ROOT%\bin\alias.bat" if exist "%CMD ) set initialConfig= +set CMDER_CONFIGURED=1 exit /b diff --git a/vendor/lib/lib_git.cmd b/vendor/lib/lib_git.cmd index fc040f0..2e7f60e 100644 --- a/vendor/lib/lib_git.cmd +++ b/vendor/lib/lib_git.cmd @@ -53,8 +53,8 @@ exit /b :: get the git version in the provided directory for /F "tokens=1,2,3 usebackq" %%A in (`"%git_executable%" --version 2^>nul`) do ( if /i "%%A %%B" == "git version" ( - set "GIT_VERSION_%~1=%%C" - %lib_console% debug_output :read_version "Env Var - GIT_VERSION_%~1=%%C" + set "GIT_VERSION=%%C" + %lib_console% debug_output :read_version "Env Var - GIT_VERSION_%~1=!GIT_VERSION!" ) else ( %lib_console% show_error "git --version" returned an inproper version string! pause @@ -62,7 +62,7 @@ exit /b ) ) - endlocal & set GIT_VERSION%~1=!GIT_VERSION%~1! + endlocal & set "GIT_VERSION_%~1=%GIT_VERSION%" exit /b :parse_version @@ -92,6 +92,7 @@ exit /b setlocal enabledelayedexpansion :: process a `x.x.x.xxxx.x` formatted string + %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" set "%~1_MINOR=%%B" @@ -121,6 +122,7 @@ exit /b :::------------------------------------------------------------------------------- :: now parse the version information into the corresponding variables + %lib_console% debug_output :validate_version "ARGV[1]=%~1, ARGV[2]=%~2" call :parse_version %~1 %~2 :: ... and maybe display it, for debugging purposes. @@ -148,9 +150,9 @@ exit /b :: 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. - :: %lib_console% debug_output Comparing: - :: %lib_console% debug_output %~1: !%~1_MAJOR!.!%~1_MINOR!.!%~1_PATCH!.!%~1_BUILD! - :: %lib_console% debug_output %~2: !%~2_MAJOR!.!%~2_MINOR!.!%~2_PATCH!.!%~2_BUILD! + %lib_console% debug_output Comparing: + %lib_console% debug_output %~1: !%~1_MAJOR!.!%~1_MINOR!.!%~1_PATCH!.!%~1_BUILD! + %lib_console% 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) diff --git a/vendor/lib/lib_path.cmd b/vendor/lib/lib_path.cmd index 0b478d4..d59c44d 100644 --- a/vendor/lib/lib_path.cmd +++ b/vendor/lib/lib_path.cmd @@ -52,19 +52,23 @@ exit /b set "position=" ) + set found=0 set "find_query=%add_path%" set "find_query=%find_query:\=\\%" set "find_query=%find_query: =\ %" - set found=0 - - %lib_console% debug_output :enhance_path "Env Var - find_query=%find_query%" - echo "%path%"|findstr >nul /I /R ";%find_query%\"$" - if "!ERRORLEVEL!" == "0" set found=1 + if "%CMDER_CONFIGURED%" == "1" ( + %lib_console% debug_output :enhance_path "Env Var - find_query=%find_query%" + echo "%path%"|findstr >nul /I /R ";%find_query%\"$" + if "!ERRORLEVEL!" == "0" set found=1 + ) %lib_console% 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 + if "%CMDER_CONFIGURED%" == "1" ( + echo "%path%"|findstr >nul /i /r ";%find_query%;" + if "!ERRORLEVEL!" == "0" set found=1 + ) %lib_console% debug_output :enhance_path "Env Var 2 - found=!found!" ) From 8cf59d1cbf7a63f7da2d73c41a3ad3be5808dce7 Mon Sep 17 00:00:00 2001 From: "Dax T. Games" Date: Sun, 16 Sep 2018 10:21:37 -0500 Subject: [PATCH 248/306] cleanup --- vendor/init.bat | 1 - 1 file changed, 1 deletion(-) diff --git a/vendor/init.bat b/vendor/init.bat index a745914..e3b9b6e 100644 --- a/vendor/init.bat +++ b/vendor/init.bat @@ -7,7 +7,6 @@ :: !!! Use "%CMDER_ROOT%\config\user_profile.cmd" to add your own startup commands :: Use /v command line arg or set to > 0 for verbose output to aid in debugging. -endlocal set verbose_output=0 set debug_output=0 set max_depth=1 From 749ce17dbe873161d4ccc264ef80feda99f1af4e Mon Sep 17 00:00:00 2001 From: "Dax T. Games" Date: Sun, 16 Sep 2018 15:53:49 -0500 Subject: [PATCH 249/306] git prompt yellow --- vendor/clink.lua | 30 ++++++++++++++++++++++++++---- 1 file changed, 26 insertions(+), 4 deletions(-) diff --git a/vendor/clink.lua b/vendor/clink.lua index 0b2c6be..3e7c6d7 100644 --- a/vendor/clink.lua +++ b/vendor/clink.lua @@ -222,6 +222,21 @@ local function get_git_status() return true end +--- +-- Gets the conflict status +-- @return {bool} indicating true for conflict, false for no conflicts +--- +function get_git_conflict() + local file = io.popen("git diff --name-only --diff-filter=U 2>nul") + for line in file:lines() do + file:close() + return true; + end + file:close() + return false +end + + --- -- Get the status of working dir -- @return {bool} @@ -257,7 +272,8 @@ local function git_prompt_filter() -- Colors for git status local colors = { clean = "\x1b[1;37;40m", - dirty = "\x1b[31;1m", + dirty = "\x1b[33;3m", + conflict = "\x1b[31;1m" } local git_dir = get_git_dir() @@ -267,12 +283,18 @@ local function git_prompt_filter() local color if branch then -- Has branch => therefore it is a git folder, now figure out status - if get_git_status() then + local gitStatus = get_git_status() + local gitConflict = get_git_conflict() + + color = colors.dirty + if gitStatus then color = colors.clean - else - color = colors.dirty end + if gitConflict then + color = colors.conflict + end + clink.prompt.value = string.gsub(clink.prompt.value, "{git}", color.."("..branch..")") return false end From bda09bc274b93ba26990d5b490a014184668dae8 Mon Sep 17 00:00:00 2001 From: "Dax T. Games" Date: Sun, 16 Sep 2018 16:23:22 -0500 Subject: [PATCH 250/306] init.bat update for cexec --- vendor/init.bat | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/vendor/init.bat b/vendor/init.bat index 6690c40..9365bd9 100644 --- a/vendor/init.bat +++ b/vendor/init.bat @@ -7,7 +7,6 @@ :: !!! Use "%CMDER_ROOT%\config\user_profile.cmd" to add your own startup commands :: Use /v command line arg or set to > 0 for verbose output to aid in debugging. -endlocal set verbose_output=0 set debug_output=0 set max_depth=1 @@ -333,10 +332,6 @@ if not exist "%initialConfig%" ( echo :: use this file to run your own startup commands echo :: use in front of the command to prevent printing the command echo. -echo :: the next two lines is for "%%flag_exists%%" shortcut, a custom arguments handler -echo :: don't remove it if you need it -echo call "%%cmder_root%%/vendor/lib/flag_exists" "/setPath" -echo. echo :: uncomment this to have the ssh agent load when cmder starts echo :: call "%%GIT_INSTALL_ROOT%%/cmd/start-ssh-agent.cmd" echo. @@ -348,9 +343,9 @@ echo :: you can add your plugins to the cmder path like so echo :: set "PATH=%%CMDER_ROOT%%\vendor\whatever;%%PATH%%" echo. echo :: arguments in this batch are passed from init.bat, you can quickly parse them like so: -echo :: more useage can be seen by typing "%%flag_exists%% /?" +echo :: more useage can be seen by typing "cexec /?" echo. -echo :: %%flag_exists%% "/customOption" "command/program" +echo :: %%ccall%% "/customOption" "command/program" echo. echo @echo off ) >"%initialConfig%" From bb4ed4af51fd0dd1f7953f1a8989c9aee58ec1c0 Mon Sep 17 00:00:00 2001 From: gaoslin <40920884+gaoslin@users.noreply.github.com> Date: Tue, 18 Sep 2018 17:26:11 +0800 Subject: [PATCH 251/306] Update init.bat --- vendor/init.bat | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/vendor/init.bat b/vendor/init.bat index e3b9b6e..2b1ae5f 100644 --- a/vendor/init.bat +++ b/vendor/init.bat @@ -210,9 +210,9 @@ if defined GIT_INSTALL_ROOT ( rem add the unix commands at the end to not shadow windows commands like more if exist "!GIT_INSTALL_ROOT!\cmd\git.exe" %lib_path% enhance_path "!GIT_INSTALL_ROOT!\cmd" append if exist "!GIT_INSTALL_ROOT!\mingw32" ( - %lib_path% enhance_path "!GIT_INSTALL_ROOT!\mingw32" append + %lib_path% enhance_path "!GIT_INSTALL_ROOT!\mingw32\bin" append ) else if exist "!GIT_INSTALL_ROOT!\mingw64" ( - %lib_path% enhance_path "!GIT_INSTALL_ROOT!\mingw64" append + %lib_path% enhance_path "!GIT_INSTALL_ROOT!\mingw64\bin" append ) %lib_path% enhance_path "!GIT_INSTALL_ROOT!\usr\bin" append From 8dc9bc9ae1e2525eeaa5d672faa0870e6949e19e Mon Sep 17 00:00:00 2001 From: leochien0102 Date: Fri, 21 Sep 2018 16:01:52 +0800 Subject: [PATCH 252/306] fix the 'was unexpected at this time.' Change the single quotation marks to double while path concerned --- vendor/init.bat | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/vendor/init.bat b/vendor/init.bat index e3b9b6e..1b42969 100644 --- a/vendor/init.bat +++ b/vendor/init.bat @@ -353,15 +353,15 @@ echo @echo off ) if "%CMDER_ALIASES%" == "1" if exist "%CMDER_ROOT%\bin\alias.bat" if exist "%CMDER_ROOT%\vendor\bin\alias.cmd" ( - echo Cmder's 'alias' command has been moved into '%CMDER_ROOT%\vendor\bin\alias.cmd' + echo Cmder's 'alias' command has been moved into "%CMDER_ROOT%\vendor\bin\alias.cmd" echo to get rid of this message either: echo. - echo Delete the file '%CMDER_ROOT%\bin\alias.bat' + echo Delete the file "%CMDER_ROOT%\bin\alias.bat" echo. echo or echo. echo If you have customized it and want to continue using it instead of the included version - echo * Rename '%CMDER_ROOT%\bin\alias.bat' to '%CMDER_ROOT%\bin\alias.cmd'. + echo * Rename "%CMDER_ROOT%\bin\alias.bat" to "%CMDER_ROOT%\bin\alias.cmd". echo * Search for 'user-aliases' and replace it with 'user_aliases'. ) From 103d0a6cea871d10c3df992861b833c155c6fbb2 Mon Sep 17 00:00:00 2001 From: "Dax T. Games" Date: Mon, 24 Sep 2018 18:51:55 -0500 Subject: [PATCH 253/306] more headers --- README.md | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/README.md b/README.md index a0548f7..15e7267 100644 --- a/README.md +++ b/README.md @@ -249,26 +249,26 @@ Uncomment and edit the below line in the script to use Cmder config even when la ### Customizing user sessions using `init.bat` custom arguments. -You can pass custom arguments to `init.bat` and use `cexec` in your `user_profile.cmd` to evaluate these +You can pass custom arguments to `init.bat` and use `cexec.cmd` in your `user_profile.cmd` to evaluate these arguments then execute commands based on a particular flag being detected or not. -`init.bat` creates two shortcuts for using `cexec` in your profile scripts. +`init.bat` creates two shortcuts for using `cexec.cmd` in your profile scripts. - Evaluate flags, runs commands if found, and returns to the calling script and continues. +#### `%ccall%` - Evaluates flags, runs commands if found, and returns to the calling script and continues. - ``` - ccall=call C:\Users\user\cmderdev\vendor\bin\cexec.cmd - ``` +``` +ccall=call C:\Users\user\cmderdev\vendor\bin\cexec.cmd +``` - Example: `%ccall% /startnotepad start notepad.exe` - - Evaluate flags, runs commands if found, and does not return to the calling script. +Example: `%ccall% /startnotepad start notepad.exe` - ``` - cexec=C:\Users\user\cmderdev\vendor\bin\cexec.cmd - ``` - - Example: `%cexec% /startnotepad start notepad.exe` +#### `%cexec%` - Evaluates flags, runs commands if found, and does not return to the calling script. + +``` +cexec=C:\Users\user\cmderdev\vendor\bin\cexec.cmd +``` + +Example: `%cexec% /startnotepad start notepad.exe` It is useful when you have multiple tasks to execute `cmder` and need it to initialize the session differently depending on the task chosen. From 8ff459b309cbcd10314041eb8296679925b0a785 Mon Sep 17 00:00:00 2001 From: "Dax T. Games" Date: Mon, 24 Sep 2018 19:07:48 -0500 Subject: [PATCH 254/306] fixes --- vendor/bin/cexec.cmd | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/vendor/bin/cexec.cmd b/vendor/bin/cexec.cmd index 2efcacd..3193f4f 100644 --- a/vendor/bin/cexec.cmd +++ b/vendor/bin/cexec.cmd @@ -86,7 +86,7 @@ echo Usage: echo. echo cexec /setPath [NOT] flagName command/program [parameters] echo. -echo /setPath Generate a global varible %%cexec%% for +echo /setPath Generate a global varibles %%ccall%% and %%cexec%% for echo quicker use. Following arguments will be ignored. echo. echo NOT Specifies that cexec should carry out @@ -113,9 +113,9 @@ echo caries out actions based on flags that are passed. echo. echo Case 1: echo. -echo The following command in user-profile.cmd would execute "notepad.exe" +echo The following command in `user_profile.cmd` would execute "notepad.exe" and continue running the `user_profile.cmd` echo. -echo call cexec "/startNotepad" "start" "notepad.exe" +echo "%ccall%" "/startNotepad" "start" "notepad.exe" echo. echo If you pass parameter to init.bat like: echo. @@ -123,9 +123,9 @@ echo init.bat /startNotepad echo. echo Case 2: echo. -echo The following command in user-profile.cmd would execute "notepad.exe" +echo The following command in `user_profile.cmd` would execute "notepad.exe" and stop running the `user_profile.cmd` echo. -echo call cexec NOT "/dontStartNotepad" "start" "notepad.exe" +echo "%cexec%" NOT "/dontStartNotepad" "start" "notepad.exe" echo. echo UNLESS you pass parameter to init.bat like: echo. From a607f0f2d53eb620436ac0cc248458a402a6dfed Mon Sep 17 00:00:00 2001 From: Nicolas Arnaud-Cormos Date: Wed, 10 Oct 2018 07:11:58 +0200 Subject: [PATCH 255/306] Ensure the right git path is found in case of shim. If the git found is a shim, we need to follow the path to the actual git directory to set the GIT_INSTALL_ROOT variable. This happens when installing git via scoop for example. --- vendor/init.bat | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/vendor/init.bat b/vendor/init.bat index 1be7569..fab4411 100644 --- a/vendor/init.bat +++ b/vendor/init.bat @@ -154,7 +154,16 @@ if defined GIT_INSTALL_ROOT ( for /F "delims=" %%F in ('where git.exe 2^>nul') do ( :: get the absolute path to the user provided git binary pushd %%~dpF - set "test_dir=!CD!" + :: check if there's shim - and if yes follow the path + if exist git.shim ( + for /F "tokens=2 delims== " %%I in (git.shim) do ( + pushd %%~dpI + set "test_dir=!CD!" + popd + ) + ) else ( + set "test_dir=!CD!" + ) popd :: get the version information for the user provided git binary From 3a11d45552ae0b6688af82c6466cda09f5946d9e Mon Sep 17 00:00:00 2001 From: Dax T Games Date: Fri, 2 Nov 2018 09:00:41 -0400 Subject: [PATCH 256/306] add diag helper scripts and adds to the path (#1918) These scripts are to help us help our users by getting a relative picture of their environment that they can submit with an incident. --- vendor/bin/cmder_diag.cmd | 41 +++++++++++++++++++++++++++++++++++++++ vendor/bin/cmder_diag.ps1 | 39 +++++++++++++++++++++++++++++++++++++ vendor/bin/cmder_diag.sh | 39 +++++++++++++++++++++++++++++++++++++ vendor/bin/timer.cmd | 22 +++++++++++++++++++++ vendor/cmder.sh | 4 +++- vendor/cmder_exinit | 4 +++- vendor/init.bat | 9 +++++++++ vendor/profile.ps1 | 4 +++- 8 files changed, 159 insertions(+), 3 deletions(-) create mode 100644 vendor/bin/cmder_diag.cmd create mode 100644 vendor/bin/cmder_diag.ps1 create mode 100644 vendor/bin/cmder_diag.sh create mode 100644 vendor/bin/timer.cmd diff --git a/vendor/bin/cmder_diag.cmd b/vendor/bin/cmder_diag.cmd new file mode 100644 index 0000000..9476512 --- /dev/null +++ b/vendor/bin/cmder_diag.cmd @@ -0,0 +1,41 @@ +@echo off + +echo ------------------------------------ +echo dir "%cmder_root%" +echo ------------------------------------ +dir "%cmder_root%" + +echo. +echo ------------------------------------ +echo dir "%cmder_root%\vendor" +echo ------------------------------------ +dir "%cmder_root%\vendor" + +echo. +echo ------------------------------------ +echo dir /s "%cmder_root%\bin" +echo ------------------------------------ +dir /s "%cmder_root%\bin" + +echo. +echo ------------------------------------ +echo dir /s "%cmder_root%\config" +echo ------------------------------------ +dir /s "%cmder_root%\config" + +echo. +echo ------------------------------------ +echo set +echo ------------------------------------ +set + +echo. +echo ------------------------------------ +echo where git +echo ------------------------------------ +where git + +echo. +echo ------------------------------------ +echo Make sure you sanitize this output of private data prior to posting it online for review by the CMDER Team! +echo ------------------------------------ diff --git a/vendor/bin/cmder_diag.ps1 b/vendor/bin/cmder_diag.ps1 new file mode 100644 index 0000000..54ac8f6 --- /dev/null +++ b/vendor/bin/cmder_diag.ps1 @@ -0,0 +1,39 @@ +write-host ------------------------------------ +write-host get-childitem "$env:CMDER_ROOT" +write-host ------------------------------------ +get-childitem "$env:CMDER_ROOT" + +write-host '' +write-host ------------------------------------ +write-host get-childitem "$env:CMDER_ROOT/vendor" +write-host ------------------------------------ +get-childitem "$env:CMDER_ROOT/vendor" + +write-host '' +write-host ------------------------------------ +write-host get-childitem -s "$env:CMDER_ROOT/bin" +write-host ------------------------------------ +get-childitem -s "$env:CMDER_ROOT/bin" + +write-host '' +write-host ------------------------------------ +write-host get-childitem -s "$env:CMDER_ROOT/config" +write-host ------------------------------------ +get-childitem -s "$env:CMDER_ROOT/config" + +write-host '' +write-host ------------------------------------ +write-host get-childitem env: +write-host ------------------------------------ +get-childitem env: |ft -autosize -wrap + +write-host '' +write-host ------------------------------------ +write-host get-command git +write-host ------------------------------------ +get-command git + +write-host '' +write-host ------------------------------------ +write-host Make sure you sanitize this output of private data prior to posting it online for review by the CMDER Team! +write-host ------------------------------------ diff --git a/vendor/bin/cmder_diag.sh b/vendor/bin/cmder_diag.sh new file mode 100644 index 0000000..1630933 --- /dev/null +++ b/vendor/bin/cmder_diag.sh @@ -0,0 +1,39 @@ +echo ------------------------------------ +echo ls -la "$CMDER_ROOT" +echo ------------------------------------ +ls -la "$CMDER_ROOT" + +echo '' +echo ------------------------------------ +echo ls -la "$CMDER_ROOT/vendor" +echo ------------------------------------ +ls -la "$CMDER_ROOT/vendor" + +echo '' +echo ------------------------------------ +echo ls -la /s "$CMDER_ROOT/bin" +echo ------------------------------------ +ls -laR /s "$CMDER_ROOT/bin" + +echo '' +echo ------------------------------------ +echo ls -la /s "$CMDER_ROOT/config" +echo ------------------------------------ +ls -laR /s "$CMDER_ROOT/config" + +echo '' +echo ------------------------------------ +echo env +echo ------------------------------------ +env + +echo '' +echo ------------------------------------ +echo which git +echo ------------------------------------ +which git + +echo '' +echo ------------------------------------ +echo Make sure you sanitize this output of private data prior to posting it online for review by the CMDER Team! +echo ------------------------------------ diff --git a/vendor/bin/timer.cmd b/vendor/bin/timer.cmd new file mode 100644 index 0000000..e0b8424 --- /dev/null +++ b/vendor/bin/timer.cmd @@ -0,0 +1,22 @@ +@echo off + +set start=%~1 +set end=%~2 + +set options="tokens=1-4 delims=:.," +for /f %options% %%a in ("%start%") do set start_h=%%a&set /a start_m=100%%b %% 100&set /a start_s=100%%c %% 100&set /a start_ms=100%%d %% 100 +for /f %options% %%a in ("%end%") do set end_h=%%a&set /a end_m=100%%b %% 100&set /a end_s=100%%c %% 100&set /a end_ms=100%%d %% 100 + +set /a hours=%end_h%-%start_h% +set /a mins=%end_m%-%start_m% +set /a secs=%end_s%-%start_s% +set /a ms=%end_ms%-%start_ms% +if %ms% lss 0 set /a secs = %secs% - 1 & set /a ms = 100%ms% +if %secs% lss 0 set /a mins = %mins% - 1 & set /a secs = 60%secs% +if %mins% lss 0 set /a hours = %hours% - 1 & set /a mins = 60%mins% +if %hours% lss 0 set /a hours = 24%hours% +if 1%ms% lss 100 set ms=0%ms% + +:: Mission accomplished +set /a totalsecs = %hours%*3600 + %mins%*60 + %secs% +echo Elapsed Time: %hours%:%mins%:%secs%.%ms% (%totalsecs%.%ms%s total) diff --git a/vendor/cmder.sh b/vendor/cmder.sh index aa59642..a0ab173 100644 --- a/vendor/cmder.sh +++ b/vendor/cmder.sh @@ -45,7 +45,7 @@ if [[ ! "$PATH" =~ "${GIT_INSTALL_ROOT}/bin:" ]] ; then PATH=${GIT_INSTALL_ROOT}/bin:$PATH fi -PATH=${CMDER_ROOT}/bin:$PATH:${CMDER_ROOT} +PATH=${CMDER_ROOT}/bin:${CMDER_ROOT}/vendor/bin:$PATH:${CMDER_ROOT} export PATH @@ -80,6 +80,8 @@ if [ "${CMDER_USER_CONFIG}" != "" ] ; then mv "$CMDER_USER_CONFIG/user-profile.sh" "$CMDER_USER_CONFIG/user_profile.sh" fi + export PATH=${CMDER_USER_CONFIG}/bin:$PATH + CmderUserProfilePath="${CMDER_USER_CONFIG}/user_profile.sh" if [ -f "${CMDER_USER_CONFIG}/user_profile.sh" ] ; then . "${CMDER_USER_CONFIG}/user_profile.sh" diff --git a/vendor/cmder_exinit b/vendor/cmder_exinit index c182aee..bab6f20 100644 --- a/vendor/cmder_exinit +++ b/vendor/cmder_exinit @@ -63,7 +63,7 @@ if [ ! "$CMDER_ROOT" = "" ] ; then export CMDER_ROOT - PATH=${CMDER_ROOT}/bin:$PATH:${CMDER_ROOT} + PATH=${CMDER_ROOT}/bin:${CMDER_ROOT}/vendor/bin:$PATH:${CMDER_ROOT} export PATH @@ -98,6 +98,8 @@ if [ ! "$CMDER_ROOT" = "" ] ; then mv "$CMDER_USER_CONFIG/user-profile.sh" "$CMDER_USER_CONFIG/user_profile.sh" fi + export PATH=${CMDER_USER_CONFIG}/bin:$PATH + CmderUserProfilePath="${CMDER_USER_CONFIG}/user_profile.sh" if [ -f "${CMDER_USER_CONFIG}/user_profile.sh" ] ; then . "${CMDER_USER_CONFIG}/user_profile.sh" diff --git a/vendor/init.bat b/vendor/init.bat index fab4411..1c8c080 100644 --- a/vendor/init.bat +++ b/vendor/init.bat @@ -1,5 +1,7 @@ @echo off +set cmder_init_start=%time% + :: Init Script for cmd.exe :: Created as part of cmder project @@ -38,6 +40,8 @@ call "%cmder_root%\vendor\lib\lib_profile" :var_loop if "%~1" == "" ( goto :start + ) else if /i "%1"=="/t" ( + set time_init=1 ) else if /i "%1"=="/v" ( set verbose_output=1 ) else if /i "%1"=="/d" ( @@ -386,4 +390,9 @@ if "%CMDER_ALIASES%" == "1" if exist "%CMDER_ROOT%\bin\alias.bat" if exist "%CMD set initialConfig= set CMDER_CONFIGURED=1 +set cmder_init_end=%time% + +if %time_init% gtr 0 ( + %cmder_root%\vendor\bin\timer.cmd %cmder_init_start% %cmder_init_end% +) exit /b diff --git a/vendor/profile.ps1 b/vendor/profile.ps1 index 8c9f207..19cff9a 100644 --- a/vendor/profile.ps1 +++ b/vendor/profile.ps1 @@ -93,7 +93,7 @@ if (Get-Module PSReadline -ErrorAction "SilentlyContinue") { } # Enhance Path -$env:Path = "$Env:CMDER_ROOT\bin;$env:Path;$Env:CMDER_ROOT" +$env:Path = "$Env:CMDER_ROOT\bin;$Env:CMDER_ROOT\vendor\bin;$env:Path;$Env:CMDER_ROOT" # # Prompt Section @@ -166,6 +166,8 @@ if ($ENV:CMDER_USER_CONFIG) { rename-item "$env:CMDER_USER_CONFIG\user-profile.ps1" user_profile.ps1 } + $env:Path = "$Env:CMDER_USER_CONFIG\bin;$env:Path" + $CmderUserProfilePath = Join-Path $ENV:CMDER_USER_CONFIG "user_profile.ps1" if (Test-Path $CmderUserProfilePath) { Import-Module "$CmderUserProfilePath" From da0aea96f8ae30d21a7babbccde64f1171788b83 Mon Sep 17 00:00:00 2001 From: Josef Pihrt Date: Fri, 2 Nov 2018 18:32:28 +0100 Subject: [PATCH 257/306] Fix typo and broken link --- CONTRIBUTING.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 758a57c..816d1e4 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -11,7 +11,7 @@ If you follow them your contribution will likely be pulled in quicker. ## Making Changes -* Make changes in your seperate branch. +* Make changes in your separate branch. * Check for unnecessary whitespace with `git diff --check` before committing. * Make sure your commit messages are easy to understand * Squash your 'Correcting mistakes' commits if you have a lot of them. (See the 'Squashing Commits' link below) @@ -35,4 +35,4 @@ If you follow them your contribution will likely be pulled in quicker. * [Squashing Commits](http://gitready.com/advanced/2009/02/10/squashing-commits-with-rebase.html) * [General GitHub documentation](http://help.github.com/) -* [GitHub pull request documentation](http://help.github.com/send-pull-requests/) +* [GitHub pull request documentation](http://help.github.com/articles/creating-a-pull-request/) From f5ac81daa0c91fc690f84f7ccd1764945164800b Mon Sep 17 00:00:00 2001 From: Josef Pihrt Date: Fri, 2 Nov 2018 18:37:13 +0100 Subject: [PATCH 258/306] Fix typos, remove escaping inside inline code, replace single quote with backtick --- README.md | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/README.md b/README.md index 15e7267..ec47ec2 100644 --- a/README.md +++ b/README.md @@ -91,7 +91,7 @@ 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. | +| 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. | @@ -101,7 +101,7 @@ You can open multiple tabs each containing one of the following shells: 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. -⚠ *NOTE:* Only the full edition of Cmder comes with a pre-installed bash, using a vendored [git-for-windows](https://gitforwindows.org/) installation. The pre-configured Bash tabs may not work on Cmder mini eidition without additional configuration. +⚠ *NOTE:* Only the full edition of Cmder comes with a pre-installed bash, using a vendored [git-for-windows](https://gitforwindows.org/) installation. The pre-configured Bash tabs may not work on Cmder mini edition without additional configuration. You may however, choose to use an external installation of bash, such as Microsoft's [Subsystem for Linux](https://docs.microsoft.com/en-us/windows/wsl/install-win10) (called WSL) or the [Cygwin](https://cygwin.com/) project which provides POSIX support on windows. @@ -128,7 +128,7 @@ You may find some Monokai color schemes for mintty to match Cmder [here](https:/ 1. Click either: * `1. {cmd::Cmder as Admin}` * `2. {cmd::Cmder}` -1. Add command line argumentswhere specified below: +1. Add command line arguments where specified below: *Note: Pay attention to the quotes!* @@ -146,7 +146,7 @@ You may find some Monokai color schemes for mintty to match Cmder [here](https:/ | `/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` | +| `/user_aliases [file path]` | File path pointing to user aliases. | `%CMDER_ROOT%\config\user-aliases.cmd` | | `/v` | Enables verbose output. | not set | | (custom arguments) | User defined arguments processed by `cexec`. Type `cexec /?` for more useage. | not set | @@ -155,8 +155,8 @@ Single user portable configuration is possible using the cmder specific shell co | Shell | Cmder Portable User Config | | ------------- | ----------------------------------------- | -| Cmder | `%CMDER_ROOT%\\config\\user_profile.cmd` | -| PowerShell | `$ENV:CMDER_ROOT\\config\\user_profile.ps1` | +| 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`. @@ -165,15 +165,15 @@ You can write `*.cmd|*.bat`, `*.ps1`, and `*.sh` scripts and just drop them in t | Shell | Cmder `Profile.d` Scripts | | ------------- | --------------------------------------------------| -| Cmder | `%CMDER_ROOT%\\config\\profile.d\\\*.bat and *.cmd` | -| PowerShell | `$ENV:CMDER_ROOT\\config\\profile.d\\\*.ps1` | +| 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 #### Cmder(`Cmd.exe`) Aliases You can define simple aliases for `cmd.exe` sessions with a command like `alias name=command`. Cmd.exe aliases support optional parameters through the `$1-9` or the `$*` special characters so the alias `vi=vim.exe $*` typed as `vi [filename]` will open `[filename]` in `vim.exe`. -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' +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\user-aliases.cmd` file @@ -181,9 +181,9 @@ To make an alias and/or any other profile settings permanent add it to one of th Note: These are loaded in this order by `$CMDER_ROOT/vendor/init.bat`. Anything 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` +* `%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. @@ -203,10 +203,10 @@ PowerShell has native simple alias support, for example `[new-alias | set-alias] 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`. Anything stored in `$ENV:CMDER_ROOT` will be a portable setting and will follow cmder to another machine. +Note: These are loaded in this order by `$ENV:CMDER_ROOT\vendor\user_profile.ps1`. Anything 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' +* `$ENV:CMDER_ROOT\config\profile.d\*.ps1` +* `$ENV:CMDER_ROOT\config\user_profile.ps1` ### SSH Agent From cb78f0486a7aad46904508c8427d44fa71518c53 Mon Sep 17 00:00:00 2001 From: Merlin Date: Tue, 30 Oct 2018 15:22:39 +0100 Subject: [PATCH 259/306] Remove duplicate `Install-Module` detection Block was inserted twice. --- vendor/profile.ps1 | 4 ---- 1 file changed, 4 deletions(-) diff --git a/vendor/profile.ps1 b/vendor/profile.ps1 index 19cff9a..995b745 100644 --- a/vendor/profile.ps1 +++ b/vendor/profile.ps1 @@ -29,10 +29,6 @@ $ENV:CMDER_ROOT = (($ENV:CMDER_ROOT).trimend("\")) # -> 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/" From 5be25f29f8b0f1a8dc08de596ccc9859f496752d Mon Sep 17 00:00:00 2001 From: Gregory Lucas Date: Sat, 3 Nov 2018 10:19:34 -0400 Subject: [PATCH 260/306] Initialize time_init to fix init error message --- vendor/init.bat | 1 + 1 file changed, 1 insertion(+) diff --git a/vendor/init.bat b/vendor/init.bat index 1c8c080..e57627d 100644 --- a/vendor/init.bat +++ b/vendor/init.bat @@ -11,6 +11,7 @@ set cmder_init_start=%time% :: 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 time_init=0 set max_depth=1 set "CMDER_USER_FLAGS= " From a5bdecca771e9eec79f6c583fc8eca1777afdfc2 Mon Sep 17 00:00:00 2001 From: Dax T Games Date: Sat, 3 Nov 2018 20:36:51 -0400 Subject: [PATCH 261/306] Add /f for fast init. (#1942) The below enables Cmder Fast Init mode for `cmd.exe` sessions. This is more like the Cmder 1.3.5 init process. See issue #1821 Cmder Fast Init mode bypasses or disables the following Cmder 1.3.6+ features: * Git root and version detection. Defaults to `%cmder_root%\vendor\git-for-windows` if it exists. * Path enhance validation before path modify so `%Path%` enhancements are forced. * Recursive path add for `"%CMDER_ROOT%\bin"` * Recursive path add for `"%CMDER_USER_BIN%\bin"` if `/c [user_config_folder` is specified. * `/d` switch to enable debug output. * `/v` switch to enable debug output. Add `/f` to Cmder task as shown below t enable fast init: _Note 1: This setting is invalid in Cmder `Powershell` and `Bash` sessions~_ _Note 2: Add `/t` also to see init timer output_ ![image](https://user-images.githubusercontent.com/7318053/47957637-052e3880-df90-11e8-93ef-91e1ab696d82.png) Cuts ~2.4 seconds off of init time. ![image](https://user-images.githubusercontent.com/7318053/47957795-45db8100-df93-11e8-8ae0-551d12c4e2dc.png) --- README.md | 23 ++++++++++++----------- vendor/init.bat | 11 +++++++++-- vendor/lib/lib_console.cmd | 2 +- vendor/lib/lib_git.cmd | 2 -- vendor/lib/lib_path.cmd | 17 ++++++++++++++++- vendor/lib/lib_profile.cmd | 1 - 6 files changed, 38 insertions(+), 18 deletions(-) diff --git a/README.md b/README.md index ec47ec2..b56c05b 100644 --- a/README.md +++ b/README.md @@ -138,17 +138,18 @@ You may find some Monokai color schemes for mintty to match Cmder [here](https:/ ##### 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-aliases.cmd` | -| `/v` | Enables verbose output. | not set | -| (custom arguments) | User defined arguments processed by `cexec`. Type `cexec /?` for more useage. | not set | +| 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 | +| `/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 | +| `/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-aliases.cmd` | +| `/v` | Enables verbose output. | not set | +| (custom arguments) | User defined arguments processed by `cexec`. Type `cexec /?` for more useage. | 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: diff --git a/vendor/init.bat b/vendor/init.bat index e57627d..57c7b35 100644 --- a/vendor/init.bat +++ b/vendor/init.bat @@ -12,6 +12,7 @@ set cmder_init_start=%time% set verbose_output=0 set debug_output=0 set time_init=0 +set fast_init=0 set max_depth=1 set "CMDER_USER_FLAGS= " @@ -41,7 +42,9 @@ call "%cmder_root%\vendor\lib\lib_profile" :var_loop if "%~1" == "" ( goto :start - ) else if /i "%1"=="/t" ( + ) else if /i "%1" == "/f" ( + set fast_init=1 + ) else if /i "%1" == "/t" ( set time_init=1 ) else if /i "%1"=="/v" ( set verbose_output=1 @@ -147,6 +150,11 @@ if not defined TERM set TERM=cygwin setlocal enabledelayedexpansion if defined GIT_INSTALL_ROOT ( if exist "%GIT_INSTALL_ROOT%\cmd\git.exe" goto :SPECIFIED_GIT +) else if "%fast_init%" == "1" ( + if exist "%CMDER_ROOT%\vendor\git-for-windows\cmd\git.exe" ( + %lib_console% debug_output "Skipping Git Auto-Detect!" + goto :VENDORED_GIT + ) ) %lib_console% debug_output init.bat "Looking for Git install root..." @@ -208,7 +216,6 @@ for /F "delims=" %%F in ('where git.exe 2^>nul') do ( 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_path% enhance_path "!GIT_INSTALL_ROOT!\cmd" goto :CONFIGURE_GIT ) else ( goto :NO_GIT diff --git a/vendor/lib/lib_console.cmd b/vendor/lib/lib_console.cmd index 3c174b0..17540dd 100644 --- a/vendor/lib/lib_console.cmd +++ b/vendor/lib/lib_console.cmd @@ -1,6 +1,6 @@ @echo off -rem set args=%* +if "%fast_init%" == "1" exit /b call "%~dp0lib_base.cmd" set lib_console=call "%~dp0lib_console.cmd" diff --git a/vendor/lib/lib_git.cmd b/vendor/lib/lib_git.cmd index 2e7f60e..bfbcdb2 100644 --- a/vendor/lib/lib_git.cmd +++ b/vendor/lib/lib_git.cmd @@ -1,11 +1,9 @@ @echo off - call "%~dp0lib_base.cmd" call "%%~dp0lib_console.cmd" set lib_git=call "%~dp0lib_git.cmd" - if "%~1" == "/h" ( %lib_base% help "%~0" ) else if "%1" neq "" ( diff --git a/vendor/lib/lib_path.cmd b/vendor/lib/lib_path.cmd index d59c44d..b1a6d2d 100644 --- a/vendor/lib/lib_path.cmd +++ b/vendor/lib/lib_path.cmd @@ -52,6 +52,15 @@ exit /b set "position=" ) + if "%fast_init%" == "1" ( + if "%position%" == "append" ( + set "PATH=%PATH%;%add_path%" + ) else ( + set "PATH=%add_path%;%PATH%" + ) + goto :end_enhance_path + ) + set found=0 set "find_query=%add_path%" set "find_query=%find_query:\=\\%" @@ -85,6 +94,7 @@ exit /b %lib_console% debug_output :enhance_path "AFTER Env Var - PATH=!path!" ) + :end_enhance_path endlocal & set "PATH=%PATH:;;=;%" exit /b @@ -115,7 +125,6 @@ exit /b :::. ::: path Sets the path env variable if required. :::------------------------------------------------------------------------------- - setlocal enabledelayedexpansion if "%~1" neq "" ( set "add_path=%~1" @@ -136,6 +145,11 @@ exit /b set "position=" ) + if "%fast_init%" == "1" ( + call :enhance_path "%add_path%" %position% + goto :end_enhance_path_recursive + ) + if "%depth%" == "" set depth=0 %lib_console% debug_output :enhance_path_recursive "Env Var - add_path=%add_path%" @@ -155,5 +169,6 @@ exit /b ) ) + :end_enhance_path_recursive endlocal & set "PATH=%PATH%" exit /b diff --git a/vendor/lib/lib_profile.cmd b/vendor/lib/lib_profile.cmd index 9bf08b9..32bb77a 100644 --- a/vendor/lib/lib_profile.cmd +++ b/vendor/lib/lib_profile.cmd @@ -1,6 +1,5 @@ @echo off - call "%~dp0lib_base.cmd" call "%%~dp0lib_console" set lib_profile=call "%~dp0lib_profile.cmd" From 57e5ae1719d6b23ccaf5517c3d0de21c7ca3033d Mon Sep 17 00:00:00 2001 From: "Dax T. Games" Date: Thu, 8 Nov 2018 21:25:42 -0500 Subject: [PATCH 262/306] move default comemu.xml to vendor folder --- .gitignore | 1 + launcher/src/CmderLauncher.cpp | 92 +++++++++++++------ .../ConEmu.xml => vendor/ConEmu.xml.default | 0 3 files changed, 67 insertions(+), 26 deletions(-) rename config/ConEmu.xml => vendor/ConEmu.xml.default (100%) diff --git a/.gitignore b/.gitignore index 3243549..4b38da8 100644 --- a/.gitignore +++ b/.gitignore @@ -22,6 +22,7 @@ config/*.lua config/settings config/aliases config/profile.d +config/conemu-*.xml .github_changelog_generator launcher/.vs launcher/src/version.rc2 diff --git a/launcher/src/CmderLauncher.cpp b/launcher/src/CmderLauncher.cpp index 7bd1b21..6d81411 100644 --- a/launcher/src/CmderLauncher.cpp +++ b/launcher/src/CmderLauncher.cpp @@ -110,8 +110,12 @@ void StartCmder(std::wstring path = L"", bool is_single_mode = false, std::wstr PathCombine(configDirPath, exeDir, L"config"); + /* + Convert legacy user-profile.cmd to new name user_profile.cmd + */ PathCombine(legacyUserProfilePath, configDirPath, L"user-profile.cmd"); - if (PathFileExists(legacyUserProfilePath)) { + if (PathFileExists(legacyUserProfilePath)) + { PathCombine(userProfilePath, configDirPath, L"user_profile.cmd"); char *lPr = (char *)malloc(MAX_PATH); @@ -124,8 +128,12 @@ void StartCmder(std::wstring path = L"", bool is_single_mode = false, std::wstr rename(lPr, pR); } + /* + Convert legacy user-aliases.cmd to new name user_aliases.cmd + */ PathCombine(legacyUserAliasesPath, configDirPath, L"user-aliases.cmd"); - if (PathFileExists(legacyUserAliasesPath)) { + if (PathFileExists(legacyUserAliasesPath)) + { PathCombine(userAliasesPath, configDirPath, L"user_aliases.cmd"); char *lPr = (char *)malloc(MAX_PATH); @@ -137,13 +145,18 @@ void StartCmder(std::wstring path = L"", bool is_single_mode = false, std::wstr userAliasesPath, (size_t)MAX_PATH); rename(lPr, pR); } - + + /* + Was -c [path] specified? + */ if (wcscmp(userConfigDirPath, L"") == 0) { + // No - It wasn't. PathCombine(userConfigDirPath, exeDir, L"config"); } else { + // Yes - It was. PathCombine(userBinDirPath, userConfigDirPath, L"bin"); SHCreateDirectoryEx(0, userBinDirPath, 0); @@ -152,9 +165,13 @@ void StartCmder(std::wstring path = L"", bool is_single_mode = false, std::wstr PathCombine(userProfiledDirPath, userConfigDirPath, L"profile.d"); SHCreateDirectoryEx(0, userProfiledDirPath, 0); - + + /* + Convert legacy user-profile.cmd to new name user_profile.cmd + */ PathCombine(legacyUserProfilePath, userConfigDirPath, L"user-profile.cmd"); - if (PathFileExists(legacyUserProfilePath)) { + if (PathFileExists(legacyUserProfilePath)) + { PathCombine(userProfilePath, userConfigDirPath, L"user_profile.cmd"); char *lPr = (char *)malloc(MAX_PATH); @@ -167,8 +184,12 @@ void StartCmder(std::wstring path = L"", bool is_single_mode = false, std::wstr rename(lPr, pR); } + /* + Convert legacy user-aliases.cmd to new name user_aliases.cmd + */ PathCombine(legacyUserAliasesPath, userConfigDirPath, L"user-aliases.cmd"); - if (PathFileExists(legacyUserAliasesPath)) { + if (PathFileExists(legacyUserAliasesPath)) + { PathCombine(userAliasesPath, userConfigDirPath, L"user_aliases.cmd"); char *lPr = (char *)malloc(MAX_PATH); @@ -186,15 +207,19 @@ void StartCmder(std::wstring path = L"", bool is_single_mode = false, std::wstr PathCombine(cfgPath, exeDir, L"vendor\\conemu-maximus5\\ConEmu.xml"); // Set path to Cmder default ConEmu config file - PathCombine(defaultCfgPath, exeDir, L"config\\ConEmu.xml"); + PathCombine(defaultCfgPath, exeDir, L"config\\vendor\\ConEmu.xml.default"); // Check for machine-specific then user config source file. PathCombine(cpuCfgPath, userConfigDirPath, L"ConEmu-%COMPUTERNAME%.xml"); ExpandEnvironmentStrings(cpuCfgPath, cpuCfgPath, sizeof(cpuCfgPath) / sizeof(cpuCfgPath[0])); + // Set path to Cmder user ConEmu config file PathCombine(userCfgPath, userConfigDirPath, L"user-ConEmu.xml"); - if (PathFileExists(cpuCfgPath)) { - if (PathFileExists(cfgPath)) { + + if (PathFileExists(cpuCfgPath)) // If machine-specific ConEmu config file exists - use it. + { + if (PathFileExists(cfgPath)) // If vendor ConEmu config file exists - back it up to config/ConEmu-%COMPUTERNAME%.xml. + { if (!CopyFile(cfgPath, cpuCfgPath, FALSE)) { MessageBox(NULL, @@ -204,7 +229,7 @@ void StartCmder(std::wstring path = L"", bool is_single_mode = false, std::wstr exit(1); } } - else + else // If vendor ConEmu config file does not exists - Copy machine-specific config/ConEmu-%COMPUTERNAME%.xml to vendor ConEmu.xml file { if (!CopyFile(cpuCfgPath, cfgPath, FALSE)) { @@ -216,8 +241,10 @@ void StartCmder(std::wstring path = L"", bool is_single_mode = false, std::wstr } } } - else if (PathFileExists(userCfgPath)) { - if (PathFileExists(cfgPath)) { + else if (PathFileExists(userCfgPath)) // If config/user_conemu.xml exists use it. + { + if (PathFileExists(cfgPath)) // If vendor conemu.xml exits back it up to config/user_conemu.xml. + { if (!CopyFile(cfgPath, userCfgPath, FALSE)) { MessageBox(NULL, @@ -227,7 +254,7 @@ void StartCmder(std::wstring path = L"", bool is_single_mode = false, std::wstr exit(1); } } - else + else // If vendor conemu.xml does not exist copy user_conemu.xml to vendor conemu.xml { if (!CopyFile(userCfgPath, cfgPath, FALSE)) { @@ -239,7 +266,8 @@ void StartCmder(std::wstring path = L"", bool is_single_mode = false, std::wstr } } } - else if (PathFileExists(cfgPath)) { + else if (PathFileExists(cfgPath)) // If vendor conemu.xml exists copy config/user_conemu.xml + { if (!CopyFile(cfgPath, userCfgPath, FALSE)) { MessageBox(NULL, @@ -249,7 +277,8 @@ void StartCmder(std::wstring path = L"", bool is_single_mode = false, std::wstr exit(1); } } - else { + else // No previous conemu.xml config exists use the default. + { if (!CopyFile(defaultCfgPath, cfgPath, FALSE)) { MessageBox(NULL, @@ -262,28 +291,34 @@ void StartCmder(std::wstring path = L"", bool is_single_mode = false, std::wstr SYSTEM_INFO sysInfo; GetNativeSystemInfo(&sysInfo); - if (sysInfo.wProcessorArchitecture == PROCESSOR_ARCHITECTURE_AMD64) { + if (sysInfo.wProcessorArchitecture == PROCESSOR_ARCHITECTURE_AMD64) + { PathCombine(conEmuPath, exeDir, L"vendor\\conemu-maximus5\\ConEmu64.exe"); } - else { + else + { PathCombine(conEmuPath, exeDir, L"vendor\\conemu-maximus5\\ConEmu.exe"); } if (is_single_mode) { - if (!streqi(cmderTask.c_str(), L"")) { + 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 { + else + { swprintf_s(args, L"%s /single /Icon \"%s\" /Title Cmder /dir \"%s\"", args, icoPath, cmderStart.c_str()); } } else { - if (!streqi(cmderTask.c_str(), L"")) { + 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 { + else + { swprintf_s(args, L"%s /Icon \"%s\" /Title Cmder /dir \"%s\"", args, icoPath, cmderStart.c_str()); } } @@ -435,7 +470,8 @@ cmderOptions GetOption() cmderOptions.cmderCfgRoot = cmderCfgRoot; - if (szArgList[i + 1] != NULL && szArgList[i + 1][0] != '/') { + if (szArgList[i + 1] != NULL && szArgList[i + 1][0] != '/') + { cmderOptions.cmderCfgRoot = szArgList[i + 1]; i++; } @@ -453,7 +489,8 @@ cmderOptions GetOption() cmderOptions.cmderStart = szArgList[i + 1]; i++; } - else { + else + { MessageBox(NULL, szArgList[i + 1], L"/START - Folder does not exist!", MB_OK); } } @@ -505,11 +542,13 @@ cmderOptions GetOption() cmderOptions.cmderStart = szArgList[i]; i++; } - else { + else + { MessageBox(NULL, szArgList[i], L"Folder does not exist!", MB_OK); } } - else { + 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; } @@ -531,7 +570,8 @@ int APIENTRY _tWinMain(_In_ HINSTANCE hInstance, cmderOptions cmderOptions = GetOption(); - if (cmderOptions.registerApp == true) { + if (cmderOptions.registerApp == true) + { RegisterShellMenu(cmderOptions.cmderRegScope, SHELL_MENU_REGISTRY_PATH_BACKGROUND); RegisterShellMenu(cmderOptions.cmderRegScope, SHELL_MENU_REGISTRY_PATH_LISTITEM); } diff --git a/config/ConEmu.xml b/vendor/ConEmu.xml.default similarity index 100% rename from config/ConEmu.xml rename to vendor/ConEmu.xml.default From f3ed7b6d1b07a20b21569bde95634f04c98c50e9 Mon Sep 17 00:00:00 2001 From: "Dax T. Games" Date: Thu, 8 Nov 2018 21:35:23 -0500 Subject: [PATCH 263/306] ignore all of config folder --- .gitignore | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/.gitignore b/.gitignore index 4b38da8..a975d46 100644 --- a/.gitignore +++ b/.gitignore @@ -1,28 +1,26 @@ ## Those files should be taken from their repositary +bin/* bin/*/* !bin/Readme.md + vendor/*/* !vendor/bin/* !vendor/lib/* !vendor/* !vendor/psmodules/PsGet -config/.history +config/* +config/*/* +!config/Readme.md + Thumbs.db *.exe *.dll build/ Version v* *.bak -config/user-* -config/user_* -config/*.lua -config/settings -config/aliases -config/profile.d -config/conemu-*.xml .github_changelog_generator launcher/.vs launcher/src/version.rc2 From ce62db6d33117cf985982b62f8959535898ee3ff Mon Sep 17 00:00:00 2001 From: "Dax T. Games" Date: Thu, 8 Nov 2018 21:45:21 -0500 Subject: [PATCH 264/306] cleanup --- .gitignore | 2 -- 1 file changed, 2 deletions(-) diff --git a/.gitignore b/.gitignore index a975d46..ac64e10 100644 --- a/.gitignore +++ b/.gitignore @@ -2,7 +2,6 @@ ## Those files should be taken from their repositary bin/* -bin/*/* !bin/Readme.md vendor/*/* @@ -12,7 +11,6 @@ vendor/*/* !vendor/psmodules/PsGet config/* -config/*/* !config/Readme.md Thumbs.db From 637b0fd3acf1554818cc5ac34bfaf006bffcffcc Mon Sep 17 00:00:00 2001 From: Dax T Games Date: Fri, 9 Nov 2018 20:40:16 -0500 Subject: [PATCH 265/306] Ignore `%cmder_root%\config` (#1945) * move default comemu.xml to vendor folder * ignore all of config folder * cleanup --- .gitignore | 13 +-- launcher/src/CmderLauncher.cpp | 92 +++++++++++++------ .../ConEmu.xml => vendor/ConEmu.xml.default | 0 3 files changed, 71 insertions(+), 34 deletions(-) rename config/ConEmu.xml => vendor/ConEmu.xml.default (100%) diff --git a/.gitignore b/.gitignore index 3243549..ac64e10 100644 --- a/.gitignore +++ b/.gitignore @@ -1,27 +1,24 @@ ## Those files should be taken from their repositary -bin/*/* +bin/* !bin/Readme.md + vendor/*/* !vendor/bin/* !vendor/lib/* !vendor/* !vendor/psmodules/PsGet -config/.history +config/* +!config/Readme.md + Thumbs.db *.exe *.dll build/ Version v* *.bak -config/user-* -config/user_* -config/*.lua -config/settings -config/aliases -config/profile.d .github_changelog_generator launcher/.vs launcher/src/version.rc2 diff --git a/launcher/src/CmderLauncher.cpp b/launcher/src/CmderLauncher.cpp index 7bd1b21..6d81411 100644 --- a/launcher/src/CmderLauncher.cpp +++ b/launcher/src/CmderLauncher.cpp @@ -110,8 +110,12 @@ void StartCmder(std::wstring path = L"", bool is_single_mode = false, std::wstr PathCombine(configDirPath, exeDir, L"config"); + /* + Convert legacy user-profile.cmd to new name user_profile.cmd + */ PathCombine(legacyUserProfilePath, configDirPath, L"user-profile.cmd"); - if (PathFileExists(legacyUserProfilePath)) { + if (PathFileExists(legacyUserProfilePath)) + { PathCombine(userProfilePath, configDirPath, L"user_profile.cmd"); char *lPr = (char *)malloc(MAX_PATH); @@ -124,8 +128,12 @@ void StartCmder(std::wstring path = L"", bool is_single_mode = false, std::wstr rename(lPr, pR); } + /* + Convert legacy user-aliases.cmd to new name user_aliases.cmd + */ PathCombine(legacyUserAliasesPath, configDirPath, L"user-aliases.cmd"); - if (PathFileExists(legacyUserAliasesPath)) { + if (PathFileExists(legacyUserAliasesPath)) + { PathCombine(userAliasesPath, configDirPath, L"user_aliases.cmd"); char *lPr = (char *)malloc(MAX_PATH); @@ -137,13 +145,18 @@ void StartCmder(std::wstring path = L"", bool is_single_mode = false, std::wstr userAliasesPath, (size_t)MAX_PATH); rename(lPr, pR); } - + + /* + Was -c [path] specified? + */ if (wcscmp(userConfigDirPath, L"") == 0) { + // No - It wasn't. PathCombine(userConfigDirPath, exeDir, L"config"); } else { + // Yes - It was. PathCombine(userBinDirPath, userConfigDirPath, L"bin"); SHCreateDirectoryEx(0, userBinDirPath, 0); @@ -152,9 +165,13 @@ void StartCmder(std::wstring path = L"", bool is_single_mode = false, std::wstr PathCombine(userProfiledDirPath, userConfigDirPath, L"profile.d"); SHCreateDirectoryEx(0, userProfiledDirPath, 0); - + + /* + Convert legacy user-profile.cmd to new name user_profile.cmd + */ PathCombine(legacyUserProfilePath, userConfigDirPath, L"user-profile.cmd"); - if (PathFileExists(legacyUserProfilePath)) { + if (PathFileExists(legacyUserProfilePath)) + { PathCombine(userProfilePath, userConfigDirPath, L"user_profile.cmd"); char *lPr = (char *)malloc(MAX_PATH); @@ -167,8 +184,12 @@ void StartCmder(std::wstring path = L"", bool is_single_mode = false, std::wstr rename(lPr, pR); } + /* + Convert legacy user-aliases.cmd to new name user_aliases.cmd + */ PathCombine(legacyUserAliasesPath, userConfigDirPath, L"user-aliases.cmd"); - if (PathFileExists(legacyUserAliasesPath)) { + if (PathFileExists(legacyUserAliasesPath)) + { PathCombine(userAliasesPath, userConfigDirPath, L"user_aliases.cmd"); char *lPr = (char *)malloc(MAX_PATH); @@ -186,15 +207,19 @@ void StartCmder(std::wstring path = L"", bool is_single_mode = false, std::wstr PathCombine(cfgPath, exeDir, L"vendor\\conemu-maximus5\\ConEmu.xml"); // Set path to Cmder default ConEmu config file - PathCombine(defaultCfgPath, exeDir, L"config\\ConEmu.xml"); + PathCombine(defaultCfgPath, exeDir, L"config\\vendor\\ConEmu.xml.default"); // Check for machine-specific then user config source file. PathCombine(cpuCfgPath, userConfigDirPath, L"ConEmu-%COMPUTERNAME%.xml"); ExpandEnvironmentStrings(cpuCfgPath, cpuCfgPath, sizeof(cpuCfgPath) / sizeof(cpuCfgPath[0])); + // Set path to Cmder user ConEmu config file PathCombine(userCfgPath, userConfigDirPath, L"user-ConEmu.xml"); - if (PathFileExists(cpuCfgPath)) { - if (PathFileExists(cfgPath)) { + + if (PathFileExists(cpuCfgPath)) // If machine-specific ConEmu config file exists - use it. + { + if (PathFileExists(cfgPath)) // If vendor ConEmu config file exists - back it up to config/ConEmu-%COMPUTERNAME%.xml. + { if (!CopyFile(cfgPath, cpuCfgPath, FALSE)) { MessageBox(NULL, @@ -204,7 +229,7 @@ void StartCmder(std::wstring path = L"", bool is_single_mode = false, std::wstr exit(1); } } - else + else // If vendor ConEmu config file does not exists - Copy machine-specific config/ConEmu-%COMPUTERNAME%.xml to vendor ConEmu.xml file { if (!CopyFile(cpuCfgPath, cfgPath, FALSE)) { @@ -216,8 +241,10 @@ void StartCmder(std::wstring path = L"", bool is_single_mode = false, std::wstr } } } - else if (PathFileExists(userCfgPath)) { - if (PathFileExists(cfgPath)) { + else if (PathFileExists(userCfgPath)) // If config/user_conemu.xml exists use it. + { + if (PathFileExists(cfgPath)) // If vendor conemu.xml exits back it up to config/user_conemu.xml. + { if (!CopyFile(cfgPath, userCfgPath, FALSE)) { MessageBox(NULL, @@ -227,7 +254,7 @@ void StartCmder(std::wstring path = L"", bool is_single_mode = false, std::wstr exit(1); } } - else + else // If vendor conemu.xml does not exist copy user_conemu.xml to vendor conemu.xml { if (!CopyFile(userCfgPath, cfgPath, FALSE)) { @@ -239,7 +266,8 @@ void StartCmder(std::wstring path = L"", bool is_single_mode = false, std::wstr } } } - else if (PathFileExists(cfgPath)) { + else if (PathFileExists(cfgPath)) // If vendor conemu.xml exists copy config/user_conemu.xml + { if (!CopyFile(cfgPath, userCfgPath, FALSE)) { MessageBox(NULL, @@ -249,7 +277,8 @@ void StartCmder(std::wstring path = L"", bool is_single_mode = false, std::wstr exit(1); } } - else { + else // No previous conemu.xml config exists use the default. + { if (!CopyFile(defaultCfgPath, cfgPath, FALSE)) { MessageBox(NULL, @@ -262,28 +291,34 @@ void StartCmder(std::wstring path = L"", bool is_single_mode = false, std::wstr SYSTEM_INFO sysInfo; GetNativeSystemInfo(&sysInfo); - if (sysInfo.wProcessorArchitecture == PROCESSOR_ARCHITECTURE_AMD64) { + if (sysInfo.wProcessorArchitecture == PROCESSOR_ARCHITECTURE_AMD64) + { PathCombine(conEmuPath, exeDir, L"vendor\\conemu-maximus5\\ConEmu64.exe"); } - else { + else + { PathCombine(conEmuPath, exeDir, L"vendor\\conemu-maximus5\\ConEmu.exe"); } if (is_single_mode) { - if (!streqi(cmderTask.c_str(), L"")) { + 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 { + else + { swprintf_s(args, L"%s /single /Icon \"%s\" /Title Cmder /dir \"%s\"", args, icoPath, cmderStart.c_str()); } } else { - if (!streqi(cmderTask.c_str(), L"")) { + 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 { + else + { swprintf_s(args, L"%s /Icon \"%s\" /Title Cmder /dir \"%s\"", args, icoPath, cmderStart.c_str()); } } @@ -435,7 +470,8 @@ cmderOptions GetOption() cmderOptions.cmderCfgRoot = cmderCfgRoot; - if (szArgList[i + 1] != NULL && szArgList[i + 1][0] != '/') { + if (szArgList[i + 1] != NULL && szArgList[i + 1][0] != '/') + { cmderOptions.cmderCfgRoot = szArgList[i + 1]; i++; } @@ -453,7 +489,8 @@ cmderOptions GetOption() cmderOptions.cmderStart = szArgList[i + 1]; i++; } - else { + else + { MessageBox(NULL, szArgList[i + 1], L"/START - Folder does not exist!", MB_OK); } } @@ -505,11 +542,13 @@ cmderOptions GetOption() cmderOptions.cmderStart = szArgList[i]; i++; } - else { + else + { MessageBox(NULL, szArgList[i], L"Folder does not exist!", MB_OK); } } - else { + 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; } @@ -531,7 +570,8 @@ int APIENTRY _tWinMain(_In_ HINSTANCE hInstance, cmderOptions cmderOptions = GetOption(); - if (cmderOptions.registerApp == true) { + if (cmderOptions.registerApp == true) + { RegisterShellMenu(cmderOptions.cmderRegScope, SHELL_MENU_REGISTRY_PATH_BACKGROUND); RegisterShellMenu(cmderOptions.cmderRegScope, SHELL_MENU_REGISTRY_PATH_LISTITEM); } diff --git a/config/ConEmu.xml b/vendor/ConEmu.xml.default similarity index 100% rename from config/ConEmu.xml rename to vendor/ConEmu.xml.default From 72b676b939053267234995622119293ff5c05092 Mon Sep 17 00:00:00 2001 From: Dax T Games Date: Sat, 10 Nov 2018 06:42:27 -0500 Subject: [PATCH 266/306] Revert "Ignore `%cmder_root%\config` (#1945)" This reverts commit 637b0fd3acf1554818cc5ac34bfaf006bffcffcc. --- .gitignore | 13 ++- .../ConEmu.xml.default => config/ConEmu.xml | 0 launcher/src/CmderLauncher.cpp | 92 ++++++------------- 3 files changed, 34 insertions(+), 71 deletions(-) rename vendor/ConEmu.xml.default => config/ConEmu.xml (100%) diff --git a/.gitignore b/.gitignore index ac64e10..3243549 100644 --- a/.gitignore +++ b/.gitignore @@ -1,24 +1,27 @@ ## Those files should be taken from their repositary -bin/* +bin/*/* !bin/Readme.md - vendor/*/* !vendor/bin/* !vendor/lib/* !vendor/* !vendor/psmodules/PsGet -config/* -!config/Readme.md - +config/.history Thumbs.db *.exe *.dll build/ Version v* *.bak +config/user-* +config/user_* +config/*.lua +config/settings +config/aliases +config/profile.d .github_changelog_generator launcher/.vs launcher/src/version.rc2 diff --git a/vendor/ConEmu.xml.default b/config/ConEmu.xml similarity index 100% rename from vendor/ConEmu.xml.default rename to config/ConEmu.xml diff --git a/launcher/src/CmderLauncher.cpp b/launcher/src/CmderLauncher.cpp index 6d81411..7bd1b21 100644 --- a/launcher/src/CmderLauncher.cpp +++ b/launcher/src/CmderLauncher.cpp @@ -110,12 +110,8 @@ void StartCmder(std::wstring path = L"", bool is_single_mode = false, std::wstr PathCombine(configDirPath, exeDir, L"config"); - /* - Convert legacy user-profile.cmd to new name user_profile.cmd - */ PathCombine(legacyUserProfilePath, configDirPath, L"user-profile.cmd"); - if (PathFileExists(legacyUserProfilePath)) - { + if (PathFileExists(legacyUserProfilePath)) { PathCombine(userProfilePath, configDirPath, L"user_profile.cmd"); char *lPr = (char *)malloc(MAX_PATH); @@ -128,12 +124,8 @@ void StartCmder(std::wstring path = L"", bool is_single_mode = false, std::wstr rename(lPr, pR); } - /* - Convert legacy user-aliases.cmd to new name user_aliases.cmd - */ PathCombine(legacyUserAliasesPath, configDirPath, L"user-aliases.cmd"); - if (PathFileExists(legacyUserAliasesPath)) - { + if (PathFileExists(legacyUserAliasesPath)) { PathCombine(userAliasesPath, configDirPath, L"user_aliases.cmd"); char *lPr = (char *)malloc(MAX_PATH); @@ -145,18 +137,13 @@ void StartCmder(std::wstring path = L"", bool is_single_mode = false, std::wstr userAliasesPath, (size_t)MAX_PATH); rename(lPr, pR); } - - /* - Was -c [path] specified? - */ + if (wcscmp(userConfigDirPath, L"") == 0) { - // No - It wasn't. PathCombine(userConfigDirPath, exeDir, L"config"); } else { - // Yes - It was. PathCombine(userBinDirPath, userConfigDirPath, L"bin"); SHCreateDirectoryEx(0, userBinDirPath, 0); @@ -165,13 +152,9 @@ void StartCmder(std::wstring path = L"", bool is_single_mode = false, std::wstr PathCombine(userProfiledDirPath, userConfigDirPath, L"profile.d"); SHCreateDirectoryEx(0, userProfiledDirPath, 0); - - /* - Convert legacy user-profile.cmd to new name user_profile.cmd - */ + PathCombine(legacyUserProfilePath, userConfigDirPath, L"user-profile.cmd"); - if (PathFileExists(legacyUserProfilePath)) - { + if (PathFileExists(legacyUserProfilePath)) { PathCombine(userProfilePath, userConfigDirPath, L"user_profile.cmd"); char *lPr = (char *)malloc(MAX_PATH); @@ -184,12 +167,8 @@ void StartCmder(std::wstring path = L"", bool is_single_mode = false, std::wstr rename(lPr, pR); } - /* - Convert legacy user-aliases.cmd to new name user_aliases.cmd - */ PathCombine(legacyUserAliasesPath, userConfigDirPath, L"user-aliases.cmd"); - if (PathFileExists(legacyUserAliasesPath)) - { + if (PathFileExists(legacyUserAliasesPath)) { PathCombine(userAliasesPath, userConfigDirPath, L"user_aliases.cmd"); char *lPr = (char *)malloc(MAX_PATH); @@ -207,19 +186,15 @@ void StartCmder(std::wstring path = L"", bool is_single_mode = false, std::wstr PathCombine(cfgPath, exeDir, L"vendor\\conemu-maximus5\\ConEmu.xml"); // Set path to Cmder default ConEmu config file - PathCombine(defaultCfgPath, exeDir, L"config\\vendor\\ConEmu.xml.default"); + 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])); - // Set path to Cmder user ConEmu config file PathCombine(userCfgPath, userConfigDirPath, L"user-ConEmu.xml"); - - if (PathFileExists(cpuCfgPath)) // If machine-specific ConEmu config file exists - use it. - { - if (PathFileExists(cfgPath)) // If vendor ConEmu config file exists - back it up to config/ConEmu-%COMPUTERNAME%.xml. - { + if (PathFileExists(cpuCfgPath)) { + if (PathFileExists(cfgPath)) { if (!CopyFile(cfgPath, cpuCfgPath, FALSE)) { MessageBox(NULL, @@ -229,7 +204,7 @@ void StartCmder(std::wstring path = L"", bool is_single_mode = false, std::wstr exit(1); } } - else // If vendor ConEmu config file does not exists - Copy machine-specific config/ConEmu-%COMPUTERNAME%.xml to vendor ConEmu.xml file + else { if (!CopyFile(cpuCfgPath, cfgPath, FALSE)) { @@ -241,10 +216,8 @@ void StartCmder(std::wstring path = L"", bool is_single_mode = false, std::wstr } } } - else if (PathFileExists(userCfgPath)) // If config/user_conemu.xml exists use it. - { - if (PathFileExists(cfgPath)) // If vendor conemu.xml exits back it up to config/user_conemu.xml. - { + else if (PathFileExists(userCfgPath)) { + if (PathFileExists(cfgPath)) { if (!CopyFile(cfgPath, userCfgPath, FALSE)) { MessageBox(NULL, @@ -254,7 +227,7 @@ void StartCmder(std::wstring path = L"", bool is_single_mode = false, std::wstr exit(1); } } - else // If vendor conemu.xml does not exist copy user_conemu.xml to vendor conemu.xml + else { if (!CopyFile(userCfgPath, cfgPath, FALSE)) { @@ -266,8 +239,7 @@ void StartCmder(std::wstring path = L"", bool is_single_mode = false, std::wstr } } } - else if (PathFileExists(cfgPath)) // If vendor conemu.xml exists copy config/user_conemu.xml - { + else if (PathFileExists(cfgPath)) { if (!CopyFile(cfgPath, userCfgPath, FALSE)) { MessageBox(NULL, @@ -277,8 +249,7 @@ void StartCmder(std::wstring path = L"", bool is_single_mode = false, std::wstr exit(1); } } - else // No previous conemu.xml config exists use the default. - { + else { if (!CopyFile(defaultCfgPath, cfgPath, FALSE)) { MessageBox(NULL, @@ -291,34 +262,28 @@ void StartCmder(std::wstring path = L"", bool is_single_mode = false, std::wstr SYSTEM_INFO sysInfo; GetNativeSystemInfo(&sysInfo); - if (sysInfo.wProcessorArchitecture == PROCESSOR_ARCHITECTURE_AMD64) - { + if (sysInfo.wProcessorArchitecture == PROCESSOR_ARCHITECTURE_AMD64) { PathCombine(conEmuPath, exeDir, L"vendor\\conemu-maximus5\\ConEmu64.exe"); } - else - { + else { PathCombine(conEmuPath, exeDir, L"vendor\\conemu-maximus5\\ConEmu.exe"); } if (is_single_mode) { - if (!streqi(cmderTask.c_str(), L"")) - { + 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 - { + else { swprintf_s(args, L"%s /single /Icon \"%s\" /Title Cmder /dir \"%s\"", args, icoPath, cmderStart.c_str()); } } else { - if (!streqi(cmderTask.c_str(), L"")) - { + 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 - { + else { swprintf_s(args, L"%s /Icon \"%s\" /Title Cmder /dir \"%s\"", args, icoPath, cmderStart.c_str()); } } @@ -470,8 +435,7 @@ cmderOptions GetOption() cmderOptions.cmderCfgRoot = cmderCfgRoot; - if (szArgList[i + 1] != NULL && szArgList[i + 1][0] != '/') - { + if (szArgList[i + 1] != NULL && szArgList[i + 1][0] != '/') { cmderOptions.cmderCfgRoot = szArgList[i + 1]; i++; } @@ -489,8 +453,7 @@ cmderOptions GetOption() cmderOptions.cmderStart = szArgList[i + 1]; i++; } - else - { + else { MessageBox(NULL, szArgList[i + 1], L"/START - Folder does not exist!", MB_OK); } } @@ -542,13 +505,11 @@ cmderOptions GetOption() cmderOptions.cmderStart = szArgList[i]; i++; } - else - { + else { MessageBox(NULL, szArgList[i], L"Folder does not exist!", MB_OK); } } - else - { + 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; } @@ -570,8 +531,7 @@ int APIENTRY _tWinMain(_In_ HINSTANCE hInstance, cmderOptions cmderOptions = GetOption(); - if (cmderOptions.registerApp == true) - { + if (cmderOptions.registerApp == true) { RegisterShellMenu(cmderOptions.cmderRegScope, SHELL_MENU_REGISTRY_PATH_BACKGROUND); RegisterShellMenu(cmderOptions.cmderRegScope, SHELL_MENU_REGISTRY_PATH_LISTITEM); } From bc7c6e97b3cd71ac751cd877c5e092d3368d4710 Mon Sep 17 00:00:00 2001 From: "Dax T. Games" Date: Sat, 10 Nov 2018 09:32:44 -0500 Subject: [PATCH 267/306] Fixed move of default conemu.xml to the vendor folder --- launcher/src/CmderLauncher.cpp | 46 +++++++++++++++++----------------- 1 file changed, 23 insertions(+), 23 deletions(-) diff --git a/launcher/src/CmderLauncher.cpp b/launcher/src/CmderLauncher.cpp index 6d81411..318ef61 100644 --- a/launcher/src/CmderLauncher.cpp +++ b/launcher/src/CmderLauncher.cpp @@ -207,7 +207,7 @@ void StartCmder(std::wstring path = L"", bool is_single_mode = false, std::wstr PathCombine(cfgPath, exeDir, L"vendor\\conemu-maximus5\\ConEmu.xml"); // Set path to Cmder default ConEmu config file - PathCombine(defaultCfgPath, exeDir, L"config\\vendor\\ConEmu.xml.default"); + PathCombine(defaultCfgPath, exeDir, L"vendor\\ConEmu.xml.default"); // Check for machine-specific then user config source file. PathCombine(cpuCfgPath, userConfigDirPath, L"ConEmu-%COMPUTERNAME%.xml"); @@ -216,75 +216,76 @@ void StartCmder(std::wstring path = L"", bool is_single_mode = false, std::wstr // Set path to Cmder user ConEmu config file PathCombine(userCfgPath, userConfigDirPath, L"user-ConEmu.xml"); - if (PathFileExists(cpuCfgPath)) // If machine-specific ConEmu config file exists - use it. + if (PathFileExists(cpuCfgPath)) // config/ConEmu-%COMPUTERNAME%.xml file exists, use it. { - if (PathFileExists(cfgPath)) // If vendor ConEmu config file exists - back it up to config/ConEmu-%COMPUTERNAME%.xml. + if (PathFileExists(cfgPath)) // vendor/conemu-maximus5/ConEmu.xml file exists, copy vendor/conemu-maximus5/ConEmu.xml to config/ConEmu-%COMPUTERNAME%.xml. { 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); + ? L"Failed to copy vendor/conemu-maximus5/ConEmu.xml file to config/ConEmu-%COMPUTERNAME%.xml! Access Denied." + : L"Failed to copy vendor/conemu-maximus5/ConEmu.xml file to config/ConEmu-%COMPUTERNAME%.xml!", MB_TITLE, MB_ICONSTOP); exit(1); } } - else // If vendor ConEmu config file does not exists - Copy machine-specific config/ConEmu-%COMPUTERNAME%.xml to vendor ConEmu.xml file + else // vendor/conemu-maximus5/ConEmu.xml config file does not exist, copy config/ConEmu-%COMPUTERNAME%.xml to vendor/conemu-maximus5/ConEmu.xml file { 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); + ? L"Failed to copy conig/ConEmu-%COMPUTERNAME%.xml file to vendor/conemu-maximus5/ConEmu.xml! Access Denied." + : L"Failed to copy config/ConEmu-%COMPUTERNAME%.xml file to vendor/conemu-maximus5/ConEmu.xml!", MB_TITLE, MB_ICONSTOP); exit(1); } } } - else if (PathFileExists(userCfgPath)) // If config/user_conemu.xml exists use it. + else if (PathFileExists(userCfgPath)) // config/user_conemu.xml exists, use it. { - if (PathFileExists(cfgPath)) // If vendor conemu.xml exits back it up to config/user_conemu.xml. + if (PathFileExists(cfgPath)) // vendor/conemu-maximus5/ConEmu.xml exists, copy vendor/conemu-maximus5/ConEmu.xml to config/user_conemu.xml. { 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); + ? L"Failed to copy vendor/conemu-maximus5/ConEmu.xml file to config/user-conemu.xml! Access Denied." + : L"Failed to copy vendor/conemu-maximus5/ConEmu.xml file to config/user-conemu.xml!", MB_TITLE, MB_ICONSTOP); exit(1); } } - else // If vendor conemu.xml does not exist copy user_conemu.xml to vendor conemu.xml + else // vendor/conemu-maximus5/ConEmu.xml does not exist, copy config/user-conemu.xml to vendor/conemu-maximus5/ConEmu.xml { 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); + ? L"Failed to copy config/user-conemu.xml file to vendor/conemu-maximus5/ConEmu.xml! Access Denied." + : L"Failed to copy config/user-conemu.xml file to vendor/conemu-maximus5/ConEmu.xml!", MB_TITLE, MB_ICONSTOP); exit(1); } } } - else if (PathFileExists(cfgPath)) // If vendor conemu.xml exists copy config/user_conemu.xml + else if (PathFileExists(cfgPath)) // vendor/conemu-maximus5/ConEmu.xml exists, copy vendor/conemu-maximus5/ConEmu.xml to config/user_conemu.xml { 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); + ? L"Failed to copy vendor/conemu-maximus5/ConEmu.xml file to config/user-conemu.xml! Access Denied." + : L"Failed to copy vendor/conemu-maximus5/ConEmu.xml file to config/user-conemu.xml!", MB_TITLE, MB_ICONSTOP); exit(1); } } - else // No previous conemu.xml config exists use the default. + else // vendor/ConEmu.xml config exists, copy Cmder vendor/ConEmu.xml file to vendor/conemu-maximus5/ConEmu.xml. { - if (!CopyFile(defaultCfgPath, cfgPath, FALSE)) + if ( ! CopyFile(defaultCfgPath, cfgPath, FALSE)) { + ShowErrorAndExit(GetLastError(), __WFUNCTION__, __LINE__); 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); + ? L"Failed to copy vendor/ConEmu.xml.default file to vendor/conemu-maximus5/ConEmu.xml! Access Denied." + : L"Failed to copy vendor/ConEmu.xml.default file to vendor/conemu-maximus5/ConEmu.xml!", MB_TITLE, MB_ICONSTOP); exit(1); } } @@ -459,7 +460,6 @@ cmderOptions GetOption() { // MessageBox(NULL, szArgList[i], L"Arglist contents", MB_OK); - if (_wcsicmp(L"/c", szArgList[i]) == 0) { TCHAR userProfile[MAX_PATH]; From d04cc1f04ea3f79d4259dab7e35b0771a0127de9 Mon Sep 17 00:00:00 2001 From: "Dax T. Games" Date: Sat, 10 Nov 2018 13:57:26 -0500 Subject: [PATCH 268/306] fix timer error --- vendor/init.bat | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vendor/init.bat b/vendor/init.bat index 57c7b35..8a4d71a 100644 --- a/vendor/init.bat +++ b/vendor/init.bat @@ -401,6 +401,6 @@ set CMDER_CONFIGURED=1 set cmder_init_end=%time% if %time_init% gtr 0 ( - %cmder_root%\vendor\bin\timer.cmd %cmder_init_start% %cmder_init_end% + "%cmder_root%\vendor\bin\timer.cmd" %cmder_init_start% %cmder_init_end% ) exit /b From e904ebce72b6b612c37269298b8b831b2d1d4311 Mon Sep 17 00:00:00 2001 From: "Dax T. Games" Date: Sat, 10 Nov 2018 17:25:17 -0500 Subject: [PATCH 269/306] use user_conemu.xml or conemu-%computername%.xml directly if '-c [path]' is used to start cmder. --- launcher/src/CmderLauncher.cpp | 148 ++++++++++++++++++++------------- vendor/init.bat | 2 + 2 files changed, 91 insertions(+), 59 deletions(-) diff --git a/launcher/src/CmderLauncher.cpp b/launcher/src/CmderLauncher.cpp index 318ef61..b7d3868 100644 --- a/launcher/src/CmderLauncher.cpp +++ b/launcher/src/CmderLauncher.cpp @@ -91,6 +91,8 @@ void StartCmder(std::wstring path = L"", bool is_single_mode = false, std::wstr wchar_t userAliasesPath[MAX_PATH] = { 0 }; wchar_t legacyUserAliasesPath[MAX_PATH] = { 0 }; wchar_t args[MAX_PATH * 2 + 256] = { 0 }; + wchar_t userConEmuCfgPath[MAX_PATH] = { 0 }; + std::wstring cmderStart = path; std::wstring cmderTask = taskName; @@ -218,32 +220,72 @@ void StartCmder(std::wstring path = L"", bool is_single_mode = false, std::wstr if (PathFileExists(cpuCfgPath)) // config/ConEmu-%COMPUTERNAME%.xml file exists, use it. { - if (PathFileExists(cfgPath)) // vendor/conemu-maximus5/ConEmu.xml file exists, copy vendor/conemu-maximus5/ConEmu.xml to config/ConEmu-%COMPUTERNAME%.xml. + if (cfgRoot.length() == 0) // '-C [PATH]' was NOT specified { - if (!CopyFile(cfgPath, cpuCfgPath, FALSE)) + if (PathFileExists(cfgPath)) // vendor/conemu-maximus5/ConEmu.xml file exists, copy vendor/conemu-maximus5/ConEmu.xml to config/ConEmu-%COMPUTERNAME%.xml. { - MessageBox(NULL, - (GetLastError() == ERROR_ACCESS_DENIED) - ? L"Failed to copy vendor/conemu-maximus5/ConEmu.xml file to config/ConEmu-%COMPUTERNAME%.xml! Access Denied." - : L"Failed to copy vendor/conemu-maximus5/ConEmu.xml file to config/ConEmu-%COMPUTERNAME%.xml!", MB_TITLE, MB_ICONSTOP); - exit(1); + if (!CopyFile(cfgPath, cpuCfgPath, FALSE)) + { + MessageBox(NULL, + (GetLastError() == ERROR_ACCESS_DENIED) + ? L"Failed to copy vendor/conemu-maximus5/ConEmu.xml file to config/ConEmu-%COMPUTERNAME%.xml! Access Denied." + : L"Failed to copy vendor/conemu-maximus5/ConEmu.xml file to config/ConEmu-%COMPUTERNAME%.xml!", MB_TITLE, MB_ICONSTOP); + exit(1); + } + } + else // vendor/conemu-maximus5/ConEmu.xml config file does not exist, copy config/ConEmu-%COMPUTERNAME%.xml to vendor/conemu-maximus5/ConEmu.xml file + { + if (!CopyFile(cpuCfgPath, cfgPath, FALSE)) + { + MessageBox(NULL, + (GetLastError() == ERROR_ACCESS_DENIED) + ? L"Failed to copy conig/ConEmu-%COMPUTERNAME%.xml file to vendor/conemu-maximus5/ConEmu.xml! Access Denied." + : L"Failed to copy config/ConEmu-%COMPUTERNAME%.xml file to vendor/conemu-maximus5/ConEmu.xml!", MB_TITLE, MB_ICONSTOP); + exit(1); + } } } - else // vendor/conemu-maximus5/ConEmu.xml config file does not exist, copy config/ConEmu-%COMPUTERNAME%.xml to vendor/conemu-maximus5/ConEmu.xml file + else // '-C [PATH]' was specified, don't copy anything and use existing conemu-%COMPUTERNAME%.xml to start comemu. { - if (!CopyFile(cpuCfgPath, cfgPath, FALSE)) - { - MessageBox(NULL, - (GetLastError() == ERROR_ACCESS_DENIED) - ? L"Failed to copy conig/ConEmu-%COMPUTERNAME%.xml file to vendor/conemu-maximus5/ConEmu.xml! Access Denied." - : L"Failed to copy config/ConEmu-%COMPUTERNAME%.xml file to vendor/conemu-maximus5/ConEmu.xml!", MB_TITLE, MB_ICONSTOP); - exit(1); - } + PathCombine(userConEmuCfgPath, userConfigDirPath, L"ConEmu-%COMPUTERNAME%.xml"); + ExpandEnvironmentStrings(userConEmuCfgPath, userConEmuCfgPath, sizeof(userConEmuCfgPath) / sizeof(userConEmuCfgPath[0])); } } else if (PathFileExists(userCfgPath)) // config/user_conemu.xml exists, use it. { - if (PathFileExists(cfgPath)) // vendor/conemu-maximus5/ConEmu.xml exists, copy vendor/conemu-maximus5/ConEmu.xml to config/user_conemu.xml. + if (cfgRoot.length() == 0) // '-C [PATH]' was NOT specified + { + if (PathFileExists(cfgPath)) // vendor/conemu-maximus5/ConEmu.xml exists, copy vendor/conemu-maximus5/ConEmu.xml to config/user_conemu.xml. + { + if (!CopyFile(cfgPath, userCfgPath, FALSE)) + { + MessageBox(NULL, + (GetLastError() == ERROR_ACCESS_DENIED) + ? L"Failed to copy vendor/conemu-maximus5/ConEmu.xml file to config/user-conemu.xml! Access Denied." + : L"Failed to copy vendor/conemu-maximus5/ConEmu.xml file to config/user-conemu.xml!", MB_TITLE, MB_ICONSTOP); + exit(1); + } + } + else // vendor/conemu-maximus5/ConEmu.xml does not exist, copy config/user-conemu.xml to vendor/conemu-maximus5/ConEmu.xml + { + if (!CopyFile(userCfgPath, cfgPath, FALSE)) + { + MessageBox(NULL, + (GetLastError() == ERROR_ACCESS_DENIED) + ? L"Failed to copy config/user-conemu.xml file to vendor/conemu-maximus5/ConEmu.xml! Access Denied." + : L"Failed to copy config/user-conemu.xml file to vendor/conemu-maximus5/ConEmu.xml!", MB_TITLE, MB_ICONSTOP); + exit(1); + } + } + } + else // '-C [PATH]' was specified, don't copy anything and use existing user_conemu.xml to start comemu. + { + PathCombine(userConEmuCfgPath, userConfigDirPath, L"user-ConEmu.xml"); + } + } + else if (cfgRoot.length() == 0) // '-C [PATH]' was NOT specified + { + if (PathFileExists(cfgPath)) // vendor/conemu-maximus5/ConEmu.xml exists, copy vendor/conemu-maximus5/ConEmu.xml to config/user_conemu.xml { if (!CopyFile(cfgPath, userCfgPath, FALSE)) { @@ -253,41 +295,30 @@ void StartCmder(std::wstring path = L"", bool is_single_mode = false, std::wstr : L"Failed to copy vendor/conemu-maximus5/ConEmu.xml file to config/user-conemu.xml!", MB_TITLE, MB_ICONSTOP); exit(1); } - } - else // vendor/conemu-maximus5/ConEmu.xml does not exist, copy config/user-conemu.xml to vendor/conemu-maximus5/ConEmu.xml - { - if (!CopyFile(userCfgPath, cfgPath, FALSE)) + else // vendor/ConEmu.xml config exists, copy Cmder vendor/ConEmu.xml file to vendor/conemu-maximus5/ConEmu.xml. { - MessageBox(NULL, - (GetLastError() == ERROR_ACCESS_DENIED) - ? L"Failed to copy config/user-conemu.xml file to vendor/conemu-maximus5/ConEmu.xml! Access Denied." - : L"Failed to copy config/user-conemu.xml file to vendor/conemu-maximus5/ConEmu.xml!", MB_TITLE, MB_ICONSTOP); - exit(1); + if (!CopyFile(defaultCfgPath, cfgPath, FALSE)) + { + MessageBox(NULL, + (GetLastError() == ERROR_ACCESS_DENIED) + ? L"Failed to copy vendor/ConEmu.xml.default file to vendor/conemu-maximus5/ConEmu.xml! Access Denied." + : L"Failed to copy vendor/ConEmu.xml.default file to vendor/conemu-maximus5/ConEmu.xml!", MB_TITLE, MB_ICONSTOP); + exit(1); + } } } } - else if (PathFileExists(cfgPath)) // vendor/conemu-maximus5/ConEmu.xml exists, copy vendor/conemu-maximus5/ConEmu.xml to config/user_conemu.xml + else // '-C [PATH]' was specified and 'vendor/ConEmu.xml.default' config exists, copy Cmder 'vendor/ConEmu.xml.default' file to '[user specified path]/config/user_ConEmu.xml'. { - if (!CopyFile(cfgPath, userCfgPath, FALSE)) + if ( ! CopyFile(defaultCfgPath, userCfgPath, FALSE)) { MessageBox(NULL, (GetLastError() == ERROR_ACCESS_DENIED) - ? L"Failed to copy vendor/conemu-maximus5/ConEmu.xml file to config/user-conemu.xml! Access Denied." - : L"Failed to copy vendor/conemu-maximus5/ConEmu.xml file to config/user-conemu.xml!", MB_TITLE, MB_ICONSTOP); - exit(1); - } - } - else // vendor/ConEmu.xml config exists, copy Cmder vendor/ConEmu.xml file to vendor/conemu-maximus5/ConEmu.xml. - { - if ( ! CopyFile(defaultCfgPath, cfgPath, FALSE)) - { - ShowErrorAndExit(GetLastError(), __WFUNCTION__, __LINE__); - MessageBox(NULL, - (GetLastError() == ERROR_ACCESS_DENIED) - ? L"Failed to copy vendor/ConEmu.xml.default file to vendor/conemu-maximus5/ConEmu.xml! Access Denied." - : L"Failed to copy vendor/ConEmu.xml.default file to vendor/conemu-maximus5/ConEmu.xml!", MB_TITLE, MB_ICONSTOP); + ? L"Failed to copy vendor/ConEmu.xml.default file to [user specified path]/config/user_ConEmu.xml! Access Denied." + : L"Failed to copy vendor/ConEmu.xml.default file to [user specified path]/config/user_ConEmu.xml!", MB_TITLE, MB_ICONSTOP); exit(1); } + PathCombine(userConEmuCfgPath, userConfigDirPath, L"user-ConEmu.xml"); } SYSTEM_INFO sysInfo; @@ -301,27 +332,26 @@ void StartCmder(std::wstring path = L"", bool is_single_mode = false, std::wstr PathCombine(conEmuPath, exeDir, L"vendor\\conemu-maximus5\\ConEmu.exe"); } + swprintf_s(args, L"%s /Icon \"%s\" /Title Cmder", args, icoPath); + + if (!streqi(cmderStart.c_str(), L"")) + { + swprintf_s(args, L"%s /dir \"%s\"", args, cmderStart.c_str()); + } + if (is_single_mode) { - 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()); - } + swprintf_s(args, L"%s /single", args); } - else + + if (!streqi(cmderTask.c_str(), L"")) { - 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()); - } + swprintf_s(args, L"%s /run {%s}", args, cmderTask.c_str()); + } + + if (cfgRoot.length() != 0) + { + swprintf_s(args, L"%s -loadcfgfile \"%s\"", args, userConEmuCfgPath); } SetEnvironmentVariable(L"CMDER_ROOT", exeDir); diff --git a/vendor/init.bat b/vendor/init.bat index 8a4d71a..a7452a1 100644 --- a/vendor/init.bat +++ b/vendor/init.bat @@ -346,6 +346,7 @@ if not defined HOME set "HOME=%USERPROFILE%" set "initialConfig=%CMDER_ROOT%\config\user_profile.cmd" if exist "%CMDER_ROOT%\config\user_profile.cmd" ( REM Create this file and place your own command in there + %lib_console% debug_output init.bat "Calling - %CMDER_ROOT%\config\user_profile.cmd" call "%CMDER_ROOT%\config\user_profile.cmd" ) @@ -353,6 +354,7 @@ if defined CMDER_USER_CONFIG ( set "initialConfig=%CMDER_USER_CONFIG%\user_profile.cmd" if exist "%CMDER_USER_CONFIG%\user_profile.cmd" ( REM Create this file and place your own command in there + %lib_console% debug_output init.bat "Calling - %CMDER_USER_CONFIG%\user_profile.cmd call "%CMDER_USER_CONFIG%\user_profile.cmd" ) ) From e17b04cbb941561cececd36aca9914c251d0cb3c Mon Sep 17 00:00:00 2001 From: "Dax T. Games" Date: Sat, 10 Nov 2018 18:49:33 -0500 Subject: [PATCH 270/306] cleanup --- launcher/src/CmderLauncher.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/launcher/src/CmderLauncher.cpp b/launcher/src/CmderLauncher.cpp index b7d3868..37f8a81 100644 --- a/launcher/src/CmderLauncher.cpp +++ b/launcher/src/CmderLauncher.cpp @@ -295,7 +295,7 @@ void StartCmder(std::wstring path = L"", bool is_single_mode = false, std::wstr : L"Failed to copy vendor/conemu-maximus5/ConEmu.xml file to config/user-conemu.xml!", MB_TITLE, MB_ICONSTOP); exit(1); } - else // vendor/ConEmu.xml config exists, copy Cmder vendor/ConEmu.xml file to vendor/conemu-maximus5/ConEmu.xml. + else // vendor/ConEmu.xml config exists, copy Cmder vendor/ConEmu.xml.default file to vendor/conemu-maximus5/ConEmu.xml. { if (!CopyFile(defaultCfgPath, cfgPath, FALSE)) { From 8c0817941e6c4bac6e17de191f3d10b0a76e8182 Mon Sep 17 00:00:00 2001 From: "Dax T. Games" Date: Sun, 11 Nov 2018 07:55:14 -0500 Subject: [PATCH 271/306] added /c [path] use vendored conemu.xml as a default starting point if it exists --- launcher/src/CmderLauncher.cpp | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/launcher/src/CmderLauncher.cpp b/launcher/src/CmderLauncher.cpp index 37f8a81..b4f43be 100644 --- a/launcher/src/CmderLauncher.cpp +++ b/launcher/src/CmderLauncher.cpp @@ -295,7 +295,7 @@ void StartCmder(std::wstring path = L"", bool is_single_mode = false, std::wstr : L"Failed to copy vendor/conemu-maximus5/ConEmu.xml file to config/user-conemu.xml!", MB_TITLE, MB_ICONSTOP); exit(1); } - else // vendor/ConEmu.xml config exists, copy Cmder vendor/ConEmu.xml.default file to vendor/conemu-maximus5/ConEmu.xml. + else // vendor/ConEmu.xml.default config exists, copy Cmder vendor/ConEmu.xml.default file to vendor/conemu-maximus5/ConEmu.xml. { if (!CopyFile(defaultCfgPath, cfgPath, FALSE)) { @@ -308,6 +308,19 @@ void StartCmder(std::wstring path = L"", bool is_single_mode = false, std::wstr } } } + else if (PathFileExists(cfgPath)) // vendor/conemu-maximus5/ConEmu.xml exists, copy vendor/conemu-maximus5/ConEmu.xml to config/user_conemu.xml + { + if (!CopyFile(cfgPath, userCfgPath, FALSE)) + { + MessageBox(NULL, + (GetLastError() == ERROR_ACCESS_DENIED) + ? L"Failed to copy vendor/conemu-maximus5/ConEmu.xml file to config/user-conemu.xml! Access Denied." + : L"Failed to copy vendor/conemu-maximus5/ConEmu.xml file to config/user-conemu.xml!", MB_TITLE, MB_ICONSTOP); + exit(1); + } + + PathCombine(userConEmuCfgPath, userConfigDirPath, L"user-ConEmu.xml"); + } else // '-C [PATH]' was specified and 'vendor/ConEmu.xml.default' config exists, copy Cmder 'vendor/ConEmu.xml.default' file to '[user specified path]/config/user_ConEmu.xml'. { if ( ! CopyFile(defaultCfgPath, userCfgPath, FALSE)) From 0efeaa91fad426a12031b3c1bc0249d004c5629e Mon Sep 17 00:00:00 2001 From: "Dax T. Games" Date: Sun, 11 Nov 2018 08:04:35 -0500 Subject: [PATCH 272/306] cleanup --- launcher/src/CmderLauncher.cpp | 14 +++++++------- vendor/init.bat | 6 +++--- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/launcher/src/CmderLauncher.cpp b/launcher/src/CmderLauncher.cpp index b4f43be..453a750 100644 --- a/launcher/src/CmderLauncher.cpp +++ b/launcher/src/CmderLauncher.cpp @@ -149,7 +149,7 @@ void StartCmder(std::wstring path = L"", bool is_single_mode = false, std::wstr } /* - Was -c [path] specified? + Was /c [path] specified? */ if (wcscmp(userConfigDirPath, L"") == 0) { @@ -220,7 +220,7 @@ void StartCmder(std::wstring path = L"", bool is_single_mode = false, std::wstr if (PathFileExists(cpuCfgPath)) // config/ConEmu-%COMPUTERNAME%.xml file exists, use it. { - if (cfgRoot.length() == 0) // '-C [PATH]' was NOT specified + if (cfgRoot.length() == 0) // '/c [path]' was NOT specified { if (PathFileExists(cfgPath)) // vendor/conemu-maximus5/ConEmu.xml file exists, copy vendor/conemu-maximus5/ConEmu.xml to config/ConEmu-%COMPUTERNAME%.xml. { @@ -245,7 +245,7 @@ void StartCmder(std::wstring path = L"", bool is_single_mode = false, std::wstr } } } - else // '-C [PATH]' was specified, don't copy anything and use existing conemu-%COMPUTERNAME%.xml to start comemu. + else // '/c [path]' was specified, don't copy anything and use existing conemu-%COMPUTERNAME%.xml to start comemu. { PathCombine(userConEmuCfgPath, userConfigDirPath, L"ConEmu-%COMPUTERNAME%.xml"); ExpandEnvironmentStrings(userConEmuCfgPath, userConEmuCfgPath, sizeof(userConEmuCfgPath) / sizeof(userConEmuCfgPath[0])); @@ -253,7 +253,7 @@ void StartCmder(std::wstring path = L"", bool is_single_mode = false, std::wstr } else if (PathFileExists(userCfgPath)) // config/user_conemu.xml exists, use it. { - if (cfgRoot.length() == 0) // '-C [PATH]' was NOT specified + if (cfgRoot.length() == 0) // '/c [path]' was NOT specified { if (PathFileExists(cfgPath)) // vendor/conemu-maximus5/ConEmu.xml exists, copy vendor/conemu-maximus5/ConEmu.xml to config/user_conemu.xml. { @@ -278,12 +278,12 @@ void StartCmder(std::wstring path = L"", bool is_single_mode = false, std::wstr } } } - else // '-C [PATH]' was specified, don't copy anything and use existing user_conemu.xml to start comemu. + else // '/c [path]' was specified, don't copy anything and use existing user_conemu.xml to start comemu. { PathCombine(userConEmuCfgPath, userConfigDirPath, L"user-ConEmu.xml"); } } - else if (cfgRoot.length() == 0) // '-C [PATH]' was NOT specified + else if (cfgRoot.length() == 0) // '/c [path]' was NOT specified { if (PathFileExists(cfgPath)) // vendor/conemu-maximus5/ConEmu.xml exists, copy vendor/conemu-maximus5/ConEmu.xml to config/user_conemu.xml { @@ -321,7 +321,7 @@ void StartCmder(std::wstring path = L"", bool is_single_mode = false, std::wstr PathCombine(userConEmuCfgPath, userConfigDirPath, L"user-ConEmu.xml"); } - else // '-C [PATH]' was specified and 'vendor/ConEmu.xml.default' config exists, copy Cmder 'vendor/ConEmu.xml.default' file to '[user specified path]/config/user_ConEmu.xml'. + else // '/c [path]' was specified and 'vendor/ConEmu.xml.default' config exists, copy Cmder 'vendor/ConEmu.xml.default' file to '[user specified path]/config/user_ConEmu.xml'. { if ( ! CopyFile(defaultCfgPath, userCfgPath, FALSE)) { diff --git a/vendor/init.bat b/vendor/init.bat index a7452a1..30384ed 100644 --- a/vendor/init.bat +++ b/vendor/init.bat @@ -1,6 +1,6 @@ @echo off -set cmder_init_start=%time% +set CMDER_INIT_START=%time% :: Init Script for cmd.exe :: Created as part of cmder project @@ -400,9 +400,9 @@ if "%CMDER_ALIASES%" == "1" if exist "%CMDER_ROOT%\bin\alias.bat" if exist "%CMD set initialConfig= set CMDER_CONFIGURED=1 -set cmder_init_end=%time% +set CMDER_INIT_END=%time% if %time_init% gtr 0 ( - "%cmder_root%\vendor\bin\timer.cmd" %cmder_init_start% %cmder_init_end% + "%cmder_root%\vendor\bin\timer.cmd" %CMDER_INIT_START% %CMDER_INIT_END% ) exit /b From d8e8fc8adb03129658d4dad6eb012d30c2f5729e Mon Sep 17 00:00:00 2001 From: "Dax T. Games" Date: Mon, 12 Nov 2018 07:56:55 -0500 Subject: [PATCH 273/306] add /m command line argument to use machine config rather than user config for conemu. --- .gitignore | 2 ++ launcher/src/CmderLauncher.cpp | 13 +++++++++---- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/.gitignore b/.gitignore index ac64e10..4a75750 100644 --- a/.gitignore +++ b/.gitignore @@ -13,6 +13,8 @@ vendor/*/* config/* !config/Readme.md +config_user/* + Thumbs.db *.exe *.dll diff --git a/launcher/src/CmderLauncher.cpp b/launcher/src/CmderLauncher.cpp index 453a750..33e2f41 100644 --- a/launcher/src/CmderLauncher.cpp +++ b/launcher/src/CmderLauncher.cpp @@ -69,7 +69,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"") +void StartCmder(std::wstring path = L"", bool is_single_mode = false, std::wstring taskName = L"", std::wstring cfgRoot = L"", bool use_user_cfg = true) { #if USE_TASKBAR_API wchar_t appId[MAX_PATH] = { 0 }; @@ -218,7 +218,7 @@ void StartCmder(std::wstring path = L"", bool is_single_mode = false, std::wstr // Set path to Cmder user ConEmu config file PathCombine(userCfgPath, userConfigDirPath, L"user-ConEmu.xml"); - if (PathFileExists(cpuCfgPath)) // config/ConEmu-%COMPUTERNAME%.xml file exists, use it. + if ( PathFileExists(cpuCfgPath) || use_user_cfg == false ) // config/ConEmu-%COMPUTERNAME%.xml file exists or /m was specified on command line, use machine specific config. { if (cfgRoot.length() == 0) // '/c [path]' was NOT specified { @@ -486,6 +486,7 @@ struct cmderOptions std::wstring cmderTask = L""; std::wstring cmderRegScope = L"USER"; bool cmderSingle = false; + bool cmderUserCfg = true; bool registerApp = false; bool unRegisterApp = false; bool error = false; @@ -546,6 +547,10 @@ cmderOptions GetOption() { cmderOptions.cmderSingle = true; } + else if (_wcsicmp(L"/m", szArgList[i]) == 0) + { + cmderOptions.cmderUserCfg = false; + } else if (_wcsicmp(L"/register", szArgList[i]) == 0) { cmderOptions.registerApp = true; @@ -592,7 +597,7 @@ 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\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\nor\n\n /register [USER | ALL]\n\nor\n\n /unregister [USER | ALL]\n", MB_TITLE, MB_OK); cmderOptions.error = true; } } @@ -629,7 +634,7 @@ int APIENTRY _tWinMain(_In_ HINSTANCE hInstance, } else { - StartCmder(cmderOptions.cmderStart, cmderOptions.cmderSingle, cmderOptions.cmderTask, cmderOptions.cmderCfgRoot); + StartCmder(cmderOptions.cmderStart, cmderOptions.cmderSingle, cmderOptions.cmderTask, cmderOptions.cmderCfgRoot, cmderOptions.cmderUserCfg); } return 0; From b16aa7a29e777c6d3a9240ffbb3ce96708ac14ca Mon Sep 17 00:00:00 2001 From: "Dax T. Games" Date: Mon, 12 Nov 2018 08:30:44 -0500 Subject: [PATCH 274/306] better command line error handling --- launcher/src/CmderLauncher.cpp | 169 ++++++++++++++++++--------------- 1 file changed, 92 insertions(+), 77 deletions(-) diff --git a/launcher/src/CmderLauncher.cpp b/launcher/src/CmderLauncher.cpp index 33e2f41..2a2c937 100644 --- a/launcher/src/CmderLauncher.cpp +++ b/launcher/src/CmderLauncher.cpp @@ -247,6 +247,18 @@ void StartCmder(std::wstring path = L"", bool is_single_mode = false, std::wstr } else // '/c [path]' was specified, don't copy anything and use existing conemu-%COMPUTERNAME%.xml to start comemu. { + if (use_user_cfg == false && PathFileExists(cfgPath) && !PathFileExists(cpuCfgPath)) // vendor/conemu-maximus5/ConEmu.xml file exists, copy vendor/conemu-maximus5/ConEmu.xml to config/ConEmu-%COMPUTERNAME%.xml. + { + if (!CopyFile(cfgPath, cpuCfgPath, FALSE)) + { + MessageBox(NULL, + (GetLastError() == ERROR_ACCESS_DENIED) + ? L"Failed to copy vendor/conemu-maximus5/ConEmu.xml file to config/ConEmu-%COMPUTERNAME%.xml! Access Denied." + : L"Failed to copy vendor/conemu-maximus5/ConEmu.xml file to config/ConEmu-%COMPUTERNAME%.xml!", MB_TITLE, MB_ICONSTOP); + exit(1); + } + } + PathCombine(userConEmuCfgPath, userConfigDirPath, L"ConEmu-%COMPUTERNAME%.xml"); ExpandEnvironmentStrings(userConEmuCfgPath, userConEmuCfgPath, sizeof(userConEmuCfgPath) / sizeof(userConEmuCfgPath[0])); } @@ -504,102 +516,105 @@ cmderOptions GetOption() { // 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); + if (cmderOptions.error == false) { + 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"); + wchar_t cmderCfgRoot[MAX_PATH] = { 0 }; + PathCombine(cmderCfgRoot, userProfile, L"cmder_cfg"); - cmderOptions.cmderCfgRoot = cmderCfgRoot; + 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) - { - int len = wcslen(szArgList[i + 1]); - if (wcscmp(&szArgList[i + 1][len - 1], L"\"") == 0) - { - szArgList[i + 1][len - 1] = '\0'; - } - - if (PathFileExists(szArgList[i + 1])) - { - cmderOptions.cmderStart = szArgList[i + 1]; - i++; - } - else - { - MessageBox(NULL, szArgList[i + 1], L"/START - Folder does 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"/m", szArgList[i]) == 0) - { - cmderOptions.cmderUserCfg = false; - } - 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) + if (szArgList[i + 1] != NULL && szArgList[i + 1][0] != '/') { - cmderOptions.cmderRegScope = szArgList[i + 1]; + cmderOptions.cmderCfgRoot = szArgList[i + 1]; i++; } } - } - else if (_wcsicmp(L"/unregister", szArgList[i]) == 0) - { - cmderOptions.unRegisterApp = true; - cmderOptions.registerApp = false; - if (szArgList[i + 1] != NULL) + else if (_wcsicmp(L"/start", szArgList[i]) == 0) { - if (_wcsicmp(L"all", szArgList[i + 1]) == 0 || _wcsicmp(L"user", szArgList[i + 1]) == 0) + int len = wcslen(szArgList[i + 1]); + if (wcscmp(&szArgList[i + 1][len - 1], L"\"") == 0) { - cmderOptions.cmderRegScope = szArgList[i + 1]; + szArgList[i + 1][len - 1] = '\0'; + } + + if (PathFileExists(szArgList[i + 1])) + { + cmderOptions.cmderStart = szArgList[i + 1]; i++; } + else + { + MessageBox(NULL, szArgList[i + 1], L"/START - Folder does not exist!", MB_OK); + } } - } - else if (cmderOptions.cmderStart == L"") - { - int len = wcslen(szArgList[i]); - if (wcscmp(&szArgList[i][len - 1], L"\"") == 0) + else if (_wcsicmp(L"/task", szArgList[i]) == 0) { - szArgList[i][len - 1] = '\0'; - } - - if (PathFileExists(szArgList[i])) - { - cmderOptions.cmderStart = szArgList[i]; + cmderOptions.cmderTask = szArgList[i + 1]; i++; } + else if (_wcsicmp(L"/single", szArgList[i]) == 0) + { + cmderOptions.cmderSingle = true; + } + else if (_wcsicmp(L"/m", szArgList[i]) == 0) + { + cmderOptions.cmderUserCfg = false; + } + 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"") + { + int len = wcslen(szArgList[i]); + if (wcscmp(&szArgList[i][len - 1], L"\"") == 0) + { + szArgList[i][len - 1] = '\0'; + } + + if (PathFileExists(szArgList[i])) + { + cmderOptions.cmderStart = szArgList[i]; + 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\n /m\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, szArgList[i], L"Folder does not exist!", 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\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); - cmderOptions.error = true; - } } LocalFree(szArgList); From 787ac3773cab86d31f477abd1a31808a7c39dfe5 Mon Sep 17 00:00:00 2001 From: "Dax T. Games" Date: Mon, 12 Nov 2018 09:22:05 -0500 Subject: [PATCH 275/306] make /register work with /c --- README.md | 15 +++++++++------ launcher/src/CmderLauncher.cpp | 19 +++++++++++++++---- 2 files changed, 24 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index b56c05b..46d8dfd 100644 --- a/README.md +++ b/README.md @@ -41,12 +41,15 @@ The Cmder's user interface is also designed to be more eye pleasing, and you can ## Cmder.exe Command Line Arguments -| Argument | Description | -| ------------------- | ----------------------------------------------------------------------- | -| `/C [user_root_path]` | Individual user Cmder root folder. Example: `%userprofile%\cmder_config` | -| `/SINGLE` | Start Cmder in single mode. | -| `/START [start_path]` | Folder path to start in. | -| `/TASK [task_name]` | Task to start after launch. | +| Argument | Description | +| ------------------- | ----------------------------------------------------------------------- | +| `/C [user_root_path]` | Individual user Cmder root folder. Example: `%userprofile%\cmder_config` | +| `/M` | Use `conemu-%computername%.xml` for ConEmu settings storage instead of `user_conemu.xml` | +| `/REGISTER [ALL, USER]` | Register a Windows Shell Menu shortcut. | +| `/UNREGISTER [ALL, USER]` | Un-register a Windows Shell Menu shortcut. | +| `/SINGLE` | Start Cmder in single mode. | +| `/START [start_path]` | Folder path to start in. | +| `/TASK [task_name]` | Task to start after launch. | ## Context Menu Integration diff --git a/launcher/src/CmderLauncher.cpp b/launcher/src/CmderLauncher.cpp index 2a2c937..438a6d2 100644 --- a/launcher/src/CmderLauncher.cpp +++ b/launcher/src/CmderLauncher.cpp @@ -442,8 +442,10 @@ HKEY GetRootKey(std::wstring opt) return root; } -void RegisterShellMenu(std::wstring opt, wchar_t* keyBaseName) +void RegisterShellMenu(std::wstring opt, wchar_t* keyBaseName, std::wstring cfgRoot = L"") { + wchar_t userConfigDirPath[MAX_PATH] = { 0 }; + // First, get the paths we will use wchar_t exePath[MAX_PATH] = { 0 }; @@ -452,7 +454,16 @@ 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); + + if (cfgRoot.length() == 0) // '/c [path]' was NOT specified + { + swprintf_s(commandStr, L"\"%s\" \"%%V\"", exePath); + } + else { + std::copy(cfgRoot.begin(), cfgRoot.end(), userConfigDirPath); + userConfigDirPath[cfgRoot.length()] = 0; + swprintf_s(commandStr, L"\"%s\" /c \"%s\" \"%%V\"", exePath, userConfigDirPath); + } // Now that we have `commandStr`, it's OK to change `exePath`... PathRemoveFileSpec(exePath); @@ -635,8 +646,8 @@ int APIENTRY _tWinMain(_In_ HINSTANCE hInstance, if (cmderOptions.registerApp == true) { - RegisterShellMenu(cmderOptions.cmderRegScope, SHELL_MENU_REGISTRY_PATH_BACKGROUND); - RegisterShellMenu(cmderOptions.cmderRegScope, SHELL_MENU_REGISTRY_PATH_LISTITEM); + RegisterShellMenu(cmderOptions.cmderRegScope, SHELL_MENU_REGISTRY_PATH_BACKGROUND, cmderOptions.cmderCfgRoot); + RegisterShellMenu(cmderOptions.cmderRegScope, SHELL_MENU_REGISTRY_PATH_LISTITEM, cmderOptions.cmderCfgRoot); } else if (cmderOptions.unRegisterApp == true) { From 7203671fc9fe2922c4de6e3c484b1c347855b2eb Mon Sep 17 00:00:00 2001 From: "Dax T. Games" Date: Sat, 17 Nov 2018 19:55:24 -0500 Subject: [PATCH 276/306] fix powershell profile.d --- vendor/profile.ps1 | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/vendor/profile.ps1 b/vendor/profile.ps1 index 995b745..159ebe2 100644 --- a/vendor/profile.ps1 +++ b/vendor/profile.ps1 @@ -128,20 +128,30 @@ if (-not (test-path "$ENV:CMDER_ROOT\config\profile.d")) { } pushd $ENV:CMDER_ROOT\config\profile.d -foreach ($x in Get-ChildItem *.ps1) { +foreach ($x in Get-ChildItem *.psm1) { # write-host write-host Sourcing $x Import-Module $x } + +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 (test-path "$ENV:CMDER_USER_CONFIG\profile.d")) { pushd $ENV:CMDER_USER_CONFIG\profile.d - foreach ($x in Get-ChildItem *.ps1) { + foreach ($x in Get-ChildItem *.psm1) { # write-host write-host Sourcing $x Import-Module $x } + + foreach ($x in Get-ChildItem *.ps1) { + # write-host write-host Sourcing $x + . $x + } popd } @@ -153,7 +163,7 @@ if (test-path "$env:CMDER_ROOT\config\user-profile.ps1") { $CmderUserProfilePath = Join-Path $env:CMDER_ROOT "config\user_profile.ps1" if (Test-Path $CmderUserProfilePath) { # Create this file and place your own command in there. - Import-Module "$CmderUserProfilePath" + . "$CmderUserProfilePath" # user_profile.ps1 is not a module DO NOT USE import-module } if ($ENV:CMDER_USER_CONFIG) { @@ -166,7 +176,7 @@ if ($ENV:CMDER_USER_CONFIG) { $CmderUserProfilePath = Join-Path $ENV:CMDER_USER_CONFIG "user_profile.ps1" if (Test-Path $CmderUserProfilePath) { - Import-Module "$CmderUserProfilePath" + . "$CmderUserProfilePath" # user_profile.ps1 is not a module DO NOT USE import-module } } From 036cf09360b232bd2d996427aee170eb3bd52b93 Mon Sep 17 00:00:00 2001 From: Daniel Chesters Date: Thu, 22 Nov 2018 21:14:02 +0100 Subject: [PATCH 277/306] Ensure use the system find and findstr command instead find/findstr from path. Fix #1959 --- vendor/bin/alias.cmd | 8 ++++---- vendor/bin/cexec.cmd | 2 +- vendor/init.bat | 2 +- vendor/lib/lib_base.cmd | 8 ++++---- vendor/lib/lib_path.cmd | 4 ++-- 5 files changed, 12 insertions(+), 12 deletions(-) diff --git a/vendor/bin/alias.cmd b/vendor/bin/alias.cmd index 50e22e7..1a1739d 100644 --- a/vendor/bin/alias.cmd +++ b/vendor/bin/alias.cmd @@ -40,7 +40,7 @@ goto parseargument ) else if "%currentarg%" neq "" ( if "%~2" equ "" ( :: Show the specified alias - doskey /macros | findstr /b %currentarg%= && exit /b + doskey /macros | %WINDIR%\System32\findstr /b %currentarg%= && exit /b echo insufficient parameters. goto :p_help ) else ( @@ -85,7 +85,7 @@ if not ["%_temp%"] == ["%alias_name%"] ( ) :: replace already defined alias -findstr /b /v /i "%alias_name%=" "%ALIASES%" >> "%ALIASES%.tmp" +%WINDIR%\System32\findstr /b /v /i "%alias_name%=" "%ALIASES%" >> "%ALIASES%.tmp" echo %alias_name%=%alias_value% >> "%ALIASES%.tmp" && type "%ALIASES%.tmp" > "%ALIASES%" & @del /f /q "%ALIASES%.tmp" doskey /macrofile="%ALIASES%" endlocal @@ -93,7 +93,7 @@ exit /b :p_del set del_alias=%~1 -findstr /b /v /i "%del_alias%=" "%ALIASES%" >> "%ALIASES%.tmp" +%WINDIR%\System32\findstr /b /v /i "%del_alias%=" "%ALIASES%" >> "%ALIASES%.tmp" type "%ALIASES%".tmp > "%ALIASES%" & @del /f /q "%ALIASES%.tmp" doskey %del_alias%= doskey /macrofile="%ALIASES%" @@ -105,7 +105,7 @@ echo Aliases reloaded exit /b :p_show -doskey /macros|findstr /v /r "^;=" | sort +doskey /macros|%WINDIR%\System32\findstr /v /r "^;=" | sort exit /b :p_help diff --git a/vendor/bin/cexec.cmd b/vendor/bin/cexec.cmd index 3193f4f..02ecba5 100644 --- a/vendor/bin/cexec.cmd +++ b/vendor/bin/cexec.cmd @@ -52,7 +52,7 @@ set "feFlagName=%feFlagName% " :: echo %feCommand% :: echo %feParam% :: echo. -echo %CMDER_USER_FLAGS% | find /i "%feFlagName%">nul +echo %CMDER_USER_FLAGS% | %WINDIR%\System32\find /i "%feFlagName%">nul if "%ERRORLEVEL%" == "0" ( if "%feNOT%" == "false" ( endlocal && call %feCommand% %feParam% diff --git a/vendor/init.bat b/vendor/init.bat index 8a4d71a..519b580 100644 --- a/vendor/init.bat +++ b/vendor/init.bat @@ -300,7 +300,7 @@ if "%CMDER_ALIASES%" == "1" ( 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 + type "%user_aliases%" | %WINDIR%\System32\findstr /i ";= Add aliases below here" >nul if "!errorlevel!" == "1" ( echo Creating initial user_aliases store in "%user_aliases%"... if defined CMDER_USER_CONFIG ( diff --git a/vendor/lib/lib_base.cmd b/vendor/lib/lib_base.cmd index 8577637..705cca2 100644 --- a/vendor/lib/lib_base.cmd +++ b/vendor/lib/lib_base.cmd @@ -27,7 +27,7 @@ exit /b ::: file full path to file containing lib_routines to display :::. :::------------------------------------------------------------------------------- - for /f "tokens=* delims=:" %%a in ('type "%~1" ^| findstr /i /r "^:::"') do ( + for /f "tokens=* delims=:" %%a in ('type "%~1" ^| %WINDIR%\System32\findstr /i /r "^:::"') do ( rem echo a="%%a" if "%%a"=="." ( @@ -61,9 +61,9 @@ exit /b ::: file full path to file containing lib_routines to display :::. :::------------------------------------------------------------------------------- - echo %comspec% | find /i "\cmd.exe" > nul && set "CMDER_SHELL=cmd" - echo %comspec% | find /i "\tcc.exe" > nul && set "CMDER_SHELL=tcc" - echo %comspec% | find /i "\tccle" > nul && set "CMDER_SHELL=tccle" + echo %comspec% | %WINDIR%\System32\find /i "\cmd.exe" > nul && set "CMDER_SHELL=cmd" + 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 diff --git a/vendor/lib/lib_path.cmd b/vendor/lib/lib_path.cmd index b1a6d2d..6e31560 100644 --- a/vendor/lib/lib_path.cmd +++ b/vendor/lib/lib_path.cmd @@ -68,14 +68,14 @@ exit /b if "%CMDER_CONFIGURED%" == "1" ( %lib_console% debug_output :enhance_path "Env Var - find_query=%find_query%" - echo "%path%"|findstr >nul /I /R ";%find_query%\"$" + echo "%path%"|%WINDIR%\System32\findstr >nul /I /R ";%find_query%\"$" if "!ERRORLEVEL!" == "0" set found=1 ) %lib_console% debug_output :enhance_path "Env Var 1 - found=!found!" if "!found!" == "0" ( if "%CMDER_CONFIGURED%" == "1" ( - echo "%path%"|findstr >nul /i /r ";%find_query%;" + echo "%path%"|%WINDIR%\System32\findstr >nul /i /r ";%find_query%;" if "!ERRORLEVEL!" == "0" set found=1 ) %lib_console% debug_output :enhance_path "Env Var 2 - found=!found!" From 572a94ca3a32061d48216cc28375ab457b2794cc Mon Sep 17 00:00:00 2001 From: "Van der Boon, Robert GSNL-PTT/SPD" Date: Fri, 30 Nov 2018 12:01:21 +0100 Subject: [PATCH 278/306] Improve LANG env var detection --- vendor/init.bat | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/vendor/init.bat b/vendor/init.bat index 1a5c1bb..af79340 100644 --- a/vendor/init.bat +++ b/vendor/init.bat @@ -243,9 +243,16 @@ if defined GIT_INSTALL_ROOT ( :: 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" - - for /F "delims=" %%F in ('env /usr/bin/locale -uU 2') do ( - set "LANG=%%F" + + if not defined LANG ( + :: Find locale.exe: From the git install root, from the path, using the git installed env, or fallback using the env from the path. + if not defined git_locale if exist "!GIT_INSTALL_ROOT!\usr\bin\locale.exe" set git_locale="!GIT_INSTALL_ROOT!\usr\bin\locale.exe" + if not defined git_locale for /F "delims=" %%F in ('where locale.exe 2^>nul') do (if not defined git_locale set git_locale="%%F") + if not defined git_locale if exist "!GIT_INSTALL_ROOT!\usr\bin\env.exe" set git_locale="!GIT_INSTALL_ROOT!\usr\bin\env.exe" /usr/bin/locale + if not defined git_locale set git_locale=env /usr/bin/locale + for /F "delims=" %%F in ('!git_locale! -uU 2') do ( + set "LANG=%%F" + ) ) ) From 5c7f4943ad9a1cd1f2183fc003914ba8b9148251 Mon Sep 17 00:00:00 2001 From: "Dax T. Games" Date: Fri, 30 Nov 2018 14:56:30 -0500 Subject: [PATCH 279/306] fix initial launch of cmder starting with conemu default cfg --- launcher/src/CmderLauncher.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/launcher/src/CmderLauncher.cpp b/launcher/src/CmderLauncher.cpp index 438a6d2..6c281e5 100644 --- a/launcher/src/CmderLauncher.cpp +++ b/launcher/src/CmderLauncher.cpp @@ -319,6 +319,16 @@ void StartCmder(std::wstring path = L"", bool is_single_mode = false, std::wstr } } } + else { + if (!CopyFile(defaultCfgPath, cfgPath, FALSE)) + { + MessageBox(NULL, + (GetLastError() == ERROR_ACCESS_DENIED) + ? L"Failed to copy vendor/ConEmu.xml.default file to vendor/conemu-maximus5/ConEmu.xml! Access Denied." + : L"Failed to copy vendor/ConEmu.xml.default file to vendor/conemu-maximus5/ConEmu.xml!", MB_TITLE, MB_ICONSTOP); + exit(1); + } + } } else if (PathFileExists(cfgPath)) // vendor/conemu-maximus5/ConEmu.xml exists, copy vendor/conemu-maximus5/ConEmu.xml to config/user_conemu.xml { From 1eb03dd1b81d5b1c61686312bf3256d15c6b29b0 Mon Sep 17 00:00:00 2001 From: "Dax T. Games" Date: Sun, 2 Dec 2018 11:44:18 -0500 Subject: [PATCH 280/306] add '/prefer_nix' switch to init.bat --- vendor/init.bat | 25 ++++++++++++++++++------- 1 file changed, 18 insertions(+), 7 deletions(-) diff --git a/vendor/init.bat b/vendor/init.bat index 1a5c1bb..60fcd7c 100644 --- a/vendor/init.bat +++ b/vendor/init.bat @@ -14,6 +14,7 @@ set debug_output=0 set time_init=0 set fast_init=0 set max_depth=1 +set prefer_windows_commands=1 set "CMDER_USER_FLAGS= " :: Find root dir @@ -90,6 +91,9 @@ call "%cmder_root%\vendor\lib\lib_profile" ) else if /i "%1" == "/svn_ssh" ( set SVN_SSH=%2 shift + ) else if /i "%1" == "/prefer_nix" ( + set prefer_windows_commands=0 + shift ) else ( set "CMDER_USER_FLAGS=%1 %CMDER_USER_FLAGS%" ) @@ -233,18 +237,25 @@ goto :CONFIGURE_GIT :: 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 - if exist "!GIT_INSTALL_ROOT!\cmd\git.exe" %lib_path% enhance_path "!GIT_INSTALL_ROOT!\cmd" append - if exist "!GIT_INSTALL_ROOT!\mingw32" ( - %lib_path% enhance_path "!GIT_INSTALL_ROOT!\mingw32\bin" append - ) else if exist "!GIT_INSTALL_ROOT!\mingw64" ( - %lib_path% enhance_path "!GIT_INSTALL_ROOT!\mingw64\bin" append + if "%prefer_windows_commands%" == "1" ( + echo PREFERRING WINDOWS COMMANDS + set "path_position=append" + ) else ( + echo PREFERRING UNIX COMMANDS + set "path_position=" ) - %lib_path% enhance_path "!GIT_INSTALL_ROOT!\usr\bin" append + if exist "!GIT_INSTALL_ROOT!\cmd\git.exe" %lib_path% enhance_path "!GIT_INSTALL_ROOT!\cmd" !path_position! + if exist "!GIT_INSTALL_ROOT!\mingw32" ( + %lib_path% enhance_path "!GIT_INSTALL_ROOT!\mingw32\bin" !path_position! + ) else if exist "!GIT_INSTALL_ROOT!\mingw64" ( + %lib_path% enhance_path "!GIT_INSTALL_ROOT!\mingw64\bin" !path_position! + ) + %lib_path% enhance_path "!GIT_INSTALL_ROOT!\usr\bin" !path_position! :: 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" - for /F "delims=" %%F in ('env /usr/bin/locale -uU 2') do ( + for /F "delims=" %%F in ('%GIT_INSTALL_ROOT%\usr\bin\env /usr/bin/locale -uU 2') do ( set "LANG=%%F" ) ) From fcab51da2b25f3ba730ddbb95a00f00128e72f80 Mon Sep 17 00:00:00 2001 From: "Dax T. Games" Date: Sun, 2 Dec 2018 11:46:23 -0500 Subject: [PATCH 281/306] remove file --- vendor/init.bat.orig | 432 ------------------------------------------- 1 file changed, 432 deletions(-) delete mode 100644 vendor/init.bat.orig diff --git a/vendor/init.bat.orig b/vendor/init.bat.orig deleted file mode 100644 index e4b7e36..0000000 --- a/vendor/init.bat.orig +++ /dev/null @@ -1,432 +0,0 @@ -@echo off - -set CMDER_INIT_START=%time% - -:: Init Script for cmd.exe -:: Created as part of cmder project - -:: !!! THIS FILE IS OVERWRITTEN WHEN CMDER IS UPDATED -:: !!! Use "%CMDER_ROOT%\config\user_profile.cmd" to add your own startup commands - -:: 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 time_init=0 -set fast_init=0 -set max_depth=1 -set prefer_windows_commands=1 -set "CMDER_USER_FLAGS= " - -:: Find root dir -if not defined CMDER_ROOT ( - 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 '\' from %CMDER_ROOT% -if "%CMDER_ROOT:~-1%" == "\" SET "CMDER_ROOT=%CMDER_ROOT:~0,-1%" - -call "%cmder_root%\vendor\bin\cexec.cmd" /setpath -call "%cmder_root%\vendor\lib\lib_base" -call "%cmder_root%\vendor\lib\lib_path" -call "%cmder_root%\vendor\lib\lib_console" -call "%cmder_root%\vendor\lib\lib_git" -call "%cmder_root%\vendor\lib\lib_profile" - -:var_loop - if "%~1" == "" ( - goto :start - ) else if /i "%1" == "/f" ( - set fast_init=1 - ) else if /i "%1" == "/t" ( - set time_init=1 - ) else if /i "%1"=="/v" ( - set verbose_output=1 - ) else if /i "%1"=="/d" ( - set debug_output=1 - ) else if /i "%1" == "/max_depth" ( - if "%~2" geq "1" if "%~2" leq "5" ( - set "max_depth=%~2" - shift - ) else ( - %lib_console% show_error "'/max_depth' requires a number between 1 and 5!" - exit /b - ) - ) else if /i "%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 /i "%1" == "/user_aliases" ( - if exist "%~2" ( - set "user_aliases=%~2" - shift - ) - ) else if /i "%1" == "/git_install_root" ( - if exist "%~2" ( - set "GIT_INSTALL_ROOT=%~2" - shift - ) else ( - %lib_console% show_error "The Git install root folder "%~2", you specified does not exist!" - exit /b - ) - ) else if /i "%1" == "/home" ( - if exist "%~2" ( - set "HOME=%~2" - shift - ) else ( - %lib_console% show_error The home folder "%2", you specified does not exist! - exit /b - ) - ) else if /i "%1" == "/svn_ssh" ( - set SVN_SSH=%2 - shift - ) else if /i "%1" == "/prefer_nix" ( - set prefer_windows_commands=0 - shift - ) else ( - set "CMDER_USER_FLAGS=%1 %CMDER_USER_FLAGS%" - ) - shift -goto var_loop - -:start -:: Sets CMDER_SHELL, CMDER_CLINK, CMDER_ALIASES -%lib_base% cmder_shell -%lib_console% debug_output init.bat "Env Var - CMDER_ROOT=%CMDER_ROOT%" -%lib_console% debug_output init.bat "Env Var - debug_output=%debug_output%" - -if defined CMDER_USER_CONFIG ( - %lib_console% 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 -) - -if "%CMDER_CLINK%" == "1" ( - %lib_console% verbose_output "Injecting Clink!" - - :: Run clink - if defined CMDER_USER_CONFIG ( - 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.\ - ) - "%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" - 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" - ) -) else ( - %lib_console% verbose_output "WARNING: Incompatible 'ComSpec/Shell' Detetected Skipping Clink Injection!" -) - -:: Prepare for git-for-windows - -:: I do not even know, copypasted from their .bat -set PLINK_PROTOCOL=ssh -if not defined TERM set TERM=cygwin - -:: The idea: -:: * 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 by examining the version string -setlocal enabledelayedexpansion -if defined GIT_INSTALL_ROOT ( - if exist "%GIT_INSTALL_ROOT%\cmd\git.exe" goto :SPECIFIED_GIT -) else if "%fast_init%" == "1" ( - if exist "%CMDER_ROOT%\vendor\git-for-windows\cmd\git.exe" ( - %lib_console% debug_output "Skipping Git Auto-Detect!" - goto :VENDORED_GIT - ) -) - -%lib_console% debug_output init.bat "Looking for Git install root..." - -:: get the version information for vendored git binary -%lib_git% read_version VENDORED "%CMDER_ROOT%\vendor\git-for-windows\cmd" -%lib_git% validate_version VENDORED %GIT_VERSION_VENDORED% - -:: 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 - :: check if there's shim - and if yes follow the path - if exist git.shim ( - for /F "tokens=2 delims== " %%I in (git.shim) do ( - pushd %%~dpI - set "test_dir=!CD!" - popd - ) - ) else ( - set "test_dir=!CD!" - ) - popd - - :: get the version information for the user provided git binary - %lib_git% read_version USER "!test_dir!" - %lib_git% validate_version USER !GIT_VERSION_USER! - - if !errorlevel! geq 0 ( - :: compare the user git version against the vendored version - %lib_git% 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 ( - - :: 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" - %lib_console% debug_output "Using vendored Git from '!GIT_INSTALL_ROOT!..." - goto :CONFIGURE_GIT -) else ( - goto :NO_GIT -) - -:SPECIFIED_GIT -%lib_console% debug_output "Using /GIT_INSTALL_ROOT from '%GIT_INSTALL_ROOT%..." -goto :CONFIGURE_GIT - -:FOUND_GIT -%lib_console% debug_output "Using found Git from '%GIT_INSTALL_ROOT%..." -goto :CONFIGURE_GIT - -:CONFIGURE_GIT -:: 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 - if "%prefer_windows_commands%" == "1" ( - echo PREFERRING WINDOWS COMMANDS - set "path_position=append" - ) else ( - echo PREFERRING UNIX COMMANDS - set "path_position=" - ) - - if exist "!GIT_INSTALL_ROOT!\cmd\git.exe" %lib_path% enhance_path "!GIT_INSTALL_ROOT!\cmd" !path_position! - if exist "!GIT_INSTALL_ROOT!\mingw32" ( - %lib_path% enhance_path "!GIT_INSTALL_ROOT!\mingw32\bin" !path_position! - ) else if exist "!GIT_INSTALL_ROOT!\mingw64" ( - %lib_path% enhance_path "!GIT_INSTALL_ROOT!\mingw64\bin" !path_position! - ) - %lib_path% enhance_path "!GIT_INSTALL_ROOT!\usr\bin" !path_position! - :: 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" -<<<<<<< HEAD - - for /F "delims=" %%F in ('%GIT_INSTALL_ROOT%\usr\bin\env /usr/bin/locale -uU 2') do ( - set "LANG=%%F" -======= - - if not defined LANG ( - :: Find locale.exe: From the git install root, from the path, using the git installed env, or fallback using the env from the path. - if not defined git_locale if exist "!GIT_INSTALL_ROOT!\usr\bin\locale.exe" set git_locale="!GIT_INSTALL_ROOT!\usr\bin\locale.exe" - if not defined git_locale for /F "delims=" %%F in ('where locale.exe 2^>nul') do (if not defined git_locale set git_locale="%%F") - if not defined git_locale if exist "!GIT_INSTALL_ROOT!\usr\bin\env.exe" set git_locale="!GIT_INSTALL_ROOT!\usr\bin\env.exe" /usr/bin/locale - if not defined git_locale set git_locale=env /usr/bin/locale - for /F "delims=" %%F in ('!git_locale! -uU 2') do ( - set "LANG=%%F" - ) ->>>>>>> 3163d6d1c3b8b027390f35fa618cfab37d73a865 - ) -) - -endlocal & set "PATH=%PATH%" & set "LANG=%LANG%" & set "SVN_SSH=%SVN_SSH%" & set "GIT_INSTALL_ROOT=%GIT_INSTALL_ROOT%" -%lib_console% debug_output init.bat "Env Var - GIT_INSTALL_ROOT=%GIT_INSTALL_ROOT%" -%lib_console% debug_output init.bat "Found Git in: '%GIT_INSTALL_ROOT%'" -goto :PATH_ENHANCE - -:NO_GIT -:: Skip this if GIT WAS FOUND else we did 'endlocal' above! -endlocal - -:PATH_ENHANCE -%lib_path% enhance_path "%CMDER_ROOT%\vendor\bin" -%lib_path% enhance_path_recursive "%CMDER_ROOT%\bin" %max_depth% -if defined CMDER_USER_BIN ( - %lib_path% enhance_path_recursive "%CMDER_USER_BIN%" %max_depth% -) -%lib_path% enhance_path "%CMDER_ROOT%" append - -:: Drop *.bat and *.cmd files into "%CMDER_ROOT%\config\profile.d" -:: to run them at startup. -%lib_profile% run_profile_d "%CMDER_ROOT%\config\profile.d" -if defined CMDER_USER_CONFIG ( - %lib_profile% run_profile_d "%CMDER_USER_CONFIG%\profile.d" -) - -:: 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. -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" - ) -) - -if "%CMDER_ALIASES%" == "1" ( - REM The aliases environment variable is used by alias.bat to id - REM the default file to store new aliases in. - if not defined aliases ( - set "aliases=%user_aliases%" - ) - - REM Make sure we have a self-extracting user_aliases.cmd file - setlocal enabledelayedexpansion - if not exist "%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%" | %WINDIR%\System32\findstr /i ";= Add aliases below here" >nul - if "!errorlevel!" == "1" ( - 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%" - ) - ) - ) - - :: Update old 'user_aliases' to new self executing 'user_aliases.cmd' - if exist "%CMDER_ROOT%\config\aliases" ( - echo Updating old "%CMDER_ROOT%\config\aliases" to new format... - type "%CMDER_ROOT%\config\aliases" >> "%user_aliases%" - del "%CMDER_ROOT%\config\aliases" - ) else if exist "%user_aliases%.old_format" ( - echo Updating old "%user_aliases%" to new format... - 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 "%GIT_INSTALL_ROOT%\post-install.bat" ( - %lib_console% verbose_output "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 - popd -) - -:: Set home path -if not defined HOME set "HOME=%USERPROFILE%" -%lib_console% debug_output init.bat "Env Var - HOME=%HOME%" - -set "initialConfig=%CMDER_ROOT%\config\user_profile.cmd" -if exist "%CMDER_ROOT%\config\user_profile.cmd" ( - REM Create this file and place your own command in there - %lib_console% debug_output init.bat "Calling - %CMDER_ROOT%\config\user_profile.cmd" - call "%CMDER_ROOT%\config\user_profile.cmd" -) - -if defined CMDER_USER_CONFIG ( - set "initialConfig=%CMDER_USER_CONFIG%\user_profile.cmd" - if exist "%CMDER_USER_CONFIG%\user_profile.cmd" ( - REM Create this file and place your own command in there - %lib_console% debug_output init.bat "Calling - %CMDER_USER_CONFIG%\user_profile.cmd - call "%CMDER_USER_CONFIG%\user_profile.cmd" - ) -) - -if not exist "%initialConfig%" ( - echo Creating user startup file: "%initialConfig%" - ( -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 the 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 :: arguments in this batch are passed from init.bat, you can quickly parse them like so: -echo :: more useage can be seen by typing "cexec /?" -echo. -echo :: %%ccall%% "/customOption" "command/program" -echo. -echo @echo off -) >"%initialConfig%" -) - -if "%CMDER_ALIASES%" == "1" if exist "%CMDER_ROOT%\bin\alias.bat" if exist "%CMDER_ROOT%\vendor\bin\alias.cmd" ( - echo Cmder's 'alias' command has been moved into "%CMDER_ROOT%\vendor\bin\alias.cmd" - echo to get rid of this message either: - echo. - echo Delete the file "%CMDER_ROOT%\bin\alias.bat" - echo. - echo or - echo. - echo If you have customized it and want to continue using it instead of the included version - echo * Rename "%CMDER_ROOT%\bin\alias.bat" to "%CMDER_ROOT%\bin\alias.cmd". - echo * Search for 'user-aliases' and replace it with 'user_aliases'. -) - -set initialConfig= -set CMDER_CONFIGURED=1 - -set CMDER_INIT_END=%time% - -if %time_init% gtr 0 ( - "%cmder_root%\vendor\bin\timer.cmd" %CMDER_INIT_START% %CMDER_INIT_END% -) -exit /b From 8ac540ebb6b58426f78d831bad284bc1f33c47c5 Mon Sep 17 00:00:00 2001 From: "Dax T. Games" Date: Sun, 2 Dec 2018 11:51:00 -0500 Subject: [PATCH 282/306] debug --- vendor/init.bat | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/vendor/init.bat b/vendor/init.bat index bac8cf2..81ce792 100644 --- a/vendor/init.bat +++ b/vendor/init.bat @@ -238,10 +238,10 @@ goto :CONFIGURE_GIT if defined GIT_INSTALL_ROOT ( rem add the unix commands at the end to not shadow windows commands like more if "%prefer_windows_commands%" == "1" ( - echo PREFERRING WINDOWS COMMANDS + %lib_console% debug_output init.bat "Preferring Windows commands" set "path_position=append" ) else ( - echo PREFERRING UNIX COMMANDS + %lib_console% debug_output init.bat "Preferring *nix commands" set "path_position=" ) From f9f06a55954c1944d8c58909f02ae74ea5969449 Mon Sep 17 00:00:00 2001 From: Cody Ray Hoeft Date: Fri, 7 Dec 2018 21:05:51 -0800 Subject: [PATCH 283/306] make /register work with /single --- launcher/src/CmderLauncher.cpp | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/launcher/src/CmderLauncher.cpp b/launcher/src/CmderLauncher.cpp index 6c281e5..d9e17c9 100644 --- a/launcher/src/CmderLauncher.cpp +++ b/launcher/src/CmderLauncher.cpp @@ -452,7 +452,7 @@ HKEY GetRootKey(std::wstring opt) return root; } -void RegisterShellMenu(std::wstring opt, wchar_t* keyBaseName, std::wstring cfgRoot = L"") +void RegisterShellMenu(std::wstring opt, wchar_t* keyBaseName, std::wstring cfgRoot, bool single) { wchar_t userConfigDirPath[MAX_PATH] = { 0 }; @@ -464,15 +464,22 @@ void RegisterShellMenu(std::wstring opt, wchar_t* keyBaseName, std::wstring cfgR GetModuleFileName(NULL, exePath, sizeof(exePath)); wchar_t commandStr[MAX_PATH + 20] = { 0 }; + wchar_t baseCommandStr[MAX_PATH + 20] = { 0 }; + if (!single) { + swprintf_s(baseCommandStr, L"\"%s\"", exePath); + } + else { + swprintf_s(baseCommandStr, L"\"%s\" /single", exePath); + } if (cfgRoot.length() == 0) // '/c [path]' was NOT specified { - swprintf_s(commandStr, L"\"%s\" \"%%V\"", exePath); + swprintf_s(commandStr, L"%s \"%%V\"", baseCommandStr); } else { std::copy(cfgRoot.begin(), cfgRoot.end(), userConfigDirPath); userConfigDirPath[cfgRoot.length()] = 0; - swprintf_s(commandStr, L"\"%s\" /c \"%s\" \"%%V\"", exePath, userConfigDirPath); + swprintf_s(commandStr, L"%s /c \"%s\" \"%%V\"", baseCommandStr, userConfigDirPath); } // Now that we have `commandStr`, it's OK to change `exePath`... @@ -656,8 +663,8 @@ int APIENTRY _tWinMain(_In_ HINSTANCE hInstance, if (cmderOptions.registerApp == true) { - RegisterShellMenu(cmderOptions.cmderRegScope, SHELL_MENU_REGISTRY_PATH_BACKGROUND, cmderOptions.cmderCfgRoot); - RegisterShellMenu(cmderOptions.cmderRegScope, SHELL_MENU_REGISTRY_PATH_LISTITEM, cmderOptions.cmderCfgRoot); + RegisterShellMenu(cmderOptions.cmderRegScope, SHELL_MENU_REGISTRY_PATH_BACKGROUND, cmderOptions.cmderCfgRoot, cmderOptions.cmderSingle); + RegisterShellMenu(cmderOptions.cmderRegScope, SHELL_MENU_REGISTRY_PATH_LISTITEM, cmderOptions.cmderCfgRoot, cmderOptions.cmderSingle); } else if (cmderOptions.unRegisterApp == true) { From 20eb7b8e815a907a30c3294b7a62e1b212a5e3e7 Mon Sep 17 00:00:00 2001 From: Patrick Stewart Date: Mon, 3 Dec 2018 15:30:54 +0000 Subject: [PATCH 284/306] Add /nix_tools switch to init.bat to optionally add !GIT_INSTALL_ROOT!\usr\bin to PATH --- vendor/init.bat | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/vendor/init.bat b/vendor/init.bat index af79340..7430bcd 100644 --- a/vendor/init.bat +++ b/vendor/init.bat @@ -14,6 +14,8 @@ set debug_output=0 set time_init=0 set fast_init=0 set max_depth=1 +:: Add *nix tools to end of path. 0 turns off *nix tools. +set nix_tools=1 set "CMDER_USER_FLAGS= " :: Find root dir @@ -79,6 +81,16 @@ call "%cmder_root%\vendor\lib\lib_profile" %lib_console% show_error "The Git install root folder "%~2", you specified does not exist!" exit /b ) + ) else if /i "%1"=="/nix_tools" ( + if "%2" equ "0" ( + REM Do not add *nix tools to path + set nix_tools=0 + shift + ) else if "%2" equ "1" ( + REM Add *nix tools to end of path + set nix_tools=1 + shift + ) ) else if /i "%1" == "/home" ( if exist "%~2" ( set "HOME=%~2" @@ -239,7 +251,9 @@ if defined GIT_INSTALL_ROOT ( ) else if exist "!GIT_INSTALL_ROOT!\mingw64" ( %lib_path% enhance_path "!GIT_INSTALL_ROOT!\mingw64\bin" append ) - %lib_path% enhance_path "!GIT_INSTALL_ROOT!\usr\bin" append + if %nix_tools% equ 1 ( + %lib_path% 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" From 0c9e0e2f8c3c5864cdf547a3401c8518cd06a3dc Mon Sep 17 00:00:00 2001 From: Cody Ray Hoeft Date: Thu, 13 Dec 2018 12:13:17 -0800 Subject: [PATCH 285/306] Use default files for default user profiles --- config/Readme.md | 5 ++- vendor/cmder.sh | 7 +--- vendor/cmder_exinit | 7 +--- vendor/init.bat | 30 +++------------ vendor/profile.ps1 | 37 +------------------ ...s.cmd.example => user_aliases.cmd.default} | 0 vendor/user_profile.cmd.default | 19 ++++++++++ vendor/user_profile.ps1.default | 25 +++++++++++++ vendor/user_profile.sh.default | 32 ++++++++++++++++ 9 files changed, 88 insertions(+), 74 deletions(-) rename vendor/{user_aliases.cmd.example => user_aliases.cmd.default} (100%) create mode 100644 vendor/user_profile.cmd.default create mode 100644 vendor/user_profile.ps1.default create mode 100644 vendor/user_profile.sh.default diff --git a/config/Readme.md b/config/Readme.md index 5a72301..d123efc 100644 --- a/config/Readme.md +++ b/config/Readme.md @@ -4,11 +4,12 @@ All config files must be in this folder. If there is no option to set this folde directly, it has to be hardlinked. * `user-aliases.cmd`: aliases in cmd; called from vendor\init.bat; autocreated from - `vendor\user-aliases.cmd.example`. + `vendor\user-aliases.cmd.default`. * `*.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. + respective startup scripts in `vendor\`; autocreated from + `vendor\user-profile.{sh|cmd|ps1}.default` 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. diff --git a/vendor/cmder.sh b/vendor/cmder.sh index a0ab173..7ccddcf 100644 --- a/vendor/cmder.sh +++ b/vendor/cmder.sh @@ -90,12 +90,7 @@ fi if [ ! -f "${CmderUserProfilePath}" ] ; then echo Creating user startup file: "${CmderUserProfilePath}" - cat <<-eof >"${CmderUserProfilePath}" -# use this file to run your own startup commands for msys2 bash' - -# To add a new vendor to the path, do something like: -# export PATH=\${CMDER_ROOT}/vendor/whatever:\${PATH} -eof + cp "${CMDER_ROOT}/vendor/user_profile.sh.default" "${CmderUserProfilePath}" fi # Source the users .bashrc file if it exists diff --git a/vendor/cmder_exinit b/vendor/cmder_exinit index bab6f20..095a1e9 100644 --- a/vendor/cmder_exinit +++ b/vendor/cmder_exinit @@ -108,11 +108,6 @@ if [ ! "$CMDER_ROOT" = "" ] ; then if [ ! -f "${CmderUserProfilePath}" ] ; then echo Creating user startup file: "${CmderUserProfilePath}" - cat <<-eof >"${CmderUserProfilePath}" -# use this file to run your own startup commands for msys2 bash' - -# To add a new vendor to the path, do something like: -# export PATH=\${CMDER_ROOT}/vendor/whatever:\${PATH} -eof + cp "${CMDER_ROOT}/vendor/user_profile.sh.default" "${CmderUserProfilePath}" fi fi diff --git a/vendor/init.bat b/vendor/init.bat index af79340..2b78aa3 100644 --- a/vendor/init.bat +++ b/vendor/init.bat @@ -284,7 +284,7 @@ if defined CMDER_USER_CONFIG ( :: 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', +:: must also be self executing, see '.\user_aliases.cmd.default', :: and be in profile.d folder. if not defined user_aliases ( if defined CMDER_USER_CONFIG ( @@ -305,17 +305,17 @@ if "%CMDER_ALIASES%" == "1" ( setlocal enabledelayedexpansion if not exist "%user_aliases%" ( echo Creating initial user_aliases store in "%user_aliases%"... - copy "%CMDER_ROOT%\vendor\user_aliases.cmd.example" "%user_aliases%" + copy "%CMDER_ROOT%\vendor\user_aliases.cmd.default" "%user_aliases%" ) else ( type "%user_aliases%" | %WINDIR%\System32\findstr /i ";= Add aliases below here" >nul if "!errorlevel!" == "1" ( 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%" + copy "%CMDER_ROOT%\vendor\user_aliases.cmd.default" "%user_aliases%" ) else ( copy "%user_aliases%" "%user_aliases%.old_format" - copy "%CMDER_ROOT%\vendor\user_aliases.cmd.example" "%user_aliases%" + copy "%CMDER_ROOT%\vendor\user_aliases.cmd.default" "%user_aliases%" ) ) ) @@ -368,27 +368,7 @@ if defined CMDER_USER_CONFIG ( if not exist "%initialConfig%" ( echo Creating user startup file: "%initialConfig%" - ( -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 the 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 :: arguments in this batch are passed from init.bat, you can quickly parse them like so: -echo :: more useage can be seen by typing "cexec /?" -echo. -echo :: %%ccall%% "/customOption" "command/program" -echo. -echo @echo off -) >"%initialConfig%" + copy "%CMDER_ROOT%\vendor\user_profile.cmd.default" "%initialConfig%" ) if "%CMDER_ALIASES%" == "1" if exist "%CMDER_ROOT%\bin\alias.bat" if exist "%CMDER_ROOT%\vendor\bin\alias.cmd" ( diff --git a/vendor/profile.ps1 b/vendor/profile.ps1 index 159ebe2..73fde18 100644 --- a/vendor/profile.ps1 +++ b/vendor/profile.ps1 @@ -181,41 +181,8 @@ if ($ENV:CMDER_USER_CONFIG) { } if (! (Test-Path $CmderUserProfilePath) ) { -# 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 - - λ -.EXAMPLE - N:\Documents\src\cmder [master] - λ | -#> - -[ScriptBlock]$PrePrompt = { - -} - -# Replace the cmder prompt entirely with this. -# [ScriptBlock]$CmderPrompt = {} - -[ScriptBlock]$PostPrompt = { - -} - -## - - -'@ - -New-Item -ItemType File -Path $CmderUserProfilePath -Value $UserProfileTemplate > $null - + Write-Host -BackgroundColor Darkgreen -ForegroundColor White "First Run: Creating user startup file: $CmderUserProfilePath" + Copy-Item "$env:CMDER_ROOT\vendor\user_profile.ps1.default" -Destination $CmderUserProfilePath } # Once Created these code blocks cannot be overwritten diff --git a/vendor/user_aliases.cmd.example b/vendor/user_aliases.cmd.default similarity index 100% rename from vendor/user_aliases.cmd.example rename to vendor/user_aliases.cmd.default diff --git a/vendor/user_profile.cmd.default b/vendor/user_profile.cmd.default new file mode 100644 index 0000000..aa5f4f8 --- /dev/null +++ b/vendor/user_profile.cmd.default @@ -0,0 +1,19 @@ +:: use this file to run your own startup commands +:: use in front of the command to prevent printing the command + +:: uncomment this to have the ssh agent load when cmder starts +:: call "%GIT_INSTALL_ROOT%/cmd/start-ssh-agent.cmd" + +:: uncomment the next two lines to use pageant as the ssh authentication agent +:: SET SSH_AUTH_SOCK=/tmp/.ssh-pageant-auth-sock +:: call "%GIT_INSTALL_ROOT%/cmd/start-ssh-pageant.cmd" + +:: you can add your plugins to the cmder path like so +:: set "PATH=%CMDER_ROOT%\vendor\whatever;%PATH%" + +:: arguments in this batch are passed from init.bat, you can quickly parse them like so: +:: more useage can be seen by typing "cexec /?" + +:: %ccall% "/customOption" "command/program" + +@echo off \ No newline at end of file diff --git a/vendor/user_profile.ps1.default b/vendor/user_profile.ps1.default new file mode 100644 index 0000000..b85ebee --- /dev/null +++ b/vendor/user_profile.ps1.default @@ -0,0 +1,25 @@ +# Use this file to run your own startup commands + +## Prompt Customization +<# +.SYNTAX + + λ +.EXAMPLE + N:\Documents\src\cmder [master] + λ | +#> + +[ScriptBlock]$PrePrompt = { + +} + +# Replace the cmder prompt entirely with this. +# [ScriptBlock]$CmderPrompt = {} + +[ScriptBlock]$PostPrompt = { + +} + +## + diff --git a/vendor/user_profile.sh.default b/vendor/user_profile.sh.default new file mode 100644 index 0000000..2e423c0 --- /dev/null +++ b/vendor/user_profile.sh.default @@ -0,0 +1,32 @@ +# use this file to run your own startup commands for msys2 bash' + +# To add a new vendor to the path, do something like: +# export PATH=${CMDER_ROOT}/vendor/whatever:${PATH} + +function launch_ssh_agent { + # Copied from (https://help.github.com/articles/working-with-ssh-key-passphrases) + env=~/.ssh/agent.env + + agent_load_env () { test -f "$env" && . "$env" >| /dev/null ; } + + agent_start () { + (umask 077; ssh-agent >| "$env") + . "$env" >| /dev/null ; } + + agent_load_env + + # agent_run_state: 0=agent running w/ key; 1=agent w/o key; 2= agent not running + agent_run_state=$(ssh-add -l >| /dev/null 2>&1; echo $?) + + if [ ! "$SSH_AUTH_SOCK" ] || [ $agent_run_state = 2 ]; then + agent_start + ssh-add + elif [ "$SSH_AUTH_SOCK" ] && [ $agent_run_state = 1 ]; then + ssh-add + fi + + unset env +} + +# Run ssh-agent automatically when you open your first bash terminal +# launch_ssh_agent \ No newline at end of file From 0f30329e3842f782223b86b113ac30e56cc72497 Mon Sep 17 00:00:00 2001 From: Dax T Games Date: Thu, 13 Dec 2018 21:55:08 -0500 Subject: [PATCH 286/306] Update init.bat --- vendor/init.bat | 3 --- 1 file changed, 3 deletions(-) diff --git a/vendor/init.bat b/vendor/init.bat index 061642f..ed4fbca 100644 --- a/vendor/init.bat +++ b/vendor/init.bat @@ -106,9 +106,6 @@ call "%cmder_root%\vendor\lib\lib_profile" ) else if /i "%1" == "/svn_ssh" ( set SVN_SSH=%2 shift - ) else if /i "%1" == "/prefer_nix" ( - set prefer_windows_commands=0 - shift ) else ( set "CMDER_USER_FLAGS=%1 %CMDER_USER_FLAGS%" ) From 7e1bc4297aae2888df7e7ae551fa57d553b8c069 Mon Sep 17 00:00:00 2001 From: Cody Ray Hoeft Date: Thu, 13 Dec 2018 21:12:18 -0800 Subject: [PATCH 287/306] Move ssh-agent logic to lib script --- vendor/lib/start-ssh-agent.sh | 22 ++++++++++++++++++++++ vendor/user_profile.sh.default | 29 ++--------------------------- 2 files changed, 24 insertions(+), 27 deletions(-) create mode 100644 vendor/lib/start-ssh-agent.sh diff --git a/vendor/lib/start-ssh-agent.sh b/vendor/lib/start-ssh-agent.sh new file mode 100644 index 0000000..a359ae0 --- /dev/null +++ b/vendor/lib/start-ssh-agent.sh @@ -0,0 +1,22 @@ +# Copied from https://help.github.com/articles/working-with-ssh-key-passphrases +env=~/.ssh/agent.env + +agent_load_env () { test -f "$env" && . "$env" >| /dev/null ; } + +agent_start () { + (umask 077; ssh-agent >| "$env") + . "$env" >| /dev/null ; } + +agent_load_env + +# agent_run_state: 0=agent running w/ key; 1=agent w/o key; 2= agent not running +agent_run_state=$(ssh-add -l >| /dev/null 2>&1; echo $?) + +if [ ! "$SSH_AUTH_SOCK" ] || [ $agent_run_state = 2 ]; then + agent_start + ssh-add +elif [ "$SSH_AUTH_SOCK" ] && [ $agent_run_state = 1 ]; then + ssh-add +fi + +unset env \ No newline at end of file diff --git a/vendor/user_profile.sh.default b/vendor/user_profile.sh.default index 2e423c0..4d55ecc 100644 --- a/vendor/user_profile.sh.default +++ b/vendor/user_profile.sh.default @@ -3,30 +3,5 @@ # To add a new vendor to the path, do something like: # export PATH=${CMDER_ROOT}/vendor/whatever:${PATH} -function launch_ssh_agent { - # Copied from (https://help.github.com/articles/working-with-ssh-key-passphrases) - env=~/.ssh/agent.env - - agent_load_env () { test -f "$env" && . "$env" >| /dev/null ; } - - agent_start () { - (umask 077; ssh-agent >| "$env") - . "$env" >| /dev/null ; } - - agent_load_env - - # agent_run_state: 0=agent running w/ key; 1=agent w/o key; 2= agent not running - agent_run_state=$(ssh-add -l >| /dev/null 2>&1; echo $?) - - if [ ! "$SSH_AUTH_SOCK" ] || [ $agent_run_state = 2 ]; then - agent_start - ssh-add - elif [ "$SSH_AUTH_SOCK" ] && [ $agent_run_state = 1 ]; then - ssh-add - fi - - unset env -} - -# Run ssh-agent automatically when you open your first bash terminal -# launch_ssh_agent \ No newline at end of file +# Uncomment this to have the ssh agent load with the first bash terminal +# . "${CMDER_ROOT}/vendor/lib/start-ssh-agent.sh" \ No newline at end of file From 51e75d4bb5a76b05e8b96674405749f00ec296a8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20B=C3=B6hm?= Date: Wed, 19 Dec 2018 21:17:45 +0100 Subject: [PATCH 288/306] add percent escaping for string.gsub (#1991) In `string.gsub()`, the `%` character has special meaning and must be escaped to be treated verbatim, otherwise the "invalid use of '%' in replacement string" warning will show up. This adds a verbatim() function for that purpose. It fixes this warning for situations where `'%` characters are in the current path (cwd), version control branch names, or in the previous `PROMPT` set by the user. --- vendor/clink.lua | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/vendor/clink.lua b/vendor/clink.lua index 3e7c6d7..2530510 100644 --- a/vendor/clink.lua +++ b/vendor/clink.lua @@ -13,6 +13,14 @@ dofile(clink_lua_file) -- now add our own things... +--- +-- Makes a string safe to use as the replacement in string.gsub +--- +local function verbatim(s) + s = string.gsub(s, "%%", "%%%%") + return s +end + --- -- 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 @@ -41,13 +49,12 @@ local function set_prompt_filter() -- color codes: "\x1b[1;37;40m" local cmder_prompt = "\x1b[1;32;40m{cwd} {git}{hg}{svn} \n\x1b[1;39;40m{lamb} \x1b[0m" local lambda = "λ" - cwd = string.gsub(cwd, "%%", "{percent}") - cmder_prompt = string.gsub(cmder_prompt, "{cwd}", cwd) + cmder_prompt = string.gsub(cmder_prompt, "{cwd}", verbatim(cwd)) if env ~= nil then lambda = "("..env..") "..lambda end - clink.prompt.value = string.gsub(cmder_prompt, "{lamb}", lambda) + clink.prompt.value = string.gsub(cmder_prompt, "{lamb}", verbatim(lambda)) end local function percent_prompt_filter() @@ -295,7 +302,7 @@ local function git_prompt_filter() color = colors.conflict end - clink.prompt.value = string.gsub(clink.prompt.value, "{git}", color.."("..branch..")") + clink.prompt.value = string.gsub(clink.prompt.value, "{git}", color.."("..verbatim(branch)..")") return false end end @@ -340,7 +347,7 @@ local function hg_prompt_filter() end end - clink.prompt.value = string.gsub(clink.prompt.value, "{hg}", result) + clink.prompt.value = string.gsub(clink.prompt.value, "{hg}", verbatim(result)) return false end @@ -362,7 +369,7 @@ local function svn_prompt_filter() color = colors.dirty end - clink.prompt.value = string.gsub(clink.prompt.value, "{svn}", color.."("..branch..")") + clink.prompt.value = string.gsub(clink.prompt.value, "{svn}", color.."("..verbatim(branch)..")") return false end end From 4e4f05037442d676428d5417c933c16817d68eaf Mon Sep 17 00:00:00 2001 From: "Dax T. Games" Date: Sat, 22 Dec 2018 15:40:09 -0500 Subject: [PATCH 289/306] fix sshagent call in user_profile.cmd.default --- vendor/user_profile.cmd.default | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/vendor/user_profile.cmd.default b/vendor/user_profile.cmd.default index aa5f4f8..e5966e0 100644 --- a/vendor/user_profile.cmd.default +++ b/vendor/user_profile.cmd.default @@ -2,7 +2,7 @@ :: use in front of the command to prevent printing the command :: uncomment this to have the ssh agent load when cmder starts -:: call "%GIT_INSTALL_ROOT%/cmd/start-ssh-agent.cmd" +:: call "%GIT_INSTALL_ROOT%/cmd/start-ssh-agent.cmd" /k exit :: uncomment the next two lines to use pageant as the ssh authentication agent :: SET SSH_AUTH_SOCK=/tmp/.ssh-pageant-auth-sock @@ -16,4 +16,4 @@ :: %ccall% "/customOption" "command/program" -@echo off \ No newline at end of file +@echo off From e56ed810a0146dfca76dd5ca93c3cf185b5782a3 Mon Sep 17 00:00:00 2001 From: "Dax T. Games" Date: Sat, 22 Dec 2018 16:34:23 -0500 Subject: [PATCH 290/306] Changelog --- CHANGELOG.md | 172 +++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 166 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index aaf7120..e63fd54 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,15 +1,175 @@ # Change Log -## [1.3.6](https://github.com/cmderdev/cmder/tree/v1.3.6) (2018-05-30) -**Updated components:** -* Git updated to v2.17.1.windows.2 -* ConEmu updated to 180528 +## [1.3.11](https://github.com/cmderdev/cmder/tree/v1.3.11) (2018-12-22) -**Updates:** +### Fixes + +* Fix uncommenting `call ssh-agent` in `user_profile.cmd` breaks Cmder prompt. [#1990](https://github.com/cmderdev/cmder/issues/1990), [#1807](https://github.com/cmderdev/cmder/issues/1807), [#1785](https://github.com/cmderdev/cmder/issues/1785), [#1885](https://github.com/cmderdev/cmder/issues/1885) + * Pull Request: [#1995](https://github.com/cmderdev/cmder/issues/1995) fix sshagent call in user_profile.cmd.default +* Unable to use '%' character in git branch names [#1779](https://github.com/cmderdev/cmder/issues/1779) + * Pull Request: [#1991](https://github.com/cmderdev/cmder/issues/1991) add percent escaping for string.gsub +* sort command, unix vs windows (/usr/bin/sort vs sort.exe) [#1931](https://github.com/cmderdev/cmder/issues/1931) + * Pull Request: [#1988](https://github.com/cmderdev/cmder/issues/1988) Prefer /nix_tools option + +### Adds + +* [#1988](https://github.com/cmderdev/cmder/issues/1988) Prefer /nix_tools option +* [#1982](https://github.com/cmderdev/cmder/issues/1982) make /register work with /single +* [#1975](https://github.com/cmderdev/cmder/issues/1975) Add `/nix_tools 0` option to init.bat to prevent adding !GIT_INSTALL_ROOT!\usr\bin to PATH + + +### Changes + +* [#1987](https://github.com/cmderdev/cmder/issues/1987) Use default files for default user profiles + +## [1.3.10](https://github.com/cmderdev/cmder/tree/v1.3.10) (2018-11-30) + +### Fixes + +* Replaces Cmder Release v1.3.9 which has been removed. +* /c now completely separates user config including Conemu configuration. This enables true multi-user Cmder with no configuration collisions. See PR #1949. +* Fix #1959 Start cmder "find" errors. See PR #1961. +* Fix #1956 Git detection should use env from git install root. See PR #1969 + +### Adds + +* /m initially creates %cmder_root%/config/conemu-%computername%.xml for users that want per computer Conemu configuration with shared init scripts. See PR #1949. +* /register now recognizes /c [path] and creates an appropriate Cmder Here shell context menu. See PR #1949. + +## [1.3.8](https://github.com/cmderdev/cmder/tree/v1.3.8) (2018-11-10) + +### Fixes + +* Fix \vendor\bin\timer.cmd was unexpected at this time. on session start. + +## [1.3.7](https://github.com/cmderdev/cmder/tree/v1.3.7) (2018-11-10) +## Updated components + +* ConEmu to 180626 +* Update Git to 2.19.0 + +## Fixes: * Cmder now opens in the in the current working dir -* TBD + +## Commits +### Aaron Arney (1): + +* Update README + +### Arion Roberto Krause (1): + +* Fixed typo + +### Benjamin Staneck (8): + +* Revert "replace user-aliases with user_aliases" +* replace user-aliases with user_aliases +* better fix for #1265 +* Revert "sanitize dir before assigning to prompt" +* sanitize dir before assigning to prompt +* Update CHANGELOG.md + +### Bob Hood (1): + +* Refactored the Mercurial prompt code to be more efficient. + +### David Refoua (1): + +* fix some spelling issues + +### Dax T Games (30): + +* Revert "Ignore %cmder_root%\config (#1945)" +* Ignore %cmder_root%\config (#1945) +* Add /f for fast init. (#1942) +* add diag helper scripts and adds to the path (#1918) +* Fix #1806 #1675 (#1870) +* Profile.ps1 (#1796) +* Fix lib base (#1794) +* Little Changes +* Fixed move of default conemu.xml to the vendor folder +* ignore all of config folder +* move default comemu.xml to vendor folder +* fixes +* more headers +* init.bat update for cexec +* git prompt yellow +* fix user lua and git detection +* allow conditionally setting environment variables +* added exit codes +* flag_exists.cmd to flag_exec.cmd, also to lib as an option +* fixed +* handle start dir args with trailing " +* cleanup +* '.gitignore' +* verbose output +* cmder_shell settings +* add cmder_shell method +* replace - with \_ in debug-output and verbose-output +* Trying to get tcc working +* move user-aliases.cmd to user_aliases.cmd +* move bin\alias.bat to vendor\bin\alias.cmd +* fix /unregister + +### Dmitri S. Guskov (2): + +* Powershell 5.1 compatibility +* Update profile.ps1 + +### Gregory Lucas (1): + +* Initialize time_init to fix init error message + +### Josef Pihrt (2): + +* Fix typos, remove escaping inside inline code, replace single quote with backtick +* Fix typo and broken link + +### Merlin (1): + +* Remove duplicate Install-Module detection + +### Nicolas Arnaud-Cormos (1): + +* Ensure the right git path is found in case of shim. + +### Thorsten Sommer (1): + +* Fixed spelling + +### gaoslin (1): + +* Update init.bat + +### leochien0102 (1): + +* fix the 'was unexpected at this time.' + +### xiazeyu (4): + +* chore: unite slash +* docs: update to latest useage +* refactor: reduce global varible useage, fixed quote issue, added parameters support +* doc: fix typo + +### xiazeyu_2011 (8): + +* docs: migrated instructions to the wiki pages +* rename /bin/have.bat to /vendor/lib/flag_exists.cmd +* fix: bug when no argument is passed in +* docs: update doc for have.bat +* feat: add have.bat as a wrapper +* Optimize comments of using arguments in user-profile.cmd +* fix conflict with init.bat build-in command parser, update user-profile.cmd +* Pass arguments to user-profile.cmd + +刘祺 (1): + +* add LANG support + +## [1.3.6](https://github.com/cmderdev/cmder/tree/v1.3.6) (2018-05-30) ## [1.3.6-pre2](https://github.com/cmderdev/cmder/tree/v1.3.6-pre2) (2018-03-01) From ccb6cb80e5fc2b85a7f1430f563c08c3d3e3f20e Mon Sep 17 00:00:00 2001 From: "Dax T. Games" Date: Sat, 22 Dec 2018 16:37:28 -0500 Subject: [PATCH 291/306] Changelog --- CHANGELOG.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index e63fd54..0e260cb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -171,6 +171,11 @@ ## [1.3.6](https://github.com/cmderdev/cmder/tree/v1.3.6) (2018-05-30) +**Updated components:** + +* Git updated to v2.17.1.windows.2 +* ConEmu updated to 180528 + ## [1.3.6-pre2](https://github.com/cmderdev/cmder/tree/v1.3.6-pre2) (2018-03-01) **Updated components:** From e822d55aa52da5fbe87eaec1032666b7ad496f0a Mon Sep 17 00:00:00 2001 From: "Dax T. Games" Date: Sat, 22 Dec 2018 16:38:51 -0500 Subject: [PATCH 292/306] Changelog --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0e260cb..7a3c8a2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -176,6 +176,10 @@ * Git updated to v2.17.1.windows.2 * ConEmu updated to 180528 +**Updates:** + + * Cmder now opens in the in the current working dir + ## [1.3.6-pre2](https://github.com/cmderdev/cmder/tree/v1.3.6-pre2) (2018-03-01) **Updated components:** From 88169b8721fe7fbc45e70445b913f25f4c4c7930 Mon Sep 17 00:00:00 2001 From: Dax T Games Date: Sat, 22 Dec 2018 16:55:17 -0500 Subject: [PATCH 293/306] Revert "Update Changelog" --- CHANGELOG.md | 177 ++------------------------------------------------- 1 file changed, 4 insertions(+), 173 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7a3c8a2..aaf7120 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,184 +1,15 @@ # Change Log - -## [1.3.11](https://github.com/cmderdev/cmder/tree/v1.3.11) (2018-12-22) - -### Fixes - -* Fix uncommenting `call ssh-agent` in `user_profile.cmd` breaks Cmder prompt. [#1990](https://github.com/cmderdev/cmder/issues/1990), [#1807](https://github.com/cmderdev/cmder/issues/1807), [#1785](https://github.com/cmderdev/cmder/issues/1785), [#1885](https://github.com/cmderdev/cmder/issues/1885) - * Pull Request: [#1995](https://github.com/cmderdev/cmder/issues/1995) fix sshagent call in user_profile.cmd.default -* Unable to use '%' character in git branch names [#1779](https://github.com/cmderdev/cmder/issues/1779) - * Pull Request: [#1991](https://github.com/cmderdev/cmder/issues/1991) add percent escaping for string.gsub -* sort command, unix vs windows (/usr/bin/sort vs sort.exe) [#1931](https://github.com/cmderdev/cmder/issues/1931) - * Pull Request: [#1988](https://github.com/cmderdev/cmder/issues/1988) Prefer /nix_tools option - -### Adds - -* [#1988](https://github.com/cmderdev/cmder/issues/1988) Prefer /nix_tools option -* [#1982](https://github.com/cmderdev/cmder/issues/1982) make /register work with /single -* [#1975](https://github.com/cmderdev/cmder/issues/1975) Add `/nix_tools 0` option to init.bat to prevent adding !GIT_INSTALL_ROOT!\usr\bin to PATH - - -### Changes - -* [#1987](https://github.com/cmderdev/cmder/issues/1987) Use default files for default user profiles - -## [1.3.10](https://github.com/cmderdev/cmder/tree/v1.3.10) (2018-11-30) - -### Fixes - -* Replaces Cmder Release v1.3.9 which has been removed. -* /c now completely separates user config including Conemu configuration. This enables true multi-user Cmder with no configuration collisions. See PR #1949. -* Fix #1959 Start cmder "find" errors. See PR #1961. -* Fix #1956 Git detection should use env from git install root. See PR #1969 - -### Adds - -* /m initially creates %cmder_root%/config/conemu-%computername%.xml for users that want per computer Conemu configuration with shared init scripts. See PR #1949. -* /register now recognizes /c [path] and creates an appropriate Cmder Here shell context menu. See PR #1949. - -## [1.3.8](https://github.com/cmderdev/cmder/tree/v1.3.8) (2018-11-10) - -### Fixes - -* Fix \vendor\bin\timer.cmd was unexpected at this time. on session start. - -## [1.3.7](https://github.com/cmderdev/cmder/tree/v1.3.7) (2018-11-10) -## Updated components - -* ConEmu to 180626 -* Update Git to 2.19.0 - -## Fixes: - -* Cmder now opens in the in the current working dir - -## Commits -### Aaron Arney (1): - -* Update README - -### Arion Roberto Krause (1): - -* Fixed typo - -### Benjamin Staneck (8): - -* Revert "replace user-aliases with user_aliases" -* replace user-aliases with user_aliases -* better fix for #1265 -* Revert "sanitize dir before assigning to prompt" -* sanitize dir before assigning to prompt -* Update CHANGELOG.md - -### Bob Hood (1): - -* Refactored the Mercurial prompt code to be more efficient. - -### David Refoua (1): - -* fix some spelling issues - -### Dax T Games (30): - -* Revert "Ignore %cmder_root%\config (#1945)" -* Ignore %cmder_root%\config (#1945) -* Add /f for fast init. (#1942) -* add diag helper scripts and adds to the path (#1918) -* Fix #1806 #1675 (#1870) -* Profile.ps1 (#1796) -* Fix lib base (#1794) -* Little Changes -* Fixed move of default conemu.xml to the vendor folder -* ignore all of config folder -* move default comemu.xml to vendor folder -* fixes -* more headers -* init.bat update for cexec -* git prompt yellow -* fix user lua and git detection -* allow conditionally setting environment variables -* added exit codes -* flag_exists.cmd to flag_exec.cmd, also to lib as an option -* fixed -* handle start dir args with trailing " -* cleanup -* '.gitignore' -* verbose output -* cmder_shell settings -* add cmder_shell method -* replace - with \_ in debug-output and verbose-output -* Trying to get tcc working -* move user-aliases.cmd to user_aliases.cmd -* move bin\alias.bat to vendor\bin\alias.cmd -* fix /unregister - -### Dmitri S. Guskov (2): - -* Powershell 5.1 compatibility -* Update profile.ps1 - -### Gregory Lucas (1): - -* Initialize time_init to fix init error message - -### Josef Pihrt (2): - -* Fix typos, remove escaping inside inline code, replace single quote with backtick -* Fix typo and broken link - -### Merlin (1): - -* Remove duplicate Install-Module detection - -### Nicolas Arnaud-Cormos (1): - -* Ensure the right git path is found in case of shim. - -### Thorsten Sommer (1): - -* Fixed spelling - -### gaoslin (1): - -* Update init.bat - -### leochien0102 (1): - -* fix the 'was unexpected at this time.' - -### xiazeyu (4): - -* chore: unite slash -* docs: update to latest useage -* refactor: reduce global varible useage, fixed quote issue, added parameters support -* doc: fix typo - -### xiazeyu_2011 (8): - -* docs: migrated instructions to the wiki pages -* rename /bin/have.bat to /vendor/lib/flag_exists.cmd -* fix: bug when no argument is passed in -* docs: update doc for have.bat -* feat: add have.bat as a wrapper -* Optimize comments of using arguments in user-profile.cmd -* fix conflict with init.bat build-in command parser, update user-profile.cmd -* Pass arguments to user-profile.cmd - -刘祺 (1): - -* add LANG support - ## [1.3.6](https://github.com/cmderdev/cmder/tree/v1.3.6) (2018-05-30) - **Updated components:** * Git updated to v2.17.1.windows.2 * ConEmu updated to 180528 -**Updates:** - - * Cmder now opens in the in the current working dir +**Updates:** + +* Cmder now opens in the in the current working dir +* TBD ## [1.3.6-pre2](https://github.com/cmderdev/cmder/tree/v1.3.6-pre2) (2018-03-01) From 4f2ced57df27f29cbc2013d88a3532f96be68031 Mon Sep 17 00:00:00 2001 From: Dax T Games Date: Sat, 22 Dec 2018 16:55:56 -0500 Subject: [PATCH 294/306] Revert "fix sshagent call in user_profile.cmd.default" --- vendor/user_profile.cmd.default | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/vendor/user_profile.cmd.default b/vendor/user_profile.cmd.default index e5966e0..aa5f4f8 100644 --- a/vendor/user_profile.cmd.default +++ b/vendor/user_profile.cmd.default @@ -2,7 +2,7 @@ :: use in front of the command to prevent printing the command :: uncomment this to have the ssh agent load when cmder starts -:: call "%GIT_INSTALL_ROOT%/cmd/start-ssh-agent.cmd" /k exit +:: call "%GIT_INSTALL_ROOT%/cmd/start-ssh-agent.cmd" :: uncomment the next two lines to use pageant as the ssh authentication agent :: SET SSH_AUTH_SOCK=/tmp/.ssh-pageant-auth-sock @@ -16,4 +16,4 @@ :: %ccall% "/customOption" "command/program" -@echo off +@echo off \ No newline at end of file From 9a47bce6ac3b4bc52342830c8d128288ddabe8f8 Mon Sep 17 00:00:00 2001 From: "Dax T. Games" Date: Sat, 22 Dec 2018 17:05:08 -0500 Subject: [PATCH 295/306] fix ssh-agent in user_profile.cmd.default --- CHANGELOG.md | 168 ++++++++++++++++++++++++++++++++ vendor/user_profile.cmd.default | 4 +- 2 files changed, 170 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index aaf7120..93d6bbb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,173 @@ # Change Log +## [1.3.11](https://github.com/cmderdev/cmder/tree/v1.3.11) (2018-12-22) + +### Fixes + +* Fix uncommenting `call ssh-agent` in `user_profile.cmd` breaks Cmder prompt. [#1990](https://github.com/cmderdev/cmder/issues/1990), [#1807](https://github.com/cmderdev/cmder/issues/1807), [#1785](https://github.com/cmderdev/cmder/issues/1785), [#1885](https://github.com/cmderdev/cmder/issues/1885) + * Pull Request: [#1995](https://github.com/cmderdev/cmder/issues/1995) fix sshagent call in user_profile.cmd.default +* Unable to use '%' character in git branch names [#1779](https://github.com/cmderdev/cmder/issues/1779) + * Pull Request: [#1991](https://github.com/cmderdev/cmder/issues/1991) add percent escaping for string.gsub +* sort command, unix vs windows (/usr/bin/sort vs sort.exe) [#1931](https://github.com/cmderdev/cmder/issues/1931) + * Pull Request: [#1988](https://github.com/cmderdev/cmder/issues/1988) Prefer /nix_tools option + +### Adds + +* [#1988](https://github.com/cmderdev/cmder/issues/1988) Prefer /nix_tools option +* [#1982](https://github.com/cmderdev/cmder/issues/1982) make /register work with /single +* [#1975](https://github.com/cmderdev/cmder/issues/1975) Add `/nix_tools 0` option to init.bat to prevent adding !GIT_INSTALL_ROOT!\usr\bin to PATH + + +### Changes + +* [#1987](https://github.com/cmderdev/cmder/issues/1987) Use default files for default user profiles + +## [1.3.10](https://github.com/cmderdev/cmder/tree/v1.3.10) (2018-11-30) + +### Fixes + +* Replaces Cmder Release v1.3.9 which has been removed. +* /c now completely separates user config including Conemu configuration. This enables true multi-user Cmder with no configuration collisions. See PR #1949. +* Fix #1959 Start cmder "find" errors. See PR #1961. +* Fix #1956 Git detection should use env from git install root. See PR #1969 + +### Adds + +* /m initially creates %cmder_root%/config/conemu-%computername%.xml for users that want per computer Conemu configuration with shared init scripts. See PR #1949. +* /register now recognizes /c [path] and creates an appropriate Cmder Here shell context menu. See PR #1949. + +## [1.3.8](https://github.com/cmderdev/cmder/tree/v1.3.8) (2018-11-10) + +### Fixes + +* Fix \vendor\bin\timer.cmd was unexpected at this time. on session start. + +## [1.3.7](https://github.com/cmderdev/cmder/tree/v1.3.7) (2018-11-10) +## Updated components + +* ConEmu to 180626 +* Update Git to 2.19.0 + +## Fixes: + +* Cmder now opens in the in the current working dir + +## Commits +### Aaron Arney (1): + +* Update README + +### Arion Roberto Krause (1): + +* Fixed typo + +### Benjamin Staneck (8): + +* Revert "replace user-aliases with user_aliases" +* replace user-aliases with user_aliases +* better fix for #1265 +* Revert "sanitize dir before assigning to prompt" +* sanitize dir before assigning to prompt +* Update CHANGELOG.md + +### Bob Hood (1): + +* Refactored the Mercurial prompt code to be more efficient. + +### David Refoua (1): + +* fix some spelling issues + +### Dax T Games (30): + +* Revert "Ignore %cmder_root%\config (#1945)" +* Ignore %cmder_root%\config (#1945) +* Add /f for fast init. (#1942) +* add diag helper scripts and adds to the path (#1918) +* Fix #1806 #1675 (#1870) +* Profile.ps1 (#1796) +* Fix lib base (#1794) +* Little Changes +* Fixed move of default conemu.xml to the vendor folder +* ignore all of config folder +* move default comemu.xml to vendor folder +* fixes +* more headers +* init.bat update for cexec +* git prompt yellow +* fix user lua and git detection +* allow conditionally setting environment variables +* added exit codes +* flag_exists.cmd to flag_exec.cmd, also to lib as an option +* fixed +* handle start dir args with trailing " +* cleanup +* '.gitignore' +* verbose output +* cmder_shell settings +* add cmder_shell method +* replace - with \_ in debug-output and verbose-output +* Trying to get tcc working +* move user-aliases.cmd to user_aliases.cmd +* move bin\alias.bat to vendor\bin\alias.cmd +* fix /unregister + +### Dmitri S. Guskov (2): + +* Powershell 5.1 compatibility +* Update profile.ps1 + +### Gregory Lucas (1): + +* Initialize time_init to fix init error message + +### Josef Pihrt (2): + +* Fix typos, remove escaping inside inline code, replace single quote with backtick +* Fix typo and broken link + +### Merlin (1): + +* Remove duplicate Install-Module detection + +### Nicolas Arnaud-Cormos (1): + +* Ensure the right git path is found in case of shim. + +### Thorsten Sommer (1): + +* Fixed spelling + +### gaoslin (1): + +* Update init.bat + +### leochien0102 (1): + +* fix the 'was unexpected at this time.' + +### xiazeyu (4): + +* chore: unite slash +* docs: update to latest useage +* refactor: reduce global varible useage, fixed quote issue, added parameters support +* doc: fix typo + +### xiazeyu_2011 (8): + +* docs: migrated instructions to the wiki pages +* rename /bin/have.bat to /vendor/lib/flag_exists.cmd +* fix: bug when no argument is passed in +* docs: update doc for have.bat +* feat: add have.bat as a wrapper +* Optimize comments of using arguments in user-profile.cmd +* fix conflict with init.bat build-in command parser, update user-profile.cmd +* Pass arguments to user-profile.cmd + +刘祺 (1): + +* add LANG support + ## [1.3.6](https://github.com/cmderdev/cmder/tree/v1.3.6) (2018-05-30) **Updated components:** diff --git a/vendor/user_profile.cmd.default b/vendor/user_profile.cmd.default index aa5f4f8..e5966e0 100644 --- a/vendor/user_profile.cmd.default +++ b/vendor/user_profile.cmd.default @@ -2,7 +2,7 @@ :: use in front of the command to prevent printing the command :: uncomment this to have the ssh agent load when cmder starts -:: call "%GIT_INSTALL_ROOT%/cmd/start-ssh-agent.cmd" +:: call "%GIT_INSTALL_ROOT%/cmd/start-ssh-agent.cmd" /k exit :: uncomment the next two lines to use pageant as the ssh authentication agent :: SET SSH_AUTH_SOCK=/tmp/.ssh-pageant-auth-sock @@ -16,4 +16,4 @@ :: %ccall% "/customOption" "command/program" -@echo off \ No newline at end of file +@echo off From 46bde1af8b6206e61b0b3f828d8742a75ec842fb Mon Sep 17 00:00:00 2001 From: "Dax T. Games" Date: Sat, 22 Dec 2018 17:07:31 -0500 Subject: [PATCH 296/306] fix ssh-agent in user_profile.cmd.default --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 93d6bbb..a66ff3b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,7 +5,7 @@ ### Fixes * Fix uncommenting `call ssh-agent` in `user_profile.cmd` breaks Cmder prompt. [#1990](https://github.com/cmderdev/cmder/issues/1990), [#1807](https://github.com/cmderdev/cmder/issues/1807), [#1785](https://github.com/cmderdev/cmder/issues/1785), [#1885](https://github.com/cmderdev/cmder/issues/1885) - * Pull Request: [#1995](https://github.com/cmderdev/cmder/issues/1995) fix sshagent call in user_profile.cmd.default + * Pull Request: [#1999](https://github.com/cmderdev/cmder/issues/1999) fix ssh-agent call in user_profile.cmd.default * Unable to use '%' character in git branch names [#1779](https://github.com/cmderdev/cmder/issues/1779) * Pull Request: [#1991](https://github.com/cmderdev/cmder/issues/1991) add percent escaping for string.gsub * sort command, unix vs windows (/usr/bin/sort vs sort.exe) [#1931](https://github.com/cmderdev/cmder/issues/1931) From 5a48e568a80a1977ffb0ffbda98c2393a7b7fb4c Mon Sep 17 00:00:00 2001 From: b0bh00d Date: Tue, 1 Jan 2019 11:17:53 -0700 Subject: [PATCH 297/306] Updated the HG prompt code to use the '-ib' option to 'hg id' to always have the branch name available. --- vendor/clink.lua | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/vendor/clink.lua b/vendor/clink.lua index 2530510..a949b55 100644 --- a/vendor/clink.lua +++ b/vendor/clink.lua @@ -324,15 +324,19 @@ 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") + -- 'hg id -ib' gives us BOTH the branch name AND an indicator that there + -- are uncommitted changes, in one fast(er) call compared to "hg status" + local pipe = io.popen("hg id -ib 2>&1") local output = pipe:read('*all') local rc = { pipe:close() } + -- strip the trailing newline from the branch name + local n = #output + while n > 0 and output:find("^%s", n) do n = n - 1 end + output = output:sub(1, n) + 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 local color = colors.clean -- split elements on space delimiter @@ -342,8 +346,12 @@ local function hg_prompt_filter() 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) + -- substitute the branch in directly + if items[2] ~= nil then + result = color .. "(" .. items[2] .. ")" + else + result = color .. "*" + end end end From 961f38a399fdc54e5fd3294541b73669b027ec41 Mon Sep 17 00:00:00 2001 From: Bob Hood Date: Sat, 5 Jan 2019 11:56:30 -0700 Subject: [PATCH 298/306] 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. --- vendor/clink.lua | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/vendor/clink.lua b/vendor/clink.lua index 2530510..a949b55 100644 --- a/vendor/clink.lua +++ b/vendor/clink.lua @@ -324,15 +324,19 @@ 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") + -- 'hg id -ib' gives us BOTH the branch name AND an indicator that there + -- are uncommitted changes, in one fast(er) call compared to "hg status" + local pipe = io.popen("hg id -ib 2>&1") local output = pipe:read('*all') local rc = { pipe:close() } + -- strip the trailing newline from the branch name + local n = #output + while n > 0 and output:find("^%s", n) do n = n - 1 end + output = output:sub(1, n) + 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 local color = colors.clean -- split elements on space delimiter @@ -342,8 +346,12 @@ local function hg_prompt_filter() 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) + -- substitute the branch in directly + if items[2] ~= nil then + result = color .. "(" .. items[2] .. ")" + else + result = color .. "*" + end end end From 89499f2a6068980256ca1132714407fdbcdc282a Mon Sep 17 00:00:00 2001 From: b0bh00d Date: Sun, 20 Jan 2019 21:02:31 -0700 Subject: [PATCH 299/306] Replaced the 'hg -id' command with the 'hg branch' and 'hg status' pair for improved response times. --- vendor/clink.lua | 32 ++++++++++++-------------------- 1 file changed, 12 insertions(+), 20 deletions(-) diff --git a/vendor/clink.lua b/vendor/clink.lua index a949b55..d5f6876 100644 --- a/vendor/clink.lua +++ b/vendor/clink.lua @@ -324,34 +324,26 @@ local function hg_prompt_filter() dirty = "\x1b[31;1m", } - -- 'hg id -ib' gives us BOTH the branch name AND an indicator that there - -- are uncommitted changes, in one fast(er) call compared to "hg status" - local pipe = io.popen("hg id -ib 2>&1") + local pipe = io.popen("hg branch 2>&1") local output = pipe:read('*all') local rc = { pipe:close() } -- strip the trailing newline from the branch name local n = #output while n > 0 and output:find("^%s", n) do n = n - 1 end - output = output:sub(1, n) + local branch = output:sub(1, n) - if output ~= nil and - string.sub(output,1,7) ~= "abort: " and -- not an HG working copy - (not string.find(output, "is not recognized")) then -- 'hg' not in path + 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 - if items[2] ~= nil then - result = color .. "(" .. items[2] .. ")" - else - result = color .. "*" - end + + 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 From 06e6c63b7fcf36e90bef4fcd51eb8b9092ec44cc Mon Sep 17 00:00:00 2001 From: Dax T Games Date: Mon, 18 Feb 2019 11:41:11 -0500 Subject: [PATCH 300/306] Update README.md --- README.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 3a91106..d624972 100644 --- a/README.md +++ b/README.md @@ -312,11 +312,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 +325,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`. From 20d55c1469d39cd034c6210050f69dd9d69e717d Mon Sep 17 00:00:00 2001 From: "Dax T. Games" Date: Thu, 28 Feb 2019 17:37:45 -0500 Subject: [PATCH 301/306] all clink disable by setting CMDER_CLINK=0 befor starting task --- vendor/lib/lib_base.cmd | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/vendor/lib/lib_base.cmd b/vendor/lib/lib_base.cmd index 8577637..38112ae 100644 --- a/vendor/lib/lib_base.cmd +++ b/vendor/lib/lib_base.cmd @@ -65,12 +65,17 @@ exit /b echo %comspec% | find /i "\tcc.exe" > nul && set "CMDER_SHELL=tcc" echo %comspec% | 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 From cc12b848ac42ed58b08768ed198425b464f8b356 Mon Sep 17 00:00:00 2001 From: "Dax T. Games" Date: Thu, 28 Feb 2019 17:44:28 -0500 Subject: [PATCH 302/306] provide default settings for clink that updates the history file in real time --- vendor/clink_settings.default | 116 ++++++++++++++++++++++++++++++++++ vendor/init.bat | 2 + 2 files changed, 118 insertions(+) create mode 100644 vendor/clink_settings.default diff --git a/vendor/clink_settings.default b/vendor/clink_settings.default new file mode 100644 index 0000000..021a78d --- /dev/null +++ b/vendor/clink_settings.default @@ -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 = 4 + +# 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 + diff --git a/vendor/init.bat b/vendor/init.bat index 8a4d71a..fd03870 100644 --- a/vendor/init.bat +++ b/vendor/init.bat @@ -122,12 +122,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" From 7bd25e95e13f1a17345cd24bd25f1db34eebf35b Mon Sep 17 00:00:00 2001 From: "Dax T. Games" Date: Thu, 28 Feb 2019 17:55:16 -0500 Subject: [PATCH 303/306] upgrade git to 2.21.0 --- vendor/sources.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/vendor/sources.json b/vendor/sources.json index 72696ce..b8f3f8a 100644 --- a/vendor/sources.json +++ b/vendor/sources.json @@ -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", From 8ec252276fc374ad417e0909437448cf2c6d766d Mon Sep 17 00:00:00 2001 From: "Dax T. Games" Date: Thu, 28 Feb 2019 18:13:19 -0500 Subject: [PATCH 304/306] changelog --- CHANGELOG.md | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index a66ff3b..34ae8ed 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,20 @@ # Change Log +## [Unreleased] + +### Fixes + +* 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 + ## [1.3.11](https://github.com/cmderdev/cmder/tree/v1.3.11) (2018-12-22) ### Fixes From 63128ed52fd1245a8565bb9a29ce377895550eac Mon Sep 17 00:00:00 2001 From: David Refoua Date: Thu, 7 Mar 2019 16:59:46 +0330 Subject: [PATCH 305/306] =?UTF-8?q?=E2=9C=A8=20polished=20issues=20templat?= =?UTF-8?q?e=20(#2056)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - added version subsection - better worded upstream technologies notice - more clear instructions --- .github/issue_template.md | 54 ++++++++++++++++++++++++++++----------- 1 file changed, 39 insertions(+), 15 deletions(-) diff --git a/.github/issue_template.md b/.github/issue_template.md index 5ebdb9c..21b489a 100644 --- a/.github/issue_template.md +++ b/.github/issue_template.md @@ -10,16 +10,18 @@ • 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 @@ -30,35 +32,53 @@ 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 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 autocomplete + + The issues related to upstream technologies are marked 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. - • 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. + • 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! ♥ --> @@ -74,5 +95,8 @@ - [ ] Feature request (request for new functionality) - [ ] Question +### Version Information + + ### Description of the issue From 280bbfff1fd7e938bfe6e11f42cec6d8a8a74178 Mon Sep 17 00:00:00 2001 From: David Refoua Date: Thu, 21 Mar 2019 01:27:13 +0330 Subject: [PATCH 306/306] update issue template (#2062) --- .github/issue_template.md | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/.github/issue_template.md b/.github/issue_template.md index 21b489a..2806b29 100644 --- a/.github/issue_template.md +++ b/.github/issue_template.md @@ -44,6 +44,11 @@ (Be sure to also check “Closed” issues in the labels section!) + • 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. @@ -52,9 +57,9 @@ - Clink, the default shell in Cmder - ConEmu, the terminal emulator - Git/MinGW, which also provide *NIX tools - - clink-completions, which provide autocomplete + - clink-completions, which provide autocompletion - The issues related to upstream technologies are marked as 👆 [name]. + 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 @@ -78,7 +83,7 @@ + + ### Description of the issue