On 12-11-25 02:44 PM, Lex Trotman wrote:
[...]
Right, but Geany thinks that since it returned messages on stderr that something went wrong with the command, so it doesn't do the substitution. You should have a message along the line "The executed custom command returned an error. Your selection was not changed." in the status bar.
What's the point about it BTW? Normally a command exit status should be the way to check, I don't see why we should make weird guess at a command not being allowed to output something on stderr?
Well, I don't know the original argument for doing it this way, but I've got two:
- the command is meant to be a filter, stdin to stdout, anything on
stderr almost certainly indicates a problem.
Filter programs sometimes use stderr as way to output status information/reports/warnings that shouldn't get piped to the normal output. IIRC the `tidy` utility does this by default.
- sadly there are still filters that return zero if they fail and
non-zero if they succeed (especially user written ones :), which means that you can't just test the return value.
Checking exit codes is pretty much the only sane way though and is the exact use for them.
Maybe checking exit code to determine success or failure and just having a status bar message if stderr is written to that says something to the effect of "The filter command wrote to the standard error stream, this might indicate a problem in your output." would be the way to go?
Cheers, Matthew Brush