The branch, master has been updated
       via  c24b58e2ee8691870736959deb252c225b205b4d (commit)
       via  9e537c808b95e01165f1c2831b3737b93c0110c3 (commit)
       via  4ccb2e2c218a10a8039ca801231aaf09b6bf3bce (commit)
      from  2c4543b9e9bd38bcc45393dad94930bcde872e6c (commit)

- Log -----------------------------------------------------------------
commit c24b58e2ee8691870736959deb252c225b205b4d
Author: Nicholas Marriott <[email protected]>
Commit: Nicholas Marriott <[email protected]>

    Generate tmux.1 using mdoc2man.awk on Solaris, issue brought up and changes
    tested by Dagobert Michelsen.
---
 .gitignore          |    1 +
 Makefile.am         |   14 ++-
 configure.ac        |    5 +
 mdoc2man.awk        |  370 +++++++++++++++++++++++++++++++++++++++++++++++++++
 tmux.1 => tmux.1.in |    0
 5 files changed, 388 insertions(+), 2 deletions(-)

diff --git a/.gitignore b/.gitignore
index c3906ad..3b40086 100644
--- a/.gitignore
+++ b/.gitignore
@@ -15,3 +15,4 @@ tmux
 Makefile
 Makefile.in
 configure
+tmux.1
diff --git a/Makefile.am b/Makefile.am
index 2ce54b1..b85eae0 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -2,12 +2,14 @@
 
 # Obvious program stuff.
 bin_PROGRAMS = tmux
-dist_man1_MANS = tmux.1
+nodist_man1_MANS = tmux.1
+CLEANFILES = tmux.1
 
 # Distribution tarball options.
 EXTRA_DIST = \
        CHANGES FAQ README TODO examples compat \
-       array.h compat.h tmux.h osdep-*.c
+       array.h compat.h tmux.h osdep-*.c mdoc2man.awk \
+       tmux.1.in
 dist-hook:
        grep "^#found_debug=" configure
        find $(distdir) -name .svn -type d|xargs rm -Rf
@@ -232,6 +234,14 @@ if NO_B64_NTOP
 nodist_tmux_SOURCES += compat/b64_ntop.c
 endif
 
+# Build tmux.1 in the right format.
+tmux.1: tmux.1.in
+       if test x@MANFORMAT@ = xmdoc; then \
+               cp tmux.1.in tmux.1; \
+       else \
+               $(AWK) -fmdoc2man.awk tmux.1.in >tmux.1; \
+       fi
+
 # Update SF web site.
 upload-index.html: update-index.html
        scp www/index.html www/main.css www/images/*.png \
diff --git a/configure.ac b/configure.ac
index f00937f..b4f76f5 100644
--- a/configure.ac
+++ b/configure.ac
@@ -416,6 +416,10 @@ else
        AC_MSG_RESULT(no)
 fi
 
+# Man page defaults to mdoc.
+MANFORMAT=mdoc
+AC_SUBST(MANFORMAT)
+
 # Figure out the platform for osdep-*.c and forkpty-*.c.
 AC_MSG_CHECKING(platform)
 case "$host_os" in
@@ -455,6 +459,7 @@ case "$host_os" in
        *solaris*)
                AC_MSG_RESULT(sunos)
                PLATFORM=sunos
+               MANFORMAT=man
                ;;
        *hpux*)
                AC_MSG_RESULT(hpux)
diff --git a/mdoc2man.awk b/mdoc2man.awk
new file mode 100644
index 0000000..80e8d5f
--- /dev/null
+++ b/mdoc2man.awk
@@ -0,0 +1,370 @@
+#!/usr/bin/awk
+#
+# $Id: mdoc2man.awk,v 1.9 2009/10/24 00:52:42 dtucker Exp $
+#
+# Version history:
+#  v4+ Adapted for OpenSSH Portable (see cvs Id and history)
+#  v3, I put the program under a proper license
+#      Dan Nelson <[email protected]> added .An, .Aq and fixed a typo
+#  v2, fixed to work on GNU awk --posix and MacOS X
+#  v1, first attempt, didn't work on MacOS X
+#
+# Copyright (c) 2003 Peter Stuge <[email protected]>
+#
+# Permission to use, copy, modify, and distribute this software for any
+# purpose with or without fee is hereby granted, provided that the above
+# copyright notice and this permission notice appear in all copies.
+#
+# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+
+BEGIN {
+  optlist=0
+  oldoptlist=0
+  nospace=0
+  synopsis=0
+  reference=0
+  block=0
+  ext=0
+  extopt=0
+  literal=0
+  prenl=0
+  breakw=0
+  line=""
+}
+
+function wtail() {
+  retval=""
+  while(w<nwords) {
+    if(length(retval))
+      retval=retval OFS
+    retval=retval words[++w]
+  }
+  return retval
+}
+
+function add(str) {
+  for(;prenl;prenl--)
+    line=line "\n"
+  line=line str
+}
+
+! /^\./ {
+  for(;prenl;prenl--)
+    print ""
+  print
+  if(literal)
+    print ".br"
+  next
+}
+
+/^\.\\"/ { next }
+
+{
+  option=0
+  parens=0
+  angles=0
+  sub("^\\.","")
+  nwords=split($0,words)
+  for(w=1;w<=nwords;w++) {
+    skip=0
+    if(match(words[w],"^Li|Pf$")) {
+      skip=1
+    } else if(match(words[w],"^Xo$")) {
+      skip=1
+      ext=1
+      if(length(line)&&!(match(line," $")||prenl))
+       add(OFS)
+    } else if(match(words[w],"^Xc$")) {
+      skip=1
+      ext=0
+      if(!extopt)
+       prenl++
+      w=nwords
+    } else if(match(words[w],"^Bd$")) {
+      skip=1
+      if(match(words[w+1],"-literal")) {
+       literal=1
+       prenl++
+       w=nwords
+      }
+    } else if(match(words[w],"^Ed$")) {
+      skip=1
+      literal=0
+    } else if(match(words[w],"^Ns$")) {
+      skip=1
+      if(!nospace)
+       nospace=1
+      sub(" $","",line)
+    } else if(match(words[w],"^No$")) {
+      skip=1
+      sub(" $","",line)
+      add(words[++w])
+    } else if(match(words[w],"^Dq$")) {
+      skip=1
+      add("``")
+      add(words[++w])
+      while(w<nwords&&!match(words[w+1],"^[\\.,]"))
+       add(OFS words[++w])
+      add("''")
+      if(!nospace&&match(words[w+1],"^[\\.,]"))
+       nospace=1
+    } else if(match(words[w],"^Sq|Ql$")) {
+      skip=1
+      add("`" words[++w] "'")
+      if(!nospace&&match(words[w+1],"^[\\.,]"))
+       nospace=1
+    } else if(match(words[w],"^Oo$")) {
+      skip=1
+      extopt=1
+      if(!nospace)
+       nospace=1
+      add("[")
+    } else if(match(words[w],"^Oc$")) {
+      skip=1
+      extopt=0
+      add("]")
+    }
+    if(!skip) {
+      if(!nospace&&length(line)&&!(match(line," $")||prenl))
+       add(OFS)
+      if(nospace==1)
+       nospace=0
+    }
+    if(match(words[w],"^Dd$")) {
+      if(match(words[w+1],"^\\$Mdocdate:")) {
+        w++;
+        if(match(words[w+4],"^\\$$")) {
+          words[w+4] = ""
+        }
+      }
+      date=wtail()
+      next
+    } else if(match(words[w],"^Dt$")) {
+      id=wtail()
+      next
+    } else if(match(words[w],"^Ux$")) {
+      add("UNIX")
+      skip=1
+    } else if(match(words[w],"^Ox$")) {
+      add("OpenBSD")
+      skip=1
+    } else if(match(words[w],"^Os$")) {
+      add(".TH " id " \"" date "\" \"" wtail() "\"")
+    } else if(match(words[w],"^Sh$")) {
+      add(".SH")
+      synopsis=match(words[w+1],"SYNOPSIS")
+    } else if(match(words[w],"^Xr$")) {
+      add("\\fB" words[++w] "\\fP(" words[++w] ")" words[++w])
+    } else if(match(words[w],"^Rs$")) {
+      split("",refauthors)
+      nrefauthors=0
+      reftitle=""
+      refissue=""
+      refdate=""
+      refopt=""
+      refreport=""
+      reference=1
+      next
+    } else if(match(words[w],"^Re$")) {
+      prenl++
+      for(i=nrefauthors-1;i>0;i--) {
+       add(refauthors[i])
+       if(i>1)
+         add(", ")
+      }
+      if(nrefauthors>1)
+       add(" and ")
+      if(nrefauthors>0)
+        add(refauthors[0] ", ")
+      add("\\fI" reftitle "\\fP")
+      if(length(refissue))
+       add(", " refissue)
+      if(length(refreport)) {
+       add(", " refreport)
+      }
+      if(length(refdate))
+       add(", " refdate)
+      if(length(refopt))
+       add(", " refopt)
+      add(".")
+      reference=0
+    } else if(reference) {
+      if(match(words[w],"^%A$")) { refauthors[nrefauthors++]=wtail() }
+      if(match(words[w],"^%T$")) {
+       reftitle=wtail()
+       sub("^\"","",reftitle)
+       sub("\"$","",reftitle)
+      }
+      if(match(words[w],"^%N$")) { refissue=wtail() }
+      if(match(words[w],"^%D$")) { refdate=wtail() }
+      if(match(words[w],"^%O$")) { refopt=wtail() }
+      if(match(words[w],"^%R$")) { refreport=wtail() }
+    } else if(match(words[w],"^Nm$")) {
+      if(synopsis) {
+       add(".br")
+       prenl++
+      }
+      n=words[++w]
+      if(!length(name))
+       name=n
+      if(!length(n))
+       n=name
+      add("\\fB" n "\\fP")
+      if(!nospace&&match(words[w+1],"^[\\.,]"))
+       nospace=1
+    } else if(match(words[w],"^Nd$")) {
+      add("\\- " wtail())
+    } else if(match(words[w],"^Fl$")) {
+      add("\\fB\\-" words[++w] "\\fP")
+      if(!nospace&&match(words[w+1],"^[\\.,]"))
+       nospace=1
+    } else if(match(words[w],"^Ar$")) {
+      add("\\fI")
+      if(w==nwords)
+       add("file ...\\fP")
+      else {
+       add(words[++w] "\\fP")
+       while(match(words[w+1],"^\\|$"))
+         add(OFS words[++w] " \\fI" words[++w] "\\fP")
+      }
+      if(!nospace&&match(words[w+1],"^[\\.,]"))
+       nospace=1
+    } else if(match(words[w],"^Cm$")) {
+      add("\\fB" words[++w] "\\fP")
+      while(w<nwords&&match(words[w+1],"^[\\.,:;)]"))
+       add(words[++w])
+    } else if(match(words[w],"^Op$")) {
+      option=1
+      if(!nospace)
+       nospace=1
+      add("[")
+    } else if(match(words[w],"^Pp$")) {
+      prenl++
+    } else if(match(words[w],"^An$")) {
+      prenl++
+    } else if(match(words[w],"^Ss$")) {
+      add(".SS")
+    } else if(match(words[w],"^Pa$")&&!option) {
+      add("\\fI")
+      w++
+      if(match(words[w],"^\\."))
+       add("\\&")
+      add(words[w] "\\fP")
+      while(w<nwords&&match(words[w+1],"^[\\.,:;)]"))
+       add(words[++w])
+    } else if(match(words[w],"^Dv$")) {
+      add(".BR")
+    } else if(match(words[w],"^Em|Ev$")) {
+      add(".IR")
+    } else if(match(words[w],"^Pq$")) {
+      add("(")
+      nospace=1
+      parens=1
+    } else if(match(words[w],"^Aq$")) {
+      add("<")
+      nospace=1
+      angles=1
+    } else if(match(words[w],"^S[xy]$")) {
+      add(".B " wtail())
+    } else if(match(words[w],"^Ic$")) {
+      plain=1
+      add("\\fB")
+      while(w<nwords) {
+       w++
+       if(match(words[w],"^Op$")) {
+         w++
+         add("[")
+         words[nwords]=words[nwords] "]"
+       }
+       if(match(words[w],"^Ar$")) {
+         add("\\fI" words[++w] "\\fP")
+       } else if(match(words[w],"^[\\.,]")) {
+         sub(" $","",line)
+         if(plain) {
+           add("\\fP")
+           plain=0
+         }
+         add(words[w])
+       } else {
+         if(!plain) {
+           add("\\fB")
+           plain=1
+         }
+         add(words[w])
+       }
+       if(!nospace)
+         add(OFS)
+      }
+      sub(" $","",line)
+      if(plain)
+       add("\\fP")
+    } else if(match(words[w],"^Bl$")) {
+      oldoptlist=optlist
+      if(match(words[w+1],"-bullet"))
+       optlist=1
+      else if(match(words[w+1],"-enum")) {
+       optlist=2
+       enum=0
+      } else if(match(words[w+1],"-tag"))
+       optlist=3
+      else if(match(words[w+1],"-item"))
+       optlist=4
+      else if(match(words[w+1],"-bullet"))
+       optlist=1
+      w=nwords
+    } else if(match(words[w],"^El$")) {
+      optlist=oldoptlist
+    } else if(match(words[w],"^Bk$")) {
+      if(match(words[w+1],"-words")) {
+       w++
+       breakw=1
+      }
+    } else if(match(words[w],"^Ek$")) {
+      breakw=0
+    } else if(match(words[w],"^It$")&&optlist) {
+      if(optlist==1)
+       add(".IP \\(bu")
+      else if(optlist==2)
+       add(".IP " ++enum ".")
+      else if(optlist==3) {
+       add(".TP")
+       prenl++
+       if(match(words[w+1],"^Pa$|^Ev$")) {
+         add(".B")
+         w++
+       }
+      } else if(optlist==4)
+       add(".IP")
+    } else if(match(words[w],"^Sm$")) {
+      if(match(words[w+1],"off"))
+       nospace=2
+      else if(match(words[w+1],"on"))
+       nospace=0
+      w++
+    } else if(!skip) {
+      add(words[w])
+    }
+  }
+  if(match(line,"^\\.[^a-zA-Z]"))
+    sub("^\\.","",line)
+  if(parens)
+    add(")")
+  if(angles)
+    add(">")
+  if(option)
+    add("]")
+  if(ext&&!extopt&&!match(line," $"))
+    add(OFS)
+  if(!ext&&!extopt&&length(line)) {
+    print line
+    prenl=0
+    line=""
+  }
+}
diff --git a/tmux.1 b/tmux.1.in
similarity index 100%
rename from tmux.1
rename to tmux.1.in


commit 9e537c808b95e01165f1c2831b3737b93c0110c3
Merge: 4ccb2e2 2c4543b
Author: Nicholas Marriott <[email protected]>
Commit: Nicholas Marriott <[email protected]>

    Merge branch 'master' of ssh://git.code.sf.net/p/tmux/tmux-code

 clock.c           |   15 +++++++++++----
 cmd-copy-mode.c   |    8 +++++---
 cmd-queue.c       |    2 +-
 cmd-source-file.c |    1 +
 cmd-swap-pane.c   |    8 ++++++--
 colour.c          |   26 --------------------------
 job.c             |    2 +-
 options-table.c   |    2 +-
 screen-write.c    |    4 ++++
 server-client.c   |   14 +-------------
 tmux.1            |   16 +++++++---------
 tmux.c            |   19 ++++++++++---------
 tmux.h            |    6 ++----
 tty-term.c        |    4 +---
 tty.c             |   36 ++++++------------------------------
 utf8.c            |    1 -
 16 files changed, 57 insertions(+), 107 deletions(-)


commit 4ccb2e2c218a10a8039ca801231aaf09b6bf3bce
Author: Nicholas Marriott <[email protected]>
Commit: Nicholas Marriott <[email protected]>

    TODO tweaks.
---
 TODO |    3 ++-
 1 files changed, 2 insertions(+), 1 deletions(-)

diff --git a/TODO b/TODO
index d3e3b46..92b60a9 100644
--- a/TODO
+++ b/TODO
@@ -47,7 +47,7 @@
 - hooks!
 
 - warts on current naming:
-       * display-time but message-fg/bg/attr
+       * display-time but message-fg/bg/attr
        * list-* vs show-*
        * server-info
        * split-window -> split-pane??
@@ -55,6 +55,7 @@
 - way to keep a job running just read its last line of output for #()
 
 - better UTF-8 support:
+       * #22T can split in the middle of UTF-8 characters!
        * window names and titles
        * message display
        * prompt input


-----------------------------------------------------------------------

Summary of changes:
 .gitignore          |    1 +
 Makefile.am         |   14 ++-
 TODO                |    3 +-
 configure.ac        |    5 +
 mdoc2man.awk        |  370 +++++++++++++++++++++++++++++++++++++++++++++++++++
 tmux.1 => tmux.1.in |    0
 6 files changed, 390 insertions(+), 3 deletions(-)
 create mode 100644 mdoc2man.awk
 rename tmux.1 => tmux.1.in (100%)


hooks/post-receive
-- 
tmux

------------------------------------------------------------------------------
Precog is a next-generation analytics platform capable of advanced
analytics on semi-structured data. The platform includes APIs for building
apps and a phenomenal toolset for data science. Developers can use
our toolset for easy data analysis & visualization. Get a free account!
http://www2.precog.com/precogplatform/slashdotnewsletter
_______________________________________________
tmux-cvs mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/tmux-cvs

Reply via email to