2013/5/8 Thien-Thi Nguyen <t...@gnu.org> > () Panicz Maciej Godek <godek.mac...@gmail.com> > () Wed, 8 May 2013 00:50:32 +0200 > > both guile-sdl and guile-figl copy the scm modules to > $(prefix)/share/guile/site..., but apparently they both do that in a > different way (which means there's no standard way), and none of them > allows to 'fine tune' that directory with an optarg to ./configure > > I like how guile-ncurses does it. Maybe Guile-BAUX (and SNUGGLE[0], > which i forgot to mention previously) will follow its lead. > > I think that it might be misleading. I see that autotools are already complicated, and there's no need to complicate them more, especially if guile is an official extension language of the GNU project. When you ./configure --help, you get a section "Fine tuning of the installation directories", where you get such directives, as --bindir, --datadir and so on. However, if you want to install the guile modules, you need to use --with-guilesitedir, which is documented in 'Optional Packages' section, as if the installation directory was a package. The Right Thing would be to place --guilesitedir flag in the former section, although I see that there's currently no official way to do it. (And I see that there's been a few discussions about that, like this one: http://lists.gnu.org/archive/html/autoconf/2006-09/msg00009.html, which says that it's allegedly incompatible with GNU Coding Standards, or that one: http://stackoverflow.com/questions/3538705/adding-a-custom-installation-directory-option-to-autoconf-generated-configure-sc. Terribly frustrating!)
And the whole thing makes me wonder about the status of guile > documentation. > > Back in time, Guile inherited the documentation maintenance mindset of > Emacs, i.e., "docstrings are for interactive (repl) consumption, full > descriptions belong in the manual". This makes for a lot of work, which > Emacs can easily demand of its large hacker population, but Guile cannot > (its hackers being relatively few and somewhat prone to solipsism). So > naturally, as w/ any situation where todo exceeds doers, some stuff does > not get done or gets done w/ less attention than deserved. > > The actual state of the documentation is a secondary issue. I find the question whether we have a framework that allows to extend documentation easily somewhat more important. At present, there is a protocol between the repl and the database of > docstrings (guile-procedures.txt) only, and only for libguile(?). And > those laboriously maintained docstrings do not make it into the manual, > either, by dint of the mindset. If that were to change, i think it > would be a SMOP to arrange to significantly improve the status of Guile > documentation. (Maybe that has already happened, but i missed it?) > Even not minding the manual (although it would be best if the maintainer could decide whether or not she wishes to export the docstring to the manual), as I understand -- there is no straigtforward C interface to provide docstrings to the functions exported by external modules? The other problem is that with the introduction of guile-vm, the builtin procedures' argument names disappeared, while they're quite helpful when used with geiser's autodoc mode. Personally, i think the ideal model is to define a protocol between the > repl and the manual-viewing program, such that full documentation is the > only thing that needs to be maintained. IMHO, the best layout for that > is intro, concept and expository text in .texi, and proc/var/etc details > in .h/.c/.scm comments. That's what Guile-BAUX supports, no surpise. > > I agree that it's a fairly clean approach, and I will try to employ it ASAP The guide is really great (although sometimes it remains silent about > certain features that can be found in header files), but I've > observed that doc-strings for built-in functions are no longer > available, even though they are specified. > > Could you give some examples? > > I see now that I might have gotten something wrong, but e.g. in libguile/alst.c there was a definition: SCM_DEFINE (scm_acons, "acons", 3, 0, 0, (SCM key, SCM value, SCM alist), "Add a new key-value pair to @var{alist}. A new pair is\n" "created whose car is @var{key} and whose cdr is @var{value}, and the\n" "pair is consed onto @var{alist}, and the new list is returned. This\n" "function is @emph{not} destructive; @var{alist} is not modified.") #define FUNC_NAME s_scm_acons { return scm_cons (scm_cons (key, value), alist); } #undef FUNC_NAME and (procedure-documentation acons) returns #f. Now I see that it's meant rather to generate the manual than to provide a docstring. And besides, how do the aforementioned modules (those are, as I > reckon, tsar and c-tsar) refer to guile-snarf-docs that is shipped > with guile source? > > They don't. The script guile-snarf-docs is not installed, and thus not > available to third parties (like SLAYER or Guile-SDL). But even if it > were, its method has changed over the years; it might give bad results > if used w/ a different Guile version than its original distribution. > Believe me, i [pw]ondered the same thing. That's what led to Guile > 1.4.x hacking and doc fu[1], and eventually, Guile-BAUX (and SNUGGLE). > I see you've done a lot of good things :) I'm grateful!