Subject: bug#5831: closed (Re: bug#5831: 23.1.94; htmlfontify's `hfy-which-etags' not finding etags "standalone")

From: [email-masked] (GNU bug Tracking System)
Date: Thu, 31 May 2012 17:43:02 +0000

Your bug report

#5831: 23.1.94; htmlfontify's `hfy-which-etags' not finding etags  "standalone"

which was filed against the emacs package, has been closed.

The explanation is attached below, along with your original report.
If you require more details, please reply to [email-masked].

-- 
5831: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=5831
GNU Bug Tracking System
Contact [email-masked] with problems

Subject: Re: bug#5831: 23.1.94; htmlfontify's `hfy-which-etags' not finding etags "standalone"
From: Glenn Morris <[email-masked]>
To: [email-masked]
Date: Thu, 31 May 2012 13:40:44 -0400
List-Id: <debbugs-submit.debbugs.gnu.org>

Version: 23.3

I guess this will have been fixed by this change:

2011-02-02  Eli Zaretskii  <eliz AT gnu.org>

   * makefile.w32-in (ETAGS_CFLAGS, CTAGS_CFLAGS): Add
   ``-DVERSION="\"$(VERSION)\"" -DEMACS_NAME="\"GNU Emacs\""''.

Subject: 23.1.94; htmlfontify's `hfy-which-etags' not finding etags "standalone"
From: MON KEY <[email-masked]>
To: [email-masked]
Date: Sat, 3 Apr 2010 14:41:40 -0400
List-Id: <debbugs-submit.debbugs.gnu.org>

`hfy-which-etags' fails when the etags executable in path is of type
"standalone" (not sure if this w32 specific):

(shell-command-to-string (concat hfy-etags-bin " --version"))

(executable-find hfy-etags-bin)
 ;=> "<MY-W32-PATH>/emacs-23.1.94/bin/etags.exe"

(executable-find "etags")
 ;=> "<MY-W32-PATH>/emacs-23.1.94/bin/etags.exe"

(equal (executable-find hfy-etags-bin)
       (executable-find "etags"))
 ;=> t

 (shell-command-to-string (concat  hfy-etags-bin " --version")))

 ;=> "etags (standalone 17.38.1.4)
 ; |  Copyright (C) 2010 Free Software Foundation, Inc.
 ; |  This program is distributed under the terms in ETAGS.README"

Its unlikey we wouldn't have an etags in path...

On a GNU/Linux evaluating same I get:

(shell-command-to-string (concat  hfy-etags-bin " --version"))
 ;=> "etags (GNU Emacs 23.1.90)
 ; |  Copyright (C) 2009 Free Software Foundation, Inc.
 ; |  This program is distributed under the terms in ETAGS.README"

and `hfy-which-etags' conditional _does_ match this etags exectuable.

`hfy-which-etags' conditional string-match evaluations should have a rule to
match a ``standalone'' etags.

The problem is that when `hfy-which-etags' returns false
it causes `hfy-etags-cmd' to fail:

 (cdr (assoc (hfy-which-etags) hfy-etags-cmd-alist))
  ;=> nil

if we add a new rule to `hfy-which-etags' conditional:

  ((string-match "standalone" v) "emacs etags")

then we get the appropriate shell script template:

 (cdr (assoc (hfy-which-etags) hfy-etags-cmd-alist))

 ;=> for src in `find . -type f`;
 ; |   do
 ; |     ETAGS=%s;
 ; |   { ...  lots more ellided ... }

This won't change htmlfontify's reliance on a POSIX friendly shell
(nor should it). However, the user shouldn't be restricted from using
this library _because_ she is using the executable distributed _with_
her local Emacs...

Patch follows:

;;; ==============================

*** lisp/htmlfontify.el	2010-03-10 20:20:34.000000000 -0500
--- buffer-content-3664ZIc	2010-04-03 14:28:32.493000000 -0400
***************
*** 391,397 ****
  (defun hfy-which-etags ()
    "Return a string indicating which flavour of etags we are using."
    (let ((v (shell-command-to-string (concat hfy-etags-bin " --version"))))
!     (cond ((string-match "exube" v) "exuberant ctags")
            ((string-match "GNU E" v) "emacs etags"    )) ))

  (defcustom hfy-etags-cmd
--- 391,398 ----
  (defun hfy-which-etags ()
    "Return a string indicating which flavour of etags we are using."
    (let ((v (shell-command-to-string (concat hfy-etags-bin " --version"))))
!     (cond ((string-match "standalone" v) "exuberant ctags")
!           ((string-match "exube" v) "exuberant ctags")
            ((string-match "GNU E" v) "emacs etags"    )) ))

  (defcustom hfy-etags-cmd

;;; ==============================

/s_P\