lilypond-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Point and Click does not work on Windows


From: ArnoldTheresius
Subject: Re: Point and Click does not work on Windows
Date: Mon, 15 Apr 2013 23:36:48 -0700 (PDT)


Gilles THIBAULT wrote
>>one way to make point and click work on windows xp follows [...]
> ...
> Eluze

Hello,

in relation to issue 3306
[http://code.google.com/p/lilypond/issues/detail?id=3306]
I analized the point-and-click problem on my Win7/64 computer.
(Why does it not work out of the box after installation?)

*Here the result:*

The registry entry for point-and-click after the setup of version 2.17.15
and 2.17.16:
HKEY_CLASSES_ROOT\textedit\shell\open\command (type REG_EXPAND_SZ) has value
»"$INSTDIR\usr\bin\guile.exe" -e main -s
"$INSTDIR\usr\bin\lilypond-invoke-editor.scm" "%1"«
where $INSTDIR is the installation directory

*1. *File »$INSTDIR/usr/bin/lilypond-invoke-editor.scm« does not exist.
   The correct file name is without the extension ».scm«.

*2. *I placed this 7-line minimal script at
»$INSTDIR/usr/bin/lilypond-invoke-editor.scm«:
/     #!/home/gub/gub/target/tools/root/usr/bin/guile -s
     !#
     (define (main args)
       (for-each display (list "\ncommandline = '" args "'\n"))
       (system "pause"))

     (main (command-line))/
   This did show, it's executed twice. Removing the option »-e main« will it
only
   make executed once.

*==> corrected registry entry:*
»"*$INSTDIR\usr\bin\guile.exe" -s "$INSTDIR\usr\bin\lilypond-invoke-editor"
"%1"*«
this corresponds to the header line (for UNIX) of this
lilypond-invoke-editor script.




Bug in the script file $INSTDIR/usr/bin/lilypond-invoke-editor:

*3. *For testing I executed it in the command shell. I got the error message
   »ERROR: no code for module (scm editor)«, because »LILYPOND_DATADIR«
   (which extends the »%load-path«) points to
   »$INSTDIR\usr/share/lilypond/2.17.16« (resp. 2.17.15),
   but this directory does not exist on a windows installation,
   the last element of the path is called »current« instead.
*==> *move »(define PLATFORM before »(define LILYPOND_DATADIR
    conditionaly use »"current"« instead of »TOPLEVEL-VERSION« for
definition of
    LILYPOND_DATADIR if the PLATFORM is »'windows«
    Then it will find module
»$INSTDIR/usr/share/lilypond/current/scm/editor.scm« to load

*Modifications to $INSTDIR/usr/bin/lilypond-invoke-editor:*+ (define
PLATFORM
/+   (string->symbol
+    (string-downcase
+     (car (string-tokenize (vector-ref (uname) 0) char-set:letter)))))
+
  (define PROGRAM-NAME "lilypond-invoke-editor")
  (define TOPLEVEL-VERSION "2.17.16")
  (define DATADIR "/usr/share")
  (define COMPILE-TIME-PREFIX
    (format #f "~a/lilypond/~a" DATADIR TOPLEVEL-VERSION))

  ;; argv0 relocation -- do in wrapper?

  (define LILYPOND_DATADIR
    (let* ((prefix
          (or (getenv "LILYPOND_DATADIR")
              (dirname  (dirname (car (command-line)))))))
    

      (if (eq? prefix (dirname DATADIR)) COMPILE-TIME-PREFIX
        (format #f "~a/share/lilypond/~a"
-               prefix TOPLEVEL_VERSION))))
+               prefix
+               (if (eq? PLATFORM 'windows)
+                       "current"
+                       TOPLEVEL-VERSION)))))
...
- (define PLATFORM
-   (string->symbol
-    (string-downcase
-     (car (string-tokenize (vector-ref (uname) 0) char-set:letter)))))
-/




There is another lilypad usage problem which may be tuned by a modification
in
»$INSTDIR/usr/share/lilypond/current/scm/editor.scm«:

*4. *If you enable the option »-e main« again in the registry settings, you
will notice
   the scripts waits until lilypad terminates, and due to this option it
will open
   lilypad again and wait until it terminates again. Even without the option
»-e main«
   in the registry command line and started form a GUI application there are
three more
   processes running and waiting until lilypad terminates.
*==> *in the »editor-command-template-alist« prefix the lilypad command with
»start «
    to launch lilypad in the background (equivalent to appending »&« on
UNIX) if the
    PLATFORM is »'windows«.
    /NOTICE: this file editor.scm is also loaded by lily.scm, but I havn't
seen any effect
    caused by this modification./

*Modifications to $INSTDIR/usr/share/lilypond/current/scm/editor.scm:*
/  (define editor-command-template-alist
-   '(("emacs" .  "emacsclient --no-wait +%(line)s:%(column)s %(file)s ||
(emacs +%(line)s:%(column)s %(file)s&)")
+   `(("emacs" .  "emacsclient --no-wait +%(line)s:%(column)s %(file)s ||
(emacs +%(line)s:%(column)s %(file)s&)")
      ("gvim" . "gvim --remote +:%(line)s:norm%(column)s %(file)s")
      ("uedit32" . "uedit32 %(file)s -l%(line)s -c%(char)s")
      ("nedit" . "nc -noask +%(line)s %(file)s")
      ("gedit" . "gedit +%(line)s %(file)s")
      ("jedit" . "jedit -reuseview %(file)s +line:%(line)s")
      ("syn" . "syn -line %(line)s -col %(char)s %(file)s")
-     ("lilypad" . "lilypad +%(line)s:%(char)s %(file)s")))
+     ("lilypad" . ,(if (eq? PLATFORM 'windows)
+                   "start lilypad +%(line)s:%(char)s %(file)s"
+                   "lilypad +%(line)s:%(char)s %(file)s"))))/

ArnoldTheresius





--
View this message in context: 
http://lilypond.1069038.n5.nabble.com/Point-and-Click-does-not-work-on-Windows-tp115986p144562.html
Sent from the Dev mailing list archive at Nabble.com.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]