On Tue, Aug 17, 2010 at 03:56:38PM +0200, LuX wrote:
>OK, let us call:
>- 'post' the last script I have posted, on:
> http://lists.suckless.org/dev/1008/5609.html
>- 'patch' and 'script' the patch and script you posted on:
> http://lists.suckless.org/dev/1008/5610.html
>
>I copied 'post' and 'patch' from the online archive to files in the
>same directory. No luck:
>
>$ patch post patch
>patching file post
>Hunk #1 FAILED at 5.
>Hunk #2 FAILED at 25.
>Hunk #3 FAILED at 46.
>Hunk #4 FAILED at 78.
>4 out of 4 hunks FAILED -- saving rejects to file post.rej
>
>--> Don't waste your time with this, I must be doing some stupid
>mistake somewhere and that's all (I'm not at all used with patching).
Well, broadly speaking... But not stupid so much as wrong. The
white space in the html version is mangled. 'patch -l' would
work, but you'll wind up with a badly formatted result.
>It works, undoubtedly. But…
>
>- The command 'sh script' produces some strange outputs in the
> terminal when I am typing. This might be normal, since what is
> important is that the very last output is the content of the input
> line, which is the case so the script works anyway.
Sorry, remove the line that starts with 'print "read "'.
>Examples with 'script':
>
>Input List displayed by wimenu
>
>'lp ' List of files in current dir
>'lp -' -o media=a4 -o landscape …
>'lp -o ' -o media=a4 -o landscape … --> Good!
>'lp -o m' List of files in current dir containing 'm' --> Bad!
>'lp -o media=a4 ' List of files in current dir
See below.
>'ls ' List of files in $HOME
>'ls -a' Nothing --> Good.
>'ls -a ' Nothing as well --> Bad!
>'ls -a w' List of files in current dir containing 'w'
Ah, I'd missed that. This should fix it:
--- menu_thing 2010-08-17 06:25:53.000000000 -0400
+++ - 2010-08-17 19:09:52.759287656 -0400
@@ -33,7 +33,7 @@
if (!match($0, /.*[ \t]/))
# First argument, provide the program list
update(0, progs)
- else if($NF ~ /^-/)
+ else if($NF ~ /^-/ && !/ $/)
# If the last argument starts with a -, list
# options declared in opt instead of files
update(RLENGTH,
>Good and bad examples with 'post' are almost opposite:
>
>Input List displayed by wimenu
>'lp ' List of files in current dir
>'lp -' -o media=a4 -o landscape …
>'lp -o ' List of files in current dir --> Bad!
>'lp -o m' List of files in current dir containing 'm' --> Bad (logical).
>'lp -o media=a4 ' List of files in current dir
This behavior is achievable, but considerably magnitude more
complex. I've written such completion systems before, but
they're far beyond the scope of this script. However, it's not
as bad as it might seem. For one thing, you can elide the space
after -o, and thus give -omedia=a4. This is perhaps the most
obvious solution. However, in the case of the example you
provided, I don't think it's that important, given that there
are few enough options that you can tab between them without
much trouble.
If you do want the behavior that you suggest, the simplest
approach would be to specify for each object which requires an
argument a shell script to produce the results, such as:
lp:
-o echo media=a4 landscape sides=two-sided-long-edge sides=two-sided-short-edge number-up=N
The script to make use of it would be fairly simple (the key
would be to check $(NF - 1) above rather than $NF and pass the
part of the line following the option to system()), but I'm not
going to write it at the moment.
-- Kris Maglione Common sense is the collection of prejudices acquired by age 18. --Albert EinsteinReceived on Wed Aug 18 2010 - 01:19:10 CEST
This archive was generated by hypermail 2.2.0 : Wed Aug 18 2010 - 01:24:02 CEST