-dc
now highlights the current column.- PageUp / PageDown now do something reasonable (move the viewport by 10 lines).
- Jumping around using
Ctrl-B
/Ctrl-N
now correctly clears the selection. - Search terms are now porperly highlighted within line comments.
- Jumping around using
Ctrl-B
/Ctrl-N
now jumps as expected when there are multiple search terms in the current line.
- Changed the characters used to render the border, background and badge to make the result look smoother.
- Improved rendering of the gutter (the area immediately left to the text).
- Removed bold formatting from the default editor themes (it looks quite bad on some fonts).
- Made search terms stand out more, and error formatting more readable.
- The cursor now turns bright red if overwrite mode is active.
- Added popup for autocompletion.
- Removed dependency on stale
hclip
. Clipboard support is now implemented directly. Also, wayland clipboard support is now implemented viawl-clipboard
.
-
-ep
can now be used to preserve whitespace exactly on save. This should help with file formats that are particular sensitive to whitespace changes, such as patch files. -
-dt <path/to/file>
can now be used to add custom themes. Example theme files found in/themes/
folder.default.wstheme
is heavily commented to help explain things. A huge Thank You to Guy Black for implementing this!
- No longer clobbers symbolic links with atomic saves.
Ctrl-A
now correctly selects all text if the file does not end with a newline.
- Changed tab rendering again, now a marking character is placed both at the start and the end of the tab space.
- New language definition for patch files.
- Switched to stack LTS 18.28 for GHC 8.10.7.
Ctrl-P
now respects selection.
This is a technical release, as WSEdit is switching to a new version scheme as well as moving to the BSD-3 license.
Version x.y.z[.a]
will now have the following meaning:
x
will increment for major rewrites and other milestones.y
will increment for incompatible changes.z
will increment for releases.a
denotes development efforts on top of the current release. No guarantees regarding change compatibility are made.
The entire codebase, including the language definitions, is now licensed under BSD-3.
- Removed the orphaned remains of the test suite.
- The
-li
directive can now be used to designate additional characters that can be part of identifiers. This affects rendering, but is most useful for autocompletion. - Some languages use prefixes to mark certain tokens (e.g. LaTeX macros always
start with a
\
). The new-lkp
directive can be used to mark these as keywords. - Search keywords can now be entered on-the-fly. Press Ctrl-F without text selected to bring up a prompt in the status bar. Removing search terms has been moved to Ctrl-Alt-F.
- File contents can now be piped through external commands via Ctrl-P.
- Fixed a endless loop with duplicate
-mi
directives. - Search no longer breaks strings and brackets.
- Keywords can now also be brackets at the same time.
- The known file encoding issues have been resolved (it was a read problem, not
a write problem). The editor now no longer forces you to use the quirky
encoding detection for reading files, see the help for the
-fr
switches for more information. - Selected text in the main view will no longer cause status messages to be selected as well.
- Fixed elastic tabstops performace problems.
- Fixed
-ms
exiting immediately.
- Moving the cursor in larger steps (e.g. Ctrl-Right) now stops at the beginning / end of the line.
- Switched to stack
lts-13.7
, replaced obsoleteEitherT
with themtl
-nativeExceptT
. - The editor can now enter read-write mode for files that cannot be saved.
- Split up language definitions for C and C++.
- Moved editor dump to
F9
. - Adjusted syntax highlighting files to make use of the new features mentioned above.
- Added
Ctrl-A
keybind to select everything. - Compatibility with vty 5.26 (some jackass
decided to delete all the
liftIO
s because he didn't need them...) - The vertical bar indicating a tab character is now positioned at the left edge of the character, not the right edge. This helps detect "lost" spaces between tabs and makes it easier to follow to the construct at the beginning of an indentation level.
- Switched to the
lts-16.5
stack resolver.
- Small compatibility patch for
vty-5.20
. - Added
/usr/local/etc/wsedit
to the config search path.
wsedit
now supports Elastic Tabstops as introduced on
http://nickgravgaard.com/elastic-tabstops/ . Enable via -el
. The feature is
still somewhat experimental and performance can be inconsistent.
These changes should make packaging wsedit
a lot easier than it used to be.
-
By default,
wsedit
will no longer be compiled using-Werror
. This should increase compiler compatibility both forwards and backwards. -
Debugging functions will no longer be compiled in by default. Therefore, the
time
package is no longer required. -
Passing
--flag wsedit:dev
to stack will produce a development build. This:- enables
-Werror
- disables
-O2
to speed up recompilations - creates a separate executable called
wsed-dev
- enables debugging functions
- pulls in
time
again - sets the badge text to "!!! DEVELOPMENT BUILD !!!"
- enables
Placing files into /etc/wsedit/
will also work now. I've also added a
primitive install_lang.sh
that takes care of that automatically while
complying to the $DESTDIR
convention.
- Fixed another instance of the viewport not following the cursor correctly.
- Fixed a config parse error with paths containing subdirectories.
- Made it possible to include escaped quotes inside quoted options, e.g.
-lk "this\"is\"stupid\"but\"works\"now"
- Output from the various
-h*
commands can now be captured via pipes.
- Local config files are now parsed independently of the working directory: Starting from the file system root ("/"), check for a ".local.wsconf" file, parse it if possible, descend into the folder leading to the opened file. Repeat for every folder along the way.
- Due to this, the way file matching works has been adjusted. If no path prefix
is given, only the file name portion will be matched. Otherwise, the full path
is matched. Relative paths are relative to the parent folder of the config
file containing them, or to the current working directory if given via
command-line argument. For examples, see
wsed -hc
. - Improved the text rendering algorithm for
-h*
. It now prioritizes small words instead of large ones for additional padding. - Moved the "crash editor" keybind from
Alt-.
toF11
since Alt and "." are right next to each other on some keyboards. - When opening the file at a specific line, the viewport will be placed so that the target line is at 1/3 of the visible area instead of the bottom.
- I've changed my first name, email address and GitHub account name. Due to
that, the repository url also changed. It is now
https://github.com/LadyBoonami/wsedit
.
This release doesn't contain any big features, but lots of small improvements and bug fixes.
Since "Fork me on GitHub" badges are so popular these days I decided to join in
on the hype. The -ds <str>
switch can now be used to place a ribbon with
arbitrary text over the top right corner of the editor. It was a cheap change
for a cheap joke but maybe somebody will get something useful out of this.
Another step towards increasing user-friendliness. Press F1
to view all key
bindings.
- Lots of new language definitions, thanks to @ararslan for providing the majority of them =)
- Renamed the executable to
wsed
. I've meant to do this from the very beginning but I haven't gotten around to looking it up until now. - Atomic saves can now be disabled using
-fa
. - The config directory traversal is now deep, i.e. files in subdirectories will now also be read.
- Adjusted the colour scheme of unprintable characters to be a little bit less obnoxious.
wsedit
now prompts before opening large files, as the initial cache building can take up to some minutes for bigger logs.- The status box (bottom left corner) is now coloured.
- Switched to stack
lts-8.0
, making use of the newghc 8.0.2
. - Escape sequences can now be longer than a single character.
- Retroactively added
CHANGES.md
to mirror the GitHub releases page.
- Fixed an error where the cursor position detection for bracket highlighting was off by one character.
- Saving a file with jump marks present no longer crashes the editor.
- Fixed
-ad
not picking up subdirectory rules correctly. - The viewport is now limited to the text's bounds, at least one row / column must be displayed at any time.
- More performance tweaking.
ssh
was sometimes breaking the clipboard, it should no longer do that.- The clipboard file (if present) is no longer world-readable by default.
This is going to be the last "big" release with sweeping changes for the
foreseeable future, since I consider wsedit
somewhat feature-complete. Of
course smaller updates will still happen, but don't expect any mind-blowing new
bells and whistles.
This feature ensures that even in the case of a power outage during write, your data will be protected.
wsedit
will now verify that the file has been written correctly and take
appropriate measures if it wasn't.
The editor can now be in onew of four stability states:
- Release
- RC
- WIP
- Prototype
By default, only Release instances will start, any other version will warn you
about its lack of stability and exit. You can use e.g. -ys WIP
to accept all
stability levels down to WIP.
For the new syntax of config files, check wsedit -hc
.
The existing options all got new, hierarchical names to keep the namespace clean
as well as make memorizing them a bit easier. Also, the way you give parameters
to arguments has changed. Furthermore, now double quotes can be used to enclose
spaces, e.g. "end function"
.
The new commands are:
-! ==> -mf
-b ==> -dB (now default behaviour)
-B ==> -db (no longer default behaviour)
-cg ==> -ocg
-cl ==> -ocl
-d+<n><f> ==> -ad <n> <f> (New syntax for file matching)
-d~+<n> ==> -as <n>
-D ==> -A
-e<s> ==> -fe <s>
-E ==> -fE
-fbc+<s1>_<s2> ==> -lcb <s1> <s2>
-fbr+<s1>_<s2> ==> -lb <s1> <s2>
-fbr-<s1>_<s2> ==> -lB <s1> <s2>
-fe+<c> ==> -les <c> and -leo <c>
-fe- ==> -leS and -leO
-fh+<s> ==> -gh <s>
-fh-<s> ==> -gH <s>
-fk+<s> ==> -lk <s>
-fk-<s> ==> -lK <s>
-flc+<s> ==> -lcl <s>
-flc-<s> ==> -lcL <s>
-fms+<s1>_<s2> ==> -lsm <s1> <s2>
-fms-<s1>_<s2> ==> -lsM <s1> <s2>
-fs+<s1>_<s2> ==> -lsr <s1> <s2>
-fs-<s1>_<s2> ==> -lsR <s1> <s2>
-fsc+<s1>_<s2> ==> -lsc <s1> <s2>
-fsc-<s1>_<s2> ==> -lsC <s1> <s2>
-h unchanged
-hc unchanged
-hk unchanged
-i<n> ==> -ei <n>
-j<n> ==> -ej <n>
-J<n> ==> -eJ <n>
-lu ==> -flu
-lw ==> -flw
-L ==> -fL
-p ==> -op
-P ==> -oP
-r ==> -gr
-R ==> -gR
-s ==> -ms
-ts ==> -ets
-tt ==> -ett
-T ==> -eT
-V ==> -hv
-x ==> -dx
-X ==> -dX
-y ==> -ye
-Y ==> -yE
Some time ago, I foolishly promised a sed
script for easier migration. Even
though I consider myself a man of my word, this will not initially be
provided, because:
- The new syntax provides much better ways of declaring options, which can't be mapped 1:1 by a simple script. Therefore, anything created by that hypothetical script would work, but be ... let's say ... less than optimal regarding performance and readability, and in need of manual changes anyways.
- I suspect that the ~3 people out there using
wsedit
haven't bothered to create huge configs that would require automatic updates.
But! If you would find such a sed
script helpful, create an issue and I
will deliver.
working directory
Now your data isn't lost if your editor crashes inside a non-writable folder.
There are now two versions of escape characters: one for inside strings, and one
for outside. This is necessary to display both the haskell sequence "asdf"\'s'
(read: "asdf"
without 's'
) and the bash sequence echo \"
(read: print a
quotation mark) correctly.
The definition of a character string is now:
Either
* <opening sequence><single char><closing sequence>
* <opening sequence><escape char><single char><closing sequence>
instead of some wonky maximum length <= 2
.
Probably hardly noticable for smaller files, but should make scrolling log files much smoother.
- You can now specify wildcarded file paths.
- Scanning now ignores hidden folders and files. This may decrease the startup
time by orders of magnitude, depending on your directory layout. For my
version of the
wsedit
repository, the change cuts down the amount of scanned files from 9076 to 53.
Not much to say here.
- The first input no longer takes ages to process on huge files.
- Cursor position after multi-line paste operations should now be correct.
Oh, you thought this was just another abandoned pet project, did you not? Well fasten your seatbelts, because crafted using dark, forbidden algorithms devised in the shady depths of a shaded hammock somewhere in Croatia, Release 1.1 is here, bigger, better, faster and cooler than ever before!
Featuring:
- Block Comments
- Multi-line strings
- Bracket highlighting
Take a look at wsedit -h
to see how to get started.
wsedit
should now be much faster.
You will now see what wsedit
is doing while it's doing what it's doing instead
of staring at an unresponsive editor screen.
The new file ARCHITECTURE.md
details the internals of wsedit
. Using it in
conjunction with haddock
+ hscolour
output should make understanding my
syntactic ramblings much easier.
- Fixed some issues regarding other character encodings. Shit's still somewhat broke though.
- Finally implemented
-j
to allow you to set jump marks from the command line / config files. -!
didn't work for integer parsing errors, fixed that one as well.-s
crashed ungloriously on parse errors, taking the terminal with itself in the process. Created an error message for this.
-d~
should now work correctly.- Build should now be much faster.
- Fixed some issues with copying and pasting newlines.
- Now with text justification. Death to all left-aligned paragraphs!
- The general help is now divided into sections.
- The keybinds help now also fits into 80 columns and wraps as needed.
Shell scripts, for example, seldomly end on .sh
. Now you can run
wsedit -ffsh /etc/profile
to remedy that. Unfortunately, this option is not
quite ready for use inside config files, but this is (almost) certain to come at
a later date.
Got your global config broken? Tired of using nano to clean it up? Use
wsed -! -cg
to ignore all errors and clean up your mess!
Not really much to say about this, see wsedit -hk
for more info.
wsedit
will open every file, but rewrite it to your locale's settings, unless
specifically told otherwise. On that note:
Unprintable characters and unicode marks will now show up as ?#<abcd>;
, where
<abcd>
is the hexadecimal code for that character. With this, wsedit
can now
open (and somewhat edit) binary files!
- Typing no longer creates two undo states per character.
- Press Ctrl-Y to toggle a jump mark in your current line.
- Press Ctrl-B/Ctrl-N to jump to the previous/next jump mark or search term
(
-fh
).
You know, the thing where you press Ins and overwrite your previously written text.
You can now explicitly specify:
- explicit file filters via suffix, e.g.
.hs
,WSEdit/Data.hs
, ... - multiple (or no) indentation levels per filter.
- special rules for your current file.
The old -d
syntax is incompatible with these changes, make sure to modify
your config files! (I don't want to accumulate heaps of deprecated / legacy
features before even v1.0...)
- Fixed
-s
ungloriously crashing the editor. - Fixed a minor cursor misplacement when pressing Backspace at the start of a line.
- New Search / Highlight function:
- Use
-fh+<xxx>
to mark as a search term - OR select some text, then press Ctrl-F to add it to the search terms stack
- All search terms will appear in bright red
- Press Ctrl-F without having anything selected to pop one entry off the search terms stack
- Use
- Crash dumps sholud now be much smaller
- Added a vertical scroll position indicator
- New directory for language definitions:
~/.config/wsedit
. Place all your language modules there instead of having to paste them into your global config! - New rendering code increases performance noticably
-b
now keeps the lines intact, since the speed increase comes almost exclusively from not rendering the dots.