]> git.donarmstrong.com Git - lilypond.git/commitdiff
Merge branch 'master' of /home/jcharles/GIT/Lily/. into translation
authorJean-Charles Malahieude <lilyfan@orange.fr>
Sat, 13 Feb 2016 19:15:40 +0000 (20:15 +0100)
committerJean-Charles Malahieude <lilyfan@orange.fr>
Sat, 13 Feb 2016 19:15:40 +0000 (20:15 +0100)
Documentation/changes.tely
Documentation/contributor/quick-start.itexi
Documentation/contributor/source-code.itexi
scm/define-markup-commands.scm

index 00e53b5e88ff347ea84ea001846164f9f7feae4a..ce41e0aefa5319043a52bf5b3b944d78890fc799 100644 (file)
@@ -61,6 +61,24 @@ which scares away people.
 
 @end ignore
 
+@item
+The markup-list-command @code{\table} is now available.
+Each column may be aligned differently.
+@lilypond[quote,verbatim]
+\markuplist {
+    \override #'(padding . 2)
+    \table
+      #'(0 1 0 -1)
+      {
+        \underline { center-aligned right-aligned center-aligned left-aligned }
+        one "1" thousandth "0.001"
+        eleven "11" hundredth "0.01"
+        twenty "20" tenth "0.1"
+        thousand "1000" one "1.0"
+      }
+}
+@end lilypond
+
 @item
 A new page breaking function @code{ly:one-line-auto-height-breaking}
 places a whole score on a single line and changes the page width
index a6da27402bdcb64bdd1a0a92665e29bd3ccece23..9a5b12a7ec36d597e6eef5875588c2d65ec6c4d5 100644 (file)
@@ -490,9 +490,9 @@ PATH=~/directory_containing_git-cl:"$@{PATH@}"
 @unnumberedsubsec Updating @code{git-cl}
 
 LilyDev users should make sure that they always have the latest
-version of git-cl installed.  It is possible that changes may have been
-made to git-cl that are not (yet) included in the version of LilyDev has
-been installed.
+version of git-cl installed.  It is possible that changes have been
+made to git-cl that are not (yet) included in the version of LilyDev
+that you are using.
 
 @noindent
 Using a terminal run the following commands:
@@ -510,21 +510,26 @@ This will download and update you to the lastest version of git-cl.
 
 @subsubheading Set up login accounts
 
-Because the @code{git-cl} updates two separate websites (Google's
-Rietveld Code Review Tool and LilyPond's issue tracker) you @emph{must}
-have a valid user login and password to both sites.
+Because @code{git-cl} updates two separate websites (Google's Rietveld
+Code Review Tool and LilyPond's issue tracker) you @emph{must} have a
+valid user account (login and password) for both sites.
 
 @noindent
-Although that it may appear that you have to use a @q{Google} email
-address for the Rietveld Code Review Tool when you sign up, you can
-instead select the option @qq{I prefer to use my current email address}
-during sign up.
+For the Rietveld Code Review Tool you will need a Google account.  Note
+that a Google account does not require that you have or use a @q{Google}
+email address.  You can use @emph{any} email address for your Google
+account.  Just select the option @qq{I prefer to use my current email
+address} when you sign up.
+
+@warning{In order for @code{git-cl} to work, your Google Account
+Settings must have the @q{Access for less secure apps} set to
+@q{Allowed}.  This is normally the default setting.}
 
 @noindent
-For a user login to the LilyPond issue tracker, please send your
-request, preferably using the email address you want to use for your
-login, to the LilyPond Developer's mailing list
-(@code{lilypond-devel@@gnu.org}).
+For the LilyPond issue tracker, please request a user account by sending
+an email to the LilyPond Developer's mailing list
+(@code{lilypond-devel@@gnu.org}), preferably using the same email
+address that you want to use for your user login.
 
 @subsubheading Authorising git-cl for the LilyPond issue tracker
 
@@ -533,8 +538,8 @@ it can access the LilyPond issue tracker.
 
 @enumerate
 @item
-Once a valid login has been given for the LilyPond issye tracker, go to
-the @q{Account settings} and select the @q{OAuth} tab.
+Once you have been given a valid login for the LilyPond issue tracker,
+go to the @q{Account settings} and select the @q{OAuth} tab.
 
 @item
 Locate the @q{Register New Application} section and enter @code{git-cl}
@@ -545,7 +550,7 @@ Click on the @q{Register new application} button.  You should now see
 @q{git-cl} listed under the @q{My Applications} section.
 
 @item
-Click on the @q{Generate Bearer Token} button.    You should now see
+Click on the @q{Generate Bearer Token} button.  You should now see
 @q{git-cl} listed under the @q{Authorized Applications} section along
 with a value for the @q{Bearer Token} entry.  This value is used, in the
 next steps, to allow git-cl to access and update the LilyPond issue
@@ -557,24 +562,30 @@ tracker.
 
 @enumerate
 @item
-Using a terminal, move to top source directory of the
-@code{$LILYPOND_GIT} directory and then run @code{git-cl} with the
-@code{config} option:
+Using a terminal, move to the top level of the @code{$LILYPOND_GIT}
+directory and then run @code{git-cl} with the @code{config} option:
 
 @example
 cd $LILYPOND_GIT
 git-cl config
 @end example
 
+@noindent
+You will see a series of prompts.  For most of them you can simply
+accept the default value by responding with a newline (i.e. by pressing
+return or enter).
+
 @item
-When prompted for the @code{Rietveld server}:
+The prompt for the @code{Rietveld server} (the patch review tool), which
+defaults to @code{codereview.appspot.com}
 
 @example
 Rietveld server (host[:port]) [codereview.appspot.com]:
 @end example
 
 @item
-When prompted for the @code{Allura server} (the LilyPond issue tracker):
+The prompt for the @code{Allura server} (the issue tracker), which
+defaults to @code{https://sourceforge.net/p/testlilyissues/issues/}
 
 @example
 Allura server [https://sourceforge.net/p/testlilyissues/issues/]:
@@ -583,18 +594,18 @@ Allura server [https://sourceforge.net/p/testlilyissues/issues/]:
 @item
 When prompted for the @code{Allura bearer token} copy/paste the value
 generated in the previous steps for
-@emph{Authorising git-cl for the LilyPond issue tracker}:
+@emph{Authorising git-cl for the LilyPond issue tracker}
 
 @smallexample
-Allura bearer token (see https://sourceforge.net/auth/oauth/) [fdbfca60801533465480]:
+Allura bearer token (see https://sourceforge.net/auth/oauth/): fdbfca60801533465480
 @end smallexample
 
-@warning{The above is a @q{fake} bearer token just to illustrate the
-example. Do not use this value.}
+@warning{The above is a @q{fake} bearer token used just for
+illustration. Do not use this value.}
 
 @item
-Finally, when prompted for the @code{CC list} entry, add the LilyPond
-Developer's group email.
+Finally, the prompt for the @code{CC list}, which defaults to
+@code{lilypond-devel@@gnu.org}, the LilyPond Developer's email list.
 
 @example
 CC list ("x" to clear) [lilypond-devel@@gnu.org]:
index 4a7357878c85e13f87a3aaf5ed289baed674596a..719c85e041ba80021059c338d3c0b1047f76cc13 100644 (file)
@@ -1299,88 +1299,9 @@ code review website:
 @uref{http://codereview.appspot.com/}
 @end example
 
-@subsubheading @command{git-cl} install
-
-LilyDev users should skip over these @q{install} instructions.
-
-@enumerate
-
-@item
-Install @command{git-cl} by entering:
-
-@example
-git clone https://github.com/gperciva/git-cl.git
-@end example
-
-If that command fails for some reason, try this instead:
-
-@example
-git clone git://github.com/gperciva/git-cl.git
-@end example
-
-@item
-Add the @file{git-cl/} directory to your PATH,
-or create a symbolic link to the @command{git-cl}
-and @command{upload.py} scripts in one of your PATH
-directories (such as @file{$HOME/bin}).
-
-In GNU/Linux you can add directories to PATH
-by adding this line to a hidden file @file{.bashrc},
-located in your home directory:
-
-@example
-PATH=~/type-here-directory-containing-git-cl:"$@{PATH@}"
-@end example
-
-@end enumerate
-
-@subsubheading @command{git-cl} configuration
-
-LilyDev users should perform these @q{configuration} instructions.
-
-@enumerate
-@item
-You must own a Google account login; please create one if you do not
-have one already.
-
-@noindent
-Note that a google account does not need to be a Gmail account; you can
-use @emph{any} email address for your google account when you sign up.
-
-@warning{In order for @code{git-cl} to work as expected, your Google
-Account Settings must have the @q{Access for less secure apps} set to
-@q{Allowed}.  This is normally the default setting.}
-
-@item
-Move into the top source directory and then configure
-@command{git-cl} with the following commands:
-
-@example
-cd $LILYPOND_GIT
-git-cl config
-@end example
-
-For the @qq{Rietveld server} question, the default value
-(@qq{codereview.appspot.com}) should be accepted by
-answering with a newline (CR).
-
-The @qq{CC list} question should be answered with:
-
-@example
-lilypond-devel@@gnu.org
-@end example
-
-The @qq{Tree status URL} value should be left blank.  So should
-the @qq{ViewVC URL} value, since it is used by @command{git-cl
-dcommit} which is only for repositories which use @command{git
-svn} (LilyPond doesn't).
-
-@end enumerate
-
-@subsubheading Uploading patch set
-
-This section assumes that you have already configured the
-@command{git-cl} @q{helper-script}.  See @ref{git-cl}.
+You can upload a patch for review by using our custom @code{git-cl}
+@q{helper-script}.  This section assumes you have already installed,
+updated, and configured @code{git-cl}.  See @ref{git-cl}.
 
 @warning{Unless you are familiar with branches, only work on one
 set of changes at once.}
@@ -1440,15 +1361,12 @@ git-cl upload <reference SHA1 ID>
 @noindent
 where <reference SHA1 ID> is the SHA1 ID of the commit to be used
 as a reference source for the patch.  Generally, this will be the
-SHA1 ID of origin/master, and in that case the command:
+SHA1 ID of origin/master, and in that case you can just use the command:
 
 @example
 git-cl upload origin/master
 @end example
 
-@noindent
-can be used.
-
 @end itemize
 
 First you will see a terminal editor where you can edit the
index edd70f216dc8eaf448987f2e9f81836a4b3f7bd3..d35689d7fe6f55a6cf788edd8d7592a9abcec559 100644 (file)
@@ -4713,6 +4713,152 @@ where @var{X} is the number of staff spaces."
   "Like @code{\\override}, for markup lists."
   (interpret-markup-list layout (cons (list new-prop) props) args))
 
+(define-markup-list-command (table layout props column-align lst)
+  (number-list? markup-list?)
+  #:properties ((padding 0)
+                (baseline-skip))
+  "@cindex creating a table.
+
+Returns a table.
+
+@var{column-align} specifies how each column is aligned, possible values are
+-1, 0, 1.  The number of elements in @var{column-align} determines how many
+columns will be printed.
+The entries to print are given by @var{lst}, a markup-list.  If needed, the last
+row is filled up with @code{point-stencil}s.
+Overriding @code{padding} may be used to increase columns horizontal distance.
+Overriding @code{baseline-skip} to increase rows vertical distance.
+@lilypond[verbatim,quote]
+\\markuplist {
+  \\override #'(padding . 2)
+  \\table
+    #'(0 1 0 -1)
+    {
+      \\underline { center-aligned right-aligned center-aligned left-aligned }
+      one \number 1 thousandth \number 0.001
+      eleven \number 11 hundredth \number 0.01
+      twenty \number 20 tenth \number 0.1
+      thousand \number 1000 one \number 1.0
+    }
+}
+@end lilypond
+"
+
+  (define (split-lst initial-lst lngth result-lst)
+    ;; split a list into a list of sublists of length lngth
+    ;; eg. (split-lst '(1 2 3 4 5 6) 2 '())
+    ;; -> ((1 2) (3 4) (5 6))
+    (cond ((not (integer? (/ (length initial-lst) lngth)))
+           (ly:warning
+            "Can't split list of length ~a into ~a parts, returning empty list"
+            (length initial-lst) lngth)
+           '())
+          ((null? initial-lst)
+            (reverse result-lst))
+          (else
+            (split-lst
+              (drop initial-lst lngth)
+              lngth
+              (cons (take initial-lst lngth) result-lst)))))
+
+  (define (dists-list init padding lst)
+    ;; Returns a list, where each element of `lst' is
+    ;; added to the sum of the previous elements of `lst' plus padding.
+    ;; `init' will be the first element of the resulting list. The addition
+    ;; starts with the values of `init', `padding' and `(car lst)'.
+    ;; eg. (dists-list 0.01 0.1 '(1 2 3 4)))
+    ;; -> (0.01 1.11 3.21 6.31 10.41)
+    (if (or (not (number? init))
+            (not (number? padding))
+            (not (number-list? lst)))
+        (begin
+          (ly:warning
+            "not fitting argument for `dists-list', return empty lst ")
+          '())
+        (reverse
+          (fold (lambda (elem rl) (cons (+ elem padding (car rl)) rl))
+                (list init)
+                lst))))
+
+  (let* (;; get the number of columns
+         (columns (length column-align))
+         (init-stils (interpret-markup-list layout props lst))
+         ;; If the given markup-list is the result of a markup-list call, their
+         ;; length may not be easily predictable, thus we add point-stencils
+         ;; to fill last row of the table.
+         (rem (remainder (length init-stils) columns))
+         (filled-stils
+           (if (zero? rem)
+               init-stils
+               (append init-stils (make-list (- columns rem) point-stencil))))
+         ;; get the stencils in sublists of length `columns'
+         (stils
+           (split-lst filled-stils columns '()))
+         ;; procedure to return stencil-length
+         ;; If it is nan, return 0
+         (lengths-proc
+           (lambda (m)
+             (let ((lngth (interval-length (ly:stencil-extent m X))))
+               (if (nan? lngth) 0 lngth))))
+         ;; get the max width of each column in a list
+         (columns-max-x-lengths
+           (map
+             (lambda (x)
+               (apply max 0
+                      (map
+                        lengths-proc
+                        (map (lambda (l) (list-ref l x)) stils))))
+             (iota columns)))
+         ;; create a list of (basic) distances, which each column should
+         ;; moved, using `dists-list'. Some padding may be added.
+         (dist-sequence
+           (dists-list 0 padding columns-max-x-lengths))
+         ;; Get all stencils of a row, moved accurately to build columns.
+         ;; If the items of a column are aligned other than left, we need to
+         ;; move them to avoid collisions:
+         ;; center aligned: move all items half the width of the widest item
+         ;; right aligned: move all items the full width of the widest item.
+         ;; Added to the default-offset calculated in `dist-sequence'.
+         ;; `stencils-for-row-proc' needs four arguments:
+         ;;    stil    - a stencil
+         ;;    dist    - a numerical value as basic offset in X direction
+         ;;    column  - a numerical value for the column we're in
+         ;;    x-align - a numerical value how current column should be
+         ;;              aligned, where (-1, 0, 1) means (LEFT, CENTER, RIGHT)
+         (stencils-for-row-proc
+           (lambda (stil dist column x-align)
+             (ly:stencil-translate-axis
+               (ly:stencil-aligned-to stil X x-align)
+               (cond ((member x-align '(0 1))
+                      (let* (;; get the stuff for relevant column
+                             (stuff-for-column
+                               (map
+                                 (lambda (s) (list-ref s column))
+                                 stils))
+                             ;; get length of every column-item
+                             (lengths-for-column
+                               (map lengths-proc stuff-for-column))
+                             (widest
+                               (apply max 0 lengths-for-column)))
+                        (+ dist (/ widest (if (= x-align 0) 2 1)))))
+                     (else dist))
+               X)))
+         ;; get a list of rows using `ly:stencil-add' on a list of stencils
+         (rows
+           (map
+             (lambda (stil-list)
+               (apply ly:stencil-add
+                 (map
+                   ;; the procedure creating the stencils:
+                   stencils-for-row-proc
+                   ;; the procedure's args:
+                   stil-list
+                   dist-sequence
+                   (iota columns)
+                   column-align)))
+             stils)))
+   (space-lines baseline-skip rows)))
+
 (define-markup-list-command (map-markup-commands layout props compose args)
   (procedure? markup-list?)
   "This applies the function @var{compose} to every markup in