News for hackers. Stuff that matters.
Re:A functioning Turing Machine using Notepad++ and its find... by midjji on Tuesday February 22, 2022 @05:31AM (#30426179)
Neat, Though it does make me wonder if a python parser wont soon become standard in editors. Its just too damned convenient for many things, sure you might be able to come up with a regexp search and replace that does the same thing, but odds are it will take longer than coding a few loops. BASH sucked far too much, and C++ and most languages lacked the convenient filesystem libs required, but python just works and is easy to read and modify. The downsides of python, like the atrocious speed and low maintainability dont matter for scripts you will use just once.
Re:A functioning Turing Machine using Notepad++ and its find... by badsectoracula on Tuesday February 22, 2022 @07:58AM (#30427346)
I've needed such functionality often enough that i wrote a small utility[0] that uses my LIL scripting language[1] (similar to Tcl) to process some text and have its output. A couple of examples are in the shots [2][3] (note that as this is written in Lazarus it also works under Linux and Mac too, though the site only has a Windows executable).

Before that i used to write scripts or even full programs (in Free Pascal which has some simple string handling) to do similar processing and i did find it much more cumbersome to go through that route.

Of course this only works for editing/generated/transforming text pieces (and i pretty much always use it via clipboard), for processing files i still end up writing full scripts or programs (depending on the case, if i need to preprocess stuff i use another LIL-based tool, lip[4]).

[0] http://runtimeterror.com/tools/liteproc/

[1] http://runtimeterror.com/tech/lil/

[2] http://runtimeterror.com/tools/liteproc/shot.png

[3] http://runtimeterror.com/tools/liteproc/shot2.png

[4] http://runtimeterror.com/tools/lip/

Re:A functioning Turing Machine using Notepad++ and its find... by throwanem on Tuesday February 22, 2022 @08:39AM (#30427765)
I used to have a Perl script, bound to a key chord, that would pop a dialog box prompting for a s/// regexp-replace expression and apply it to the clipboard contents.

Never got around to making it properly interactive, because I stopped needing it when I switched to Emacs and had both its native capabilities and C-u M-| available.

Re:A functioning Turing Machine using Notepad++ and its find... by tjoff on Tuesday February 22, 2022 @06:12AM (#30426471)
Python just works... Every now and then I'm still bitten by the 2->3 transition. And I'd very much not like it to be a required dependency in my systems either.

And no, regexps get a bad rep but they are for the easy 99% and insanely quick to come up with. Learn basic syntax and you'll be thankful for decades to come.

Re:A functioning Turing Machine using Notepad++ and its find... by kadoban on Tuesday February 22, 2022 @07:26AM (#30427035)
Learn basic syntax and you'll spend the next few decades wondering each time _which_ basic syntax is expected because none of them ever say.
Re:A functioning Turing Machine using Notepad++ and its find... by metalliqaz on Tuesday February 22, 2022 @07:56AM (#30427336)
I know the basic syntax and I never have that problem. Perhaps you mean the advanced syntax? However I don't see the problem, there either. I usually don't need it, and to be honest, when I do, I find it more maintainable to use multiple simpler expressions combined with some programming.
Re:A functioning Turing Machine using Notepad++ and its find... by kadoban on Tuesday February 22, 2022 @08:18AM (#30427543)
Some by "regex" mean "globs" and you can just use "*" and "?" for stand-ins for some number of characters.

Some allow "|", some allow backrefs, some allow "()", or require them escaped with \, or allow them but not with * after. Some are case insensitive, some not. Some allow "{0-5}", some allow "[0-9]", some have handy things like "\w".

It's just the guessing game of exactly what they want. It should be required that each regex box has an example next to it using as many allowed features as possible.

Re:A functioning Turing Machine using Notepad++ and its find... by RHSeeger on Tuesday February 22, 2022 @12:58PM (#30431083)
> Some by "regex" mean "globs" and you can just use "*" and "?" for stand-ins for some number of characters.

But that's _not_ regexp, it's glob; a totally different pattern matching system. I mean, you can call a duck a horse, but that doesn't mean you're right... or that there's anything confusing about horses.

Re:A functioning Turing Machine using Notepad++ and its find... by Semaphor on Tuesday February 22, 2022 @12:09PM (#30430503)
> Some by "regex" mean "globs" and you can just use "*" and "?" for stand-ins for some number of characters.

What kind of scary tool is that?

Re:A functioning Turing Machine using Notepad++ and its find... by RHSeeger on Tuesday February 22, 2022 @12:59PM (#30431093)
Glob is used in most shells, plus in several languages (Tcl has both glob and regexp matching).
Re:A functioning Turing Machine using Notepad++ and its find... by Semaphor on Tuesday February 22, 2022 @01:07PM (#30431208)
Yeah, but they don't call it "regex" which would be the scary part.
Re:A functioning Turing Machine using Notepad++ and its find... by RHSeeger on Tuesday February 22, 2022 @01:45PM (#30431795)
Ah, I interpreted the original statement as

> Some [people] by "regex" mean "globs"

Re:A functioning Turing Machine using Notepad++ and its find... by Semaphor on Wednesday February 23, 2022 @12:30AM (#30437996)
Ah, that makes far more sense. Though it makes OPs argument even more nonsensical ;)
Re:A functioning Turing Machine using Notepad++ and its find... by _jal on Tuesday February 22, 2022 @09:23AM (#30428229)
Look for 'pcre' on the label. Accept no substitutes and you'll be fine.
Re:A functioning Turing Machine using Notepad++ and its find... by hexane360 on Tuesday February 22, 2022 @12:10PM (#30430510)
*almost always: https://blog.cloudflare.com/details-of-the-cloudflare-outage...

>The Lua WAF uses PCRE internally and it uses backtracking for matching and has no mechanism to protect against a runaway expression.

https://blog.cloudflare.com/making-the-waf-40-faster/

>Back in July 2019, the WAF transitioned from using a regular expression engine based on PCRE to one inspired by RE2, which is based around using a deterministic finite automaton (DFA) instead of backtracking algorithms. This change came as a result of an outage where an update added a regular expression which backtracked enormously on certain HTTP requests, resulting in exponential execution time.

>After the migration was finished, we saw no measurable difference in CPU consumption at the edge, but noticed execution time outliers in the 95th and 99th percentiles decreased, something we expected given RE2's guarantees of a linear time execution with the size of the input.

Re:A functioning Turing Machine using Notepad++ and its find... by pstoll on Tuesday February 22, 2022 @08:40AM (#30427776)
You must not have suffered enough, I mean used regexs widely enough.

He meant “syntax” in the sense that different regex engines have different syntax and capabilities - can I do a negative look ahead assertion in engines Z, how do I do a zero width lookaround in pcre, gnu, python, posix, etc.

Depending how far down the rabbit hole you want to go, start here:

https://swtch.com/~rsc/regexp/regexp1.html

Re:A functioning Turing Machine using Notepad++ and its find... by midjji on Wednesday February 23, 2022 @06:47AM (#30440081)
Oh and dont forget that just because the documentation says it uses a specific regex syntax, that does not mean its correctly implemented. It gets worse when an application examples specify a specific syntax but what happens in the background is that it will use the default reg exp engine, which can be system or enviroment specified.
Re:A functioning Turing Machine using Notepad++ and its find... by metalliqaz on Tuesday February 22, 2022 @02:15PM (#30432242)
I just don't count those cases as 'basic' syntax.
Re:A functioning Turing Machine using Notepad++ and its find... by pstoll on Tuesday February 22, 2022 @08:56PM (#30436620)
Basic - naming a capture group. Awk / posix - \1 Perl - $1. Python - (?P<name>).

I’d find it hard to ignore the specifics. I mean if you only ever use one tool and were never exposed to other regex engines I guess.

Re:A functioning Turing Machine using Notepad++ and its find... by aasasd on Tuesday February 22, 2022 @11:47AM (#30430145)
Quick: which programs use ‘|’ and which use ‘\|’?
Re:A functioning Turing Machine using Notepad++ and its find... by vidarh on Tuesday February 22, 2022 @06:32AM (#30426602)
I wouldn't be happy with Python, but I do agree with the general premise that extensibility or automation ought to be expected of editors.

My own editor is written in Ruby, and so all extension is done by loading Ruby code into the running process, and I can drop into the Pry debugger with a keypress, or another keypress gives me a prompt to enter a single-line expression instead. The latter is literally a one-line method. Adding a binding to eval() a whole buffer would be equally trivial... Being able to extend everything trivially in a language I'm comfortable with (so not Emacs lisp) makes such a difference to usability.

Incidentally, the ability to interact with the open buffers using a script also from outside the editor is another thing I love as an extension mechanism for editors - an idea I first saw in FrexxEd (co-written by the founder of Curl) for the Amiga, which exposed the open buffers in the filesystem (think the Amiga equivalent of a FUSE filesystem), which would have the added benefit of not being language specific. It doesn't need to involve any FUSE-like stuff either - just a command line utility to "cat" an open buffer and to replace the open buffer from stdin would be sufficient.

Re:A functioning Turing Machine using Notepad++ and its find... by virchau13 on Tuesday February 22, 2022 @06:48AM (#30426707)
Out of curiosity, what do you actually use the Ruby liveloading feature for? I use Neovim, which has a similar (but less powerful) feature that allows one to live-execute Lua code (or Vimscript, I suppose). But I almost never use it outside of testing code for my configuration, because the rest of the editor's feature set suffices fairly well for text editing.
Re:A functioning Turing Machine using Notepad++ and its find... by vidarh on Tuesday February 22, 2022 @07:17AM (#30426949)
I don't very often load code "live" other than on starting a client in the form of "macros" which are pretty much stuff I don't want to add into the editor core because it e.g. might be short lived or is just too esoteric. Even though my editor is mostly for myself, imagine anything you might put in your .vimrc, except it's only self-discipline that separates this from core editor code.

E.g. I have functions in there to insert headers in my journal for example.

In terms of executing code "actually" live, it's ~80% for debugging when I work on the editor itself. Pry provides all of the plumbing so all the code needed to add that is just to suspend the editors own input handling and call pry, coupled with an exception handler that calls pry as well, so there was no reason not to, basically.

But once I'd added it, the 20% left felt worthwhile as a means of e.g. do complex searches, or generate tables or otherwise do search and replace of content that requires more (e.g. parsing timestamps and replacing them with another format....) and any number of things I don't do very often but that feels very comfortable when you do need it. To be clear it's not like it does much you can't do easily without it. E.g. after all I could just dump the buffer to a file, load it in my repl of choice, manipulate it and write it out again and reload it in my editor. It's one of those small things that feels unimportant when you don't have it there, that doesn't save you a huge amount of time, but that just makes things feel nicer when you get used to them.

Re:A functioning Turing Machine using Notepad++ and its find... by coliveira on Tuesday February 22, 2022 @08:32AM (#30427690)
Vim can run Ruby scripts, so it also provides this feature.
Re:A functioning Turing Machine using Notepad++ and its find... by midjji on Wednesday February 23, 2022 @06:54AM (#30440119)
Yeah it does not need to be python, I dropped emacs lisp due to (pain), never liked bash, or perl. Java like in matlab isnt nice either, too damned verbose. Ruby might work, most webstuff is great at showing stuff, but I havent tried it.

The generic variant would be to make it modular and replaceable, but that would be a mistake, I would much rather have a tool good at a specific subset of jobs than a config heavy tool which is medicore at all. Perhaps advanced search and replace fits that, but I think its a fundamental aspect of editing.

Thats a good idea!

Re:A functioning Turing Machine using Notepad++ and its find... by aasasd on Tuesday February 22, 2022 @10:53AM (#30429416)
If anyone whose life line says ‘makes an editor’ is reading the above: I beg you to use Lua instead of Python. It's a lot faster, and that matters in productivity apps. Speed can be the difference between ‘I wrote a script’ and ‘I could write a script but didn't’.
Re:A functioning Turing Machine using Notepad++ and its find... by oldsecondhand on Tuesday February 22, 2022 @07:30AM (#30427090)
You can record and edit beanshell macros in JEdit. It does exactly what you described but you also have access to all the Java Standard Library (including regex).
Re:A functioning Turing Machine using Notepad++ and its find... by vesinisa on Tuesday February 22, 2022 @08:11AM (#30427463)
That sounds like a felony abuse of Python. Despite, wasn't perl originally a tragic attempt at such language? :)
Re:A functioning Turing Machine using Notepad++ and its find... by 30f0fn on Tuesday February 22, 2022 @09:02AM (#30427998)
How about elisp?
Re:A functioning Turing Machine using Notepad++ and its find... by 29athrowaway on Tuesday February 22, 2022 @08:51AM (#30427867)
How do you sandbox python?