From: Dirk Gouders <dirk@gouders.net>
To: Alejandro Colomar <alx.manpages@gmail.com>
Cc: linux-man@vger.kernel.org, help-texinfo@gnu.org
Subject: Re: Playground pager lsp(1)
Date: Thu, 06 Apr 2023 08:01:15 +0200 [thread overview]
Message-ID: <ghh6ttzh04.fsf@gouders.net> (raw)
In-Reply-To: <8d828572-cdcc-8b19-d5d4-1256831d7183@gmail.com> (Alejandro Colomar's message of "Thu, 6 Apr 2023 03:31:47 +0200")
[-- Attachment #1: Type: text/plain, Size: 5064 bytes --]
Hi Alex,
Alejandro Colomar <alx.manpages@gmail.com> writes:
>> If you want to take a look at it: there is a branch "next" which you
>> might prefer as it closer resembles my current work. There is a new
>> toggle "-V" that can be used to completely turn off validation.
>>
>> I tried to assemble a Makefile that might work without a configure
>> script and attach it to the end. A prefix /usr is the default value, if
>> your system prefers /usr/local you can use `make prefix=/usr/local
>
> The default prefix in GNU should be /usr/local
> <https://www.gnu.org/prep/standards/html_node/Directory-Variables.html>
>
>> install`. I hope I prepared some reasonable Makefile...
>
> I'll have a look.
Perhaps, I messed up the Makefile. Some time ago, I test-compiled lsp
on Rasbpian and CentOS and -lutil was missing. That got fixed in
meson.build but not in the Makefile I sent you. I'll attach a new
one -- this time as plain text ;-)
>>> If it's the first, how do you handle exit(1)? Is it a reference, or is it
>>> just code (with the meaning exit(EXIT_FAILURE))?
>>
>> exit(1) gets recognized as a possible reference but validation will fail.
>
> `man 'exit(1)'` works for me. It brings the exit(1posix) page, from
> manpages-posix.
Oh yes, I didn't have the POSIX manual pages installed -- now, exit(1)
gets recognized as a reference. Thank you.
>> No, broken references aren't marked. Usually those unavailable
>> references make sense, e.g. if a manual page references some program
>> that not everyone uses.
>>
>> One example that I couldn't resolve so far is a reference to
>> getconf(1) for example in fpatchconf(3). Up to now I was not able to
>> find out which package contains getconf(1)...
>
> $ apt-file find /getconf.1
> glibc-source: /usr/src/glibc/debian/local/manpages/getconf.1
> libc-bin: /usr/share/man/man1/getconf.1.gz
> manpages-fr: /usr/share/man/fr/man1/getconf.1.gz
>
> It's in libc-bin.
>
> BTW, did you mean fpathconf(3)?
Yes, that was a typo. I'm on Gentoo and there is no libc-bin. But now
I have a direction to search. Thank you, again.
>
>>
>>>>
>>>> • In windowing environments lsp does complete resizes when windows
>>>> get resized. This means it also reloads the manual page to fit the
>>>> new window size.
>>>
>>> Good. This I miss it in less(1) often. Not sure if they had any strong
>>> reason to not support that.
>>
>> Unfortunately, info(1) also doesn't do full resizes (on my system).
>>
>>>>
>>>> • Search for manual pages using apropos(1); in the current most basic
>>>> form it lists all known manual pages ready for text search and
>>>> visiting referenced manual pages.
>>>
>>> What does it bring that `apropos * | less` can't do? If you're going the
>>> of info(1) with full-blown system, it seems reasonable, but I never really
>>> liked all that if it's just a new terminal and a command away from me.
>>
>> You get a pseudo-file from where you can reach any manual page on the
>> system. Originally I thought this to help novice users but since lsp is
>> my system's PAGER I use it more often than expected. I'm missing the
>> ability to give keywords to apropos but that's just a matter of time to
>> get fixed.
>
> I guess that's a matter of preferring navigation in some interactive
> program (to me, info(1) style), vs standalone simple commands where you
> first find what you want, then run it.
>
> I don't find that magic much more comfortable than
>
> $ apropos sysctl
> ... oh, I find many freebsd pages, let's grep them out ...
> $ apropos sysctl | grep -v freebsd
> ... hmm, let's see system ...
> $ apropos system | grep -v freebsd
> ... okay, now this shows a lot of stuff, let's remove man1 ...
> $ apropos system | grep -v -e freebsd -e '(1'
> ... I don't want systemd either ...
> $ apropos system | grep -v -e freebsd -e '(1' -e systemd
> ... let's sort by section and navigate through that list ...
> $ apropos system | grep -v -e freebsd -e '(1' -e systemd | sort -k2 | less
>
> Find some pages that may be interesting, note them down, and open
> them one by one, in different tabs, until I find I wanted to read
> proc(5), and close everything else.
As I wrote: I (also) had novice users in mind when I implented the
Apropos pseudo-file (it can also be used for verification, that's
another use of it). I often watch novice users getting frustrated about
all the typing that is needed to get useful results. I know, first of
all, they need to train their "keyboard abilities" but some help here
and there could perhaps help to keep them on board or minimize
frustration...
> Which brings us to a valid point Eli raised. Some pages are an
> unreadable mess, and I think proc(5) is one of those that needs
> a big split into smaller pages such as proc_pid_attr(5).
Yes, one of the points where I thought pagers with additional
features could help...
Cheers,
Dirk
[-- Attachment #2: Makefile for lsp(1) --]
[-- Type: text/plain, Size: 600 bytes --]
version=\"$(shell cat .version)\"
CFLAGS := $(shell pkg-config --cflags ncursesw)
CFLAGS += -DLSP_VERSION=$(version)
LDFLAGS := $(shell pkg-config --libs ncursesw)
LDFLAGS += -lutil
ifeq ($(prefix),)
prefix := /usr/local
endif
lsp: lsp.c
gcc $(CFLAGS) $(LDFLAGS) -o $@ $<
doc/lsp.1: doc/lsp.adoc
a2x --doctype manpage --format manpage -a lsp-version=$(version) $<
.PHONY: uninstall install
install: lsp doc/lsp.1 doc/lsp-help.1
install lsp $(prefix)/bin
install doc/lsp.1 doc/lsp-help.1 $(prefix)/share/man/man1/
uninstall:
rm $(prefix)/bin/lsp
rm $(prefix)/share/man/man1/lsp{,-help}.1
prev parent reply other threads:[~2023-04-06 6:01 UTC|newest]
Thread overview: 73+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-03-25 20:37 Playground pager lsp(1) Dirk Gouders
2023-03-25 20:47 ` Dirk Gouders
2023-04-04 23:45 ` Alejandro Colomar
2023-04-05 5:35 ` Eli Zaretskii
2023-04-06 1:10 ` Alejandro Colomar
2023-04-06 8:11 ` Eli Zaretskii
2023-04-06 8:48 ` Gavin Smith
2023-04-07 22:01 ` Alejandro Colomar
2023-04-08 7:05 ` Eli Zaretskii
2023-04-08 13:02 ` Accessibility of man pages (was: Playground pager lsp(1)) Alejandro Colomar
2023-04-08 13:42 ` Eli Zaretskii
2023-04-08 16:06 ` Alejandro Colomar
2023-04-08 13:47 ` Colin Watson
2023-04-08 15:42 ` Alejandro Colomar
2023-04-08 19:48 ` Accessibility of man pages Dirk Gouders
2023-04-08 20:02 ` Eli Zaretskii
2023-04-08 20:46 ` Dirk Gouders
2023-04-08 21:53 ` Alejandro Colomar
2023-04-08 22:33 ` Alejandro Colomar
2023-04-09 10:28 ` Ralph Corderoy
2023-04-08 20:31 ` Ingo Schwarze
2023-04-08 20:59 ` Dirk Gouders
2023-04-08 22:39 ` Ingo Schwarze
2023-04-09 9:50 ` Dirk Gouders
2023-04-09 10:35 ` Dirk Gouders
[not found] ` <87a5zhwntt.fsf@ada>
2023-04-09 12:05 ` Compressed man pages (was: Accessibility of man pages (was: Playground pager lsp(1))) Alejandro Colomar
2023-04-09 12:17 ` Alejandro Colomar
2023-04-09 18:55 ` G. Branden Robinson
2023-04-09 12:29 ` Colin Watson
2023-04-09 13:36 ` Alejandro Colomar
2023-04-09 13:47 ` Compressed man pages Ralph Corderoy
2023-04-12 8:13 ` Compressed man pages (was: Accessibility of man pages (was: Playground pager lsp(1))) Sam James
2023-04-12 8:32 ` Compressed man pages Ralph Corderoy
2023-04-12 10:35 ` Mingye Wang
2023-04-12 10:55 ` Ralph Corderoy
2023-04-12 13:04 ` Compressed man pages (was: Accessibility of man pages (was: Playground pager lsp(1))) Kerin Millar
2023-04-12 14:24 ` Alejandro Colomar
2023-04-12 18:52 ` Mingye Wang
2023-04-12 20:23 ` Compressed man pages Alejandro Colomar
2023-04-13 10:09 ` Ralph Corderoy
2023-04-07 2:18 ` Playground pager lsp(1) G. Branden Robinson
2023-04-07 6:36 ` Eli Zaretskii
2023-04-07 11:03 ` Gavin Smith
2023-04-07 14:43 ` man page rendering speed (was: Playground pager lsp(1)) G. Branden Robinson
2023-04-07 15:06 ` Eli Zaretskii
2023-04-07 15:08 ` Larry McVoy
2023-04-07 17:07 ` man page rendering speed Ingo Schwarze
2023-04-07 19:04 ` man page rendering speed (was: Playground pager lsp(1)) Alejandro Colomar
2023-04-07 19:28 ` Gavin Smith
2023-04-07 20:43 ` Alejandro Colomar
2023-04-07 16:08 ` Colin Watson
2023-04-08 11:24 ` Ralph Corderoy
2023-04-07 21:26 ` reformatting man pages at SIGWINCH " Alejandro Colomar
2023-04-07 22:09 ` reformatting man pages at SIGWINCH Dirk Gouders
2023-04-07 22:16 ` Alejandro Colomar
2023-04-10 19:05 ` Dirk Gouders
2023-04-10 19:57 ` Alejandro Colomar
2023-04-10 20:24 ` G. Branden Robinson
2023-04-11 9:20 ` Ralph Corderoy
2023-04-11 9:39 ` Dirk Gouders
2023-04-17 6:23 ` G. Branden Robinson
2023-04-08 11:40 ` Ralph Corderoy
2023-04-05 10:02 ` Playground pager lsp(1) Dirk Gouders
2023-04-05 14:19 ` Arsen Arsenović
2023-04-05 18:01 ` Dirk Gouders
2023-04-05 19:07 ` Eli Zaretskii
2023-04-05 19:56 ` Dirk Gouders
2023-04-05 20:38 ` A less presumptive .info? (was: Re: Playground pager lsp(1)) Arsen Arsenović
2023-04-06 8:14 ` Eli Zaretskii
2023-04-06 8:56 ` Gavin Smith
2023-04-07 13:14 ` Arsen Arsenović
2023-04-06 1:31 ` Playground pager lsp(1) Alejandro Colomar
2023-04-06 6:01 ` Dirk Gouders [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=ghh6ttzh04.fsf@gouders.net \
--to=dirk@gouders.net \
--cc=alx.manpages@gmail.com \
--cc=help-texinfo@gnu.org \
--cc=linux-man@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).