A smarter shell and scripting environment with advanced features designed for usability, safety and productivity (eg smarter DevOps tooling)
Resolves a regression bug: CTRL+A CTRL+E cursor position is off https://github.com/lmorg/murex/issues/664
alt
+1
..9
hotkeys replaced with shift
+f1
..f12
. Changed because alt
+numeric rarely worked (read more)None
@IncManPages
autocomplete
value for Dynamic directive renamed to @IncManPage
, like the IncManPage directive
readline: render glitch fixed with delayed completions racing against hint text updates
readline: render glitches fixed when buffers are not being reset correctly after preview box has, or should have, closed
readline: man page preview now removes backspace characters correctly from UNIX docs
readline: man page preview now more reliably scrolls to the right line when a flag is highlighted in autocompletion
readline: preview now works for list views as well as grid views
config
option removed. This actually doesn't break anything, just produces a warning. The config
option was also undocumented and experimentalf1
while autocomplete is open to use (read more)readline: render glitch fixed with delayed completions (most noticeable with path completions)
readline: excess white spaces removed from man page descriptions
v4.4 features two new builtins, improvements in testing, and automatic generation of autocompletion suggestions backed by man page parsing. Plus there has been a lot of focus on improving readline responsiveness
onCommandCompletion
interrupt (this field was never documented)New builtin, round
, which can perform rounding operations on numerical inputs (#630, read more)
Vastly improved automatic man page parsing. Now descriptions are pulled alongside the flags and results are cached
man-get-flags
now includes a -d
/ --description
flag to expose the improved man page parser
New builtin, return
, which exits a given function scope (eg function
, private
, Dynamic block in autocomplete
, etc)
Improved git
autocompletions
find
autocompletions added
builtin profiles are now imported as separate modules. This makes debugging easier
/integrations
directory added to Murex source, the aim of which is to make it easier for people to contribute autocompletions and other integrations with common command line tools (Github)
readline: new word jump hotkeys ctrl
+left
/ ctrl
+right
(PC)
readline: new word jump hotkeys option
+left
/ option
+right
(Mac)
test
would always run first in any block, regardless of the preferred order of execution. This was because test (unit|state|config)
required altering the execution state of the shell. The drawback was that test (run|define|report)
would also run unexpectedly. This lead to hacks like try { test run * }
to force the correct order of operations. Now the parameters of test
are checked to determine when to execute the builtin.
int
types couldn't be compared against num
types with >
, >=
, <
, <=
operators
readline: ^d
will not send EOF if line is not empty. The original behaviour was by design however after pressing ^d
a few too many times when I intended to press ^f
or ^r
, I decided the original design was wrong
FileRef
wasn't being set in test
. This caused some tests to fail if they called private functions
Check ~/.ssh/config
exists before trying to parse it in getHostsFile
private (used for SSH and similar tools autocompletions)
readline: lots of work done on speeding up redraws and overall responsiveness. eg buffered autocompletion menus
readline: hint text should never be displayed if disabled via config
readline: soft timeout halved (this can be overridden via config
)
readline: cropped autocompletion suggestions in gridded layout were one character too short (off by one error)
pre-prompt-func
and post-prompt-func
have been replaced with onPrompt
events: event onKeyPress example=before { ... }
The onFileSystemChange
event payload now lowercases the filesystem event operation string. However until this release, that payload was undocumented (read more)
New events, onPrompt
, triggered when the interactive prompt is at various stages
Dynamic and DynamicDesc autocompletions can have their partial term prefix filter disabled (read more, previous discussion)
New autocompletions: gping
A minor patch to re-enable tab completion on commands
Murex usage has raised considerably in recent weeks. This release addresses a number of feature requests and bugs raised on Github.
none
new flag in foreach
: --step <int>
. This allows the foreach
to jump indexes at a time. When used, all the lines jumped are merged into a JSON array and that is passed to the foreach
nested code block
new alias builtin
=> fexec builtin
. This was added to bring more familiarity to those coming from Bash et al (#608)
on Darwin, Homebrew defaults are imported, just like you'd expect them to be from any other shell
aa few new hotkeys (#611) (#613):
ctrl
+a
: jump to beginning of line
ctrl
+e
: jump to end of line
alt
+f
: jump forwards a word at a time
alt
+b
: jump backwards a word at a time
ctrl
+k
: clear line after cursor position
ctrl
+l
: clear entire screen
ctrl
+g
: same as esc
`open`` builtin should fallback to system default if type unknown (#620)
pre-prompt-func
added to config
. Block runs before the interactive prompt is displayed
post-prompt-func
added to config
. Block runs after the interactive prompt has been exited but before any command lines have been executed
auto-cd option added to config
: config: set shell auto-cd true
. This allows you to traverse directories without having to prefix cd
. By default it is disabled
Meta values added to foreach
, formap
, and while
. Meta values are a $.
variable that holds meta-information about the running block, such as the number of iterations in a loop
command
alias for exec
(for familiarity with Bash)
builtin
alias for fexec builtin
(for familiarity with Bash)
brace encapsulated variables, eg $(foobar)
, now autocomplete as expected
improvements to inlining images in iTerm2 when shell running on top of tmux
. It still doesn't work reliably but this is an issue with tmux
rather than Murex
method
forwards exceptions rather than errors. This behaviour has been changed to surface issues as errors
profile_preload.mx
added to profile defaults. This will be loaded before any of the OS-specific profiles
missing rune length check causing the shell to panic (#617)
fixed deadlock in flag parsing
zero length string title bars should be ignored (#614)
minor improvements to documentation
The previous releases have brought significant advancements to Murex's syntax but at the cost of longer gaps between releases. So the 4.1.x versions will be shorter releases but focusing on bug fixes. The 4.1.x release notes will be appended to murex.rocks changelog and available on Github releases too
None
generic *
data type marshaller can now marshal maps (#593)
range can count from end when supplied with a negative index (read more)
fexec private
should inherit module string from the owners module (#600)
source
-ed files should be loaded into a module of a similar name to the parent module
new code blocks, {
, should force a new parameter when following a closing block, }
(#603)
fixed problem with encapsulated variables, eg $(PWD)
, not getting parsed correctly by syntax highlighter