diff -Nru ratpoison-1.4.8/aclocal.m4 ratpoison-1.4.9/aclocal.m4 --- ratpoison-1.4.8/aclocal.m4 2014-09-14 16:34:29.000000000 +0000 +++ ratpoison-1.4.9/aclocal.m4 2017-04-02 23:39:55.000000000 +0000 @@ -1,8 +1,7 @@ -# generated automatically by aclocal 1.11.6 -*- Autoconf -*- +# generated automatically by aclocal 1.15 -*- Autoconf -*- + +# Copyright (C) 1996-2014 Free Software Foundation, Inc. -# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, -# 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, -# Inc. # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. @@ -12,33 +11,31 @@ # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. +m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])]) m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.69],, [m4_warning([this file was generated for autoconf 2.69. You have another version of autoconf. It may work, but is not guaranteed to. If you have problems, you may need to regenerate the build system entirely. -To do so, use the procedure documented by the package, typically `autoreconf'.])]) +To do so, use the procedure documented by the package, typically 'autoreconf'.])]) -# Copyright (C) 2002, 2003, 2005, 2006, 2007, 2008, 2011 Free Software -# Foundation, Inc. +# Copyright (C) 2002-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. -# serial 1 - # AM_AUTOMAKE_VERSION(VERSION) # ---------------------------- # Automake X.Y traces this macro to ensure aclocal.m4 has been # generated from the m4 files accompanying Automake X.Y. # (This private macro should not be called outside this file.) AC_DEFUN([AM_AUTOMAKE_VERSION], -[am__api_version='1.11' +[am__api_version='1.15' dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to dnl require some minimum version. Point them to the right macro. -m4_if([$1], [1.11.6], [], +m4_if([$1], [1.15], [], [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl ]) @@ -54,24 +51,22 @@ # Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced. # This function is AC_REQUIREd by AM_INIT_AUTOMAKE. AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], -[AM_AUTOMAKE_VERSION([1.11.6])dnl +[AM_AUTOMAKE_VERSION([1.15])dnl m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl _AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) # AM_AUX_DIR_EXPAND -*- Autoconf -*- -# Copyright (C) 2001, 2003, 2005, 2011 Free Software Foundation, Inc. +# Copyright (C) 2001-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. -# serial 1 - # For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets -# $ac_aux_dir to `$srcdir/foo'. In other projects, it is set to -# `$srcdir', `$srcdir/..', or `$srcdir/../..'. +# $ac_aux_dir to '$srcdir/foo'. In other projects, it is set to +# '$srcdir', '$srcdir/..', or '$srcdir/../..'. # # Of course, Automake must honor this variable whenever it calls a # tool from the auxiliary directory. The problem is that $srcdir (and @@ -90,7 +85,7 @@ # # The reason of the latter failure is that $top_srcdir and $ac_aux_dir # are both prefixed by $srcdir. In an in-source build this is usually -# harmless because $srcdir is `.', but things will broke when you +# harmless because $srcdir is '.', but things will broke when you # start a VPATH build or use an absolute $srcdir. # # So we could use something similar to $top_srcdir/$ac_aux_dir/missing, @@ -108,30 +103,26 @@ # configured tree to be moved without reconfiguration. AC_DEFUN([AM_AUX_DIR_EXPAND], -[dnl Rely on autoconf to set up CDPATH properly. -AC_PREREQ([2.50])dnl -# expand $ac_aux_dir to an absolute path -am_aux_dir=`cd $ac_aux_dir && pwd` +[AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl +# Expand $ac_aux_dir to an absolute path. +am_aux_dir=`cd "$ac_aux_dir" && pwd` ]) # AM_CONDITIONAL -*- Autoconf -*- -# Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005, 2006, 2008 -# Free Software Foundation, Inc. +# Copyright (C) 1997-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. -# serial 9 - # AM_CONDITIONAL(NAME, SHELL-CONDITION) # ------------------------------------- # Define a conditional. AC_DEFUN([AM_CONDITIONAL], -[AC_PREREQ(2.52)dnl - ifelse([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], - [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl +[AC_PREREQ([2.52])dnl + m4_if([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], + [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl AC_SUBST([$1_TRUE])dnl AC_SUBST([$1_FALSE])dnl _AM_SUBST_NOTMAKE([$1_TRUE])dnl @@ -150,16 +141,14 @@ Usually this means the macro was only invoked conditionally.]]) fi])]) -# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2009, -# 2010, 2011 Free Software Foundation, Inc. +# Copyright (C) 1999-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. -# serial 12 -# There are a few dirty hacks below to avoid letting `AC_PROG_CC' be +# There are a few dirty hacks below to avoid letting 'AC_PROG_CC' be # written in clear, in which case automake, when reading aclocal.m4, # will think it sees a *use*, and therefore will trigger all it's # C support machinery. Also note that it means that autoscan, seeing @@ -169,7 +158,7 @@ # _AM_DEPENDENCIES(NAME) # ---------------------- # See how the compiler implements dependency checking. -# NAME is "CC", "CXX", "GCJ", or "OBJC". +# NAME is "CC", "CXX", "OBJC", "OBJCXX", "UPC", or "GJC". # We try a few techniques and use that to set a single cache variable. # # We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was @@ -182,12 +171,13 @@ AC_REQUIRE([AM_MAKE_INCLUDE])dnl AC_REQUIRE([AM_DEP_TRACK])dnl -ifelse([$1], CC, [depcc="$CC" am_compiler_list=], - [$1], CXX, [depcc="$CXX" am_compiler_list=], - [$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'], - [$1], UPC, [depcc="$UPC" am_compiler_list=], - [$1], GCJ, [depcc="$GCJ" am_compiler_list='gcc3 gcc'], - [depcc="$$1" am_compiler_list=]) +m4_if([$1], [CC], [depcc="$CC" am_compiler_list=], + [$1], [CXX], [depcc="$CXX" am_compiler_list=], + [$1], [OBJC], [depcc="$OBJC" am_compiler_list='gcc3 gcc'], + [$1], [OBJCXX], [depcc="$OBJCXX" am_compiler_list='gcc3 gcc'], + [$1], [UPC], [depcc="$UPC" am_compiler_list=], + [$1], [GCJ], [depcc="$GCJ" am_compiler_list='gcc3 gcc'], + [depcc="$$1" am_compiler_list=]) AC_CACHE_CHECK([dependency style of $depcc], [am_cv_$1_dependencies_compiler_type], @@ -195,8 +185,8 @@ # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up - # making a dummy file named `D' -- because `-MD' means `put the output - # in D'. + # making a dummy file named 'D' -- because '-MD' means "put the output + # in D". rm -rf conftest.dir mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're @@ -236,16 +226,16 @@ : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c - # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with - # Solaris 8's {/usr,}/bin/sh. - touch sub/conftst$i.h + # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with + # Solaris 10 /bin/sh. + echo '/* dummy */' > sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf - # We check with `-c' and `-o' for the sake of the "dashmstdout" + # We check with '-c' and '-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly - # handle `-M -o', and we need to detect this. Also, some Intel - # versions had trouble with output in subdirs + # handle '-M -o', and we need to detect this. Also, some Intel + # versions had trouble with output in subdirs. am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in @@ -254,8 +244,8 @@ test "$am__universal" = false || continue ;; nosideeffect) - # after this tag, mechanisms are not by side-effect, so they'll - # only be used when explicitly requested + # After this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested. if test "x$enable_dependency_tracking" = xyes; then continue else @@ -263,7 +253,7 @@ fi ;; msvc7 | msvc7msys | msvisualcpp | msvcmsys) - # This compiler won't grok `-c -o', but also, the minuso test has + # This compiler won't grok '-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} @@ -311,7 +301,7 @@ # AM_SET_DEPDIR # ------------- # Choose a directory name for dependency files. -# This macro is AC_REQUIREd in _AM_DEPENDENCIES +# This macro is AC_REQUIREd in _AM_DEPENDENCIES. AC_DEFUN([AM_SET_DEPDIR], [AC_REQUIRE([AM_SET_LEADING_DOT])dnl AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl @@ -321,9 +311,13 @@ # AM_DEP_TRACK # ------------ AC_DEFUN([AM_DEP_TRACK], -[AC_ARG_ENABLE(dependency-tracking, -[ --disable-dependency-tracking speeds up one-time build - --enable-dependency-tracking do not reject slow dependency extractors]) +[AC_ARG_ENABLE([dependency-tracking], [dnl +AS_HELP_STRING( + [--enable-dependency-tracking], + [do not reject slow dependency extractors]) +AS_HELP_STRING( + [--disable-dependency-tracking], + [speeds up one-time build])]) if test "x$enable_dependency_tracking" != xno; then am_depcomp="$ac_aux_dir/depcomp" AMDEPBACKSLASH='\' @@ -338,20 +332,18 @@ # Generate code to set up dependency tracking. -*- Autoconf -*- -# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2008 -# Free Software Foundation, Inc. +# Copyright (C) 1999-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. -#serial 5 # _AM_OUTPUT_DEPENDENCY_COMMANDS # ------------------------------ AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], [{ - # Autoconf 2.62 quotes --file arguments for eval, but not when files + # Older Autoconf quotes --file arguments for eval, but not when files # are listed without --file. Let's play safe and only enable the eval # if we detect the quoting. case $CONFIG_FILES in @@ -364,7 +356,7 @@ # Strip MF so we end up with the name of the file. mf=`echo "$mf" | sed -e 's/:.*$//'` # Check whether this is an Automake generated Makefile or not. - # We used to match only the files named `Makefile.in', but + # We used to match only the files named 'Makefile.in', but # some people rename them; so instead we look at the file content. # Grep'ing the first line is not enough: some people post-process # each Makefile.in and add a new line on top of each file to say so. @@ -376,21 +368,19 @@ continue fi # Extract the definition of DEPDIR, am__include, and am__quote - # from the Makefile without running `make'. + # from the Makefile without running 'make'. DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` test -z "$DEPDIR" && continue am__include=`sed -n 's/^am__include = //p' < "$mf"` - test -z "am__include" && continue + test -z "$am__include" && continue am__quote=`sed -n 's/^am__quote = //p' < "$mf"` - # When using ansi2knr, U may be empty or an underscore; expand it - U=`sed -n 's/^U = //p' < "$mf"` # Find all dependency output files, they are included files with # $(DEPDIR) in their names. We invoke sed twice because it is the # simplest approach to changing $(DEPDIR) to its actual value in the # expansion. for file in `sed -n " s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ - sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do + sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do # Make sure the directory exists. test -f "$dirpart/$file" && continue fdir=`AS_DIRNAME(["$file"])` @@ -408,7 +398,7 @@ # This macro should only be invoked once -- use via AC_REQUIRE. # # This code is only required when automatic dependency tracking -# is enabled. FIXME. This creates each `.P' file that we will +# is enabled. FIXME. This creates each '.P' file that we will # need in order to bootstrap the dependency handling code. AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], [AC_CONFIG_COMMANDS([depfiles], @@ -418,18 +408,21 @@ # Do all the work for Automake. -*- Autoconf -*- -# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, -# 2005, 2006, 2008, 2009 Free Software Foundation, Inc. +# Copyright (C) 1996-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. -# serial 16 - # This macro actually does too much. Some checks are only needed if # your package does certain things. But this isn't really a big deal. +dnl Redefine AC_PROG_CC to automatically invoke _AM_PROG_CC_C_O. +m4_define([AC_PROG_CC], +m4_defn([AC_PROG_CC]) +[_AM_PROG_CC_C_O +]) + # AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) # AM_INIT_AUTOMAKE([OPTIONS]) # ----------------------------------------------- @@ -442,7 +435,7 @@ # arguments mandatory, and then we can depend on a new Autoconf # release and drop the old call support. AC_DEFUN([AM_INIT_AUTOMAKE], -[AC_PREREQ([2.62])dnl +[AC_PREREQ([2.65])dnl dnl Autoconf wants to disallow AM_ names. We explicitly allow dnl the ones we care about. m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl @@ -471,33 +464,42 @@ # Define the identity of the package. dnl Distinguish between old-style and new-style calls. m4_ifval([$2], -[m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl +[AC_DIAGNOSE([obsolete], + [$0: two- and three-arguments forms are deprecated.]) +m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl AC_SUBST([PACKAGE], [$1])dnl AC_SUBST([VERSION], [$2])], [_AM_SET_OPTIONS([$1])dnl dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT. -m4_if(m4_ifdef([AC_PACKAGE_NAME], 1)m4_ifdef([AC_PACKAGE_VERSION], 1), 11,, +m4_if( + m4_ifdef([AC_PACKAGE_NAME], [ok]):m4_ifdef([AC_PACKAGE_VERSION], [ok]), + [ok:ok],, [m4_fatal([AC_INIT should be called with package and version arguments])])dnl AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl _AM_IF_OPTION([no-define],, -[AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package]) - AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl +[AC_DEFINE_UNQUOTED([PACKAGE], ["$PACKAGE"], [Name of package]) + AC_DEFINE_UNQUOTED([VERSION], ["$VERSION"], [Version number of package])])dnl # Some tools Automake needs. AC_REQUIRE([AM_SANITY_CHECK])dnl AC_REQUIRE([AC_ARG_PROGRAM])dnl -AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version}) -AM_MISSING_PROG(AUTOCONF, autoconf) -AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version}) -AM_MISSING_PROG(AUTOHEADER, autoheader) -AM_MISSING_PROG(MAKEINFO, makeinfo) +AM_MISSING_PROG([ACLOCAL], [aclocal-${am__api_version}]) +AM_MISSING_PROG([AUTOCONF], [autoconf]) +AM_MISSING_PROG([AUTOMAKE], [automake-${am__api_version}]) +AM_MISSING_PROG([AUTOHEADER], [autoheader]) +AM_MISSING_PROG([MAKEINFO], [makeinfo]) AC_REQUIRE([AM_PROG_INSTALL_SH])dnl AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl -AC_REQUIRE([AM_PROG_MKDIR_P])dnl -# We need awk for the "check" target. The system "awk" is bad on -# some platforms. +AC_REQUIRE([AC_PROG_MKDIR_P])dnl +# For better backward compatibility. To be removed once Automake 1.9.x +# dies out for good. For more background, see: +# +# +AC_SUBST([mkdir_p], ['$(MKDIR_P)']) +# We need awk for the "check" target (and possibly the TAP driver). The +# system "awk" is bad on some platforms. AC_REQUIRE([AC_PROG_AWK])dnl AC_REQUIRE([AC_PROG_MAKE_SET])dnl AC_REQUIRE([AM_SET_LEADING_DOT])dnl @@ -506,34 +508,82 @@ [_AM_PROG_TAR([v7])])]) _AM_IF_OPTION([no-dependencies],, [AC_PROVIDE_IFELSE([AC_PROG_CC], - [_AM_DEPENDENCIES(CC)], - [define([AC_PROG_CC], - defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl + [_AM_DEPENDENCIES([CC])], + [m4_define([AC_PROG_CC], + m4_defn([AC_PROG_CC])[_AM_DEPENDENCIES([CC])])])dnl AC_PROVIDE_IFELSE([AC_PROG_CXX], - [_AM_DEPENDENCIES(CXX)], - [define([AC_PROG_CXX], - defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl + [_AM_DEPENDENCIES([CXX])], + [m4_define([AC_PROG_CXX], + m4_defn([AC_PROG_CXX])[_AM_DEPENDENCIES([CXX])])])dnl AC_PROVIDE_IFELSE([AC_PROG_OBJC], - [_AM_DEPENDENCIES(OBJC)], - [define([AC_PROG_OBJC], - defn([AC_PROG_OBJC])[_AM_DEPENDENCIES(OBJC)])])dnl -]) -_AM_IF_OPTION([silent-rules], [AC_REQUIRE([AM_SILENT_RULES])])dnl -dnl The `parallel-tests' driver may need to know about EXEEXT, so add the -dnl `am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This macro -dnl is hooked onto _AC_COMPILER_EXEEXT early, see below. + [_AM_DEPENDENCIES([OBJC])], + [m4_define([AC_PROG_OBJC], + m4_defn([AC_PROG_OBJC])[_AM_DEPENDENCIES([OBJC])])])dnl +AC_PROVIDE_IFELSE([AC_PROG_OBJCXX], + [_AM_DEPENDENCIES([OBJCXX])], + [m4_define([AC_PROG_OBJCXX], + m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])dnl +]) +AC_REQUIRE([AM_SILENT_RULES])dnl +dnl The testsuite driver may need to know about EXEEXT, so add the +dnl 'am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This +dnl macro is hooked onto _AC_COMPILER_EXEEXT early, see below. AC_CONFIG_COMMANDS_PRE(dnl [m4_provide_if([_AM_COMPILER_EXEEXT], [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl + +# POSIX will say in a future version that running "rm -f" with no argument +# is OK; and we want to be able to make that assumption in our Makefile +# recipes. So use an aggressive probe to check that the usage we want is +# actually supported "in the wild" to an acceptable degree. +# See automake bug#10828. +# To make any issue more visible, cause the running configure to be aborted +# by default if the 'rm' program in use doesn't match our expectations; the +# user can still override this though. +if rm -f && rm -fr && rm -rf; then : OK; else + cat >&2 <<'END' +Oops! + +Your 'rm' program seems unable to run without file operands specified +on the command line, even when the '-f' option is present. This is contrary +to the behaviour of most rm programs out there, and not conforming with +the upcoming POSIX standard: + +Please tell bug-automake@gnu.org about your system, including the value +of your $PATH and any error possibly output before this message. This +can help us improve future automake versions. + +END + if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then + echo 'Configuration will proceed anyway, since you have set the' >&2 + echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2 + echo >&2 + else + cat >&2 <<'END' +Aborting the configuration process, to ensure you take notice of the issue. + +You can download and install GNU coreutils to get an 'rm' implementation +that behaves properly: . + +If you want to complete the configuration process using your problematic +'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM +to "yes", and re-run configure. + +END + AC_MSG_ERROR([Your 'rm' program is bad, sorry.]) + fi +fi +dnl The trailing newline in this macro's definition is deliberate, for +dnl backward compatibility and to allow trailing 'dnl'-style comments +dnl after the AM_INIT_AUTOMAKE invocation. See automake bug#16841. ]) -dnl Hook into `_AC_COMPILER_EXEEXT' early to learn its expansion. Do not +dnl Hook into '_AC_COMPILER_EXEEXT' early to learn its expansion. Do not dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further dnl mangled by Autoconf and run in a shell conditional statement. m4_define([_AC_COMPILER_EXEEXT], m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])]) - # When config.status generates a header, we must update the stamp-h file. # This file resides in the same directory as the config header # that is generated. The stamp files are numbered to have different names. @@ -555,21 +605,18 @@ done echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count]) -# Copyright (C) 2001, 2003, 2005, 2008, 2011 Free Software Foundation, -# Inc. +# Copyright (C) 2001-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. -# serial 1 - # AM_PROG_INSTALL_SH # ------------------ # Define $install_sh. AC_DEFUN([AM_PROG_INSTALL_SH], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl -if test x"${install_sh}" != xset; then +if test x"${install_sh+set}" != xset; then case $am_aux_dir in *\ * | *\ *) install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; @@ -577,16 +624,14 @@ install_sh="\${SHELL} $am_aux_dir/install-sh" esac fi -AC_SUBST(install_sh)]) +AC_SUBST([install_sh])]) -# Copyright (C) 2003, 2005 Free Software Foundation, Inc. +# Copyright (C) 2003-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. -# serial 2 - # Check whether the underlying file-system supports filenames # with a leading dot. For instance MS-DOS doesn't. AC_DEFUN([AM_SET_LEADING_DOT], @@ -603,20 +648,17 @@ # Add --enable-maintainer-mode option to configure. -*- Autoconf -*- # From Jim Meyering -# Copyright (C) 1996, 1998, 2000, 2001, 2002, 2003, 2004, 2005, 2008, -# 2011 Free Software Foundation, Inc. +# Copyright (C) 1996-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. -# serial 5 - # AM_MAINTAINER_MODE([DEFAULT-MODE]) # ---------------------------------- # Control maintainer-specific portions of Makefiles. -# Default is to disable them, unless `enable' is passed literally. -# For symmetry, `disable' may be passed as well. Anyway, the user +# Default is to disable them, unless 'enable' is passed literally. +# For symmetry, 'disable' may be passed as well. Anyway, the user # can override the default with the --enable/--disable switch. AC_DEFUN([AM_MAINTAINER_MODE], [m4_case(m4_default([$1], [disable]), @@ -627,10 +669,11 @@ AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles]) dnl maintainer-mode's default is 'disable' unless 'enable' is passed AC_ARG_ENABLE([maintainer-mode], -[ --][am_maintainer_other][-maintainer-mode am_maintainer_other make rules and dependencies not useful - (and sometimes confusing) to the casual installer], - [USE_MAINTAINER_MODE=$enableval], - [USE_MAINTAINER_MODE=]m4_if(am_maintainer_other, [enable], [no], [yes])) + [AS_HELP_STRING([--]am_maintainer_other[-maintainer-mode], + am_maintainer_other[ make rules and dependencies not useful + (and sometimes confusing) to the casual installer])], + [USE_MAINTAINER_MODE=$enableval], + [USE_MAINTAINER_MODE=]m4_if(am_maintainer_other, [enable], [no], [yes])) AC_MSG_RESULT([$USE_MAINTAINER_MODE]) AM_CONDITIONAL([MAINTAINER_MODE], [test $USE_MAINTAINER_MODE = yes]) MAINT=$MAINTAINER_MODE_TRUE @@ -638,18 +681,14 @@ ] ) -AU_DEFUN([jm_MAINTAINER_MODE], [AM_MAINTAINER_MODE]) - # Check to see how 'make' treats includes. -*- Autoconf -*- -# Copyright (C) 2001, 2002, 2003, 2005, 2009 Free Software Foundation, Inc. +# Copyright (C) 2001-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. -# serial 4 - # AM_MAKE_INCLUDE() # ----------------- # Check to see how make treats includes. @@ -667,7 +706,7 @@ _am_result=none # First try GNU make style include. echo "include confinc" > confmf -# Ignore all kinds of additional output from `make'. +# Ignore all kinds of additional output from 'make'. case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=include @@ -694,15 +733,12 @@ # Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- -# Copyright (C) 1997, 1999, 2000, 2001, 2003, 2004, 2005, 2008 -# Free Software Foundation, Inc. +# Copyright (C) 1997-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. -# serial 6 - # AM_MISSING_PROG(NAME, PROGRAM) # ------------------------------ AC_DEFUN([AM_MISSING_PROG], @@ -710,11 +746,10 @@ $1=${$1-"${am_missing_run}$2"} AC_SUBST($1)]) - # AM_MISSING_HAS_RUN # ------------------ -# Define MISSING if not defined so far and test if it supports --run. -# If it does, set am_missing_run to use it, otherwise, to nothing. +# Define MISSING if not defined so far and test if it is modern enough. +# If it is, set am_missing_run to use it, otherwise, to nothing. AC_DEFUN([AM_MISSING_HAS_RUN], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl AC_REQUIRE_AUX_FILE([missing])dnl @@ -727,54 +762,22 @@ esac fi # Use eval to expand $SHELL -if eval "$MISSING --run true"; then - am_missing_run="$MISSING --run " +if eval "$MISSING --is-lightweight"; then + am_missing_run="$MISSING " else am_missing_run= - AC_MSG_WARN([`missing' script is too old or missing]) + AC_MSG_WARN(['missing' script is too old or missing]) fi ]) -# Copyright (C) 2003, 2004, 2005, 2006, 2011 Free Software Foundation, -# Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# serial 1 - -# AM_PROG_MKDIR_P -# --------------- -# Check for `mkdir -p'. -AC_DEFUN([AM_PROG_MKDIR_P], -[AC_PREREQ([2.60])dnl -AC_REQUIRE([AC_PROG_MKDIR_P])dnl -dnl Automake 1.8 to 1.9.6 used to define mkdir_p. We now use MKDIR_P, -dnl while keeping a definition of mkdir_p for backward compatibility. -dnl @MKDIR_P@ is magic: AC_OUTPUT adjusts its value for each Makefile. -dnl However we cannot define mkdir_p as $(MKDIR_P) for the sake of -dnl Makefile.ins that do not define MKDIR_P, so we do our own -dnl adjustment using top_builddir (which is defined more often than -dnl MKDIR_P). -AC_SUBST([mkdir_p], ["$MKDIR_P"])dnl -case $mkdir_p in - [[\\/$]]* | ?:[[\\/]]*) ;; - */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;; -esac -]) - # Helper functions for option handling. -*- Autoconf -*- -# Copyright (C) 2001, 2002, 2003, 2005, 2008, 2010 Free Software -# Foundation, Inc. +# Copyright (C) 2001-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. -# serial 5 - # _AM_MANGLE_OPTION(NAME) # ----------------------- AC_DEFUN([_AM_MANGLE_OPTION], @@ -784,7 +787,7 @@ # -------------------- # Set option NAME. Presently that only means defining a flag for this option. AC_DEFUN([_AM_SET_OPTION], -[m4_define(_AM_MANGLE_OPTION([$1]), 1)]) +[m4_define(_AM_MANGLE_OPTION([$1]), [1])]) # _AM_SET_OPTIONS(OPTIONS) # ------------------------ @@ -798,24 +801,82 @@ AC_DEFUN([_AM_IF_OPTION], [m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) -# Check to make sure that the build environment is sane. -*- Autoconf -*- +# Copyright (C) 1999-2014 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# _AM_PROG_CC_C_O +# --------------- +# Like AC_PROG_CC_C_O, but changed for automake. We rewrite AC_PROG_CC +# to automatically call this. +AC_DEFUN([_AM_PROG_CC_C_O], +[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +AC_REQUIRE_AUX_FILE([compile])dnl +AC_LANG_PUSH([C])dnl +AC_CACHE_CHECK( + [whether $CC understands -c and -o together], + [am_cv_prog_cc_c_o], + [AC_LANG_CONFTEST([AC_LANG_PROGRAM([])]) + # Make sure it works both with $CC and with simple cc. + # Following AC_PROG_CC_C_O, we do the test twice because some + # compilers refuse to overwrite an existing .o file with -o, + # though they will create one. + am_cv_prog_cc_c_o=yes + for am_i in 1 2; do + if AM_RUN_LOG([$CC -c conftest.$ac_ext -o conftest2.$ac_objext]) \ + && test -f conftest2.$ac_objext; then + : OK + else + am_cv_prog_cc_c_o=no + break + fi + done + rm -f core conftest* + unset am_i]) +if test "$am_cv_prog_cc_c_o" != yes; then + # Losing compiler, so override with the script. + # FIXME: It is wrong to rewrite CC. + # But if we don't then we get into trouble of one sort or another. + # A longer-term fix would be to have automake use am__CC in this case, + # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" + CC="$am_aux_dir/compile $CC" +fi +AC_LANG_POP([C])]) + +# For backward compatibility. +AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])]) -# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005, 2008 -# Free Software Foundation, Inc. +# Copyright (C) 2001-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. -# serial 5 +# AM_RUN_LOG(COMMAND) +# ------------------- +# Run COMMAND, save the exit status in ac_status, and log it. +# (This has been adapted from Autoconf's _AC_RUN_LOG macro.) +AC_DEFUN([AM_RUN_LOG], +[{ echo "$as_me:$LINENO: $1" >&AS_MESSAGE_LOG_FD + ($1) >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD + (exit $ac_status); }]) + +# Check to make sure that the build environment is sane. -*- Autoconf -*- + +# Copyright (C) 1996-2014 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. # AM_SANITY_CHECK # --------------- AC_DEFUN([AM_SANITY_CHECK], [AC_MSG_CHECKING([whether build environment is sane]) -# Just in case -sleep 1 -echo timestamp > conftest.file # Reject unsafe characters in $srcdir or the absolute working directory # name. Accept space and tab only in the latter. am_lf=' @@ -826,32 +887,40 @@ esac case $srcdir in *[[\\\"\#\$\&\'\`$am_lf\ \ ]]*) - AC_MSG_ERROR([unsafe srcdir value: `$srcdir']);; + AC_MSG_ERROR([unsafe srcdir value: '$srcdir']);; esac -# Do `set' in a subshell so we don't clobber the current shell's +# Do 'set' in a subshell so we don't clobber the current shell's # arguments. Must try -L first in case configure is actually a # symlink; some systems play weird games with the mod time of symlinks # (eg FreeBSD returns the mod time of the symlink's containing # directory). if ( - set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` - if test "$[*]" = "X"; then - # -L didn't work. - set X `ls -t "$srcdir/configure" conftest.file` - fi - rm -f conftest.file - if test "$[*]" != "X $srcdir/configure conftest.file" \ - && test "$[*]" != "X conftest.file $srcdir/configure"; then - - # If neither matched, then we have a broken ls. This can happen - # if, for instance, CONFIG_SHELL is bash and it inherits a - # broken ls alias from the environment. This has actually - # happened. Such a system could not be considered "sane". - AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken -alias in your environment]) - fi - + am_has_slept=no + for am_try in 1 2; do + echo "timestamp, slept: $am_has_slept" > conftest.file + set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` + if test "$[*]" = "X"; then + # -L didn't work. + set X `ls -t "$srcdir/configure" conftest.file` + fi + if test "$[*]" != "X $srcdir/configure conftest.file" \ + && test "$[*]" != "X conftest.file $srcdir/configure"; then + + # If neither matched, then we have a broken ls. This can happen + # if, for instance, CONFIG_SHELL is bash and it inherits a + # broken ls alias from the environment. This has actually + # happened. Such a system could not be considered "sane". + AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken + alias in your environment]) + fi + if test "$[2]" = conftest.file || test $am_try -eq 2; then + break + fi + # Just in case. + sleep 1 + am_has_slept=yes + done test "$[2]" = conftest.file ) then @@ -861,46 +930,118 @@ AC_MSG_ERROR([newly created file is older than distributed files! Check your system clock]) fi -AC_MSG_RESULT(yes)]) +AC_MSG_RESULT([yes]) +# If we didn't sleep, we still need to ensure time stamps of config.status and +# generated files are strictly newer. +am_sleep_pid= +if grep 'slept: no' conftest.file >/dev/null 2>&1; then + ( sleep 1 ) & + am_sleep_pid=$! +fi +AC_CONFIG_COMMANDS_PRE( + [AC_MSG_CHECKING([that generated files are newer than configure]) + if test -n "$am_sleep_pid"; then + # Hide warnings about reused PIDs. + wait $am_sleep_pid 2>/dev/null + fi + AC_MSG_RESULT([done])]) +rm -f conftest.file +]) -# Copyright (C) 2001, 2003, 2005, 2011 Free Software Foundation, Inc. +# Copyright (C) 2009-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. -# serial 1 +# AM_SILENT_RULES([DEFAULT]) +# -------------------------- +# Enable less verbose build rules; with the default set to DEFAULT +# ("yes" being less verbose, "no" or empty being verbose). +AC_DEFUN([AM_SILENT_RULES], +[AC_ARG_ENABLE([silent-rules], [dnl +AS_HELP_STRING( + [--enable-silent-rules], + [less verbose build output (undo: "make V=1")]) +AS_HELP_STRING( + [--disable-silent-rules], + [verbose build output (undo: "make V=0")])dnl +]) +case $enable_silent_rules in @%:@ ((( + yes) AM_DEFAULT_VERBOSITY=0;; + no) AM_DEFAULT_VERBOSITY=1;; + *) AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);; +esac +dnl +dnl A few 'make' implementations (e.g., NonStop OS and NextStep) +dnl do not support nested variable expansions. +dnl See automake bug#9928 and bug#10237. +am_make=${MAKE-make} +AC_CACHE_CHECK([whether $am_make supports nested variables], + [am_cv_make_support_nested_variables], + [if AS_ECHO([['TRUE=$(BAR$(V)) +BAR0=false +BAR1=true +V=1 +am__doit: + @$(TRUE) +.PHONY: am__doit']]) | $am_make -f - >/dev/null 2>&1; then + am_cv_make_support_nested_variables=yes +else + am_cv_make_support_nested_variables=no +fi]) +if test $am_cv_make_support_nested_variables = yes; then + dnl Using '$V' instead of '$(V)' breaks IRIX make. + AM_V='$(V)' + AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' +else + AM_V=$AM_DEFAULT_VERBOSITY + AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY +fi +AC_SUBST([AM_V])dnl +AM_SUBST_NOTMAKE([AM_V])dnl +AC_SUBST([AM_DEFAULT_V])dnl +AM_SUBST_NOTMAKE([AM_DEFAULT_V])dnl +AC_SUBST([AM_DEFAULT_VERBOSITY])dnl +AM_BACKSLASH='\' +AC_SUBST([AM_BACKSLASH])dnl +_AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl +]) + +# Copyright (C) 2001-2014 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. # AM_PROG_INSTALL_STRIP # --------------------- -# One issue with vendor `install' (even GNU) is that you can't +# One issue with vendor 'install' (even GNU) is that you can't # specify the program used to strip binaries. This is especially # annoying in cross-compiling environments, where the build's strip # is unlikely to handle the host's binaries. # Fortunately install-sh will honor a STRIPPROG variable, so we -# always use install-sh in `make install-strip', and initialize +# always use install-sh in "make install-strip", and initialize # STRIPPROG with the value of the STRIP variable (set by the user). AC_DEFUN([AM_PROG_INSTALL_STRIP], [AC_REQUIRE([AM_PROG_INSTALL_SH])dnl -# Installed binaries are usually stripped using `strip' when the user -# run `make install-strip'. However `strip' might not be the right +# Installed binaries are usually stripped using 'strip' when the user +# run "make install-strip". However 'strip' might not be the right # tool to use in cross-compilation environments, therefore Automake -# will honor the `STRIP' environment variable to overrule this program. -dnl Don't test for $cross_compiling = yes, because it might be `maybe'. +# will honor the 'STRIP' environment variable to overrule this program. +dnl Don't test for $cross_compiling = yes, because it might be 'maybe'. if test "$cross_compiling" != no; then AC_CHECK_TOOL([STRIP], [strip], :) fi INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" AC_SUBST([INSTALL_STRIP_PROGRAM])]) -# Copyright (C) 2006, 2008, 2010 Free Software Foundation, Inc. +# Copyright (C) 2006-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. -# serial 3 - # _AM_SUBST_NOTMAKE(VARIABLE) # --------------------------- # Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in. @@ -914,18 +1055,16 @@ # Check how to create a tarball. -*- Autoconf -*- -# Copyright (C) 2004, 2005, 2012 Free Software Foundation, Inc. +# Copyright (C) 2004-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. -# serial 2 - # _AM_PROG_TAR(FORMAT) # -------------------- # Check how to create a tarball in format FORMAT. -# FORMAT should be one of `v7', `ustar', or `pax'. +# FORMAT should be one of 'v7', 'ustar', or 'pax'. # # Substitute a variable $(am__tar) that is a command # writing to stdout a FORMAT-tarball containing the directory @@ -935,79 +1074,118 @@ # Substitute a variable $(am__untar) that extract such # a tarball read from stdin. # $(am__untar) < result.tar +# AC_DEFUN([_AM_PROG_TAR], [# Always define AMTAR for backward compatibility. Yes, it's still used # in the wild :-( We should find a proper way to deprecate it ... AC_SUBST([AMTAR], ['$${TAR-tar}']) -m4_if([$1], [v7], - [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'], - [m4_case([$1], [ustar],, [pax],, - [m4_fatal([Unknown tar format])]) -AC_MSG_CHECKING([how to create a $1 tar archive]) -# Loop over all known methods to create a tar archive until one works. + +# We'll loop over all known methods to create a tar archive until one works. _am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' -_am_tools=${am_cv_prog_tar_$1-$_am_tools} -# Do not fold the above two line into one, because Tru64 sh and -# Solaris sh will not grok spaces in the rhs of `-'. -for _am_tool in $_am_tools -do - case $_am_tool in - gnutar) - for _am_tar in tar gnutar gtar; - do - AM_RUN_LOG([$_am_tar --version]) && break - done - am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' - am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' - am__untar="$_am_tar -xf -" - ;; - plaintar) - # Must skip GNU tar: if it does not support --format= it doesn't create - # ustar tarball either. - (tar --version) >/dev/null 2>&1 && continue - am__tar='tar chf - "$$tardir"' - am__tar_='tar chf - "$tardir"' - am__untar='tar xf -' - ;; - pax) - am__tar='pax -L -x $1 -w "$$tardir"' - am__tar_='pax -L -x $1 -w "$tardir"' - am__untar='pax -r' - ;; - cpio) - am__tar='find "$$tardir" -print | cpio -o -H $1 -L' - am__tar_='find "$tardir" -print | cpio -o -H $1 -L' - am__untar='cpio -i -H $1 -d' - ;; - none) - am__tar=false - am__tar_=false - am__untar=false - ;; - esac - # If the value was cached, stop now. We just wanted to have am__tar - # and am__untar set. - test -n "${am_cv_prog_tar_$1}" && break +m4_if([$1], [v7], + [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'], - # tar/untar a dummy directory, and stop if the command works - rm -rf conftest.dir - mkdir conftest.dir - echo GrepMe > conftest.dir/file - AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) + [m4_case([$1], + [ustar], + [# The POSIX 1988 'ustar' format is defined with fixed-size fields. + # There is notably a 21 bits limit for the UID and the GID. In fact, + # the 'pax' utility can hang on bigger UID/GID (see automake bug#8343 + # and bug#13588). + am_max_uid=2097151 # 2^21 - 1 + am_max_gid=$am_max_uid + # The $UID and $GID variables are not portable, so we need to resort + # to the POSIX-mandated id(1) utility. Errors in the 'id' calls + # below are definitely unexpected, so allow the users to see them + # (that is, avoid stderr redirection). + am_uid=`id -u || echo unknown` + am_gid=`id -g || echo unknown` + AC_MSG_CHECKING([whether UID '$am_uid' is supported by ustar format]) + if test $am_uid -le $am_max_uid; then + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + _am_tools=none + fi + AC_MSG_CHECKING([whether GID '$am_gid' is supported by ustar format]) + if test $am_gid -le $am_max_gid; then + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + _am_tools=none + fi], + + [pax], + [], + + [m4_fatal([Unknown tar format])]) + + AC_MSG_CHECKING([how to create a $1 tar archive]) + + # Go ahead even if we have the value already cached. We do so because we + # need to set the values for the 'am__tar' and 'am__untar' variables. + _am_tools=${am_cv_prog_tar_$1-$_am_tools} + + for _am_tool in $_am_tools; do + case $_am_tool in + gnutar) + for _am_tar in tar gnutar gtar; do + AM_RUN_LOG([$_am_tar --version]) && break + done + am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' + am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' + am__untar="$_am_tar -xf -" + ;; + plaintar) + # Must skip GNU tar: if it does not support --format= it doesn't create + # ustar tarball either. + (tar --version) >/dev/null 2>&1 && continue + am__tar='tar chf - "$$tardir"' + am__tar_='tar chf - "$tardir"' + am__untar='tar xf -' + ;; + pax) + am__tar='pax -L -x $1 -w "$$tardir"' + am__tar_='pax -L -x $1 -w "$tardir"' + am__untar='pax -r' + ;; + cpio) + am__tar='find "$$tardir" -print | cpio -o -H $1 -L' + am__tar_='find "$tardir" -print | cpio -o -H $1 -L' + am__untar='cpio -i -H $1 -d' + ;; + none) + am__tar=false + am__tar_=false + am__untar=false + ;; + esac + + # If the value was cached, stop now. We just wanted to have am__tar + # and am__untar set. + test -n "${am_cv_prog_tar_$1}" && break + + # tar/untar a dummy directory, and stop if the command works. + rm -rf conftest.dir + mkdir conftest.dir + echo GrepMe > conftest.dir/file + AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) + rm -rf conftest.dir + if test -s conftest.tar; then + AM_RUN_LOG([$am__untar /dev/null 2>&1 && break + fi + done rm -rf conftest.dir - if test -s conftest.tar; then - AM_RUN_LOG([$am__untar /dev/null 2>&1 && break - fi -done -rm -rf conftest.dir -AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) -AC_MSG_RESULT([$am_cv_prog_tar_$1])]) + AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) + AC_MSG_RESULT([$am_cv_prog_tar_$1])]) + AC_SUBST([am__tar]) AC_SUBST([am__untar]) ]) # _AM_PROG_TAR +m4_include([m4/ax_check_compile_flag.m4]) m4_include([m4/codeset.m4]) m4_include([m4/pkg.m4]) diff -Nru ratpoison-1.4.8/build-aux/compile ratpoison-1.4.9/build-aux/compile --- ratpoison-1.4.8/build-aux/compile 1970-01-01 00:00:00.000000000 +0000 +++ ratpoison-1.4.9/build-aux/compile 2017-04-02 23:39:57.000000000 +0000 @@ -0,0 +1,347 @@ +#! /bin/sh +# Wrapper for compilers which do not understand '-c -o'. + +scriptversion=2012-10-14.11; # UTC + +# Copyright (C) 1999-2014 Free Software Foundation, Inc. +# Written by Tom Tromey . +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# This file is maintained in Automake, please report +# bugs to or send patches to +# . + +nl=' +' + +# We need space, tab and new line, in precisely that order. Quoting is +# there to prevent tools from complaining about whitespace usage. +IFS=" "" $nl" + +file_conv= + +# func_file_conv build_file lazy +# Convert a $build file to $host form and store it in $file +# Currently only supports Windows hosts. If the determined conversion +# type is listed in (the comma separated) LAZY, no conversion will +# take place. +func_file_conv () +{ + file=$1 + case $file in + / | /[!/]*) # absolute file, and not a UNC file + if test -z "$file_conv"; then + # lazily determine how to convert abs files + case `uname -s` in + MINGW*) + file_conv=mingw + ;; + CYGWIN*) + file_conv=cygwin + ;; + *) + file_conv=wine + ;; + esac + fi + case $file_conv/,$2, in + *,$file_conv,*) + ;; + mingw/*) + file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'` + ;; + cygwin/*) + file=`cygpath -m "$file" || echo "$file"` + ;; + wine/*) + file=`winepath -w "$file" || echo "$file"` + ;; + esac + ;; + esac +} + +# func_cl_dashL linkdir +# Make cl look for libraries in LINKDIR +func_cl_dashL () +{ + func_file_conv "$1" + if test -z "$lib_path"; then + lib_path=$file + else + lib_path="$lib_path;$file" + fi + linker_opts="$linker_opts -LIBPATH:$file" +} + +# func_cl_dashl library +# Do a library search-path lookup for cl +func_cl_dashl () +{ + lib=$1 + found=no + save_IFS=$IFS + IFS=';' + for dir in $lib_path $LIB + do + IFS=$save_IFS + if $shared && test -f "$dir/$lib.dll.lib"; then + found=yes + lib=$dir/$lib.dll.lib + break + fi + if test -f "$dir/$lib.lib"; then + found=yes + lib=$dir/$lib.lib + break + fi + if test -f "$dir/lib$lib.a"; then + found=yes + lib=$dir/lib$lib.a + break + fi + done + IFS=$save_IFS + + if test "$found" != yes; then + lib=$lib.lib + fi +} + +# func_cl_wrapper cl arg... +# Adjust compile command to suit cl +func_cl_wrapper () +{ + # Assume a capable shell + lib_path= + shared=: + linker_opts= + for arg + do + if test -n "$eat"; then + eat= + else + case $1 in + -o) + # configure might choose to run compile as 'compile cc -o foo foo.c'. + eat=1 + case $2 in + *.o | *.[oO][bB][jJ]) + func_file_conv "$2" + set x "$@" -Fo"$file" + shift + ;; + *) + func_file_conv "$2" + set x "$@" -Fe"$file" + shift + ;; + esac + ;; + -I) + eat=1 + func_file_conv "$2" mingw + set x "$@" -I"$file" + shift + ;; + -I*) + func_file_conv "${1#-I}" mingw + set x "$@" -I"$file" + shift + ;; + -l) + eat=1 + func_cl_dashl "$2" + set x "$@" "$lib" + shift + ;; + -l*) + func_cl_dashl "${1#-l}" + set x "$@" "$lib" + shift + ;; + -L) + eat=1 + func_cl_dashL "$2" + ;; + -L*) + func_cl_dashL "${1#-L}" + ;; + -static) + shared=false + ;; + -Wl,*) + arg=${1#-Wl,} + save_ifs="$IFS"; IFS=',' + for flag in $arg; do + IFS="$save_ifs" + linker_opts="$linker_opts $flag" + done + IFS="$save_ifs" + ;; + -Xlinker) + eat=1 + linker_opts="$linker_opts $2" + ;; + -*) + set x "$@" "$1" + shift + ;; + *.cc | *.CC | *.cxx | *.CXX | *.[cC]++) + func_file_conv "$1" + set x "$@" -Tp"$file" + shift + ;; + *.c | *.cpp | *.CPP | *.lib | *.LIB | *.Lib | *.OBJ | *.obj | *.[oO]) + func_file_conv "$1" mingw + set x "$@" "$file" + shift + ;; + *) + set x "$@" "$1" + shift + ;; + esac + fi + shift + done + if test -n "$linker_opts"; then + linker_opts="-link$linker_opts" + fi + exec "$@" $linker_opts + exit 1 +} + +eat= + +case $1 in + '') + echo "$0: No command. Try '$0 --help' for more information." 1>&2 + exit 1; + ;; + -h | --h*) + cat <<\EOF +Usage: compile [--help] [--version] PROGRAM [ARGS] + +Wrapper for compilers which do not understand '-c -o'. +Remove '-o dest.o' from ARGS, run PROGRAM with the remaining +arguments, and rename the output as expected. + +If you are trying to build a whole package this is not the +right script to run: please start by reading the file 'INSTALL'. + +Report bugs to . +EOF + exit $? + ;; + -v | --v*) + echo "compile $scriptversion" + exit $? + ;; + cl | *[/\\]cl | cl.exe | *[/\\]cl.exe ) + func_cl_wrapper "$@" # Doesn't return... + ;; +esac + +ofile= +cfile= + +for arg +do + if test -n "$eat"; then + eat= + else + case $1 in + -o) + # configure might choose to run compile as 'compile cc -o foo foo.c'. + # So we strip '-o arg' only if arg is an object. + eat=1 + case $2 in + *.o | *.obj) + ofile=$2 + ;; + *) + set x "$@" -o "$2" + shift + ;; + esac + ;; + *.c) + cfile=$1 + set x "$@" "$1" + shift + ;; + *) + set x "$@" "$1" + shift + ;; + esac + fi + shift +done + +if test -z "$ofile" || test -z "$cfile"; then + # If no '-o' option was seen then we might have been invoked from a + # pattern rule where we don't need one. That is ok -- this is a + # normal compilation that the losing compiler can handle. If no + # '.c' file was seen then we are probably linking. That is also + # ok. + exec "$@" +fi + +# Name of file we expect compiler to create. +cofile=`echo "$cfile" | sed 's|^.*[\\/]||; s|^[a-zA-Z]:||; s/\.c$/.o/'` + +# Create the lock directory. +# Note: use '[/\\:.-]' here to ensure that we don't use the same name +# that we are using for the .o file. Also, base the name on the expected +# object file name, since that is what matters with a parallel build. +lockdir=`echo "$cofile" | sed -e 's|[/\\:.-]|_|g'`.d +while true; do + if mkdir "$lockdir" >/dev/null 2>&1; then + break + fi + sleep 1 +done +# FIXME: race condition here if user kills between mkdir and trap. +trap "rmdir '$lockdir'; exit 1" 1 2 15 + +# Run the compile. +"$@" +ret=$? + +if test -f "$cofile"; then + test "$cofile" = "$ofile" || mv "$cofile" "$ofile" +elif test -f "${cofile}bj"; then + test "${cofile}bj" = "$ofile" || mv "${cofile}bj" "$ofile" +fi + +rmdir "$lockdir" +exit $ret + +# Local Variables: +# mode: shell-script +# sh-indentation: 2 +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-time-zone: "UTC" +# time-stamp-end: "; # UTC" +# End: diff -Nru ratpoison-1.4.8/build-aux/depcomp ratpoison-1.4.9/build-aux/depcomp --- ratpoison-1.4.8/build-aux/depcomp 2014-09-14 16:34:31.000000000 +0000 +++ ratpoison-1.4.9/build-aux/depcomp 2017-04-02 23:39:57.000000000 +0000 @@ -1,10 +1,9 @@ #! /bin/sh # depcomp - compile a program generating dependencies as side-effects -scriptversion=2012-03-27.16; # UTC +scriptversion=2013-05-30.07; # UTC -# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2009, 2010, -# 2011, 2012 Free Software Foundation, Inc. +# Copyright (C) 1999-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -28,9 +27,9 @@ case $1 in '') - echo "$0: No command. Try '$0 --help' for more information." 1>&2 - exit 1; - ;; + echo "$0: No command. Try '$0 --help' for more information." 1>&2 + exit 1; + ;; -h | --h*) cat <<\EOF Usage: depcomp [--help] [--version] PROGRAM [ARGS] @@ -57,11 +56,65 @@ ;; esac +# Get the directory component of the given path, and save it in the +# global variables '$dir'. Note that this directory component will +# be either empty or ending with a '/' character. This is deliberate. +set_dir_from () +{ + case $1 in + */*) dir=`echo "$1" | sed -e 's|/[^/]*$|/|'`;; + *) dir=;; + esac +} + +# Get the suffix-stripped basename of the given path, and save it the +# global variable '$base'. +set_base_from () +{ + base=`echo "$1" | sed -e 's|^.*/||' -e 's/\.[^.]*$//'` +} + +# If no dependency file was actually created by the compiler invocation, +# we still have to create a dummy depfile, to avoid errors with the +# Makefile "include basename.Plo" scheme. +make_dummy_depfile () +{ + echo "#dummy" > "$depfile" +} + +# Factor out some common post-processing of the generated depfile. +# Requires the auxiliary global variable '$tmpdepfile' to be set. +aix_post_process_depfile () +{ + # If the compiler actually managed to produce a dependency file, + # post-process it. + if test -f "$tmpdepfile"; then + # Each line is of the form 'foo.o: dependency.h'. + # Do two passes, one to just change these to + # $object: dependency.h + # and one to simply output + # dependency.h: + # which is needed to avoid the deleted-header problem. + { sed -e "s,^.*\.[$lower]*:,$object:," < "$tmpdepfile" + sed -e "s,^.*\.[$lower]*:[$tab ]*,," -e 's,$,:,' < "$tmpdepfile" + } > "$depfile" + rm -f "$tmpdepfile" + else + make_dummy_depfile + fi +} + # A tabulation character. tab=' ' # A newline character. nl=' ' +# Character ranges might be problematic outside the C locale. +# These definitions help. +upper=ABCDEFGHIJKLMNOPQRSTUVWXYZ +lower=abcdefghijklmnopqrstuvwxyz +digits=0123456789 +alpha=${upper}${lower} if test -z "$depmode" || test -z "$source" || test -z "$object"; then echo "depcomp: Variables source, object and depmode must be set" 1>&2 @@ -75,6 +128,9 @@ rm -f "$tmpdepfile" +# Avoid interferences from the environment. +gccflag= dashmflag= + # Some modes work just like other modes, but use different flags. We # parameterize here, but still list the modes in the big case below, # to make depend.m4 easier to write. Note that we *cannot* use a case @@ -86,32 +142,32 @@ fi if test "$depmode" = dashXmstdout; then - # This is just like dashmstdout with a different argument. - dashmflag=-xM - depmode=dashmstdout + # This is just like dashmstdout with a different argument. + dashmflag=-xM + depmode=dashmstdout fi cygpath_u="cygpath -u -f -" if test "$depmode" = msvcmsys; then - # This is just like msvisualcpp but w/o cygpath translation. - # Just convert the backslash-escaped backslashes to single forward - # slashes to satisfy depend.m4 - cygpath_u='sed s,\\\\,/,g' - depmode=msvisualcpp + # This is just like msvisualcpp but w/o cygpath translation. + # Just convert the backslash-escaped backslashes to single forward + # slashes to satisfy depend.m4 + cygpath_u='sed s,\\\\,/,g' + depmode=msvisualcpp fi if test "$depmode" = msvc7msys; then - # This is just like msvc7 but w/o cygpath translation. - # Just convert the backslash-escaped backslashes to single forward - # slashes to satisfy depend.m4 - cygpath_u='sed s,\\\\,/,g' - depmode=msvc7 + # This is just like msvc7 but w/o cygpath translation. + # Just convert the backslash-escaped backslashes to single forward + # slashes to satisfy depend.m4 + cygpath_u='sed s,\\\\,/,g' + depmode=msvc7 fi if test "$depmode" = xlc; then - # IBM C/C++ Compilers xlc/xlC can output gcc-like dependency informations. - gccflag=-qmakedep=gcc,-MF - depmode=gcc + # IBM C/C++ Compilers xlc/xlC can output gcc-like dependency information. + gccflag=-qmakedep=gcc,-MF + depmode=gcc fi case "$depmode" in @@ -134,8 +190,7 @@ done "$@" stat=$? - if test $stat -eq 0; then : - else + if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi @@ -143,13 +198,17 @@ ;; gcc) +## Note that this doesn't just cater to obsosete pre-3.x GCC compilers. +## but also to in-use compilers like IMB xlc/xlC and the HP C compiler. +## (see the conditional assignment to $gccflag above). ## There are various ways to get dependency output from gcc. Here's ## why we pick this rather obscure method: ## - Don't want to use -MD because we'd like the dependencies to end ## up in a subdir. Having to rename by hand is ugly. ## (We might end up doing this anyway to support other compilers.) ## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like -## -MM, not -M (despite what the docs say). +## -MM, not -M (despite what the docs say). Also, it might not be +## supported by the other compilers which use the 'gcc' depmode. ## - Using -M directly means running the compiler twice (even worse ## than renaming). if test -z "$gccflag"; then @@ -157,15 +216,14 @@ fi "$@" -Wp,"$gccflag$tmpdepfile" stat=$? - if test $stat -eq 0; then : - else + if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" echo "$object : \\" > "$depfile" - alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz -## The second -e expression handles DOS-style file names with drive letters. + # The second -e expression handles DOS-style file names with drive + # letters. sed -e 's/^[^:]*: / /' \ -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" ## This next piece of magic avoids the "deleted header file" problem. @@ -174,15 +232,15 @@ ## typically no way to rebuild the header). We avoid this by adding ## dummy dependencies for each header file. Too bad gcc doesn't do ## this for us directly. - tr ' ' "$nl" < "$tmpdepfile" | ## Some versions of gcc put a space before the ':'. On the theory ## that the space means something, we add a space to the output as ## well. hp depmode also adds that space, but also prefixes the VPATH ## to the object. Take care to not repeat it in the output. ## Some versions of the HPUX 10.20 sed can't process this invocation ## correctly. Breaking it into two sed invocations is a workaround. - sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \ - | sed -e 's/$/ :/' >> "$depfile" + tr ' ' "$nl" < "$tmpdepfile" \ + | sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \ + | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; @@ -200,8 +258,7 @@ "$@" -MDupdate "$tmpdepfile" fi stat=$? - if test $stat -eq 0; then : - else + if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi @@ -209,7 +266,6 @@ if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files echo "$object : \\" > "$depfile" - # Clip off the initial element (the dependent). Don't try to be # clever and replace this with sed code, as IRIX sed won't handle # lines with more than a fixed number of characters (4096 in @@ -217,19 +273,15 @@ # the IRIX cc adds comments like '#:fec' to the end of the # dependency line. tr ' ' "$nl" < "$tmpdepfile" \ - | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \ - tr "$nl" ' ' >> "$depfile" + | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' \ + | tr "$nl" ' ' >> "$depfile" echo >> "$depfile" - # The second pass generates a dummy entry for each header file. tr ' ' "$nl" < "$tmpdepfile" \ - | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ - >> "$depfile" + | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ + >> "$depfile" else - # The sourcefile does not contain any dependencies, so just - # store a dummy comment line, to avoid errors with the Makefile - # "include basename.Plo" scheme. - echo "#dummy" > "$depfile" + make_dummy_depfile fi rm -f "$tmpdepfile" ;; @@ -247,9 +299,8 @@ # current directory. Also, the AIX compiler puts '$object:' at the # start of each line; $object doesn't have directory information. # Version 6 uses the directory in both cases. - dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` - test "x$dir" = "x$object" && dir= - base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` + set_dir_from "$object" + set_base_from "$object" if test "$libtool" = yes; then tmpdepfile1=$dir$base.u tmpdepfile2=$base.u @@ -262,9 +313,7 @@ "$@" -M fi stat=$? - - if test $stat -eq 0; then : - else + if test $stat -ne 0; then rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" exit $stat fi @@ -273,65 +322,113 @@ do test -f "$tmpdepfile" && break done - if test -f "$tmpdepfile"; then - # Each line is of the form 'foo.o: dependent.h'. - # Do two passes, one to just change these to - # '$object: dependent.h' and one to simply 'dependent.h:'. - sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" - sed -e 's,^.*\.[a-z]*:['"$tab"' ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" - else - # The sourcefile does not contain any dependencies, so just - # store a dummy comment line, to avoid errors with the Makefile - # "include basename.Plo" scheme. - echo "#dummy" > "$depfile" + aix_post_process_depfile + ;; + +tcc) + # tcc (Tiny C Compiler) understand '-MD -MF file' since version 0.9.26 + # FIXME: That version still under development at the moment of writing. + # Make that this statement remains true also for stable, released + # versions. + # It will wrap lines (doesn't matter whether long or short) with a + # trailing '\', as in: + # + # foo.o : \ + # foo.c \ + # foo.h \ + # + # It will put a trailing '\' even on the last line, and will use leading + # spaces rather than leading tabs (at least since its commit 0394caf7 + # "Emit spaces for -MD"). + "$@" -MD -MF "$tmpdepfile" + stat=$? + if test $stat -ne 0; then + rm -f "$tmpdepfile" + exit $stat fi + rm -f "$depfile" + # Each non-empty line is of the form 'foo.o : \' or ' dep.h \'. + # We have to change lines of the first kind to '$object: \'. + sed -e "s|.*:|$object :|" < "$tmpdepfile" > "$depfile" + # And for each line of the second kind, we have to emit a 'dep.h:' + # dummy dependency, to avoid the deleted-header problem. + sed -n -e 's|^ *\(.*\) *\\$|\1:|p' < "$tmpdepfile" >> "$depfile" rm -f "$tmpdepfile" ;; -icc) - # Intel's C compiler anf tcc (Tiny C Compiler) understand '-MD -MF file'. - # However on - # $CC -MD -MF foo.d -c -o sub/foo.o sub/foo.c - # ICC 7.0 will fill foo.d with something like - # foo.o: sub/foo.c - # foo.o: sub/foo.h - # which is wrong. We want - # sub/foo.o: sub/foo.c - # sub/foo.o: sub/foo.h - # sub/foo.c: - # sub/foo.h: - # ICC 7.1 will output +## The order of this option in the case statement is important, since the +## shell code in configure will try each of these formats in the order +## listed in this file. A plain '-MD' option would be understood by many +## compilers, so we must ensure this comes after the gcc and icc options. +pgcc) + # Portland's C compiler understands '-MD'. + # Will always output deps to 'file.d' where file is the root name of the + # source file under compilation, even if file resides in a subdirectory. + # The object file name does not affect the name of the '.d' file. + # pgcc 10.2 will output # foo.o: sub/foo.c sub/foo.h - # and will wrap long lines using '\': + # and will wrap long lines using '\' : # foo.o: sub/foo.c ... \ # sub/foo.h ... \ # ... - # tcc 0.9.26 (FIXME still under development at the moment of writing) - # will emit a similar output, but also prepend the continuation lines - # with horizontal tabulation characters. - "$@" -MD -MF "$tmpdepfile" - stat=$? - if test $stat -eq 0; then : - else + set_dir_from "$object" + # Use the source, not the object, to determine the base name, since + # that's sadly what pgcc will do too. + set_base_from "$source" + tmpdepfile=$base.d + + # For projects that build the same source file twice into different object + # files, the pgcc approach of using the *source* file root name can cause + # problems in parallel builds. Use a locking strategy to avoid stomping on + # the same $tmpdepfile. + lockdir=$base.d-lock + trap " + echo '$0: caught signal, cleaning up...' >&2 + rmdir '$lockdir' + exit 1 + " 1 2 13 15 + numtries=100 + i=$numtries + while test $i -gt 0; do + # mkdir is a portable test-and-set. + if mkdir "$lockdir" 2>/dev/null; then + # This process acquired the lock. + "$@" -MD + stat=$? + # Release the lock. + rmdir "$lockdir" + break + else + # If the lock is being held by a different process, wait + # until the winning process is done or we timeout. + while test -d "$lockdir" && test $i -gt 0; do + sleep 1 + i=`expr $i - 1` + done + fi + i=`expr $i - 1` + done + trap - 1 2 13 15 + if test $i -le 0; then + echo "$0: failed to acquire lock after $numtries attempts" >&2 + echo "$0: check lockdir '$lockdir'" >&2 + exit 1 + fi + + if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" - # Each line is of the form 'foo.o: dependent.h', - # or 'foo.o: dep1.h dep2.h \', or ' dep3.h dep4.h \'. + # Each line is of the form `foo.o: dependent.h', + # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. # Do two passes, one to just change these to - # '$object: dependent.h' and one to simply 'dependent.h:'. - sed -e "s/^[ $tab][ $tab]*/ /" -e "s,^[^:]*:,$object :," \ - < "$tmpdepfile" > "$depfile" - sed ' - s/[ '"$tab"'][ '"$tab"']*/ /g - s/^ *// - s/ *\\*$// - s/^[^:]*: *// - /^$/d - /:$/d - s/$/ :/ - ' < "$tmpdepfile" >> "$depfile" + # `$object: dependent.h' and one to simply `dependent.h:'. + sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" + # Some versions of the HPUX 10.20 sed can't process this invocation + # correctly. Breaking it into two sed invocations is a workaround. + sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" \ + | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; @@ -342,9 +439,8 @@ # 'foo.d', which lands next to the object file, wherever that # happens to be. # Much of this is similar to the tru64 case; see comments there. - dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` - test "x$dir" = "x$object" && dir= - base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` + set_dir_from "$object" + set_base_from "$object" if test "$libtool" = yes; then tmpdepfile1=$dir$base.d tmpdepfile2=$dir.libs/$base.d @@ -355,8 +451,7 @@ "$@" +Maked fi stat=$? - if test $stat -eq 0; then : - else + if test $stat -ne 0; then rm -f "$tmpdepfile1" "$tmpdepfile2" exit $stat fi @@ -366,76 +461,61 @@ test -f "$tmpdepfile" && break done if test -f "$tmpdepfile"; then - sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile" + sed -e "s,^.*\.[$lower]*:,$object:," "$tmpdepfile" > "$depfile" # Add 'dependent.h:' lines. sed -ne '2,${ - s/^ *// - s/ \\*$// - s/$/:/ - p - }' "$tmpdepfile" >> "$depfile" + s/^ *// + s/ \\*$// + s/$/:/ + p + }' "$tmpdepfile" >> "$depfile" else - echo "#dummy" > "$depfile" + make_dummy_depfile fi rm -f "$tmpdepfile" "$tmpdepfile2" ;; tru64) - # The Tru64 compiler uses -MD to generate dependencies as a side - # effect. 'cc -MD -o foo.o ...' puts the dependencies into 'foo.o.d'. - # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put - # dependencies in 'foo.d' instead, so we check for that too. - # Subdirectories are respected. - dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` - test "x$dir" = "x$object" && dir= - base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` - - if test "$libtool" = yes; then - # With Tru64 cc, shared objects can also be used to make a - # static library. This mechanism is used in libtool 1.4 series to - # handle both shared and static libraries in a single compilation. - # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d. - # - # With libtool 1.5 this exception was removed, and libtool now - # generates 2 separate objects for the 2 libraries. These two - # compilations output dependencies in $dir.libs/$base.o.d and - # in $dir$base.o.d. We have to check for both files, because - # one of the two compilations can be disabled. We should prefer - # $dir$base.o.d over $dir.libs/$base.o.d because the latter is - # automatically cleaned when .libs/ is deleted, while ignoring - # the former would cause a distcleancheck panic. - tmpdepfile1=$dir.libs/$base.lo.d # libtool 1.4 - tmpdepfile2=$dir$base.o.d # libtool 1.5 - tmpdepfile3=$dir.libs/$base.o.d # libtool 1.5 - tmpdepfile4=$dir.libs/$base.d # Compaq CCC V6.2-504 - "$@" -Wc,-MD - else - tmpdepfile1=$dir$base.o.d - tmpdepfile2=$dir$base.d - tmpdepfile3=$dir$base.d - tmpdepfile4=$dir$base.d - "$@" -MD - fi + # The Tru64 compiler uses -MD to generate dependencies as a side + # effect. 'cc -MD -o foo.o ...' puts the dependencies into 'foo.o.d'. + # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put + # dependencies in 'foo.d' instead, so we check for that too. + # Subdirectories are respected. + set_dir_from "$object" + set_base_from "$object" + + if test "$libtool" = yes; then + # Libtool generates 2 separate objects for the 2 libraries. These + # two compilations output dependencies in $dir.libs/$base.o.d and + # in $dir$base.o.d. We have to check for both files, because + # one of the two compilations can be disabled. We should prefer + # $dir$base.o.d over $dir.libs/$base.o.d because the latter is + # automatically cleaned when .libs/ is deleted, while ignoring + # the former would cause a distcleancheck panic. + tmpdepfile1=$dir$base.o.d # libtool 1.5 + tmpdepfile2=$dir.libs/$base.o.d # Likewise. + tmpdepfile3=$dir.libs/$base.d # Compaq CCC V6.2-504 + "$@" -Wc,-MD + else + tmpdepfile1=$dir$base.d + tmpdepfile2=$dir$base.d + tmpdepfile3=$dir$base.d + "$@" -MD + fi + + stat=$? + if test $stat -ne 0; then + rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" + exit $stat + fi - stat=$? - if test $stat -eq 0; then : - else - rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" - exit $stat - fi - - for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" - do - test -f "$tmpdepfile" && break - done - if test -f "$tmpdepfile"; then - sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" - sed -e 's,^.*\.[a-z]*:['"$tab"' ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" - else - echo "#dummy" > "$depfile" - fi - rm -f "$tmpdepfile" - ;; + for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" + do + test -f "$tmpdepfile" && break + done + # Same post-processing that is required for AIX mode. + aix_post_process_depfile + ;; msvc7) if test "$libtool" = yes; then @@ -446,8 +526,7 @@ "$@" $showIncludes > "$tmpdepfile" stat=$? grep -v '^Note: including file: ' "$tmpdepfile" - if test "$stat" = 0; then : - else + if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi @@ -473,6 +552,7 @@ G p }' >> "$depfile" + echo >> "$depfile" # make sure the fragment doesn't end with a backslash rm -f "$tmpdepfile" ;; @@ -524,13 +604,14 @@ # in the target name. This is to cope with DOS-style filenames: # a dependency such as 'c:/foo/bar' could be seen as target 'c' otherwise. "$@" $dashmflag | - sed 's:^['"$tab"' ]*[^:'"$tab"' ][^:][^:]*\:['"$tab"' ]*:'"$object"'\: :' > "$tmpdepfile" + sed "s|^[$tab ]*[^:$tab ][^:][^:]*:[$tab ]*|$object: |" > "$tmpdepfile" rm -f "$depfile" cat < "$tmpdepfile" > "$depfile" - tr ' ' "$nl" < "$tmpdepfile" | \ -## Some versions of the HPUX 10.20 sed can't process this invocation -## correctly. Breaking it into two sed invocations is a workaround. - sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" + # Some versions of the HPUX 10.20 sed can't process this sed invocation + # correctly. Breaking it into two sed invocations is a workaround. + tr ' ' "$nl" < "$tmpdepfile" \ + | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \ + | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; @@ -583,10 +664,12 @@ # makedepend may prepend the VPATH from the source file name to the object. # No need to regex-escape $object, excess matching of '.' is harmless. sed "s|^.*\($object *:\)|\1|" "$tmpdepfile" > "$depfile" - sed '1,2d' "$tmpdepfile" | tr ' ' "$nl" | \ -## Some versions of the HPUX 10.20 sed can't process this invocation -## correctly. Breaking it into two sed invocations is a workaround. - sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" + # Some versions of the HPUX 10.20 sed can't process the last invocation + # correctly. Breaking it into two sed invocations is a workaround. + sed '1,2d' "$tmpdepfile" \ + | tr ' ' "$nl" \ + | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \ + | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" "$tmpdepfile".bak ;; @@ -622,10 +705,10 @@ esac done - "$@" -E | - sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ - -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' | - sed '$ s: \\$::' > "$tmpdepfile" + "$@" -E \ + | sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ + -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ + | sed '$ s: \\$::' > "$tmpdepfile" rm -f "$depfile" echo "$object : \\" > "$depfile" cat < "$tmpdepfile" >> "$depfile" @@ -657,15 +740,15 @@ shift ;; "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") - set fnord "$@" - shift - shift - ;; + set fnord "$@" + shift + shift + ;; *) - set fnord "$@" "$arg" - shift - shift - ;; + set fnord "$@" "$arg" + shift + shift + ;; esac done "$@" -E 2>/dev/null | diff -Nru ratpoison-1.4.8/build-aux/install-sh ratpoison-1.4.9/build-aux/install-sh --- ratpoison-1.4.8/build-aux/install-sh 2014-09-14 16:34:31.000000000 +0000 +++ ratpoison-1.4.9/build-aux/install-sh 2017-04-02 23:39:57.000000000 +0000 @@ -1,7 +1,7 @@ #!/bin/sh # install - install a program, script, or datafile -scriptversion=2011-01-19.21; # UTC +scriptversion=2013-12-25.23; # UTC # This originates from X11R5 (mit/util/scripts/install.sh), which was # later released in X11R6 (xc/config/util/install.sh) with the @@ -35,25 +35,21 @@ # FSF changes to this file are in the public domain. # # Calling this script install-sh is preferred over install.sh, to prevent -# `make' implicit rules from creating a file called install from it +# 'make' implicit rules from creating a file called install from it # when there is no Makefile. # # This script is compatible with the BSD install script, but was written # from scratch. +tab=' ' nl=' ' -IFS=" "" $nl" +IFS=" $tab$nl" -# set DOITPROG to echo to test this script +# Set DOITPROG to "echo" to test this script. -# Don't use :- since 4.3BSD and earlier shells don't like it. doit=${DOITPROG-} -if test -z "$doit"; then - doit_exec=exec -else - doit_exec=$doit -fi +doit_exec=${doit:-exec} # Put in absolute file names if you don't have them in your path; # or use environment vars. @@ -68,17 +64,6 @@ rmprog=${RMPROG-rm} stripprog=${STRIPPROG-strip} -posix_glob='?' -initialize_posix_glob=' - test "$posix_glob" != "?" || { - if (set -f) 2>/dev/null; then - posix_glob= - else - posix_glob=: - fi - } -' - posix_mkdir= # Desired mode of installed file. @@ -97,7 +82,7 @@ dst_arg= copy_on_change=false -no_target_directory= +is_target_a_directory=possibly usage="\ Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE @@ -137,46 +122,57 @@ -d) dir_arg=true;; -g) chgrpcmd="$chgrpprog $2" - shift;; + shift;; --help) echo "$usage"; exit $?;; -m) mode=$2 - case $mode in - *' '* | *' '* | *' -'* | *'*'* | *'?'* | *'['*) - echo "$0: invalid mode: $mode" >&2 - exit 1;; - esac - shift;; + case $mode in + *' '* | *"$tab"* | *"$nl"* | *'*'* | *'?'* | *'['*) + echo "$0: invalid mode: $mode" >&2 + exit 1;; + esac + shift;; -o) chowncmd="$chownprog $2" - shift;; + shift;; -s) stripcmd=$stripprog;; - -t) dst_arg=$2 - # Protect names problematic for `test' and other utilities. - case $dst_arg in - -* | [=\(\)!]) dst_arg=./$dst_arg;; - esac - shift;; + -t) + is_target_a_directory=always + dst_arg=$2 + # Protect names problematic for 'test' and other utilities. + case $dst_arg in + -* | [=\(\)!]) dst_arg=./$dst_arg;; + esac + shift;; - -T) no_target_directory=true;; + -T) is_target_a_directory=never;; --version) echo "$0 $scriptversion"; exit $?;; - --) shift - break;; + --) shift + break;; - -*) echo "$0: invalid option: $1" >&2 - exit 1;; + -*) echo "$0: invalid option: $1" >&2 + exit 1;; *) break;; esac shift done +# We allow the use of options -d and -T together, by making -d +# take the precedence; this is for compatibility with GNU install. + +if test -n "$dir_arg"; then + if test -n "$dst_arg"; then + echo "$0: target directory not allowed when installing a directory." >&2 + exit 1 + fi +fi + if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then # When -d is used, all remaining arguments are directories to create. # When -t is used, the destination is already specified. @@ -190,7 +186,7 @@ fi shift # arg dst_arg=$arg - # Protect names problematic for `test' and other utilities. + # Protect names problematic for 'test' and other utilities. case $dst_arg in -* | [=\(\)!]) dst_arg=./$dst_arg;; esac @@ -202,12 +198,21 @@ echo "$0: no input file specified." >&2 exit 1 fi - # It's OK to call `install-sh -d' without argument. + # It's OK to call 'install-sh -d' without argument. # This can happen when creating conditional directories. exit 0 fi if test -z "$dir_arg"; then + if test $# -gt 1 || test "$is_target_a_directory" = always; then + if test ! -d "$dst_arg"; then + echo "$0: $dst_arg: Is not a directory." >&2 + exit 1 + fi + fi +fi + +if test -z "$dir_arg"; then do_exit='(exit $ret); exit $ret' trap "ret=129; $do_exit" 1 trap "ret=130; $do_exit" 2 @@ -223,16 +228,16 @@ *[0-7]) if test -z "$stripcmd"; then - u_plus_rw= + u_plus_rw= else - u_plus_rw='% 200' + u_plus_rw='% 200' fi cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;; *) if test -z "$stripcmd"; then - u_plus_rw= + u_plus_rw= else - u_plus_rw=,u+rw + u_plus_rw=,u+rw fi cp_umask=$mode$u_plus_rw;; esac @@ -240,7 +245,7 @@ for src do - # Protect names problematic for `test' and other utilities. + # Protect names problematic for 'test' and other utilities. case $src in -* | [=\(\)!]) src=./$src;; esac @@ -269,41 +274,15 @@ # If destination is a directory, append the input filename; won't work # if double slashes aren't ignored. if test -d "$dst"; then - if test -n "$no_target_directory"; then - echo "$0: $dst_arg: Is a directory" >&2 - exit 1 + if test "$is_target_a_directory" = never; then + echo "$0: $dst_arg: Is a directory" >&2 + exit 1 fi dstdir=$dst dst=$dstdir/`basename "$src"` dstdir_status=0 else - # Prefer dirname, but fall back on a substitute if dirname fails. - dstdir=` - (dirname "$dst") 2>/dev/null || - expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$dst" : 'X\(//\)[^/]' \| \ - X"$dst" : 'X\(//\)$' \| \ - X"$dst" : 'X\(/\)' \| . 2>/dev/null || - echo X"$dst" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q' - ` - + dstdir=`dirname "$dst"` test -d "$dstdir" dstdir_status=$? fi @@ -314,74 +293,74 @@ if test $dstdir_status != 0; then case $posix_mkdir in '') - # Create intermediate dirs using mode 755 as modified by the umask. - # This is like FreeBSD 'install' as of 1997-10-28. - umask=`umask` - case $stripcmd.$umask in - # Optimize common cases. - *[2367][2367]) mkdir_umask=$umask;; - .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;; - - *[0-7]) - mkdir_umask=`expr $umask + 22 \ - - $umask % 100 % 40 + $umask % 20 \ - - $umask % 10 % 4 + $umask % 2 - `;; - *) mkdir_umask=$umask,go-w;; - esac - - # With -d, create the new directory with the user-specified mode. - # Otherwise, rely on $mkdir_umask. - if test -n "$dir_arg"; then - mkdir_mode=-m$mode - else - mkdir_mode= - fi - - posix_mkdir=false - case $umask in - *[123567][0-7][0-7]) - # POSIX mkdir -p sets u+wx bits regardless of umask, which - # is incompatible with FreeBSD 'install' when (umask & 300) != 0. - ;; - *) - tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ - trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0 - - if (umask $mkdir_umask && - exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1 - then - if test -z "$dir_arg" || { - # Check for POSIX incompatibilities with -m. - # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or - # other-writeable bit of parent directory when it shouldn't. - # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. - ls_ld_tmpdir=`ls -ld "$tmpdir"` - case $ls_ld_tmpdir in - d????-?r-*) different_mode=700;; - d????-?--*) different_mode=755;; - *) false;; - esac && - $mkdirprog -m$different_mode -p -- "$tmpdir" && { - ls_ld_tmpdir_1=`ls -ld "$tmpdir"` - test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" - } - } - then posix_mkdir=: - fi - rmdir "$tmpdir/d" "$tmpdir" - else - # Remove any dirs left behind by ancient mkdir implementations. - rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null - fi - trap '' 0;; - esac;; + # Create intermediate dirs using mode 755 as modified by the umask. + # This is like FreeBSD 'install' as of 1997-10-28. + umask=`umask` + case $stripcmd.$umask in + # Optimize common cases. + *[2367][2367]) mkdir_umask=$umask;; + .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;; + + *[0-7]) + mkdir_umask=`expr $umask + 22 \ + - $umask % 100 % 40 + $umask % 20 \ + - $umask % 10 % 4 + $umask % 2 + `;; + *) mkdir_umask=$umask,go-w;; + esac + + # With -d, create the new directory with the user-specified mode. + # Otherwise, rely on $mkdir_umask. + if test -n "$dir_arg"; then + mkdir_mode=-m$mode + else + mkdir_mode= + fi + + posix_mkdir=false + case $umask in + *[123567][0-7][0-7]) + # POSIX mkdir -p sets u+wx bits regardless of umask, which + # is incompatible with FreeBSD 'install' when (umask & 300) != 0. + ;; + *) + tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ + trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0 + + if (umask $mkdir_umask && + exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1 + then + if test -z "$dir_arg" || { + # Check for POSIX incompatibilities with -m. + # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or + # other-writable bit of parent directory when it shouldn't. + # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. + ls_ld_tmpdir=`ls -ld "$tmpdir"` + case $ls_ld_tmpdir in + d????-?r-*) different_mode=700;; + d????-?--*) different_mode=755;; + *) false;; + esac && + $mkdirprog -m$different_mode -p -- "$tmpdir" && { + ls_ld_tmpdir_1=`ls -ld "$tmpdir"` + test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" + } + } + then posix_mkdir=: + fi + rmdir "$tmpdir/d" "$tmpdir" + else + # Remove any dirs left behind by ancient mkdir implementations. + rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null + fi + trap '' 0;; + esac;; esac if $posix_mkdir && ( - umask $mkdir_umask && - $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir" + umask $mkdir_umask && + $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir" ) then : else @@ -391,53 +370,51 @@ # directory the slow way, step by step, checking for races as we go. case $dstdir in - /*) prefix='/';; - [-=\(\)!]*) prefix='./';; - *) prefix='';; + /*) prefix='/';; + [-=\(\)!]*) prefix='./';; + *) prefix='';; esac - eval "$initialize_posix_glob" - oIFS=$IFS IFS=/ - $posix_glob set -f + set -f set fnord $dstdir shift - $posix_glob set +f + set +f IFS=$oIFS prefixes= for d do - test X"$d" = X && continue + test X"$d" = X && continue - prefix=$prefix$d - if test -d "$prefix"; then - prefixes= - else - if $posix_mkdir; then - (umask=$mkdir_umask && - $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break - # Don't fail if two instances are running concurrently. - test -d "$prefix" || exit 1 - else - case $prefix in - *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;; - *) qprefix=$prefix;; - esac - prefixes="$prefixes '$qprefix'" - fi - fi - prefix=$prefix/ + prefix=$prefix$d + if test -d "$prefix"; then + prefixes= + else + if $posix_mkdir; then + (umask=$mkdir_umask && + $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break + # Don't fail if two instances are running concurrently. + test -d "$prefix" || exit 1 + else + case $prefix in + *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;; + *) qprefix=$prefix;; + esac + prefixes="$prefixes '$qprefix'" + fi + fi + prefix=$prefix/ done if test -n "$prefixes"; then - # Don't fail if two instances are running concurrently. - (umask $mkdir_umask && - eval "\$doit_exec \$mkdirprog $prefixes") || - test -d "$dstdir" || exit 1 - obsolete_mkdir_used=true + # Don't fail if two instances are running concurrently. + (umask $mkdir_umask && + eval "\$doit_exec \$mkdirprog $prefixes") || + test -d "$dstdir" || exit 1 + obsolete_mkdir_used=true fi fi fi @@ -472,15 +449,12 @@ # If -C, don't bother to copy if it wouldn't change the file. if $copy_on_change && - old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` && - new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` && - - eval "$initialize_posix_glob" && - $posix_glob set -f && + old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` && + new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` && + set -f && set X $old && old=:$2:$4:$5:$6 && set X $new && new=:$2:$4:$5:$6 && - $posix_glob set +f && - + set +f && test "$old" = "$new" && $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1 then @@ -493,24 +467,24 @@ # to itself, or perhaps because mv is so ancient that it does not # support -f. { - # Now remove or move aside any old file at destination location. - # We try this two ways since rm can't unlink itself on some - # systems and the destination file might be busy for other - # reasons. In this case, the final cleanup might fail but the new - # file should still install successfully. - { - test ! -f "$dst" || - $doit $rmcmd -f "$dst" 2>/dev/null || - { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null && - { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; } - } || - { echo "$0: cannot unlink or rename $dst" >&2 - (exit 1); exit 1 - } - } && + # Now remove or move aside any old file at destination location. + # We try this two ways since rm can't unlink itself on some + # systems and the destination file might be busy for other + # reasons. In this case, the final cleanup might fail but the new + # file should still install successfully. + { + test ! -f "$dst" || + $doit $rmcmd -f "$dst" 2>/dev/null || + { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null && + { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; } + } || + { echo "$0: cannot unlink or rename $dst" >&2 + (exit 1); exit 1 + } + } && - # Now rename the file to the real destination. - $doit $mvcmd "$dsttmp" "$dst" + # Now rename the file to the real destination. + $doit $mvcmd "$dsttmp" "$dst" } fi || exit 1 diff -Nru ratpoison-1.4.8/build-aux/mdate-sh ratpoison-1.4.9/build-aux/mdate-sh --- ratpoison-1.4.8/build-aux/mdate-sh 2014-09-14 16:34:31.000000000 +0000 +++ ratpoison-1.4.9/build-aux/mdate-sh 2017-04-02 23:39:57.000000000 +0000 @@ -3,8 +3,7 @@ scriptversion=2010-08-21.06; # UTC -# Copyright (C) 1995, 1996, 1997, 2003, 2004, 2005, 2007, 2009, 2010 -# Free Software Foundation, Inc. +# Copyright (C) 1995-2014 Free Software Foundation, Inc. # written by Ulrich Drepper , June 1995 # # This program is free software; you can redistribute it and/or modify @@ -40,7 +39,7 @@ case $1 in '') - echo "$0: No file. Try \`$0 --help' for more information." 1>&2 + echo "$0: No file. Try '$0 --help' for more information." 1>&2 exit 1; ;; -h | --h*) @@ -76,7 +75,7 @@ export LC_TIME # GNU ls changes its time format in response to the TIME_STYLE -# variable. Since we cannot assume `unset' works, revert this +# variable. Since we cannot assume 'unset' works, revert this # variable to its documented default. if test "${TIME_STYLE+set}" = set; then TIME_STYLE=posix-long-iso @@ -96,14 +95,14 @@ ls_command="$ls_command -n" fi -# A `ls -l' line looks as follows on OS/2. +# A 'ls -l' line looks as follows on OS/2. # drwxrwx--- 0 Aug 11 2001 foo # This differs from Unix, which adds ownership information. # drwxrwx--- 2 root root 4096 Aug 11 2001 foo # # To find the date, we split the line on spaces and iterate on words # until we find a month. This cannot work with files whose owner is a -# user named `Jan', or `Feb', etc. However, it's unlikely that `/' +# user named "Jan", or "Feb", etc. However, it's unlikely that '/' # will be owned by a user whose name is a month. So we first look at # the extended ls output of the root directory to decide how many # words should be skipped to get the date. @@ -116,7 +115,7 @@ command= until test $month do - test $# -gt 0 || error "failed parsing \`$ls_command /' output" + test $# -gt 0 || error "failed parsing '$ls_command /' output" shift # Add another shift to the command. command="$command shift;" @@ -136,7 +135,7 @@ esac done -test -n "$month" || error "failed parsing \`$ls_command /' output" +test -n "$month" || error "failed parsing '$ls_command /' output" # Get the extended ls output of the file or directory. set dummy x`eval "$ls_command \"\\\$save_arg1\""` diff -Nru ratpoison-1.4.8/build-aux/missing ratpoison-1.4.9/build-aux/missing --- ratpoison-1.4.8/build-aux/missing 2014-09-14 16:34:31.000000000 +0000 +++ ratpoison-1.4.9/build-aux/missing 2017-04-02 23:39:57.000000000 +0000 @@ -1,11 +1,10 @@ #! /bin/sh -# Common stub for a few missing GNU programs while installing. +# Common wrapper for a few potentially missing GNU programs. -scriptversion=2012-01-06.13; # UTC +scriptversion=2013-10-28.13; # UTC -# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2006, -# 2008, 2009, 2010, 2011, 2012 Free Software Foundation, Inc. -# Originally by Fran,cois Pinard , 1996. +# Copyright (C) 1996-2014 Free Software Foundation, Inc. +# Originally written by Fran,cois Pinard , 1996. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -26,68 +25,40 @@ # the same distribution terms that you use for the rest of that program. if test $# -eq 0; then - echo 1>&2 "Try \`$0 --help' for more information" + echo 1>&2 "Try '$0 --help' for more information" exit 1 fi -run=: -sed_output='s/.* --output[ =]\([^ ]*\).*/\1/p' -sed_minuso='s/.* -o \([^ ]*\).*/\1/p' - -# In the cases where this matters, `missing' is being run in the -# srcdir already. -if test -f configure.ac; then - configure_ac=configure.ac -else - configure_ac=configure.in -fi +case $1 in -msg="missing on your system" + --is-lightweight) + # Used by our autoconf macros to check whether the available missing + # script is modern enough. + exit 0 + ;; -case $1 in ---run) - # Try to run requested program, and just exit if it succeeds. - run= - shift - "$@" && exit 0 - # Exit code 63 means version mismatch. This often happens - # when the user try to use an ancient version of a tool on - # a file that requires a minimum version. In this case we - # we should proceed has if the program had been absent, or - # if --run hadn't been passed. - if test $? = 63; then - run=: - msg="probably too old" - fi - ;; + --run) + # Back-compat with the calling convention used by older automake. + shift + ;; -h|--h|--he|--hel|--help) echo "\ $0 [OPTION]... PROGRAM [ARGUMENT]... -Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an -error status if there is no known handling for PROGRAM. +Run 'PROGRAM [ARGUMENT]...', returning a proper advice when this fails due +to PROGRAM being missing or too old. Options: -h, --help display this help and exit -v, --version output version information and exit - --run try to run the given command, and emulate it if it fails Supported PROGRAM values: - aclocal touch file \`aclocal.m4' - autoconf touch file \`configure' - autoheader touch file \`config.h.in' - autom4te touch the output file, or create a stub one - automake touch all \`Makefile.in' files - bison create \`y.tab.[ch]', if possible, from existing .[ch] - flex create \`lex.yy.c', if possible, from existing .c - help2man touch the output file - lex create \`lex.yy.c', if possible, from existing .c - makeinfo touch the output file - yacc create \`y.tab.[ch]', if possible, from existing .[ch] + aclocal autoconf autoheader autom4te automake makeinfo + bison yacc flex lex help2man -Version suffixes to PROGRAM as well as the prefixes \`gnu-', \`gnu', and -\`g' are ignored when checking the name. +Version suffixes to PROGRAM as well as the prefixes 'gnu-', 'gnu', and +'g' are ignored when checking the name. Send bug reports to ." exit $? @@ -99,228 +70,141 @@ ;; -*) - echo 1>&2 "$0: Unknown \`$1' option" - echo 1>&2 "Try \`$0 --help' for more information" + echo 1>&2 "$0: unknown '$1' option" + echo 1>&2 "Try '$0 --help' for more information" exit 1 ;; esac -# normalize program name to check for. -program=`echo "$1" | sed ' - s/^gnu-//; t - s/^gnu//; t - s/^g//; t'` - -# Now exit if we have it, but it failed. Also exit now if we -# don't have it and --version was passed (most likely to detect -# the program). This is about non-GNU programs, so use $1 not -# $program. -case $1 in - lex*|yacc*) - # Not GNU programs, they don't have --version. - ;; +# Run the given program, remember its exit status. +"$@"; st=$? - *) - if test -z "$run" && ($1 --version) > /dev/null 2>&1; then - # We have it, but it failed. - exit 1 - elif test "x$2" = "x--version" || test "x$2" = "x--help"; then - # Could not run --version or --help. This is probably someone - # running `$TOOL --version' or `$TOOL --help' to check whether - # $TOOL exists and not knowing $TOOL uses missing. - exit 1 - fi - ;; -esac - -# If it does not exist, or fails to run (possibly an outdated version), -# try to emulate it. -case $program in - aclocal*) - echo 1>&2 "\ -WARNING: \`$1' is $msg. You should only need it if - you modified \`acinclude.m4' or \`${configure_ac}'. You might want - to install the \`Automake' and \`Perl' packages. Grab them from - any GNU archive site." - touch aclocal.m4 - ;; - - autoconf*) - echo 1>&2 "\ -WARNING: \`$1' is $msg. You should only need it if - you modified \`${configure_ac}'. You might want to install the - \`Autoconf' and \`GNU m4' packages. Grab them from any GNU - archive site." - touch configure - ;; - - autoheader*) - echo 1>&2 "\ -WARNING: \`$1' is $msg. You should only need it if - you modified \`acconfig.h' or \`${configure_ac}'. You might want - to install the \`Autoconf' and \`GNU m4' packages. Grab them - from any GNU archive site." - files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}` - test -z "$files" && files="config.h" - touch_files= - for f in $files; do - case $f in - *:*) touch_files="$touch_files "`echo "$f" | - sed -e 's/^[^:]*://' -e 's/:.*//'`;; - *) touch_files="$touch_files $f.in";; - esac - done - touch $touch_files - ;; +# If it succeeded, we are done. +test $st -eq 0 && exit 0 - automake*) - echo 1>&2 "\ -WARNING: \`$1' is $msg. You should only need it if - you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'. - You might want to install the \`Automake' and \`Perl' packages. - Grab them from any GNU archive site." - find . -type f -name Makefile.am -print | - sed 's/\.am$/.in/' | - while read f; do touch "$f"; done - ;; - - autom4te*) - echo 1>&2 "\ -WARNING: \`$1' is needed, but is $msg. - You might have modified some files without having the - proper tools for further handling them. - You can get \`$1' as part of \`Autoconf' from any GNU - archive site." - - file=`echo "$*" | sed -n "$sed_output"` - test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"` - if test -f "$file"; then - touch $file - else - test -z "$file" || exec >$file - echo "#! /bin/sh" - echo "# Created by GNU Automake missing as a replacement of" - echo "# $ $@" - echo "exit 0" - chmod +x $file - exit 1 - fi - ;; - - bison*|yacc*) - echo 1>&2 "\ -WARNING: \`$1' $msg. You should only need it if - you modified a \`.y' file. You may need the \`Bison' package - in order for those modifications to take effect. You can get - \`Bison' from any GNU archive site." - rm -f y.tab.c y.tab.h - if test $# -ne 1; then - eval LASTARG=\${$#} - case $LASTARG in - *.y) - SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'` - if test -f "$SRCFILE"; then - cp "$SRCFILE" y.tab.c - fi - SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'` - if test -f "$SRCFILE"; then - cp "$SRCFILE" y.tab.h - fi - ;; - esac - fi - if test ! -f y.tab.h; then - echo >y.tab.h - fi - if test ! -f y.tab.c; then - echo 'main() { return 0; }' >y.tab.c - fi - ;; - - lex*|flex*) - echo 1>&2 "\ -WARNING: \`$1' is $msg. You should only need it if - you modified a \`.l' file. You may need the \`Flex' package - in order for those modifications to take effect. You can get - \`Flex' from any GNU archive site." - rm -f lex.yy.c - if test $# -ne 1; then - eval LASTARG=\${$#} - case $LASTARG in - *.l) - SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'` - if test -f "$SRCFILE"; then - cp "$SRCFILE" lex.yy.c - fi - ;; - esac - fi - if test ! -f lex.yy.c; then - echo 'main() { return 0; }' >lex.yy.c - fi - ;; - - help2man*) - echo 1>&2 "\ -WARNING: \`$1' is $msg. You should only need it if - you modified a dependency of a manual page. You may need the - \`Help2man' package in order for those modifications to take - effect. You can get \`Help2man' from any GNU archive site." - - file=`echo "$*" | sed -n "$sed_output"` - test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"` - if test -f "$file"; then - touch $file - else - test -z "$file" || exec >$file - echo ".ab help2man is required to generate this page" - exit $? - fi - ;; - - makeinfo*) - echo 1>&2 "\ -WARNING: \`$1' is $msg. You should only need it if - you modified a \`.texi' or \`.texinfo' file, or any other file - indirectly affecting the aspect of the manual. The spurious - call might also be the consequence of using a buggy \`make' (AIX, - DU, IRIX). You might want to install the \`Texinfo' package or - the \`GNU make' package. Grab either from any GNU archive site." - # The file to touch is that specified with -o ... - file=`echo "$*" | sed -n "$sed_output"` - test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"` - if test -z "$file"; then - # ... or it is the one specified with @setfilename ... - infile=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'` - file=`sed -n ' - /^@setfilename/{ - s/.* \([^ ]*\) *$/\1/ - p - q - }' $infile` - # ... or it is derived from the source name (dir/f.texi becomes f.info) - test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info - fi - # If the file does not exist, the user really needs makeinfo; - # let's fail without touching anything. - test -f $file || exit 1 - touch $file - ;; - - *) - echo 1>&2 "\ -WARNING: \`$1' is needed, and is $msg. - You might have modified some files without having the - proper tools for further handling them. Check the \`README' file, - it often tells you about the needed prerequisites for installing - this package. You may also peek at any GNU archive site, in case - some other package would contain this missing \`$1' program." - exit 1 - ;; -esac +# Also exit now if we it failed (or wasn't found), and '--version' was +# passed; such an option is passed most likely to detect whether the +# program is present and works. +case $2 in --version|--help) exit $st;; esac + +# Exit code 63 means version mismatch. This often happens when the user +# tries to use an ancient version of a tool on a file that requires a +# minimum version. +if test $st -eq 63; then + msg="probably too old" +elif test $st -eq 127; then + # Program was missing. + msg="missing on your system" +else + # Program was found and executed, but failed. Give up. + exit $st +fi -exit 0 +perl_URL=http://www.perl.org/ +flex_URL=http://flex.sourceforge.net/ +gnu_software_URL=http://www.gnu.org/software + +program_details () +{ + case $1 in + aclocal|automake) + echo "The '$1' program is part of the GNU Automake package:" + echo "<$gnu_software_URL/automake>" + echo "It also requires GNU Autoconf, GNU m4 and Perl in order to run:" + echo "<$gnu_software_URL/autoconf>" + echo "<$gnu_software_URL/m4/>" + echo "<$perl_URL>" + ;; + autoconf|autom4te|autoheader) + echo "The '$1' program is part of the GNU Autoconf package:" + echo "<$gnu_software_URL/autoconf/>" + echo "It also requires GNU m4 and Perl in order to run:" + echo "<$gnu_software_URL/m4/>" + echo "<$perl_URL>" + ;; + esac +} + +give_advice () +{ + # Normalize program name to check for. + normalized_program=`echo "$1" | sed ' + s/^gnu-//; t + s/^gnu//; t + s/^g//; t'` + + printf '%s\n' "'$1' is $msg." + + configure_deps="'configure.ac' or m4 files included by 'configure.ac'" + case $normalized_program in + autoconf*) + echo "You should only need it if you modified 'configure.ac'," + echo "or m4 files included by it." + program_details 'autoconf' + ;; + autoheader*) + echo "You should only need it if you modified 'acconfig.h' or" + echo "$configure_deps." + program_details 'autoheader' + ;; + automake*) + echo "You should only need it if you modified 'Makefile.am' or" + echo "$configure_deps." + program_details 'automake' + ;; + aclocal*) + echo "You should only need it if you modified 'acinclude.m4' or" + echo "$configure_deps." + program_details 'aclocal' + ;; + autom4te*) + echo "You might have modified some maintainer files that require" + echo "the 'autom4te' program to be rebuilt." + program_details 'autom4te' + ;; + bison*|yacc*) + echo "You should only need it if you modified a '.y' file." + echo "You may want to install the GNU Bison package:" + echo "<$gnu_software_URL/bison/>" + ;; + lex*|flex*) + echo "You should only need it if you modified a '.l' file." + echo "You may want to install the Fast Lexical Analyzer package:" + echo "<$flex_URL>" + ;; + help2man*) + echo "You should only need it if you modified a dependency" \ + "of a man page." + echo "You may want to install the GNU Help2man package:" + echo "<$gnu_software_URL/help2man/>" + ;; + makeinfo*) + echo "You should only need it if you modified a '.texi' file, or" + echo "any other file indirectly affecting the aspect of the manual." + echo "You might want to install the Texinfo package:" + echo "<$gnu_software_URL/texinfo/>" + echo "The spurious makeinfo call might also be the consequence of" + echo "using a buggy 'make' (AIX, DU, IRIX), in which case you might" + echo "want to install GNU make:" + echo "<$gnu_software_URL/make/>" + ;; + *) + echo "You might have modified some files without having the proper" + echo "tools for further handling them. Check the 'README' file, it" + echo "often tells you about the needed prerequisites for installing" + echo "this package. You may also peek at any GNU archive site, in" + echo "case some other package contains this missing '$1' program." + ;; + esac +} + +give_advice "$1" | sed -e '1s/^/WARNING: /' \ + -e '2,$s/^/ /' >&2 + +# Propagate the correct exit status (expected to be 127 for a program +# not found, 63 for a program that failed due to version mismatch). +exit $st # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) diff -Nru ratpoison-1.4.8/build-aux/texinfo.tex ratpoison-1.4.9/build-aux/texinfo.tex --- ratpoison-1.4.8/build-aux/texinfo.tex 2014-09-14 16:34:31.000000000 +0000 +++ ratpoison-1.4.9/build-aux/texinfo.tex 2017-04-02 23:39:57.000000000 +0000 @@ -3,11 +3,11 @@ % Load plain if necessary, i.e., if running under initex. \expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi % -\def\texinfoversion{2012-03-11.15} +\def\texinfoversion{2013-02-01.11} % % Copyright 1985, 1986, 1988, 1990, 1991, 1992, 1993, 1994, 1995, % 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, -% 2007, 2008, 2009, 2010, 2011, 2012 Free Software Foundation, Inc. +% 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc. % % This texinfo.tex file is free software: you can redistribute it and/or % modify it under the terms of the GNU General Public License as @@ -24,13 +24,14 @@ % % As a special exception, when this file is read by TeX when processing % a Texinfo source document, you may use the result without -% restriction. (This has been our intent since Texinfo was invented.) +% restriction. This Exception is an additional permission under section 7 +% of the GNU General Public License, version 3 ("GPLv3"). % % Please try the latest version of texinfo.tex before submitting bug % reports; you can get the latest version from: -% http://www.gnu.org/software/texinfo/ (the Texinfo home page), or -% ftp://tug.org/tex/texinfo.tex -% (and all CTAN mirrors, see http://www.ctan.org). +% http://ftp.gnu.org/gnu/texinfo/ (the Texinfo release area), or +% http://ftpmirror.gnu.org/texinfo/ (same, via a mirror), or +% http://www.gnu.org/software/texinfo/ (the Texinfo home page) % The texinfo.tex in any given distribution could well be out % of date, so if that's what you're using, please check. % @@ -594,7 +595,7 @@ \def\:{\spacefactor=1000 } % @* forces a line break. -\def\*{\hfil\break\hbox{}\ignorespaces} +\def\*{\unskip\hfil\break\hbox{}\ignorespaces} % @/ allows a line break. \let\/=\allowbreak @@ -1117,7 +1118,7 @@ % #1 is a control sequence in which to do the replacements, % which we \xdef. \def\txiescapepdf#1{% - \ifx\pdfescapestring\relax + \ifx\pdfescapestring\thisisundefined % No primitive available; should we give a warning or log? % Many times it won't matter. \else @@ -1367,9 +1368,8 @@ \def\skipspaces#1{\def\PP{#1}\def\D{|}% \ifx\PP\D\let\nextsp\relax \else\let\nextsp\skipspaces - \ifx\p\space\else\addtokens{\filename}{\PP}% - \advance\filenamelength by 1 - \fi + \addtokens{\filename}{\PP}% + \advance\filenamelength by 1 \fi \nextsp} \def\getfilename#1{% @@ -1475,9 +1475,6 @@ \def\ttsl{\setfontstyle{ttsl}} -% Default leading. -\newdimen\textleading \textleading = 13.2pt - % Set the baselineskip to #1, and the lineskip and strut size % correspondingly. There is no deep meaning behind these magic numbers % used as factors; they just match (closely enough) what Knuth defined. @@ -1489,6 +1486,7 @@ % can get a sort of poor man's double spacing by redefining this. \def\baselinefactor{1} % +\newdimen\textleading \def\setleading#1{% \dimen0 = #1\relax \normalbaselineskip = \baselinefactor\dimen0 @@ -1761,18 +1759,24 @@ \fi\fi -% Set the font macro #1 to the font named #2, adding on the -% specified font prefix (normally `cm'). +% Set the font macro #1 to the font named \fontprefix#2. % #3 is the font's design size, #4 is a scale factor, #5 is the CMap -% encoding (currently only OT1, OT1IT and OT1TT are allowed, pass -% empty to omit). +% encoding (only OT1, OT1IT and OT1TT are allowed, or empty to omit). +% Example: +% #1 = \textrm +% #2 = \rmshape +% #3 = 10 +% #4 = \mainmagstep +% #5 = OT1 +% \def\setfont#1#2#3#4#5{% \font#1=\fontprefix#2#3 scaled #4 \csname cmap#5\endcsname#1% } % This is what gets called when #5 of \setfont is empty. \let\cmap\gobble -% emacs-page end of cmaps +% +% (end of cmaps) % Use cm as the default font prefix. % To specify the font prefix, you must define \fontprefix @@ -1782,7 +1786,7 @@ \fi % Support font families that don't use the same naming scheme as CM. \def\rmshape{r} -\def\rmbshape{bx} %where the normal face is bold +\def\rmbshape{bx} % where the normal face is bold \def\bfshape{b} \def\bxshape{bx} \def\ttshape{tt} @@ -1797,8 +1801,7 @@ \def\scshape{csc} \def\scbshape{csc} -% Definitions for a main text size of 11pt. This is the default in -% Texinfo. +% Definitions for a main text size of 11pt. (The default in Texinfo.) % \def\definetextfontsizexi{% % Text fonts (11.2pt, magstep1). @@ -1923,7 +1926,7 @@ \textleading = 13.2pt % line spacing for 11pt CM \textfonts % reset the current fonts \rm -} % end of 11pt text font size definitions +} % end of 11pt text font size definitions, \definetextfontsizexi % Definitions to make the main text be 10pt Computer Modern, with @@ -2055,7 +2058,7 @@ \textleading = 12pt % line spacing for 10pt CM \textfonts % reset the current fonts \rm -} % end of 10pt text font size definitions +} % end of 10pt text font size definitions, \definetextfontsizex % We provide the user-level command @@ -2270,8 +2273,6 @@ \gdef\markupsetcodequoteleft{\let`\codequoteleft} \gdef\markupsetcodequoteright{\let'\codequoteright} - -\gdef\markupsetnoligaturesquoteleft{\let`\noligaturesquoteleft} } \let\markupsetuplqcode \markupsetcodequoteleft @@ -2280,6 +2281,9 @@ \let\markupsetuplqexample \markupsetcodequoteleft \let\markupsetuprqexample \markupsetcodequoteright % +\let\markupsetuplqkbd \markupsetcodequoteleft +\let\markupsetuprqkbd \markupsetcodequoteright +% \let\markupsetuplqsamp \markupsetcodequoteleft \let\markupsetuprqsamp \markupsetcodequoteright % @@ -2289,8 +2293,6 @@ \let\markupsetuplqverbatim \markupsetcodequoteleft \let\markupsetuprqverbatim \markupsetcodequoteright -\let\markupsetuplqkbd \markupsetnoligaturesquoteleft - % Allow an option to not use regular directed right quote/apostrophe % (char 0x27), but instead the undirected quote from cmtt (char 0x0d). % The undirected quote is ugly, so don't make it the default, but it @@ -2380,8 +2382,7 @@ \aftersmartic } -% like \smartslanted except unconditionally uses \ttsl, and no ic. -% @var is set to this for defun arguments. +% Unconditional use \ttsl, and no ic. @var is set to this for defuns. \def\ttslanted#1{{\ttsl #1}} % @cite is like \smartslanted except unconditionally use \sl. We never want @@ -2446,34 +2447,12 @@ % @samp. \def\samp#1{{\setupmarkupstyle{samp}\lq\tclose{#1}\rq\null}} -% definition of @key that produces a lozenge. Doesn't adjust to text size. -%\setfont\keyrm\rmshape{8}{1000}{OT1} -%\font\keysy=cmsy9 -%\def\key#1{{\keyrm\textfont2=\keysy \leavevmode\hbox{% -% \raise0.4pt\hbox{\angleleft}\kern-.08em\vtop{% -% \vbox{\hrule\kern-0.4pt -% \hbox{\raise0.4pt\hbox{\vphantom{\angleleft}}#1}}% -% \kern-0.4pt\hrule}% -% \kern-.06em\raise0.4pt\hbox{\angleright}}}} +% @indicateurl is \samp, that is, with quotes. +\let\indicateurl=\samp -% definition of @key with no lozenge. If the current font is already -% monospace, don't change it; that way, we respect @kbdinputstyle. But -% if it isn't monospace, then use \tt. -% -\def\key#1{{\setupmarkupstyle{key}% - \nohyphenation - \ifmonospace\else\tt\fi - #1}\null} - -% ctrl is no longer a Texinfo command. -\def\ctrl #1{{\tt \rawbackslash \hat}#1} - -% @file, @option are the same as @samp. -\let\file=\samp -\let\option=\samp - -% @code is a modification of @t, -% which makes spaces the same size as normal in the surrounding text. +% @code (and similar) prints in typewriter, but with spaces the same +% size as normal in the surrounding text, without hyphenation, etc. +% This is a subroutine for that. \def\tclose#1{% {% % Change normal interword space to be same as for the current font. @@ -2498,7 +2477,7 @@ % We *must* turn on hyphenation at `-' and `_' in @code. % Otherwise, it is too hard to avoid overfull hboxes % in the Emacs manual, the Library manual, etc. - +% % Unfortunately, TeX uses one parameter (\hyphenchar) to control % both hyphenation at - and hyphenation within words. % We must therefore turn them both off (\tclose does that) @@ -2517,7 +2496,7 @@ \let-\codedash \let_\codeunder \else - \let-\realdash + \let-\normaldash \let_\realunder \fi \codex @@ -2526,7 +2505,7 @@ \def\codex #1{\tclose{#1}\endgroup} -\def\realdash{-} +\def\normaldash{-} \def\codedash{-\discretionary{}{}{}} \def\codeunder{% % this is all so @math{@code{var_name}+1} can work. In math mode, _ @@ -2541,9 +2520,9 @@ } % An additional complication: the above will allow breaks after, e.g., -% each of the four underscores in __typeof__. This is undesirable in -% some manuals, especially if they don't have long identifiers in -% general. @allowcodebreaks provides a way to control this. +% each of the four underscores in __typeof__. This is bad. +% @allowcodebreaks provides a document-level way to turn breaking at - +% and _ on and off. % \newif\ifallowcodebreaks \allowcodebreakstrue @@ -2562,6 +2541,13 @@ \fi\fi } +% For @command, @env, @file, @option quotes seem unnecessary, +% so use \code rather than \samp. +\let\command=\code +\let\env=\code +\let\file=\code +\let\option=\code + % @uref (abbreviation for `urlref') takes an optional (comma-separated) % second argument specifying the text to display and an optional third % arg as text to display instead of (rather than in addition to) the url @@ -2708,10 +2694,6 @@ \let\email=\uref \fi -% @kbd is like @code, except that if the argument is just one @key command, -% then @kbd has no effect. -\def\kbd#1{{\setupmarkupstyle{kbd}\def\look{#1}\expandafter\kbdfoo\look??\par}} - % @kbdinputstyle -- arg is `distinct' (@kbd uses slanted tty font always), % `example' (@kbd uses ttsl only inside of @example and friends), % or `code' (@kbd uses normal tty font always). @@ -2735,16 +2717,36 @@ % Default is `distinct'. \kbdinputstyle distinct +% @kbd is like @code, except that if the argument is just one @key command, +% then @kbd has no effect. +\def\kbd#1{{\def\look{#1}\expandafter\kbdsub\look??\par}} + \def\xkey{\key} -\def\kbdfoo#1#2#3\par{\def\one{#1}\def\three{#3}\def\threex{??}% -\ifx\one\xkey\ifx\threex\three \key{#2}% -\else{\tclose{\kbdfont\setupmarkupstyle{kbd}\look}}\fi -\else{\tclose{\kbdfont\setupmarkupstyle{kbd}\look}}\fi} +\def\kbdsub#1#2#3\par{% + \def\one{#1}\def\three{#3}\def\threex{??}% + \ifx\one\xkey\ifx\threex\three \key{#2}% + \else{\tclose{\kbdfont\setupmarkupstyle{kbd}\look}}\fi + \else{\tclose{\kbdfont\setupmarkupstyle{kbd}\look}}\fi +} -% For @indicateurl, @env, @command quotes seem unnecessary, so use \code. -\let\indicateurl=\code -\let\env=\code -\let\command=\code +% definition of @key that produces a lozenge. Doesn't adjust to text size. +%\setfont\keyrm\rmshape{8}{1000}{OT1} +%\font\keysy=cmsy9 +%\def\key#1{{\keyrm\textfont2=\keysy \leavevmode\hbox{% +% \raise0.4pt\hbox{\angleleft}\kern-.08em\vtop{% +% \vbox{\hrule\kern-0.4pt +% \hbox{\raise0.4pt\hbox{\vphantom{\angleleft}}#1}}% +% \kern-0.4pt\hrule}% +% \kern-.06em\raise0.4pt\hbox{\angleright}}}} + +% definition of @key with no lozenge. If the current font is already +% monospace, don't change it; that way, we respect @kbdinputstyle. But +% if it isn't monospace, then use \tt. +% +\def\key#1{{\setupmarkupstyle{key}% + \nohyphenation + \ifmonospace\else\tt\fi + #1}\null} % @clicksequence{File @click{} Open ...} \def\clicksequence#1{\begingroup #1\endgroup} @@ -2852,6 +2854,9 @@ } } +% ctrl is no longer a Texinfo command, but leave this definition for fun. +\def\ctrl #1{{\tt \rawbackslash \hat}#1} + % @inlinefmt{FMTNAME,PROCESSED-TEXT} and @inlineraw{FMTNAME,RAW-TEXT}. % Ignore unless FMTNAME == tex; then it is like @iftex and @tex, % except specified as a normal braced arg, so no newlines to worry about. @@ -3142,12 +3147,17 @@ % hopefully nobody will notice/care. \edef\ecsize{\csname\curfontsize ecsize\endcsname}% \edef\nominalsize{\csname\curfontsize nominalsize\endcsname}% - \ifx\curfontstyle\bfstylename - % bold: - \font\thisecfont = ecb\ifusingit{i}{x}\ecsize \space at \nominalsize - \else - % regular: - \font\thisecfont = ec\ifusingit{ti}{rm}\ecsize \space at \nominalsize + \ifmonospace + % typewriter: + \font\thisecfont = ectt\ecsize \space at \nominalsize + \else + \ifx\curfontstyle\bfstylename + % bold: + \font\thisecfont = ecb\ifusingit{i}{x}\ecsize \space at \nominalsize + \else + % regular: + \font\thisecfont = ec\ifusingit{ti}{rm}\ecsize \space at \nominalsize + \fi \fi \thisecfont } @@ -3260,6 +3270,20 @@ \finishedtitlepagetrue } +% Settings used for typesetting titles: no hyphenation, no indentation, +% don't worry much about spacing, ragged right. This should be used +% inside a \vbox, and fonts need to be set appropriately first. Because +% it is always used for titles, nothing else, we call \rmisbold. \par +% should be specified before the end of the \vbox, since a vbox is a group. +% +\def\raggedtitlesettings{% + \rmisbold + \hyphenpenalty=10000 + \parindent=0pt + \tolerance=5000 + \ptexraggedright +} + % Macros to be used within @titlepage: \let\subtitlerm=\tenrm @@ -3267,7 +3291,7 @@ \parseargdef\title{% \checkenv\titlepage - \leftline{\titlefonts\rmisbold #1} + \vbox{\titlefonts \raggedtitlesettings #1\par}% % print a rule at the page bottom also. \finishedtitlepagefalse \vskip4pt \hrule height 4pt width \hsize \vskip4pt @@ -4164,7 +4188,7 @@ % ..., but we might end up with active ones in the argument if % we're called from @code, as @code{@value{foo-bar_}}, though. % So \let them to their normal equivalents. - \let-\realdash \let_\normalunderscore + \let-\normaldash \let_\normalunderscore } } @@ -4204,7 +4228,7 @@ } \def\ifsetfail{\doignore{ifset}} -% @ifclear VAR ... @end ifclear reads the `...' iff VAR has never been +% @ifclear VAR ... @end executes the `...' iff VAR has never been % defined with @set, or has been undefined with @clear. % % The `\else' inside the `\doifset' parameter is a trick to reuse the @@ -4215,6 +4239,35 @@ \def\ifclear{\parsearg{\doifset{\else \let\next=\ifclearfail}}} \def\ifclearfail{\doignore{ifclear}} +% @ifcommandisdefined CMD ... @end executes the `...' if CMD (written +% without the @) is in fact defined. We can only feasibly check at the +% TeX level, so something like `mathcode' is going to considered +% defined even though it is not a Texinfo command. +% +\makecond{ifcommanddefined} +\def\ifcommanddefined{\parsearg{\doifcmddefined{\let\next=\ifcmddefinedfail}}} +% +\def\doifcmddefined#1#2{{% + \makevalueexpandable + \let\next=\empty + \expandafter\ifx\csname #2\endcsname\relax + #1% If not defined, \let\next as above. + \fi + \expandafter + }\next +} +\def\ifcmddefinedfail{\doignore{ifcommanddefined}} + +% @ifcommandnotdefined CMD ... handled similar to @ifclear above. +\makecond{ifcommandnotdefined} +\def\ifcommandnotdefined{% + \parsearg{\doifcmddefined{\else \let\next=\ifcmdnotdefinedfail}}} +\def\ifcmdnotdefinedfail{\doignore{ifcommandnotdefined}} + +% Set the `txicommandconditionals' variable, so documents have a way to +% test if the @ifcommand...defined conditionals are available. +\set txicommandconditionals + % @dircategory CATEGORY -- specify a category of the dir file % which this file should belong to. Ignore this in TeX. \let\dircategory=\comment @@ -4451,6 +4504,7 @@ \definedummyword\guillemetright \definedummyword\guilsinglleft \definedummyword\guilsinglright + \definedummyword\lbracechar \definedummyword\leq \definedummyword\minus \definedummyword\ogonek @@ -4463,6 +4517,7 @@ \definedummyword\quoteleft \definedummyword\quoteright \definedummyword\quotesinglbase + \definedummyword\rbracechar \definedummyword\result \definedummyword\textdegree % @@ -4514,6 +4569,7 @@ \definedummyword\t % % Commands that take arguments. + \definedummyword\abbr \definedummyword\acronym \definedummyword\anchor \definedummyword\cite @@ -4525,7 +4581,9 @@ \definedummyword\emph \definedummyword\env \definedummyword\file + \definedummyword\image \definedummyword\indicateurl + \definedummyword\inforef \definedummyword\kbd \definedummyword\key \definedummyword\math @@ -4572,7 +4630,10 @@ % content at all. So for index sorting, we map @{ and @} to strings % starting with |, since that ASCII character is between ASCII { and }. \def\{{|a}% + \def\lbracechar{|a}% + % \def\}{|b}% + \def\rbracechar{|b}% % % Non-English letters. \def\AA{AA}% @@ -5533,14 +5594,6 @@ % Define @majorheading, @heading and @subheading -% NOTE on use of \vbox for chapter headings, section headings, and such: -% 1) We use \vbox rather than the earlier \line to permit -% overlong headings to fold. -% 2) \hyphenpenalty is set to 10000 because hyphenation in a -% heading is obnoxious; this forbids it. -% 3) Likewise, headings look best if no \parindent is used, and -% if justification is not attempted. Hence \raggedright. - \def\majorheading{% {\advance\chapheadingskip by 10pt \chapbreak }% \parsearg\chapheadingzzz @@ -5548,10 +5601,8 @@ \def\chapheading{\chapbreak \parsearg\chapheadingzzz} \def\chapheadingzzz#1{% - {\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000 - \parindent=0pt\ptexraggedright - \rmisbold #1\hfill}}% - \bigskip \par\penalty 200\relax + \vbox{\chapfonts \raggedtitlesettings #1\par}% + \nobreak\bigskip \nobreak \suppressfirstparagraphindent } @@ -5710,8 +5761,7 @@ % % Typeset the actual heading. \nobreak % Avoid page breaks at the interline glue. - \vbox{\hyphenpenalty=10000 \tolerance=5000 \parindent=0pt \ptexraggedright - \hangindent=\wd0 \centerparametersmaybe + \vbox{\raggedtitlesettings \hangindent=\wd0 \centerparametersmaybe \unhbox0 #1\par}% }% \nobreak\bigskip % no page break after a chapter title @@ -5733,18 +5783,18 @@ \def\setchapterstyle #1 {\csname CHAPF#1\endcsname} % \def\unnchfopen #1{% -\chapoddpage {\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000 - \parindent=0pt\ptexraggedright - \rmisbold #1\hfill}}\bigskip \par\nobreak + \chapoddpage + \vbox{\chapfonts \raggedtitlesettings #1\par}% + \nobreak\bigskip\nobreak } \def\chfopen #1#2{\chapoddpage {\chapfonts \vbox to 3in{\vfil \hbox to\hsize{\hfil #2} \hbox to\hsize{\hfil #1} \vfil}}% \par\penalty 5000 % } \def\centerchfopen #1{% -\chapoddpage {\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000 - \parindent=0pt - \hfill {\rmisbold #1}\hfill}}\bigskip \par\nobreak + \chapoddpage + \vbox{\chapfonts \raggedtitlesettings \hfill #1\hfill}% + \nobreak\bigskip \nobreak } \def\CHAPFopen{% \global\let\chapmacro=\chfopen @@ -6510,16 +6560,9 @@ \makedispenvdef{quotation}{\quotationstart} % \def\quotationstart{% - {\parskip=0pt \aboveenvbreak}% because \aboveenvbreak inserts \parskip - \parindent=0pt - % - % @cartouche defines \nonarrowing to inhibit narrowing at next level down. + \indentedblockstart % same as \indentedblock, but increase right margin too. \ifx\nonarrowing\relax - \advance\leftskip by \lispnarrowing \advance\rightskip by \lispnarrowing - \exdentamount = \lispnarrowing - \else - \let\nonarrowing = \relax \fi \parsearg\quotationlabel } @@ -6545,6 +6588,32 @@ \fi } +% @indentedblock is like @quotation, but indents only on the left and +% has no optional argument. +% +\makedispenvdef{indentedblock}{\indentedblockstart} +% +\def\indentedblockstart{% + {\parskip=0pt \aboveenvbreak}% because \aboveenvbreak inserts \parskip + \parindent=0pt + % + % @cartouche defines \nonarrowing to inhibit narrowing at next level down. + \ifx\nonarrowing\relax + \advance\leftskip by \lispnarrowing + \exdentamount = \lispnarrowing + \else + \let\nonarrowing = \relax + \fi +} + +% Keep a nonzero parskip for the environment, since we're doing normal filling. +% +\def\Eindentedblock{% + \par + {\parskip=0pt \afterenvbreak}% +} +\def\Esmallindentedblock{\Eindentedblock} + % LaTeX-like @verbatim...@end verbatim and @verb{...} % If we want to allow any as delimiter, @@ -7023,7 +7092,10 @@ \df \sl \hyphenchar\font=0 % % On the other hand, if an argument has two dashes (for instance), we - % want a way to get ttsl. Let's try @var for that. + % want a way to get ttsl. We used to recommend @var for that, so + % leave the code in, but it's strange for @var to lead to typewriter. + % Nowadays we recommend @code, since the difference between a ttsl hyphen + % and a tt hyphen is pretty tiny. @code also disables ?` !`. \def\var##1{{\setupmarkupstyle{var}\ttslanted{##1}}}% #1% \sl\hyphenchar\font=45 @@ -7807,7 +7879,7 @@ \fi\fi } - +% % @xref, @pxref, and @ref generate cross-references. For \xrefX, #1 is % the node name, #2 the name of the Info cross-reference, #3 the printed % node name, #4 the name of the Info file, #5 the name of the printed @@ -7817,16 +7889,21 @@ \def\xref#1{\putwordSee{} \xrefX[#1,,,,,,,]} \def\ref#1{\xrefX[#1,,,,,,,]} % -\newbox\topbox +\newbox\toprefbox \newbox\printedrefnamebox +\newbox\infofilenamebox \newbox\printedmanualbox % \def\xrefX[#1,#2,#3,#4,#5,#6]{\begingroup \unsepspaces % + % Get args without leading/trailing spaces. \def\printedrefname{\ignorespaces #3}% \setbox\printedrefnamebox = \hbox{\printedrefname\unskip}% % + \def\infofilename{\ignorespaces #4}% + \setbox\infofilenamebox = \hbox{\infofilename\unskip}% + % \def\printedmanual{\ignorespaces #5}% \setbox\printedmanualbox = \hbox{\printedmanual\unskip}% % @@ -7861,11 +7938,18 @@ \turnoffactive \makevalueexpandable % This expands tokens, so do it after making catcode changes, so _ - % etc. don't get their TeX definitions. + % etc. don't get their TeX definitions. This ignores all spaces in + % #4, including (wrongly) those in the middle of the filename. \getfilename{#4}% % + % This (wrongly) does not take account of leading or trailing + % spaces in #1, which should be ignored. \edef\pdfxrefdest{#1}% - \txiescapepdf\pdfxrefdest + \ifx\pdfxrefdest\empty + \def\pdfxrefdest{Top}% no empty targets + \else + \txiescapepdf\pdfxrefdest % escape PDF special chars + \fi % \leavevmode \startlink attr{/Border [0 0 0]}% @@ -7898,7 +7982,7 @@ \printedrefname \fi % - % if the user also gave the printed manual name (fifth arg), append + % If the user also gave the printed manual name (fifth arg), append % "in MANUALNAME". \ifdim \wd\printedmanualbox > 0pt \space \putwordin{} \cite{\printedmanual}% @@ -7913,32 +7997,20 @@ % this is a loss. Therefore, we give the text of the node name % again, so it is as if TeX is seeing it for the first time. % - % Cross-manual reference. Only include the "Section ``foo'' in" if - % the foo is neither missing or Top. Thus, @xref{,,,foo,The Foo Manual} - % outputs simply "see The Foo Manual". \ifdim \wd\printedmanualbox > 0pt - % What is the 7sp about? The idea is that we also want to omit - % the Section part if we would be printing "Top", since they are - % clearly trying to refer to the whole manual. But, this being - % TeX, we can't easily compare strings while ignoring the possible - % spaces before and after in the input. By adding the arbitrary - % 7sp, we make it much less likely that a real node name would - % happen to have the same width as "Top" (e.g., in a monospaced font). - % I hope it will never happen in practice. + % Cross-manual reference with a printed manual name. % - % For the same basic reason, we retypeset the "Top" at every - % reference, since the current font is indeterminate. + \crossmanualxref{\cite{\printedmanual\unskip}}% + % + \else\ifdim \wd\infofilenamebox > 0pt + % Cross-manual reference with only an info filename (arg 4), no + % printed manual name (arg 5). This is essentially the same as + % the case above; we output the filename, since we have nothing else. % - \setbox\topbox = \hbox{Top\kern7sp}% - \setbox2 = \hbox{\ignorespaces \printedrefname \unskip \kern7sp}% - \ifdim \wd2 > 7sp - \ifdim \wd2 = \wd\topbox \else - \putwordSection{} ``\printedrefname'' \putwordin{}\space - \fi - \fi - \cite{\printedmanual}% + \crossmanualxref{\code{\infofilename\unskip}}% + % \else - % Reference in this manual. + % Reference within this manual. % % _ (for example) has to be the character _ for the purposes of the % control sequence corresponding to the node, but it has to expand @@ -7959,11 +8031,37 @@ % % output the `page 3'. \turnoffactive \putwordpage\tie\refx{#1-pg}{}% - \fi + \fi\fi \fi \endlink \endgroup} +% Output a cross-manual xref to #1. Used just above (twice). +% +% Only include the text "Section ``foo'' in" if the foo is neither +% missing or Top. Thus, @xref{,,,foo,The Foo Manual} outputs simply +% "see The Foo Manual", the idea being to refer to the whole manual. +% +% But, this being TeX, we can't easily compare our node name against the +% string "Top" while ignoring the possible spaces before and after in +% the input. By adding the arbitrary 7sp below, we make it much less +% likely that a real node name would have the same width as "Top" (e.g., +% in a monospaced font). Hopefully it will never happen in practice. +% +% For the same basic reason, we retypeset the "Top" at every +% reference, since the current font is indeterminate. +% +\def\crossmanualxref#1{% + \setbox\toprefbox = \hbox{Top\kern7sp}% + \setbox2 = \hbox{\ignorespaces \printedrefname \unskip \kern7sp}% + \ifdim \wd2 > 7sp % nonempty? + \ifdim \wd2 = \wd\toprefbox \else % same as Top? + \putwordSection{} ``\printedrefname'' \putwordin{}\space + \fi + \fi + #1% +} + % This macro is called from \xrefX for the `[nodename]' part of xref % output. It's a separate macro only so it can be changed more easily, % since square brackets don't work well in some documents. Particularly @@ -9895,22 +9993,26 @@ @gdef@otherbackslash{@let\=@realbackslash} % Same as @turnoffactive except outputs \ as {\tt\char`\\} instead of -% the literal character `\'. +% the literal character `\'. Also revert - to its normal character, in +% case the active - from code has slipped in. % -@def@normalturnoffactive{% - @let"=@normaldoublequote - @let$=@normaldollar %$ font-lock fix - @let+=@normalplus - @let<=@normalless - @let>=@normalgreater - @let\=@normalbackslash - @let^=@normalcaret - @let_=@normalunderscore - @let|=@normalverticalbar - @let~=@normaltilde - @markupsetuplqdefault - @markupsetuprqdefault - @unsepspaces +{@catcode`- = @active + @gdef@normalturnoffactive{% + @let-=@normaldash + @let"=@normaldoublequote + @let$=@normaldollar %$ font-lock fix + @let+=@normalplus + @let<=@normalless + @let>=@normalgreater + @let\=@normalbackslash + @let^=@normalcaret + @let_=@normalunderscore + @let|=@normalverticalbar + @let~=@normaltilde + @markupsetuplqdefault + @markupsetuprqdefault + @unsepspaces + } } % Make _ and + \other characters, temporarily. diff -Nru ratpoison-1.4.8/ChangeLog ratpoison-1.4.9/ChangeLog --- ratpoison-1.4.8/ChangeLog 2014-09-14 16:31:58.000000000 +0000 +++ ratpoison-1.4.9/ChangeLog 2017-03-09 22:20:26.000000000 +0000 @@ -1,8712 +1,4 @@ -commit 52ce472823ddc703866ab124e65a602d3e4f38b0 -Author: Jérémie Courrèges-Anglas -Date: Sun Sep 14 18:31:01 2014 +0200 +The ratpoison project uses git for versioning. Please refer to the git +repository if you're looking for a detailed list of changes. - NEWS entries for 1.4.8 - -commit b36c633127fcf41b76da9c01494e59ba272d3c7c -Author: Jérémie Courrèges-Anglas -Date: Sun Sep 14 18:26:33 2014 +0200 - - Check for and include sys/stat.h - - * needed by the recent use of fchmod, missing include warning triggered - on Debian stable but not OpenBSD - -commit 67b4b1b86ecdb251f23970ed0713da445c00804d -Author: Jérémie Courrèges-Anglas -Date: Sat Jun 14 16:57:28 2014 +0200 - - Fix sfdump. - - One more proof that I should not hack on the multiple screens support. - Patch from Joshua Leners. - -commit fa8ec99a9054f006fac10bb57df35d457c06ce93 -Author: Jérémie Courrèges-Anglas -Date: Sat Jun 14 16:55:15 2014 +0200 - - Rewrite libhistory handling. - -commit fd4cfa89a0baaa0ecaf5a2901c9a506d1748907e -Author: Jérémie Courrèges-Anglas -Date: Sat Jun 14 16:49:47 2014 +0200 - - Fix --enable-mdoc error message. - -commit 8904b43449d280f39a738c09e3e649b58f519e4f -Author: Jérémie Courrèges-Anglas -Date: Sat Jun 14 16:48:55 2014 +0200 - - Support --enable-debug=no - - Reported by Jeroen Roovers (jer@gentoo) who proposed a similar patch. - -commit 4fe2bf0b5e7ac663285eb171d9dd7e4b85c0506b -Author: Jérémie Courrèges-Anglas -Date: Sat Jun 14 16:44:31 2014 +0200 - - Kill RCS Ids. - -commit 35151796c216f23739d8b7bc4c532de400e9d1dc -Author: Jérémie Courrèges-Anglas -Date: Sat Jun 14 16:41:00 2014 +0200 - - Move to 1.4.7-beta - -commit 8269f900b7a09726c8010edcaa94601bd1699305 -Author: cos -Date: Wed May 28 11:54:12 2014 +0200 - - Clean-up duplicate entries in AUTHORS file. - -commit a65cdf85338c609218c0a16896f5e035bae918a8 -Author: Jérémie Courrèges-Anglas -Date: Mon May 19 22:37:55 2014 +0200 - - Bad version in the latest NEWS chunk. - - This is a listing of changes since 1.4.6, not 1.4.7. Duh. - Noticed by brainwash on #ratpoison, thanks! - -commit 452bd9740bef7cf6c3b1dcb19616adfe84217612 -Author: Jérémie Courrèges-Anglas -Date: Tue Apr 22 11:03:20 2014 +0200 - - "Fix" for sloppy.c - - * so it seems like this change makes some users' life better. It still - fails to behave properly here, but I don't care. :) - -commit a10fe576ada8a294739d4cd65273acdc8e4db4e2 -Author: Jérémie Courrèges-Anglas -Date: Mon Apr 21 22:56:47 2014 +0200 - - s/EMACS/Emacs/ - -commit 8a8e8019f4c5c060df8815a075ef0874831ea842 -Author: Jérémie Courrèges-Anglas -Date: Mon Apr 21 22:49:31 2014 +0200 - - README tweaks from Jeff Abrahamson. - - * mention the use of sudo instead of a privileged shell - * advertize the use of ./autogen.sh for users that pull from git - * bonus: mention automake and the fact that recent autotools releases - are needed - -commit 9b16a4db5455728a35a7919cf3060907d8cb7df2 -Author: Jérémie Courrèges-Anglas -Date: Wed Apr 9 23:14:54 2014 +0200 - - Remove MERCHANDISE. - - As discussed with Ryan, the service has been discontinued. :) - -commit 114f29821912e890d44d9c2d3caa181d3edd46d0 -Author: Jérémie Courrèges-Anglas -Date: Tue Apr 8 18:14:37 2014 +0200 - - Here comes ratpoison-1.4.7 - -commit 1cff86f4551bdc5097c86af6656d9b4891d991a5 -Author: Jérémie Courrèges-Anglas -Date: Tue Apr 8 18:14:20 2014 +0200 - - Merge the last Changelog bits before release. - -commit 72b119b2dfceeb544778c229cf6dcc82f96f56a5 -Author: Jérémie Courrèges-Anglas -Date: Tue Apr 8 18:12:33 2014 +0200 - - Mention the permissions change on the history file - - * also delete a useless line while here - -commit f226bbdaebe96fd4e5f076c22dfe173a0e2c2bd1 -Author: Jérémie Courrèges-Anglas -Date: Tue Apr 8 18:11:30 2014 +0200 - - Two hyphens that should be minus signs. - - Proposed earlier by Bernhard R. Link. - -commit 331ed8897ddf6464844696a453cd447aaf51d93e -Author: Jérémie Courrèges-Anglas -Date: Wed Apr 2 07:52:51 2014 +0200 - - Here's 1.4.7-rc3. -commit efae2c8a3b12b983250cd3a9a2e3833a82b04ce7 -Author: Jérémie Courrèges-Anglas -Date: Wed Apr 2 07:40:36 2014 +0200 - - At saving time, restrict the permissions of the history file - -commit 2484f5ce9be86936f5b0e51b9a758ff48ba83054 -Author: Jérémie Courrèges-Anglas -Date: Wed Apr 2 07:37:53 2014 +0200 - - fclose returns 0 on success - - * amend the test to avoid needless spamming when running in debug mode - * tweak spacing while here - -commit bca76d995713e52327663aecdfa93f5d9ac447a1 -Author: Jérémie Courrèges-Anglas -Date: Wed Apr 2 07:33:47 2014 +0200 - - Make sbuf_printf update the len and maxsz internal fields - - * sbuf_printf updated the .data field with a freshly allocated string, - but didn't bother setting the .len and .maxsz fields of the sbuf. - Calling other sbuf_* functions on the same sbuf could lead to erratic - behavior and data corruption. eg. in init_screen, the screen's - display_string ended up corrupted, using putenv ratpoison couldn't - override the DISPLAY environment variable in child processes anymore, - introducing a regression on multi-screen setups. - - Bug reported and cause tracked down by William Yodlowsky, the maintainer - of the OpenBSD ratpoison port. Thanks! - -commit f9d4a134f566b561c9c771166de2139c7ebb8c9d -Author: Jérémie Courrèges-Anglas -Date: Sat Mar 29 19:50:17 2014 +0100 - - Here's 1.4.7-rc2. -commit 9732d147d89b53f56bcded70f9fc2a375a235fd8 -Author: Jérémie Courrèges-Anglas -Date: Sat Mar 29 19:28:14 2014 +0100 - - Amend the VARIABLES introduction paragraph. - -commit e4d731ae29e557bda4ea166763ed0b58bb602049 -Author: Jérémie Courrèges-Anglas -Date: Sat Mar 29 19:10:49 2014 +0100 - - `warp' requires an argument. - - Noticed by Bernhard R. Link. - -commit a64a962304c00c19ebbf055b778cf81eef8367f9 -Author: Jérémie Courrèges-Anglas -Date: Sat Mar 29 18:48:10 2014 +0100 - - Better wording. - -commit 33b8758fb0118f9bf20375734935adc1bf7c33fb -Author: Jérémie Courrèges-Anglas -Date: Sat Mar 29 18:47:27 2014 +0100 - - In read_shellcmd make sure we don't dereference a NULL pointer. - -commit bde541308ee998fd3185500b4362bb404f51ee4c -Author: Jérémie Courrèges-Anglas -Date: Sat Mar 29 18:46:40 2014 +0100 - - Detect XKB support at build and runtime. - -commit 8204551023d9b77294947a5170f3428fb5a4a225 -Author: Jérémie Courrèges-Anglas -Date: Sat Mar 29 17:18:58 2014 +0100 - - Group non-optional args with parens. - -commit e241f7927987f4ef542be028e7f03af39b57c105 -Author: Jérémie Courrèges-Anglas -Date: Sat Mar 29 16:33:33 2014 +0100 - - Make the `-pixels' case stand out for vsplit - -commit e8cf915db0e8cdacce8d2acb98c5fabcaf742d0c -Author: Jérémie Courrèges-Anglas -Date: Sat Mar 29 16:30:43 2014 +0100 - - Replace spaces with hyphens to stress the need for a single word. - - Proposed earlier by Bernhard R. Link. - -commit dca33335275d5a930c545b3b62f0dba2b2437866 -Author: Jérémie Courrèges-Anglas -Date: Sat Mar 29 16:26:43 2014 +0100 - - Li -> Cm for various command subarguments. - - Prompted by a discussion with Bernhard R. Link. - -commit 08ded19772a54f97aecd948271ed1957c9f89bca -Author: Jérémie Courrèges-Anglas -Date: Thu Mar 27 10:57:33 2014 +0100 - - Hooks names aren't placeholders but really command modifiers. - - Prompted by a discussion with Bernhard R. Link. - -commit d75a70126012cc862cf6dacc1198118329033ef0 -Author: Jérémie Courrèges-Anglas -Date: Tue Mar 25 23:34:19 2014 +0100 - - `swap' needs at least one argument. - -commit 38f99d642d92cca601d87c719015cfcdbf26b618 -Author: Jérémie Courrèges-Anglas -Date: Tue Mar 25 23:24:34 2014 +0100 - - Use AM_MISSING_PROG for mandoc (better error messages). - - Prompted by a discussion with Bernhard R. Link. - -commit 410c7f1d286c4060d1941df71b55a17ece27a0ad -Author: Jérémie Courrèges-Anglas -Date: Mon Mar 24 21:32:16 2014 +0100 - - Yes, that ratpoison bug was nasty. - - * Hi, mist. :) - * for those of you that wonder the purpose of this commit, - don't ask. :) - -commit a7b3902ac77a037d9e32332f952d172ede738068 -Author: Jérémie Courrèges-Anglas -Date: Mon Mar 24 11:21:23 2014 +0100 - - Heading towards 1.4.7 - -commit 2a556dae8158c0f02b025918f5262fa291c450c4 -Author: Jérémie Courrèges-Anglas -Date: Mon Mar 24 11:20:51 2014 +0100 - - Initial NEWS ans ChangeLog entries for 1.4.7 -commit 29246275028f9ce8729e37414949f9620a5af6e3 -Author: Jérémie Courrèges-Anglas -Date: Mon Mar 24 10:31:05 2014 +0100 - - Stray empty line introduced in 5dcd243 - -commit 020dc81d058aa7f82039a373cc6f6e420b8f43c7 -Author: Jérémie Courrèges-Anglas -Date: Mon Mar 24 10:11:38 2014 +0100 - - Ensure NULL is treated as a pointer in execl* calls - -commit e8f1cd328f9c15e2b1814962e2728d86a1565658 -Author: Jérémie Courrèges-Anglas -Date: Mon Mar 24 10:10:18 2014 +0100 - - Avoid malloc(0) in add_command. - -commit a2be2e6514801fe3f6829a05de017840f50a2b3e -Author: Jérémie Courrèges-Anglas -Date: Sun Mar 23 21:38:12 2014 +0100 - - Install ratpoison.el in share/emacs/site-lisp - -commit d095cad0bdf17872786fa30626dd16851e72ef69 -Author: Jérémie Courrèges-Anglas -Date: Sun Mar 23 21:36:44 2014 +0100 - - In frestore flag a frame_read error as appropriate. - - * while here kill a stray ';' - -commit 46ee8dd01fc8c8b8d4c1e5e28f7ec549bba489d0 -Author: Jérémie Courrèges-Anglas -Date: Sun Mar 23 20:38:46 2014 +0100 - - Factorize code in cmd_fdump. - -commit 1788f077d4ce9fb3481321d7d5c45a5b2ceb5704 -Author: Jérémie Courrèges-Anglas -Date: Sun Mar 23 20:36:53 2014 +0100 - - Factorize code in update_{window,group}_names. - -commit 2c41fe2d905f7ba743be164b74761acdef82d08c -Author: Jérémie Courrèges-Anglas -Date: Wed Mar 5 03:10:11 2014 +0100 - - Indent function calls in unmanaged_window. - -commit 905bce42660f9d0d2da7b3b7460ac672f9d798fd -Author: Jérémie Courrèges-Anglas -Date: Wed Mar 5 03:08:30 2014 +0100 - - Make unmanaged_window cheaper. - - * No need to get then free the window name in the loop, - do it out of the loop. - -commit 33ed8c59d437ffc3ad993b6cad5fe4c7f23bc99c -Author: Jérémie Courrèges-Anglas -Date: Wed Mar 5 03:06:35 2014 +0100 - - Kill decls forgotten in a5ee817 "Kill code #if 0'ed since 2001." - -commit daa1f35ce4a1013865d7d6d2ef3df9dfa5317902 -Author: Jérémie Courrèges-Anglas -Date: Wed Mar 5 03:04:49 2014 +0100 - - read_startup_files doesn't mangle its argument. - -commit 693cc223a8b12af93874f23aa514d8e9c60ff195 -Author: Jérémie Courrèges-Anglas -Date: Wed Mar 5 03:04:01 2014 +0100 - - Don't dup args passed on the cli, we don't mangle them. - -commit f2db5efa8f582dfd2e2a2e27a0c702b97d079d55 -Author: Jérémie Courrèges-Anglas -Date: Wed Mar 5 03:02:45 2014 +0100 - - Put history_expand_line's return type on its own line. - -commit 2c5a4ad1e7b10a9c6a900932b8690a81811fd84e -Author: Jérémie Courrèges-Anglas -Date: Wed Mar 5 03:01:59 2014 +0100 - - In history_add_upto make sure we don't dereference a NULL pointer; - -commit 53b223551687397986d55bfbf34009663cec217a -Author: Jérémie Courrèges-Anglas -Date: Mon Mar 24 10:23:41 2014 +0100 - - Kill history_resize, unused. - -commit 092295bc4a87c6af145c9231f598d55e2d5d9852 -Author: Jérémie Courrèges-Anglas -Date: Wed Mar 5 03:00:14 2014 +0100 - - Kill unused and forgotten include of assert.h in bar.c - -commit 977bfad903c35f1e33fc978289404226ac0693e9 -Author: Jérémie Courrèges-Anglas -Date: Wed Mar 5 03:00:44 2014 +0100 - - Kill code and simplify cmd_number - - * cmd_number needs at least one argument - * The code that handled the zero argument case was thus unreachable, - and was the last user of print_window_information, so kill that - function. - -commit 77176d78b15a702d47725738df01eace86ebfa07 -Author: Jérémie Courrèges-Anglas -Date: Tue Mar 4 03:03:13 2014 +0100 - - Kill last strcpy occurrence. - - * replace_keybinding is seldom used, no need to half-optimize it - -commit d4884d7643e30ceaf7e9093d2fc41972971786f2 -Author: Jérémie Courrèges-Anglas -Date: Tue Mar 4 03:02:23 2014 +0100 - - strcpy -> memcpy - - * since we have to know the string length anyway - -commit d714a5a2776c0afc6397a9e89adc328eaa75ca8f -Author: Jérémie Courrèges-Anglas -Date: Tue Mar 4 02:59:13 2014 +0100 - - strncpy -> memcpy. - - * we NUL-terminate it anyway - * kill a useless "* sizeof (char)" while here - -commit 131be4c952fe939c210fd8bb649dae5e414d4fcc -Author: Jérémie Courrèges-Anglas -Date: Tue Mar 4 02:56:43 2014 +0100 - - Kill useless comment. - -commit 7babe4652a3b781c982fd96a0ad697db9b711aa1 -Author: Jérémie Courrèges-Anglas -Date: Tue Mar 4 02:54:45 2014 +0100 - - Simplify init_screen using sbuf - -commit ef423da9227bd6f360a16e1e6c8396d588d67cab -Author: Jérémie Courrèges-Anglas -Date: Tue Mar 4 02:52:49 2014 +0100 - - Simplify read_shellcmd using sbuf - -commit 05525bcff126d698d3e9f18cb4df97c6fe528237 -Author: Jérémie Courrèges-Anglas -Date: Tue Mar 4 02:51:25 2014 +0100 - - Small coding standards fix. - -commit 710696420f50234716579c98367696a43a211482 -Author: Jérémie Courrèges-Anglas -Date: Tue Mar 4 02:49:35 2014 +0100 - - Simplify list_unmanaged_windows using sbuf - -commit 5dcd243c55447099e4ff353fafbbad2a02836b0c -Author: Jérémie Courrèges-Anglas -Date: Tue Mar 4 02:48:25 2014 +0100 - - More decls/code separation. More spacing too. - -commit 41dc897f6dcf7b0be0832f95d624ef91b68f7edf -Author: Jérémie Courrèges-Anglas -Date: Tue Mar 4 02:47:13 2014 +0100 - - Use get_homedir anywhere we can. - -commit c51dd419f9d40facf516558510704891c0cf66b6 -Author: Jérémie Courrèges-Anglas -Date: Tue Mar 4 02:44:15 2014 +0100 - - get_homedir(), checks HOME and the password database - - * ensures that the resulting home directory isn't the empty string - (else returns NULL) - -commit f010d26cbad242f2a98c2d67e5100bdf9387addb -Author: Jérémie Courrèges-Anglas -Date: Mon Mar 3 21:37:17 2014 +0100 - - Refine error messages in cmd_fdump. - -commit aec1e90984d3a3bdebdeeac790b4a664781f0929 -Author: Jérémie Courrèges-Anglas -Date: Mon Mar 3 21:36:38 2014 +0100 - - Add error checking to set_padding and set_historysize. - -commit 9d4e28028437349eddf6171df29863d9499efdb8 -Author: Jérémie Courrèges-Anglas -Date: Mon Mar 3 21:35:49 2014 +0100 - - Add error checking for various boolean (0|1) settings. - -commit 5fdd6dbcf939806b6102c027d0b41c5efea07a11 -Author: Jérémie Courrèges-Anglas -Date: Mon Mar 3 21:34:44 2014 +0100 - - Correct error message in set_barinpadding. - -commit ca8d94d249452ccc16f506aa70983ea0bd945c5b -Author: Jérémie Courrèges-Anglas -Date: Mon Mar 3 21:29:52 2014 +0100 - - Factorize space for invalid negative args messages in various settings. - -commit 52e120f5533c93b0874cefd52b60bf65d6a640b9 -Author: Jérémie Courrèges-Anglas -Date: Mon Mar 3 21:25:09 2014 +0100 - - Make read_number more strict, returning errors. - - * use strtol, and warn about overflow or invalid input. - -commit 0dd5c323fae7881577963ce77012e317db19af88 -Author: Jérémie Courrèges-Anglas -Date: Mon Mar 3 20:52:03 2014 +0100 - - In read_frame, don't silently ignore invalid/unknown frame selectors. - -commit c87f7c334f4fef3279d7425a085f8279cd487f88 -Author: Jérémie Courrèges-Anglas -Date: Mon Mar 3 20:43:53 2014 +0100 - - Rename (again) string_to_number to string_to_positive_number - - * where it is used, only (small) positive numbers make sense. - * While here use strtol instead of manually parsing the string, - and be careful about validation. (Still) return -1 to indicate failure. - -commit 7474a2c1f783304ff6d9838ba393fae103019eb1 -Author: Jérémie Courrèges-Anglas -Date: Mon Mar 3 15:15:31 2014 +0100 - - Amend find_group: first match by number, then by name. - - * this is consistent with cmd_select and read_window. If one has a - keybinding for "gselect 0" and then happens to have a group named "0", - "gselect 0" should keep the same behavior: lead to group numbered 0. - - Discussed with |cos| who proposed the recent "search groups for exact name - match first". - -commit e200c0efde7c6da7cd3357dd4c322a5dd6846518 -Author: Jérémie Courrèges-Anglas -Date: Mon Mar 3 14:45:39 2014 +0100 - - Search windows names for exact match then for fuzzy match - - * Contrary to the recent find_group change, windows are still searched - by number first. This is inconsistent and a choice has to be made. - -commit 838d28ab5d5a3c9177e43e66df088f70cc243303 -Author: Jérémie Courrèges-Anglas -Date: Mon Mar 3 14:37:36 2014 +0100 - - Fix cmd_getsel when there is no X selection - - * instead of feeding stdio a NULL string and invoking undefined - behavior, return a failure - -commit 3aab77ce8a8b884d0575ba0f66398b0303936774 -Author: Jérémie Courrèges-Anglas -Date: Mon Mar 3 14:33:53 2014 +0100 - - In set_winname compare the full string, including the final NUL. - - * detects erroneous inputs such as "titlefoo" instead of "title" - -commit e8669d9f3c09101b81ad1d6e01f4b3e45bc1a33c -Author: Jérémie Courrèges-Anglas -Date: Mon Mar 3 14:22:28 2014 +0100 - - "deffoo..." -> "set foo..." in the error messages. - - * "deffoo"-style names are only compat aliases these days. - -commit c7bc35e610b165f49201537ca4d2425b46bd31bb -Author: Jérémie Courrèges-Anglas -Date: Mon Mar 3 10:33:48 2014 +0100 - - Better, faster, prettier groups_find_by_group_name - - * there are really two operation modes that could even be put into separate - functions. So disentangle the logic and put the operation mode check - outside of the loop parsing the groups list. - -commit 1e9ec347b28a884f6fee8f1f42c6d5360546dd08 -Author: Jérémie Courrèges-Anglas -Date: Mon Mar 3 10:28:53 2014 +0100 - - Rename string_to_window_number to string_to_number. - - * The previous name didn't make sense since it was also used for group - numbers. - * This function should probably make more checks or be deleted. - -commit ad7f295f0c91b146a8909263e223690314c9b052 -Author: Jérémie Courrèges-Anglas -Date: Mon Mar 3 10:27:24 2014 +0100 - - Fix a typo in a comment. - -commit 15c904d6589a731773e4b765a91ac481d92e142c -Author: Jérémie Courrèges-Anglas -Date: Mon Mar 3 03:46:58 2014 +0100 - - Silence warning in previous commit. - -commit 4c2a7e2167292e3aa40398f0e31b04af93853fc5 -Author: cos -Date: Wed Jun 5 21:36:29 2013 +0200 - - Allow exact matching with gselect. - - When having two groups where the second one's name partially matches the name - of the first one, it is hard to gselect the second one. Similarly it is not - possible to select groups with fully numerical names. - - e.g. - - If having the group list: - - 0-default - 1*other - 2-de - 3-0 - - The user expactation when typing ":gselect de" or ":gselect 0" would likely be - to select group number 2 & group number 3 respectively. - - This commit modifies the behaviour of gselect, to primarily select the group - with an exactly matching name if possible, before trying numerical or partial - matches. - -commit 3cee18b208f1c8e3147b13148130ba12a7dcf6e2 -Author: Jérémie Courrèges-Anglas -Date: Thu Feb 20 14:04:58 2014 +0100 - - Fall back to ioctl(TIOCNOTTY) to detach from the controlling terminal. - - * As with setpgid, only do this if setsid fails or is absent. - -commit e88fc334835a4669d1dd27f7156ceb720a3eafb0 -Author: Jérémie Courrèges-Anglas -Date: Thu Feb 20 13:59:35 2014 +0100 - - Only call setpgid when setsid fails or is absent. - -commit 93b11cab322a5543a5f748bc4f70246abe5dace6 -Author: Jérémie Courrèges-Anglas -Date: Thu Feb 20 13:40:36 2014 +0100 - - Detect pwd.h and getpwuid. - -commit 4e6dcf3e37e9aba48ab80f4db3606bcdb46d3032 -Author: Jérémie Courrèges-Anglas -Date: Thu Feb 20 12:04:30 2014 +0100 - - If HOME is not set in the env., fallback to the passwd entry. - - * No attempt to detect pwd.h / getpwuid, not sure if needed. - -commit 3339bbbf9ee58d4562ed008ce45c5af7fbe222c9 -Author: Jérémie Courrèges-Anglas -Date: Thu Feb 20 12:01:52 2014 +0100 - - Mark the X socket as to be closed on exec. - - * Avoids leaking a descriptor, and potential problems described in the - comp.windows.x FAQ. - -commit f5fc5561be15f1b353a29e99679783878ed7503f -Author: Jérémie Courrèges-Anglas -Date: Thu Feb 20 11:56:46 2014 +0100 - - Change set_close_on_exec to take a file descriptor. - - * Since it's easier to get a fd from a FILE * rather than the other way - around. - -commit 15a8eaef00219421e4b9103ef974bc9ada2d0bca -Author: Jérémie Courrèges-Anglas -Date: Thu Feb 20 02:27:42 2014 +0100 - - Kill getsid(2) check in get_child_info. - - * Purpose not understood, usage can't be right on OSes where getsid - fails with EPERM if ratpoison and the argument pid are not in the - session; guess what, ratpoison calls setsid(2) in spawn()... - -commit 13d5a48507a4aa161ea1353e0e6913719c6d57cc -Author: Jérémie Courrèges-Anglas -Date: Thu Feb 20 02:20:29 2014 +0100 - - Kill noisy local variable. - -commit b4dd29b6c9881f80e02c5f4cf11a1bc8a8ee6d92 -Author: Jérémie Courrèges-Anglas -Date: Thu Feb 20 02:16:15 2014 +0100 - - Amend / kill weak comments. - -commit 387a4b85b1414336e69d3dda35b18e652e3990a2 -Author: Jérémie Courrèges-Anglas -Date: Thu Feb 20 02:13:54 2014 +0100 - - Simplify using sbuf_free_struct. - -commit 7e51d7eb7799cb3d5c4c2458725d84a7318ba293 -Author: Jérémie Courrèges-Anglas -Date: Thu Feb 20 02:12:23 2014 +0100 - - Stop using XKeycodeToKeysym (deprecated). - - * Use XkbKeycodeToKeysym instead. Not sure if this is a good change, - but publish it at least so that people can test and report. - -commit b6543c169cc3dd1b0f7263bd3d70f70c7d67d1bb -Author: Jérémie Courrèges-Anglas -Date: Thu Feb 20 02:07:45 2014 +0100 - - Make some members of struct rp_input_line size_t. - -commit 59f798c7c52247c7b3f565f96639d1af34ac70b5 -Author: Jérémie Courrèges-Anglas -Date: Thu Feb 20 02:02:02 2014 +0100 - - Test for __builtin_prefetch, not for __GNUC__. - - * Fixes build with pcc. - -commit 4bdb7748383f6cc59c397fdce05192e59571de5f -Author: Jérémie Courrèges-Anglas -Date: Thu Feb 20 01:55:58 2014 +0100 - - Fix formatting warning with groff(1). - - * groff interprets "%T" even when double-quoted. Use \&%T instead. - -commit 571fedb62290ec6fc059830efc6ffaaff337e3d2 -Author: Jérémie Courrèges-Anglas -Date: Thu Feb 20 01:20:05 2014 +0100 - - Replace man(7) manpage with a mdoc(7)-formatted one. - - * The former manpage needed Groff to be properly formatted, this is a - dependancy I want to remove. Support for systems where neither groff - nor mandoc are available is achieved by generating a man(7) manpage, - which will be shipped in the tarballs. - * The mdoc(7) language provides semantic annotations for better - documentation of Unix utilities, contrary to man(7) which provides - mere presentation markup. - * The build system now encodes paths in the manpage according to the - settings passed to ./configure. - - Note that some markup used may not be perfectly appropriate. Comments - about this matter, and questions from distro maintainers using manpage - patches are welcome. - - Selected reading: - - http://mdocml.bsd.lv general information about mdoc(7) - - http://mdocml.bsd.lv/mdoc.7.html mdoc(7) macros reference - - http://manpages.bsd.lv/ mdoc(7) tutorial - -commit 9a65f65f5ed3be2eb1deefa97e797ee64137ba50 -Author: Jérémie Courrèges-Anglas -Date: Thu Feb 20 00:42:19 2014 +0100 - - Fix typos and wrap line. - -commit c9ffdd59b636bf68acf34bd7fc3f4f9e26862d96 -Author: Jérémie Courrèges-Anglas -Date: Thu Feb 20 00:36:40 2014 +0100 - - Fit line in 80 chars after last commit. - -commit 77437e18e87bfd66ed7b492c66921e7781971caa -Author: Vasil Zlatanov -Date: Tue Feb 11 21:43:53 2014 +0100 - - Add documentation of the rpwsm$i and rpwsm{n,p} aliases in rpws. - -commit 4cdcce6a744376cebbba5aa016d9309248e9102c -Author: Vasil Zlatanov -Date: Tue Feb 11 21:40:32 2014 +0100 - - Add the "current" option to rpws to print the current workspace. - -commit f17d025b1af7dd31cd12768a0fefa611b760a60b -Author: Jérémie Courrèges-Anglas -Date: Wed Jan 15 17:05:56 2014 +0100 - - Casing. - -commit be181e8f00cee0d0a65ec6ada3ed689d88b6d098 -Author: Jérémie Courrèges-Anglas -Date: Wed Jan 15 17:05:43 2014 +0100 - - Fix double "the". - -commit e56b2ca2ee0a936c7b23b830ae334f129163893c -Author: Jérémie Courrèges-Anglas -Date: Mon Jan 6 00:40:34 2014 +0100 - - Revert b470085. - - * Wrong usage of pointers. Those two helper functions are supposed to - update frame parameters passed as pointers, but this does not work. - Assigning to a pointer merely changes its local value. - * Additionally, forgotten assignment to "done" in - find_non_dedicated_frame(), bug not visible in non-xinerama setups. - -commit a5ee817f2b81c98266c87f29171b82472fae5bfa -Author: Jérémie Courrèges-Anglas -Date: Sun Jan 5 17:46:34 2014 +0100 - - Kill code #if 0'ed since 2001. - -commit a26ca7a0560f17513217b1c1190949a6c0cbd8f5 -Author: Jérémie Courrèges-Anglas -Date: Sat Jan 4 00:47:12 2014 +0100 - - Kill init_globals(). - - * selection has static storage and is thus correctly initialized. - -commit 76e8b5988a3ae13d80bd34ff4a00766b724075b6 -Author: Jérémie Courrèges-Anglas -Date: Sat Jan 4 00:18:55 2014 +0100 - - Ansify read_any_key(). - -commit eb4d8278e5828217bcc5b8045147544c62c28372 -Author: Jérémie Courrèges-Anglas -Date: Fri Jan 3 23:28:19 2014 +0100 - - Make our fallback getline more compliant. - - * don't use xmalloc/xrealloc, but return -1 in case of memory allocation - failure - * modify the parameters only when allocation succeeds - -commit 3efe2d8254fe4cd5aecb56eb0f0861bd043b6782 -Author: Jérémie Courrèges-Anglas -Date: Fri Jan 3 23:12:19 2014 +0100 - - Don't mix code and decls. - -commit 496289f26ac6a1833c1d649665456c61277b03ee -Author: Jérémie Courrèges-Anglas -Date: Fri Jan 3 22:51:29 2014 +0100 - - strdup -> xstrdup - -commit c2aa1264fc52f6df08868986ed81b2d199059f7c -Author: Jérémie Courrèges-Anglas -Date: Fri Jan 3 22:47:38 2014 +0100 - - malloc -> xmalloc - -commit 993dde6cfa315ceaa29dfd521f9fddb27a80e66a -Author: Jérémie Courrèges-Anglas -Date: Fri Jan 3 22:42:10 2014 +0100 - - One realloc -> xrealloc. - -commit e5b64c4f193eb01c81b93ec6e27d6d6bddbfd78b -Author: Jérémie Courrèges-Anglas -Date: Fri Jan 3 22:40:46 2014 +0100 - - Get rid of useless casts of xmalloc/realloc return value. - -commit b8d5ca85d9a6e6f42b8dbd6d47cab7bbcffeea90 -Author: Jérémie Courrèges-Anglas -Date: Fri Jan 3 22:18:51 2014 +0100 - - if (ptr) free(ptr) is not a good idiom. - -commit 268732324fd37d9b001694a9206a66cce6681c20 -Author: Jérémie Courrèges-Anglas -Date: Fri Jan 3 11:16:50 2014 +0100 - - Check for alternative names of typeof(). - -commit dbf308149ceb416ea58719917bcd6e1ceacb80a5 -Author: Jérémie Courrèges-Anglas -Date: Fri Jan 3 11:15:39 2014 +0100 - - Kill useless X_LDFLAGS and reorder variables. - -commit d02442c0d7de4748403d8b4af764b36ac2e9e7a3 -Author: Jérémie Courrèges-Anglas -Date: Fri Jan 3 11:10:49 2014 +0100 - - Open $sysconfdir/ratpoisonrc, don't hardcode /etc. - -commit e0dcdd3634c63dd6bf4ade9f07ccef90193d17b8 -Author: Jérémie Courrèges-Anglas -Date: Fri Jan 3 02:20:58 2014 +0100 - - Be more verbose about failures in read_startup_files(). - - * If we fail with errno set to something != ENOENT then an error message - should probably be printed. - -commit e3e4dd2146df1d24887de3106c2b3cc4b44a5fb1 -Author: Jérémie Courrèges-Anglas -Date: Fri Jan 3 02:13:29 2014 +0100 - - Better error checking for -f configfile. - - * make read_startup_files() return whether it succeeded. A failure is - when the user passed a specific config file, but we couldn't load it. - * in main() exit if read_startup_files() failed. - -commit fcc722a02eecc697ad8c7058853a40aeccab2a1a -Author: Jérémie Courrèges-Anglas -Date: Fri Jan 3 01:53:51 2014 +0100 - - Report bugs to PACKAGE_BUGREPORT. - -commit fa69587598d704de171736f1ba1fb53a9975a3ff -Author: Jérémie Courrèges-Anglas -Date: Fri Jan 3 01:53:13 2014 +0100 - - In str_comp() make len and i size_t. - -commit 7125d41a6703e1bb3e4ae012c8ce04a8bad30de8 -Author: Jérémie Courrèges-Anglas -Date: Fri Jan 3 01:52:36 2014 +0100 - - Typo in comment. - -commit 1e7446e22af32d48f8db1d3e0fc067ef724282fa -Author: Jérémie Courrèges-Anglas -Date: Fri Jan 3 01:52:03 2014 +0100 - - Tiny xmalloc/realloc/strdup cleanup. - - * kill "register" - * compare pointers against NULL - * separate declarations and code - -commit cde36665e2e5fbd1d5be70e5ca388a5d2d2365ef -Author: Jérémie Courrèges-Anglas -Date: Fri Jan 3 01:45:21 2014 +0100 - - In parse_keydesc() strdup the key desc only if needed. - -commit 0441e8cb9332fb3193c3e025eeaab2f559f83380 -Author: Jérémie Courrèges-Anglas -Date: Fri Jan 3 00:40:42 2014 +0100 - - messages.h is included from ratpoison.h. - -commit 5cda1659f30b86cc37e20719ce6f01aba9d2a834 -Author: Jérémie Courrèges-Anglas -Date: Fri Jan 3 00:39:05 2014 +0100 - - Non-compliant enum forward declaration. - -commit 888e01e95c8674857dd3bacf95f3d99f252fb540 -Author: Jérémie Courrèges-Anglas -Date: Fri Jan 3 00:37:37 2014 +0100 - - Remove some fairly obvious comments. - -commit 2eeac71c8f4af60bf760ec6f0ad228c1cb4c0b4b -Author: Jérémie Courrèges-Anglas -Date: Fri Jan 3 00:25:56 2014 +0100 - - FD_CLOEXEC is only used in set_close_on_exec(). - -commit eb524d8b80a72c04c9e7381b6c8bad6e4f7e3b52 -Author: Jérémie Courrèges-Anglas -Date: Fri Jan 3 00:23:32 2014 +0100 - - We need config.h, no need for ifdef's. - -commit 9dbe0289e4c3cbec95334a88d5c0fc04cda076fd -Author: Rob Paisley -Date: Wed Dec 4 09:45:52 2013 -0500 - - Added contrib/ratdate.sh and updated Makefile.am - -commit 40415dff20c0e4456c3791a75e118fe537e1d44a -Author: Jérémie Courrèges-Anglas -Date: Tue Dec 3 11:44:14 2013 +0100 - - Bogus cmdret_free call. - -commit 4a6b9a22aa0c33fed4a3356b4399d5d58173e548 -Author: Jérémie Courrèges-Anglas -Date: Tue Nov 26 11:41:19 2013 +0100 - - Prettify --with-xterm handling. - -commit c7b673ef8bebc39d336667a55bd5f36b9b14cbf7 -Author: Jérémie Courrèges-Anglas -Date: Tue Nov 26 11:35:50 2013 +0100 - - Prettify --enable-debug handling. - -commit d246050de440fae1a7b3eae50c18eca9d41cdda5 -Author: Jérémie Courrèges-Anglas -Date: Tue Nov 26 10:18:05 2013 +0100 - - If asked for, use the Electric Fence library. - -commit e7b0516410b46994e419c99caf45e5ee831cc031 -Author: Jérémie Courrèges-Anglas -Date: Tue Nov 26 09:59:13 2013 +0100 - - Assume we have stdarg.h and unistd.h. - -commit c8a37d523e0cea3b0ca4ef790dade4eb4b95d1ad -Author: Jérémie Courrèges-Anglas -Date: Tue Nov 26 09:28:02 2013 +0100 - - Don't check for usleep, useless since Dec. 2004 - - * see 9cb1a3d. If your system doesn't provide usleep or ratpoison - doesn't manage to find it, please report back. - -commit b4d756008ca98e454904c64e151ae08e4e0f733f -Author: Jérémie Courrèges-Anglas -Date: Tue Nov 26 09:04:01 2013 +0100 - - Don't check for getopt(3), we don't use it. - -commit 8c67c58fa4b9b80d95c277ae5d4c6b53359352c7 -Author: Jérémie Courrèges-Anglas -Date: Fri Nov 22 10:52:29 2013 +0100 - - Document the titlechanged hook. - -commit 3e9e50cee4cb233539525a267e945381c3b97af5 -Author: Jérémie Courrèges-Anglas -Date: Fri Nov 22 00:26:45 2013 +0100 - - Revert unintended changes in 1ecaccd77c18036d8ff4c137487aa8c5a04d2b36 - - I'll be more careful when using 'c' in Magit. ;) - -commit 5bc22db14b6ffd4cb39722a415d4cd176bb7fc0d -Author: Jérémie Courrèges-Anglas -Date: Fri Nov 22 00:10:46 2013 +0100 - - Cast char arguments to to*/is* ctype calls to unsigned char - - * those functions expect an int whose value is between -1 and 255. - Cast to unsigned char so that sign extension when promoting to int - doesn't bite us. - -commit 407dc8b5e6a4db430381000256c87ba313bbed5e -Author: Jérémie Courrèges-Anglas -Date: Thu Nov 21 23:35:15 2013 +0100 - - Don't assume getsid succeeds, fixes %p "glitches" - - * on eg. OpenBSD you get -1 with errno set to EPERM if you call getsid - on a pid no in the same session group as you. This makes the session - id check much less useful, and exhibits glitches with %p in winfmt. - For now, just bail out if getsid fails... - -commit 1ecaccd77c18036d8ff4c137487aa8c5a04d2b36 -Author: Jérémie Courrèges-Anglas -Date: Wed Nov 20 18:24:19 2013 +0100 - - Cleanup cmd_meta - - * plug memory leak - * consistent indentation - * minimize variables scope - * kill commented code - -commit 782e5d0f60412682ca5facde2d566c02bd176902 -Author: Jérémie Courrèges-Anglas -Date: Wed Nov 20 16:51:46 2013 +0100 - - In cmd_meta, don't pass stack garbage to XSendEvent. - - * zero out the whole struct and explicitely assign CurrentTime (OL) to - ev.xkey.time. This should please Firefox when using C-t t. - -commit 2335261cdf8c574331b676c74e9d5299faa82624 -Author: Jérémie Courrèges-Anglas -Date: Sun Nov 17 18:38:27 2013 +0100 - - Use sbuf_chop in fdump() to trim trailing comma. - - * those commas shouldn't have been there in the first place. If your - scripts rely on this, watch out! - * code simplified and variables better named, while here. - -commit 797796e2d9d4c708668ed05359695c53f8448386 -Author: Jérémie Courrèges-Anglas -Date: Sun Nov 17 18:33:14 2013 +0100 - - Introduce sbuf_chop() - -commit 5304bcb44ff71ddfa02af3bff4d05812b4fc4be3 -Author: Jérémie Courrèges-Anglas -Date: Sun Nov 17 17:54:07 2013 +0100 - - Revert "Added contrib/ratdate.sh and Makefile for building" - - This reverts commit 2e7e99fc780c4099861039ebaab0fb8629d7601b. - - Problems: - - no copyright statement - - CC BY-ND considered undesirable by myself. - -commit 2e7e99fc780c4099861039ebaab0fb8629d7601b -Author: Rob Paisley -Date: Sat Nov 16 19:38:28 2013 -0500 - - Added contrib/ratdate.sh and Makefile for building - - ratdate.sh displays the date with a calendar inditacting today's date. Designed to replace - ratpoison's default :time command. - Suggest rebinding as follows: bind a exec exec ratdate.sh - -commit df842f317f02414f28b8c81394446fb273301eec -Author: Jérémie Courrèges-Anglas -Date: Thu Aug 8 13:03:56 2013 +0200 - - Plug leak in cmd_sfrestore. - - Noticed by Repolho , who came with a different - fix. - -commit be52c867c96763cca28fed963efadd8fa0d37889 -Author: Jérémie Courrèges-Anglas -Date: Thu Aug 8 03:04:39 2013 +0200 - - Cleanup cmd_sfdump. - - Better variable names, more readable formatting. - Use a fixed buffer for the screen number appended to each frameset. - -commit bb0b20dcce7493b583f3774606527ca6776e392c -Author: Jérémie Courrèges-Anglas -Date: Thu Aug 8 02:50:00 2013 +0200 - - Consistent formatting in cmd_sfrestore. - -commit 9705efbde06e6b4d7758b2a7a3ff6373690e69fc -Author: Jérémie Courrèges-Anglas -Date: Thu Aug 8 02:45:55 2013 +0200 - - Remove useless/untrue comments in cmd_sfrestore. - -commit 2cf4738caa8970e47518b132983f3b447b141e3b -Author: Jérémie Courrèges-Anglas -Date: Thu Aug 8 02:43:06 2013 +0200 - - Better variable names in cmd_sfrestore - -commit d21b9fb48d959c4cd8f6041ef701e0236b4ec39b -Author: Jérémie Courrèges-Anglas -Date: Thu Aug 8 02:26:57 2013 +0200 - - In cmd_sfrestore don't pass screen number to frestore. - - Noticed by Repolho , who came with a similar - fix. - -commit 7ae3b6544091363334142df775708e1ea88bc9bc -Author: Jérémie Courrèges-Anglas -Date: Thu Aug 8 02:22:12 2013 +0200 - - Free buffer used to read history file. - - From Repolho , thanks! - -commit dedcb4677b67737a781c300d06de1022201f709b -Author: Jérémie Courrèges-Anglas -Date: Thu Aug 8 02:20:40 2013 +0200 - - Do not leak mem if hook is already present. - - From Repolho , thanks! - -commit b02d855fbdab5849db59f0edd9cc5e6038d9aae2 -Author: Jérémie Courrèges-Anglas -Date: Tue Jun 25 20:05:59 2013 +0200 - - No path hardcoding when generating bindings. - -commit bbcbb9a9c00cb4c0ad277282f5fa4e32e347893e -Author: Jérémie Courrèges-Anglas -Date: Wed Jun 5 01:08:54 2013 +0200 - - contrib/sloppy.c: ensure $RATPOISON is set - -commit 7a155e8fad801b99125a654f74a6125249da8104 -Author: Jérémie Courrèges-Anglas -Date: Wed Jun 5 00:59:46 2013 +0200 - - contrib/sloppy.c: no need for grep(1) - -commit 1142b82fe4dec980846a620409bb462f765ea74f -Author: Jérémie Courrèges-Anglas -Date: Wed Jun 5 00:49:19 2013 +0200 - - contrib/{sloppy,unrat}.c: make this code actually readable... - -commit 89df18eef0e12cc308e69adee192856bdc9e7098 -Author: Jérémie Courrèges-Anglas -Date: Wed Jun 5 00:20:59 2013 +0200 - - contrib/{unrat,sloppy}.c: perror(3) makes no sense here - -commit 3735257a6752491cdb1628225e028e15806466c8 -Author: Jérémie Courrèges-Anglas -Date: Wed Jun 5 00:15:46 2013 +0200 - - contrib/{unrat,sloppy}.c: main() takes void - -commit f42b1d5fd24ce9191418f660a3156614c2207101 -Author: Jérémie Courrèges-Anglas -Date: Wed Jun 5 00:10:03 2013 +0200 - - contrib/{unrat,sloppy}.c: ansify defaulthandler() - -commit 0e01bfb38f88915dc07baceff6dec588072af731 -Author: Jérémie Courrèges-Anglas -Date: Wed Jun 5 00:08:28 2013 +0200 - - contrib/sloppy.c: include unistd.h for fork(2) - -commit b9d5b0e90b7d48b76ca8ee41bdb62e791d094ca6 -Author: Jérémie Courrèges-Anglas -Date: Tue Jun 4 23:50:10 2013 +0200 - - contrib/genrpbindings: correct CL {pre,post}amble - -commit 785913c8cc9fb24d07f25914e253bab9f69e2f9f -Author: Jérémie Courrèges-Anglas -Date: Tue Jun 4 23:49:22 2013 +0200 - - contrib/genrpbindings: use $RATPOISON at runtime - - Note: the Common-Lisp bindings now require the asdf-utils package - -commit 557fac6325af75b1b101f4a9333943c5a565f34c -Author: Jérémie Courrèges-Anglas -Date: Tue Jun 4 21:37:23 2013 +0200 - - .gitignore for contrib/ - -commit 13173aec710f2c80c85040025f5608cf97cd7f67 -Author: Jérémie Courrèges-Anglas -Date: Tue Jun 4 21:22:04 2013 +0200 - - silence compilation warning in src/manage.c - -commit 06cba7be45f870664e4438ad27465ecfa6509092 -Author: Jérémie Courrèges-Anglas -Date: Tue Jun 4 20:44:56 2013 +0200 - - contrib/sloppy.c: execl(3) wants a NULL pointer - - from Ellington Santos, thanks! - -commit 9c6d83f07aae8ca9005e4764c7ee2eebc72cb00a -Author: Jérémie Courrèges-Anglas -Date: Tue Jun 4 18:21:16 2013 +0200 - - fix logic in strtok_ws - - bug reported by Ellington Santos on the mailing-list, thanks! - -commit 7f384e37279dcab8dcad0149293483a23aa7aec4 -Merge: 164d3dc d3793db -Author: Jérémie Courrèges-Anglas -Date: Mon May 27 16:27:35 2013 +0200 - - Merge "gnumber" feature from |cos|'s repo - -commit 164d3dc35fc82200086c5cecd6b3d2fab236f999 -Author: cos -Date: Sun May 26 22:29:04 2013 +0200 - - Check for and use $RATPOISON during runtime when possible. - -commit d3793dba2a57d2512ca0a7987b3385986ec2c9ea -Author: cos -Date: Fri May 24 18:55:31 2013 +0200 - - Adapt group bar to be updated on group number or name change. - -commit 472a958a2ce149313239fb5eb4244f7607887b31 -Author: cos -Date: Sun May 19 15:37:44 2013 +0200 - - Remove redundant check for NULL. - - Since add_command() for cmd_gnumber is forcing one (or two) numerical argument, - command() will never allow calling the cmd_gnumber() with arg[0] set to NULL. - -commit e31bb04702f6825eb9a3cd491a8b7b54c9bc8438 -Author: cos -Date: Sat May 18 10:32:04 2013 +0200 - - Added user documentation for gnumber command. - -commit 14cce1cb74c2924e76fdee467ef06b5775c76421 -Author: cos -Date: Wed May 15 23:26:11 2013 +0200 - - Add initial cmd_gnumber implementation. - -commit 74e7f50fedca5052bebbaffd4ef2e9483686c62a -Author: cos -Date: Wed May 15 23:15:29 2013 +0200 - - Make group_add_new_group() sort groups numerically. - -commit fc8e95ed136758206f09c8041195821e3c4193a1 -Author: Jérémie Courrèges-Anglas -Date: Sun May 26 18:47:20 2013 +0200 - - draw_string: only call rp_text_width when needed - -commit 57ab5caed726ee6bacc5c5807345c0cfaa1ba25f -Author: Jérémie Courrèges-Anglas -Date: Sun May 26 18:29:47 2013 +0200 - - draw_string: more cleanup and clarifications - - rename "update" to "print_reason" and use #defined flags instead - of magic numbers - -commit dbe13fafc3fab58e4e9d249e46711d600345a6fd -Author: Jérémie Courrèges-Anglas -Date: Sun May 26 18:29:05 2013 +0200 - - draw_string: document variables - -commit aaa86e3d7824bf6b255a5f45ce9bae2a8de26e59 -Author: Jérémie Courrèges-Anglas -Date: Sun May 26 18:27:40 2013 +0200 - - feed draw_partial_string with a string and a length - - makes it easier to call along with rp_text_width - -commit a1d8a495d81d2a78fec72456051ebb75a7c4d238 -Author: Jérémie Courrèges-Anglas -Date: Sun May 26 18:26:25 2013 +0200 - - draw_string: indentation - -commit f8f62656145ecf3e4f09a6431cfd9a4a37a5bbc8 -Author: Jérémie Courrèges-Anglas -Date: Sun May 26 18:25:41 2013 +0200 - - fix draw_string when winliststyle is "row" - - bug introduced in 14beabe - -commit 2c70b2880c9da9167ff673eedcd89c9ebf411932 -Author: Jérémie Courrèges-Anglas -Date: Sun May 26 18:23:35 2013 +0200 - - sync comment with reality - -commit 5ffd64be5b962e8bd8923f31e3bb14a9c8fd228c -Author: cos -Date: Sun Dec 16 19:31:22 2012 +0100 - - Update my contact info. - - The email address listed for me have not existed for a few years. - -commit 5201477cbcb276bd13ec07e3d57b8c6cefe8201a -Author: Jérémie Courrèges-Anglas -Date: Sat Apr 27 01:28:16 2013 +0200 - - avoid get_wmname spamming - - This should be a PRINT_DEBUG, not a PRINT_ERROR. - -commit 01b4d568b99fc48fdab0ec628a550dfbeaa7b021 -Author: Jérémie Courrèges-Anglas -Date: Mon Apr 15 01:21:04 2013 +0200 - - Support UTF-8 in the input bar - - * introduce RP_IS_UTF8_{CHAR,CONT,START} macros. Those yield non-zero - only if the locale is UTF-8. - * use those macros in editor.c to properly handle UTF-8 multibyte - characters. - * use them also in input.c:update_input_window, to draw the cursor - - Reviewing and comments are welcome. - Patches for generic support of multibyte encodings are welcome too. - UTF-8 was chosen because of its processing simplicity and its wide use, - not because of any political opinion or religious belief. ;) - -commit 5a6fe0574c77342f29370219fb9010b72d6d3a00 -Author: Jérémie Courrèges-Anglas -Date: Sat Apr 13 04:36:23 2013 +0200 - - read_rc_file: use getline(3) instead of emulating it - -commit b202c4e9385ec4d9a9f67a006ee363a2618051d9 -Author: Jérémie Courrèges-Anglas -Date: Sat Apr 13 12:43:23 2013 +0200 - - Make our fallback getline implementation re-usable - -commit fef86ad797cbb240c05dd1e5930a7c82a724806f -Author: Jérémie Courrèges-Anglas -Date: Sat Apr 13 04:32:55 2013 +0200 - - get_more_input: use a proper while loop and a switch statement - -commit 0eaf3cce3c3ef70d161928f836594bd8f741b3a0 -Author: Jérémie Courrèges-Anglas -Date: Sat Apr 13 04:31:17 2013 +0200 - - get_more_input: remove useless variable - -commit 36c099119b8a4df16bdd2d49362613955470de31 -Author: Jérémie Courrèges-Anglas -Date: Wed Apr 10 16:39:22 2013 +0200 - - destroy_window: frame could be NULL - - * don't dereference it if NULL, as in unmap_notify - -commit 5b323d2cd5fc711229f9acef46b1b4f9a9c2378a -Author: Jérémie Courrèges-Anglas -Date: Wed Apr 10 16:31:37 2013 +0200 - - free_bar: make this function reusable - - * set last_msg to NULL after freeing it - * no need to test for last_msg being NULL before freeing it - (likewise in update_last_message) - -commit a31ee19ed7861dae004451df2c1cea84c45092ed -Author: Jérémie Courrèges-Anglas -Date: Wed Apr 10 16:23:15 2013 +0200 - - main: in case XOpenDisplay fails, use exit not return - - * this is consistent with surrounding code, and helps code analyzers - not to barf about possible memory leaks - -commit 8cf27972c87572e9b256e00a226fdaf275a1a43e -Author: Jérémie Courrèges-Anglas -Date: Wed Apr 10 16:09:08 2013 +0200 - - strtok_ws: account for erroneous usage - - * if s and last are both NULL then we'll get a fatal error; - instead of waiting for the segfault, display an error message - and call abort() - -commit 42a9fabacefc5595cc37448e6493fa51f1b75bf5 -Author: Jérémie Courrèges-Anglas -Date: Wed Apr 10 16:02:40 2013 +0200 - - main: free display and alt_rcfile - - * otherwise specifying -d or -f more than once would lead to - a memory leak - -commit 43d6810723ae64f597c17679357ae4a34f8498d1 -Author: Jérémie Courrèges-Anglas -Date: Wed Apr 10 15:38:09 2013 +0200 - - history_add: make 2nd parameter const - -commit 289b548310a8ade383fe898fcc0ff80686e4de14 -Author: Jérémie Courrèges-Anglas -Date: Wed Apr 10 15:22:06 2013 +0200 - - Get rid of several unused variables - - * cmd_definekey: actually use cmd - * cmd_meta: remove ev1 - * cmd_resize: remove nbytes - * cmd_ratrelwarp: remove s - * draw_string: remove lgv, lgc, mask; lgc wasn't XFreeGC'ed - * get_more_input: remove nbytes - * cleanup_frame: remove last_win - * get_window_list: remove other_window - - Patch from Bernhard R. Link - -commit fcad25a12f5dd358d3d33e928029d3359553855e -Author: Jérémie Courrèges-Anglas -Date: Wed Apr 10 14:42:18 2013 +0200 - - Refactor cmd_prompt - - * use a local variable instead of using ARG_STRING(0) ten times - * minimize scope of local variables - * use a struct sbuf instead of playing with xmalloc and strncpy - * correct indentation - -commit db8be33ae5bc8645342c62cca0a481bc0078d846 -Author: Jérémie Courrèges-Anglas -Date: Wed Apr 10 14:34:09 2013 +0200 - - Refactor cmd_time - - * instead of playing with xmalloc, strlen and strncpy, use xstrdup - to do the copying and strcspn to delete the newline - -commit 9c95991fcefa80ab54e3bc39aa3b66f2b44d05f0 -Author: Jérémie Courrèges-Anglas -Date: Wed Apr 10 08:17:35 2013 +0200 - - cmd_prompt: handle NULL output - - * if the user aborted we receive a NULL pointer; don't attempt to - dereference it, and treat this case as a failure. - - Matches the behaviour of cmd_colon and cmd_select - -commit b512806d40ca771ce9ee74b47e5a828ad6039e7c -Author: Jérémie Courrèges-Anglas -Date: Sun Apr 7 17:12:23 2013 +0200 - - oops, actually bump to 1.4.7-beta - -commit 9e2bf1b60d7e603c6435b1763ab7506e4b5deb0d -Author: Jérémie Courrèges-Anglas -Date: Sun Apr 7 04:47:13 2013 +0200 - - Make git ignore .xz archives and HTML documentation - -commit 5eb7e54012f2b0166008d2710b6354450600c9ca -Author: Jérémie Courrèges-Anglas -Date: Sun Apr 7 04:46:19 2013 +0200 - - Bump to 1.4.7-beta -commit 37fc06213b65b9b8ced68f08697608632be91de0 -Author: Jérémie Courrèges-Anglas -Date: Sun Apr 7 03:23:50 2013 +0200 - - In strtok_ws() use "last", not "pointer" for the static variable - - * since X11/Xdefs.h may define it too. Found by -Wshadow. - - Bonus: "last" carries more meaning. - -commit e0714ec506da0a3647e352cf86094446cb6d2b38 -Author: Jérémie Courrèges-Anglas -Date: Sun Apr 7 03:07:35 2013 +0200 - - Don't use a flexible array member in struct history_item - - * They are a c99 feature, which makes it impossible to build ratpoison - on some platforms. GCC supports zero-sized arrays, more conservative - approaches say to use foo[1], but as brlink says a compiler with - aggressive optimization turned on might play nasty tricks. - Just use a traditional struct. - -commit 340833f5e0c4350ac0c7fc6589a4305014b56ba8 -Author: Jérémie Courrèges-Anglas -Date: Mon Apr 1 13:44:57 2013 +0200 - - a .dir-locals.el file for contributors using Emacs - -commit 9cbe6c982d18fdd0ef12d45ba2cfe6629dd4b361 -Author: Jérémie Courrèges-Anglas -Date: Fri Feb 22 19:46:59 2013 +0100 - - receive_command_result() fixup - - * forgot a break statement when moving things around - * braino in comment: '1' is RET_SUCCESS, '0' is RET_FAILURE - -commit 3e2c03c1fccb811e8e1e32b8f4727988379aba3b -Author: Jérémie Courrèges-Anglas -Date: Fri Feb 22 19:19:47 2013 +0100 - - fixup return values of several commands - - * in cmd_select(), consistently set the return value for all cases we deal - with - * in cmd_unmanage(), don't attempt to use a NULL pointer if the unmanaged - windows list is empty; just report success - * in cmd_kill, only report failure if XKillClient() actually failed - * in command(), remove a useless test: cmd can't be NULL - * in cmd_gravity, don't call current_window() twice - -commit c58386717db86dc7f5e954d2c972c8d606044bb1 -Author: Jérémie Courrèges-Anglas -Date: Fri Feb 22 19:08:11 2013 +0100 - - make ratpoison -c provide a useful exit status - - * properly define the way the wm may give feedback to ratpoison -c; - see communications.c:receive_command_result() - * follow this protocol in events.c:receive_command() - * modify receive_command_result() to return an int (which is the - mirror of the struct cmdret "success" member used on the wm side) - * pass that error status back to main.c; exit with an error status if - any of the commands we sent failed - -commit f42b5f6fcb244d9b5ad159113cd921c7f69d6134 -Author: Jérémie Courrèges-Anglas -Date: Mon Feb 18 12:44:52 2013 +0100 - - silence minor compilation warning in src/manage.c - -commit 1c4335fe092978b42eda6ccbb37854c95fb5f368 -Author: Jérémie Courrèges-Anglas -Date: Thu Feb 14 22:39:10 2013 +0100 - - more correct cmd_help() - - * only print the "Command key: ..." bits if we're dealing with - the root kmap - * don't read (and print) uninitialized data - (foomap->actions[foomap->actions_last] shouldn't be accessed) - - It seems like keymap actions and other things like aliases - use arrays because they were implemented before linkedlist.[ch] - were introduced. Perhaps should we just switch them to more - fool-proof linked lists? - -commit 13812e9f61fa3141619cb0e2fdf0ed41a5e2ec1d -Author: Bernhard R. Link -Date: Wed Feb 13 00:11:43 2013 +0100 - - move xa_string initialisation before first use - - otherwise ratpoison -c no longer works - -commit 32419fdf409ff9aae184385a98341b964768be0c -Author: Bernhard R. Link -Date: Tue Feb 12 21:26:35 2013 +0100 - - readd AM_MAINTAINER_MODE, but enable maintainer mode by default - - Using AM_MAINTAINER_MODE([enable]) means you get the maintainer-specific - parts enabled by default like without AM_MAINTAINER_MODE, while - people still can do --disable-maintainer-mode to avoid any pitfalls. - -commit 01dffe2d3795cf484f706f68f557692c138e45e4 -Author: Jérémie Courrèges-Anglas -Date: Mon Feb 11 22:39:48 2013 +0100 - - get rid of AM_MAINTAINER_MODE - - * this one has bitten me too many times as an end user ; here it annoys me as - a maintainer - version.texi not being installed. bye bye. - - See info "(automake) maintainer-mode". - -commit 1372824130846d099b507f97f20a1fc453710fa1 -Author: Jérémie Courrèges-Anglas -Date: Mon Feb 11 22:38:04 2013 +0100 - - update Shawn's email address in documentation - - * while here, s/EMACS/Emacs/ in the Info manual - -commit 130b4750b433521c77a31d9605a62604a8cd7805 -Author: Jérémie Courrèges-Anglas -Date: Sun Feb 10 00:32:59 2013 +0100 - - texinfo manual update - - * fdl.texi: update to a newer version (not to a newer licence version!) - * ratpoison.texi: update to build printed manuals, get rid of annoying - @node references, and move GFDL to the last section. use automake support - for version.texi, so that manuals don't ship with an outdated version - * .gitignore: match update - -commit ec8683c7dbe6168becec6a4f34dcf0a561cf0781 -Author: Jérémie Courrèges-Anglas -Date: Fri Feb 8 23:41:05 2013 +0100 - - add myself (as current maintainer) to AUTHORS - -commit 2050d15a19d65a692be47956b1caa4ad21125ef3 -Author: Jérémie Courrèges-Anglas -Date: Fri Feb 8 21:37:00 2013 +0100 - - update FAQ url - -commit 1b12727e810929b5978dfe164fb4b1e2b389a6f1 -Author: Jérémie Courrèges-Anglas -Date: Thu Feb 7 02:23:47 2013 +0100 - - remove ratpoison.spec - - * this file is outdated and doesn't help rpm distros - packagers / users, so let's just delete it - - Discussed with Kevin Fenzi (Fedora ratpoison maintainer) - -commit 41707e8dd6804f803944caa42b7c79b66697b945 -Author: Jérémie Courrèges-Anglas -Date: Wed Feb 6 21:26:59 2013 +0100 - - mv configure.in configure.ac - - * rename this file since new versions of automake complain - about the old name - -commit 2685676e118cd63380e6a12ce81ce5d4f0badc0a -Author: Jérémie Courrèges-Anglas -Date: Wed Feb 6 19:03:07 2013 +0100 - - rp_text_width: remove "font" argument - - * (globals.[ch]): remove rp_text_width "font" arg, since its value - is always the global variable defaults.font (non-Xft case). - remove one #ifdef while here - * update rp_text_width() calls to match new signature - -commit 20c5d11a3be2843c808ba84f971ed3fed011e144 -Author: Jérémie Courrèges-Anglas -Date: Wed Feb 6 19:50:53 2013 +0100 - - use utf8-handling Xft functions if we are in an UTF-8 locale - - * (manage.c) in get_wmname(), try to get the (UTF-8 encoded) - _NET_WM_NAME property. Fallback to GetWMName() if unavailable. - Add some debugging bits to see which TEXT encoding clients use - for WM_NAME. - * (globals.c) use Xft*Utf8 functions to compute text width and - draw strings. No regressions with or without Xft, UTF-8 locale - or not. - * assume we can use Xft*Utf8 functions whenever we have Xft, - to reduce the #ifdef dance - - Original patch from Bernhard R. Link - -commit 3725c23fddd8e936a91296f74e3fd6342270d6bb -Author: Jérémie Courrèges-Anglas -Date: Wed Feb 6 19:28:33 2013 +0100 - - make TEXT atoms global variables - - * (events.c) extract xa_compound_text from selection_request(), - make it a global - * introduce xa_string (same as XA_STRING) and rename - utf8_string to xa_utf8_string, for consistency - -commit 5c0abe47a800dca3faf97b7ec608d86fddab25b6 -Author: Jérémie Courrèges-Anglas -Date: Mon Jan 21 02:33:13 2013 +0100 - - introduce defaults.utf8_locale - - * use nl_langinfo() to detect if locale codeset is UTF-8 - -commit 332b260f17547d822567473f6b92ff710cf738a3 -Author: Jérémie Courrèges-Anglas -Date: Mon Jan 21 02:30:14 2013 +0100 - - autotools: introduce AM_LANGINFO_CODESET - - * (m4/codeset.m4) new file (from the gettext package) - * (configure.in) use AM_LANGINFO_CODESET - * (.gitignore) don't ignore m4/codeset.m4 - -commit 25827ea4a0f99d5327781892d6cbea84ef78a07c -Author: Jérémie Courrèges-Anglas -Date: Mon Jan 21 02:23:25 2013 +0100 - - configure.in: get rid of AC_TYPE_SIGNAL - - it has been unused so far, and afaik we don't support pre-ansi - platforms... - -commit 0ef7dc215071c486495bf86e85661f21733f200e -Author: Jérémie Courrèges-Anglas -Date: Mon Jan 21 02:20:55 2013 +0100 - - configure.in: compiler handling - - * no need to explicitely check for gcc, it will be picked - up if available - * prepend to CFLAGS instead of appending - * no need to add -O2 if gcc, autoconf automatically does - that when appropriate - -commit 8376efac671aee91de711d54eeb33d453ca5902e -Author: Jérémie Courrèges-Anglas -Date: Mon Jan 21 02:12:24 2013 +0100 - - configure.in: rename obsolete macros - - * s/AM_CONFIG_HEADER/AC_CONFIG_HEADER - * s/AC_HELP_STRING/AS_HELP_STRING - -commit 1d87464fc86864ae66570cfedb5ac703e93d0cfa -Author: Jérémie Courrèges-Anglas -Date: Mon Jan 21 02:10:14 2013 +0100 - - Makefile.am: strip unused stuff - - * PACKAGE and VERSION are already AC_SUBST'ed - * targets bin-dist and strip-bin-dist don't exist - -commit c3aa7c8bba7794d8856156ac3c361e952847648d -Author: Jérémie Courrèges-Anglas -Date: Mon Jan 21 02:08:18 2013 +0100 - - more up-to-date autotools practices - - * use proper AC_INIT / AM_INIT_AUTOMAKE arguments - * install macros in m4/ - * install junk build files in build-aux/ - * replace hand-rolled autogen.sh by autoreconf -i - * sync .gitignore - -commit 09a464eb213212ac6538bc4bba9d2e391562b100 -Author: Jérémie Courrèges-Anglas -Date: Mon Dec 17 10:03:39 2012 +0100 - - basic contrib/ cleanup - - * (*.pl, rpws) don't hardcode path to Perl but rely on /usr/bin/env - * (allwindows.sh) don't require bash - * (rpshowall.sh) properly handle arguments, use portable shell arithmetic - * (*.sh) use more quotes - * (*.pl, split.sh) use 'ratpoison' if RATPOISON isn't in the environment - (and don't error out) - -commit 70ae853c054dd2b1b6cbf2fcffb678331ae3a031 -Author: Jérémie Courrèges-Anglas -Date: Thu Dec 13 14:27:54 2012 +0100 - - tmpwm fix: SIG_IGN -> SIG_DFL - - for waitpid(SIGCHLD, SIG_IGN) behaves wildly differently across OSes. Fixes - tmpwm hanging after child wm exits on OpenBSD. - -commit a88b2a86adc03916a0859468edf742dbf5140b01 -Author: Jérémie Courrèges-Anglas -Date: Wed Dec 26 05:11:10 2012 +0100 - - environment handling fixes - - * AC_CHECK_FUNCS: +setenv +unsetenv -putenv - (the check for putenv() wasn't used anyway) - * prefer setenv() to putenv() in cmd_setenv() - * prefer unsetenv() to putenv() in cmd_unsetenv() - - putenv("FOO") isn't legit everywhere - - putenv("FOO=") will only work on MinGW - * make the getenv command return an empty output if the variable wasn't found - * while here, split and sort AC_CHECK_FUNCS - - |cos| on #ratpoison reported that environment variables weren't - properly removed, and proposed a different fix. thanks! - -commit 9d1edbd9c618b063a4baae39a82a81da236ea72f -Author: Vincent Batts -Date: Fri Aug 10 01:16:38 2012 -0400 - - contrib/genrpbindings: removing the space between method name and the parenthesis - - Ruby syntax got more restrictive, so spaces are no longer allowed there. - -commit 0509e1dbde7b246e1bfec177ecb451e57bde8788 -Author: Bernhard R. Link -Date: Sat Jun 30 15:03:45 2012 +0200 - - cmd_info: also display a window not in the current group - - Without this change, cmd_info displays "No Window" if called - with the current window not in the current group (for example - directly after a gselect). - - This change makes it also look in other groups. In that case - it might show a number not the one to switch back to it without - switching the group first, but I guess that is less confusing - than just claiming there is no window. - -commit c21c28d64b5495ec6534d24f5de5200a9e9a7fed -Author: Bernhard R. Link -Date: Wed May 25 10:07:41 2011 +0200 - - remove mention of non-existant keybinding for quit from manpage - -commit 16196bce07d6ee1beb1bb83db0d36e841b7b59da -Author: anthony -Date: Wed Apr 20 13:18:02 2011 +0400 - - Fix display_string construction to handle new XDisplayString() behaviour - - XDisplayString does not append ".screen number" to return value after - http://gitorious.org/omcfadde/libx11/commit/f92e754297ec5fdb81068b56a4435026666224fa - Fix by appending .screen_num to the end of s->display_string in such case - -commit 7d1e839e1ad28053220a2f240a5981093b76aee7 -Author: Bernhard R. Link -Date: Thu Dec 23 15:38:34 2010 +0100 - - don't follow a pointer that might be NULL (HIDE_MOUSE specific) - - In events.c's key_press, the screen the local pointer variable s - points to is accessed if HIDE_MOUSE is defined when hiding the cursor. - Directly after that there is a "if (!s) return;", which is obviously - too late. - - By default HIDE_MOUSE is not defined in src/conf.h, so this is not - a problem unless this feature was enabled at compile time. - - Found by cppcheck. - -commit f4433c0dfca70186f83bd44f3eca365c06520b34 -Author: Bernhard R. Link -Date: Sat Aug 21 19:26:52 2010 +0200 - - document nextscreen and prevscreen default keybindings in the manpage - -commit c48f75e86aea05a8b09a9e52eebe202ac2e84c3c -Author: Zed Lopez -Date: Tue May 18 09:06:26 2010 -0700 - - add a titlechanged hook - -commit 7ca1af7c055d435888f1c5e3dd02f1456334c599 -Author: Keith Amling -Date: Fri May 7 04:57:12 2010 -0700 - - fix alias bug - - When an alias is executed without arguments, for example aliasing - "reload" to "source .ratpoisonrc" and then running "reload" by itself - results in "source: .ratpoisonrc : No such file or directory" implying - it was trying to load ".ratpoisonrc " (note the extra space). - -commit 813191c8e9be42d5b113eb35242dc74f5088bddd -Author: Shawn Betts -Date: Fri Apr 16 17:36:03 2010 -0700 - - in init_screen, properly handle a dot in the display string - -commit 20dbf1d91eba92d4b1a61d56774332e00f4c2a6d -Author: Shawn Betts -Date: Mon Apr 12 10:37:45 2010 -0700 - - document newwindow hook - -commit fdd42223cfc6751e4c632daef64189dbcfc2abe8 -Author: Eric A -Date: Mon Apr 12 10:37:03 2010 -0700 - - add a new_window_hook to the map_window function of manage.c. - -commit 526b74d89dfad6772d15004228ff617898918daf -Author: Kipling Inscore -Date: Tue Mar 30 20:47:25 2010 -0700 - - Cleaned up some cmdret, sbuf, char * usage; eliminating associated memory leaks - -commit 24c831b03816bd9821198cc9d24f0cf9e1e7e062 -Author: Bernhard R. Link -Date: Wed Mar 17 16:18:07 2010 +0100 - - fix swap across multiple screens - - exchange_with_frame now always selects the second frame given, - simplifying the code (getting rid of segfaults when both were - on different screens). This changes the behaviour of cmd_swap - to always focus the first argument when two arguments are given. - - This patch also removes the screen argument of exchange_with_frame, - which is now no longer needed (and cmd_swap was giving the wrong - screen anyway in the case of multiple arguments given). - -commit f5246556adf56ae470a1e898f27ca0fead7d0f7b -Author: Shawn Betts -Date: Sun Jan 31 11:30:45 2010 -0800 - - change error message for gdelete to reduce confusion. - -commit 123abf526df35cb6eed59e13516bea653a065873 -Author: Rob Paisley -Date: Sun Jan 31 11:24:47 2010 -0800 - - cother/iother Segfault patch - - As reported by "Gentooer" in the #ratpoison IRC channel, there is a bug in - :cother and :iother. If are no windows and you issue either :cother, or - :iother ratpoison segfaults. This patch resolves the issue. - -commit fde3d5537776664284cab59f521a898ccb456893 -Author: Bernhard R. Link -Date: Sun Jan 3 12:08:13 2010 +0100 - - correct spelling errors in the manpage - -commit 75ac14935960a23867aa14f736f917ae7a4f3ee5 -Author: Bernhard R. Link -Date: Wed Nov 25 16:20:35 2009 +0100 - - Do not manually set docdir to default directory. - - The setting of docdir in Makefile.am is uncessary - as it is set to the default value. - It is harmful as this overwrites the value filled in by autoconf - causing a user suplied --docdir= to be ignored. - - Thanks to Grigorios Bouzakis for reporting this. - -commit 66f1644c881d8388015016d082e6c8643959fb8c -Author: Bernhard R. Link -Date: Fri Oct 30 19:05:19 2009 +0100 - - update debian/ - - to include changes for 1.4.5-2 - - to update patches to apply to current git - - list explicit commands in debian/README.source how to build from git - -commit a9578d667935a6206622e01707cb3cd14d1b112b -Author: Bernhard R. Link -Date: Fri Jul 17 14:21:27 2009 +0200 - - move libraries from LDFLAGS to LDADD to avoid problems in argument order - -commit 12d21a72e0103f32dfb34d5fd05934ceee78e30d -Author: Bernhard R. Link -Date: Wed Jul 15 19:06:41 2009 +0200 - - silence gcc false-positive undefined warning - -commit dd1ca608f1846d52448e80751749dc0e64d24f46 -Author: Bernhard R. Link -Date: Wed Jul 15 18:50:54 2009 +0200 - - silence gcc warnings against empty if branches - -commit 9167cc9a8b98ee691b5653aeedbb71e6d857dbed -Author: Bernhard R. Link -Date: Wed Jul 15 18:48:03 2009 +0200 - - silence unused variables and unused parameters warnings - -commit 21da5ebbedae6e62ec9bbf8a9027ca0c4a1b26f1 -Author: Bernhard R. Link -Date: Wed Jul 15 17:45:07 2009 +0200 - - use gcc's __builtin_prefetch if available to silence problems with the empty prefetch function - -commit 36dd8df21904c8e4dba98af0fb9137c438324f9f -Author: Bernhard R. Link -Date: Wed Jul 15 17:41:11 2009 +0200 - - silence warnings about signed/unsigned char mismatch - -commit ad06f3519881bd3b2d5b8a3f1880a6768a530e2a -Author: Bernhard R. Link -Date: Wed Jul 15 17:30:31 2009 +0200 - - do not shadow identifiers (silencing gcc's -Wshadow warnings) - -commit 7bdee1c7f38befd9b6b0b5805dd0824fe2233936 -Author: Bernhard R. Link -Date: Tue Jul 14 16:32:56 2009 +0200 - - update debian/ directory for 1.4.5-1 - -commit 4ad0b38fb53506d613c4b4f7268dadfcedae9b8e -Author: Shawn Betts -Date: Sun Jul 12 18:23:25 2009 -0700 - - check for getline in configure.in - - This fixes a build error encountered on glibc 2.10 systems - -commit f94298f075bdd1c7df191e093d9f2f9c35b77b2c -Author: Hatem Nassrat -Date: Thu Jul 2 15:16:16 2009 -0300 - - Added functionality to rpws script - - - Move window to different workspace - - Workspaces frame state dump and restore (to/from file) commands - -commit bd6200b4ca52a48a0be49ee39e19e9701942e07e -Author: Shawn Betts -Date: Sun Jul 12 14:06:38 2009 -0700 - - bump version to 1.4.6-GIT - -commit a7d1c1e1311f41ac247734550f27dfc4d5b1d28c -Author: Shawn Betts -Date: Sun Jul 12 14:03:23 2009 -0700 - - update NEWS - -commit 14beabe55fa3cac03f598e138f363f1d50659564 -Author: Shawn Betts -Date: Sat Jul 4 20:58:21 2009 -0700 - - fix inverted text when using xft - - Now the inverted rectangle is drawn first and the text overtop in the bg color. - -commit 166021512b2e39344ff4562323d15a1e2fdea153 -Author: Bernhard R. Link -Date: Sun May 31 20:47:33 2009 +0200 - - only add command to general history if it was entered interactively - -commit 3caa93e319499e77f63e25b2ef4a15c276815ca8 -Author: Shawn Betts -Date: Thu Apr 30 12:50:26 2009 -0700 - - fix 'set fgcolor' for xft. Change screen's ft_font and color slots to xft_font and xft_color. - -commit d5e70ba5716dd5b807f7550f9924711365116a8b -Author: Bernhard R. Link -Date: Wed Apr 29 11:35:52 2009 +0200 - - Fix issues when historysize is zero. - - If historysize is 0, do not create .ratpoison_history at exit - and do keep no entries in history. (Previously ratpoison would - always at least store the last entry). - -commit ac37eba33a3f4acf623f403f826347dde13a6213 -Author: Bernhard R. Link -Date: Mon Apr 27 14:20:58 2009 +0200 - - update debian/ to 1.4.4-1 - -commit 0930ca29e337de79df18c5f8ba4aaad440ee0c00 -Author: Shawn Betts -Date: Sun Apr 26 19:18:03 2009 -0700 - - bump version to 1.4.5-GIT - -commit b7f45b056ca8de92e195a9661a45e01a1c875578 -Author: Shawn Betts -Date: Sun Apr 26 19:14:30 2009 -0700 - - update AUTHORS, NEWS, and ChangeLog with recent changes -commit 18ee1ed3b3839d44e08e5aefd0e926d29d252654 -Author: Shawn Betts -Date: Fri Apr 24 15:28:27 2009 -0700 - - rename ratpoison-info and ratpoison-commands-info to remove name clash with ratpoison-cmd.el - -commit d605c07b966d541820805a4938b59242e315735f -Author: Philip Hudson -Date: Sun Apr 19 21:58:23 2009 +0100 - - in contrib/nogaps.el, placate the emacs Lisp byte-compiler and standardise the (require 'cl) line - -commit b890eb8b955edfa46acda6d7b4ff0ab7f15dcfab -Author: Shawn Betts -Date: Fri Apr 24 10:16:39 2009 -0700 - - in contrib/rpws don't create wspl1, since it already exist as the Default group. - - Also add a check to ensure the workspaces creates are at least 2. - -commit a4de27cea6f5bf937f9b282f0195c0e4763a185f -Author: Shawn Betts -Date: Mon Apr 13 05:50:35 2009 -0700 - - grab the keyboard and pointer in cmd_resize - - * fixes a bug that hangs rp: in resize mode, click firefox and rp hangs - -commit c7b3817c222952196b11825076c902d6dd1da455 -Author: Shawn Betts -Date: Mon Apr 13 05:33:47 2009 -0700 - - make ratinfo and ratrelinfo work with ratpoison -c and return coordinates relative to current frame when there's no window - - * update docs - -commit bd7aa51699f49cf7a67c403ba7f2ba3738fcf644 -Author: Shawn Betts -Date: Mon Apr 13 05:19:46 2009 -0700 - - fix segfault in banishrel and make it banish to the corner of the frame when there's no window - - * update documentation - -commit 300c05edf890fbe2de11070b9839359bef9916e1 -Author: Shawn Betts -Date: Mon Apr 13 05:04:18 2009 -0700 - - add texinfo documentation for ratinfo, ratrelinfo, banishrel commands - -commit 855d25f482c43a66a73026e62ff0da539acc67e8 -Author: Rob Paisley -Date: Fri Nov 28 13:14:07 2008 -0500 - - Add ratinfo, ratrelinfo, and banishrel commands - -commit e2282bd77f041430c510203365b18436a60d0586 -Author: Hatem Nassrat -Date: Mon Feb 23 09:57:18 2009 -0400 - - Allowing for next and prev workspace switching. - -commit 82be5b35eda82f8dd4b6e19940d6a7bee1b582ea -Author: Shawn -Date: Mon Apr 13 01:23:38 2009 -0700 - - resize the help window when a screen is resized - -commit 281aaf7b489d9ba89fdf5e39637cde287e83f9fa -Author: Bernhard R. Link -Date: Sat Jan 3 16:22:29 2009 +0100 - - set _net_wm_name for the root window to ratpoison - -commit ffae4bf9413bec7efd5d4821e030b63a700fab69 -Author: Bernhard R. Link -Date: Sat Jan 3 16:21:34 2009 +0100 - - Move screen activation code to new (de)activate_screen functions, - - making sure _NET atoms are reset after tmpwm and deleted when exiting. - -commit 9888fccffbc7d9f5680512b03ace6dd5fc325094 -Author: Shawn -Date: Tue Nov 18 15:46:48 2008 -0800 - - fix AUTO_CLOSE code in unmanage() - -commit 612b99640af64d28823d3a02cdcecf202b74940c -Author: Shawn -Date: Sat Nov 1 11:22:22 2008 -0700 - - in cmd_tmpwm wait for a second if it failed to re-select the root events. - -commit 75207d2e878250c2717174a22cc828c0aba5ba76 -Author: Shawn -Date: Sat Nov 1 10:29:44 2008 -0700 - - fix (i hope) the tmpwm race condition and the bug that sometimes keys don't work after tmpwm - - the race condition is fixed by spinning in a loop with a special error - handler until it is confirmed that the root event selections were - successfully. - - Existing windows don't get their top level keys grabbed, so after the - windows are synced up, grab the top level keys on all windows. - -commit c0bee97912e5caf256441dbdc531f38fbe06d780 -Author: Shawn -Date: Wed Oct 22 14:28:45 2008 -0700 - - include limits.h for INT_MAX - -commit 970d09c36249834e63d529cfdfce0672dff25d99 -Author: Bernhard R. Link -Date: Sun Jun 15 17:56:10 2008 +0200 - - update documentation - -commit 086cf745280ff944a479508f806fa118839e166f -Author: Bernhard R. Link -Date: Sun Jun 15 15:40:37 2008 +0200 - - ignore non-existing libhistory unless --enable-history - -commit 1e4c576b14025d4e16e09110c31b1dec5dac85b9 -Author: Bernhard R. Link -Date: Sun Jun 15 15:02:03 2008 +0200 - - make history expansion an option (switched off by default) - -commit 4ca186ff04eb611db6b11aa0c06adda7f428d4f3 -Author: Bernhard R. Link -Date: Sun Jun 15 13:40:54 2008 +0200 - - remove libhistory history handling, only feed it on demand when doing ! expansion - -commit 7214b8c52e230fdb52a99ce1ed20092c6944dcd3 -Author: Bernhard R. Link -Date: Thu Jun 12 18:10:37 2008 +0200 - - add 'set historysize' and 'set historycompaction' (defaulting to true) to compact history - -commit 4a15061f631b5b85c0cff068407c51bfb315a497 -Author: Bernhard R. Link -Date: Thu Jun 12 12:20:06 2008 +0200 - - alternate history implementation when no libhistory is available - -commit 3737db1e6072c557748ba0ffcdca1e810b15009f -Author: Bernhard R. Link -Date: Tue Jun 10 15:40:50 2008 +0200 - - move all HAVE_HISTORY into history.c - -commit d11f0735321bc725441fbc1dec04e363d07c987a -Author: Bernhard R. Link -Date: Tue Jun 10 14:24:05 2008 +0200 - - SHELLCMD history only shows execute arguments, things to execute are stored as in history as execute commands - -commit d801644502adf42570e9a5b75fcaa013f613fc5a -Author: Bernhard R. Link -Date: Mon Jun 9 23:50:27 2008 +0200 - - define different history types and use them - - (implementation does not separate them yet, though) - -commit 22cea909c3d1b695424ef85153917b00bfb1261c -Author: Antti Nykänen -Date: Wed Oct 22 18:42:24 2008 +0300 - - return the correct value when set_barinpadding is called without arguments - - Currently, when you execute C-t : set barinpadding, you actually get the - bar's border width. This patch fixes that. - -commit 96f9429650200ee4b9897a778a28954de772d151 -Author: Shawn -Date: Sun Oct 19 13:20:28 2008 -0700 - - update the NEWS file to reflect recent changes - -commit 443bd7387dce55812eabe970b4a267d9e626e9a0 -Author: J.R. Mauro -Date: Sun Oct 19 08:13:41 2008 -0400 - - add contrib/expose.pl - -commit 03f8bba45a8d1b0236731b4aece52795c0bc1326 -Author: Ali Gholami Rudi -Date: Sat Oct 18 08:05:15 2008 +0330 - - disallow duplicate group names - -commit 9ec3e80ad828e3eb35ce800b78fa73176d0d7c02 -Author: Antti Nykänen -Date: Thu Jun 26 16:57:16 2008 +0300 - - PID support for format_string - -commit 656481bd1b052137826d041347bd0a93592b96a0 -Author: Ali Gholami Rudi -Date: Sat Oct 11 09:40:12 2008 +0330 - - run switch group hooks after gdelete - - When current group is deleted, a new group is selected but switch - group hooks are not run. This patch calls set_current_group() which - runs those hooks. - -commit 4a180cb969833289eb2dd46548d594f6f37c8a87 -Author: Ali Gholami Rudi -Date: Sat Oct 11 09:39:18 2008 +0330 - - don't delete the last group - - Currently gdelete deletes the last group and creates a new empty - group. This patch changes gdelete to show a message, instead. - -commit 098fc67c1a277286fc513ccb646e4054889063ab -Author: Ali Gholami Rudi -Date: Sat Oct 11 09:38:26 2008 +0330 - - select the last visited group after gdelete - -commit da60eaebff265bafae3c7be1dee5a585ff3e2198 -Author: Shawn -Date: Sun Oct 12 17:03:31 2008 -0700 - - change grename arg type to arg_REST - -commit 2557e59fc5ce7690d05856b04e0ea5aaff6f9f60 -Author: Ali Gholami Rudi -Date: Sat Oct 11 08:33:32 2008 +0330 - - add grename command - -commit 96f8765e306e2a5ed27546d2fec9b08613d369c2 -Author: Bernhard R. Link -Date: Sat Oct 11 13:30:58 2008 +0200 - - cmd_swap checks that both frames are on the same screen - -commit cdf47ffa11181bee433fd52f01fbc9d29f6d5323 -Author: Shawn -Date: Fri Oct 10 14:27:40 2008 -0700 - - document gother - -commit 1d291ecaf30bfa551086aabe02d065f07f00eff3 -Author: Shawn -Date: Fri Oct 10 14:23:17 2008 -0700 - - mark the last group in cmd_groups - -commit b57b21ee318287d035269cb526444a756a93cae9 -Author: Ali Gholami Rudi -Date: Sat Sep 20 22:18:43 2008 +0430 - - add gother command - -commit ddf7f1104af0663ba730b5b82607843fe988109e -Author: Ali Gholami Rudi -Date: Tue Sep 23 17:19:54 2008 +0330 - - src/actions.c: fix memory leak in cmd_groups() - -commit 2c2989660cb285509775acdf0950aab2ae6715db -Author: Shawn -Date: Fri Oct 10 13:45:43 2008 -0700 - - in get_net_wm_window_type, only call XFree on success - - This fixes a crash bug that was reproduced by running dolphin (the kde - file manager). - -commit 8370ffefe77a74b17dd14b5d8e6544f677782bc3 -Author: Shawn -Date: Fri Oct 10 13:35:45 2008 -0700 - - bind nextscreen/prevscreen to C-t N and C-t P - -commit cc668c2218aad54cd27d1a8611de864372156cb0 -Author: Shawn -Date: Fri Oct 10 13:04:12 2008 -0700 - - choose a better approach to setting the border color in remove_frame - - * remove call to give_window_focus in remove_frame - * set the border color in hide_window - - calling give_window_focus in remove_frame was plain incorrect. setting - it in hide_window might be considered overkill but I believe it will - catch this case and any others that might be lurking. - -commit 497fb323835bbb3cceb39874e7555b565863c7e8 -Author: Kipling Inscore -Date: Sun Aug 3 11:40:42 2008 -0700 - - allow window border color to be set seperately for focused and unfocused windows - -commit b47008536843fe9dfa5790581228f42d5c83ee80 -Author: J.R. Mauro -Date: Tue Jul 29 21:40:02 2008 -0400 - - clean up set_active_window_body() with 2 new helper functions - -commit dd86c8350d1ba3dd024240ae0b91c147aa42473d -Author: Bernhard R. Link -Date: Fri Oct 10 10:08:04 2008 +0200 - - doc/ratpoison.texi: fix argument order of execf - -commit 8a8b8d5618eaddd2be1fd6e3e716320e007406cd -Author: Bernhard R. Link -Date: Sun Jun 22 17:00:36 2008 +0200 - - document new %M in manpage - -commit dd36053ca5b842759aa2c5cc5f653a84a98cbd47 -Author: Bernhard R. Link -Date: Mon Jun 9 22:23:58 2008 +0200 - - make xstrdup argument const char* - -commit 845b825f3f16ae02c8083f046ef13d5c922efa40 -Author: Bernhard R. Link -Date: Mon Jun 9 11:22:27 2008 +0200 - - Mark command arguments as arg_COMMAND - -commit f75953fcce418773e3c552cefcee33034ab6dbdb -Author: Bernhard R. Link -Date: Mon Jun 9 10:59:25 2008 +0200 - - remove unused history_list_items function - -commit 4e08030acf10a54af36e92b14624257fbf0835a4 -Author: Shawn -Date: Fri Jun 20 14:01:39 2008 -0700 - - support the netwm dialog window type - -commit ea17008472c85c2c931336774335261b8394a691 -Author: Shawn -Date: Fri Jun 20 13:57:18 2008 -0700 - - add a maxsize formatter character to format_string - -commit 5df9409554d64c73736fb044d8baead78c9c938e -Author: Shawn Betts -Date: Mon Jun 16 19:15:20 2008 -0700 - - update copyright notice - -commit 040d4dbf7332d295b1c3078ded7c418ec396e8fa -Author: Shawn Betts -Date: Thu May 29 15:01:07 2008 -0700 - - don't grab the key if the keysym doesn't map to a keycode - - Also, remove the restriction that a keysym must have a keycode in order to be bound. - -commit d1f633382214f50e07cea482249ff9733fa7ded3 -Author: Bernhard R. Link -Date: Wed May 28 19:11:02 2008 +0200 - - Use AC_HELP_STRING for all help texts. - -commit 229ba0708073b0d02ab253290f224a91844f1b17 -Author: Bernhard R. Link -Date: Wed May 28 18:59:57 2008 +0200 - - Only check for xft.pc if xft is not disabled. - If xft is explicitly requested, not finding it causes an error. - The CPP and LD flags for the different libraries are put in - specific variables and only added in the Makefile. - -commit bb3e3db9c29a478939394c612ab93f9d9cdc3bc8 -Author: Shawn -Date: Sun May 25 01:00:23 2008 -0700 - - update news and authors wrt xft - -commit 76c0bd55bd31b70bc0cbfd198613c09be4acd9b5 -Author: Shawn -Date: Sun May 25 01:00:11 2008 -0700 - - use PKG_CHECK_MODULES to detect xft - -commit bf8dc854fbb0c258c67735153c18903aeb467c60 -Author: Shawn -Date: Sun May 25 00:27:03 2008 -0700 - - don't free defaults.font when xft is enabled - -commit 8ff12976802745ddfd06b4016089b12a3182a86b -Author: Shawn -Date: Sun May 25 00:20:00 2008 -0700 - - properly indent calls to rp_text_width and rp_draw_string - -commit 98503f1fa2abd896c91a186c1f1670932a14ed63 -Author: Shawn -Date: Sun May 25 00:18:17 2008 -0700 - - change -1 to the proper string length in some calls to rp_text_width and rp_draw_string - -commit 4be06410d03bcbcde5707e317c321a482cb32214 -Author: Shawn -Date: Sat May 24 23:43:12 2008 -0700 - - fix whitespace errors in xft patch - -commit d37c7484ab881b0283fd4573235b24fe7d1e7af9 -Author: Midare Kiyura -Date: Sat May 24 16:04:33 2008 -0500 - - Add xft support - -commit c7ec59674cfe315f2a0ea54fc7444b4a6a6a8a67 -Author: Bernhard R. Link -Date: Fri May 2 10:10:43 2008 +0200 - - make read_any_key a proper prototype - -commit ede3fb4202ee1e8d397d2ec041bbfa927cf51d02 -Merge: 9b98a44... 9120e78... -Author: Shawn -Date: Fri Apr 18 16:42:37 2008 -0700 - - Merge branch 'master' of ssh://sabetts@git.sv.gnu.org/srv/git/ratpoison - -commit 9b98a448c43088603601e287794925039fd60429 -Author: Shawn -Date: Fri Apr 18 16:42:17 2008 -0700 - - fix off by one bug in rpws - -commit c2c4f2850606bb982350f0d7bae6b100a4d4a5de -Author: Shawn -Date: Fri Apr 18 16:42:00 2008 -0700 - - bump version to 1.4.4-GIT - -commit 59f03dada1682b5025cf7def0ec2dde5abdab83a -Author: Shawn -Date: Fri Apr 18 16:41:49 2008 -0700 - - add 1.4.3 news - -commit 9120e78541e6e58f0a859de8dfe0c1b00eb0f264 -Author: Bernhard R. Link -Date: Fri Feb 22 11:06:17 2008 +0100 - - remove AC_CANONICAL_HOST and bin-dist target as only user of it - -commit 0f793c3f0ba508afa251cab5cfd45fe79123584f -Author: Bernhard R. Link -Date: Thu Feb 21 15:20:41 2008 +0100 - - update debian/ directory - -commit 7f74fffef79e5e77f9b880a7cad8fc308e901709 -Author: Bernhard R. Link -Date: Thu Feb 21 14:26:18 2008 +0100 - - fix syntax errors in the manpage - -commit cc35f0778f427e43f00d735576e7044514950605 -Author: Shawn -Date: Tue Feb 19 16:53:23 2008 -0800 - - grab top level key bindings asynchronously - -commit fa2fa9692587a431399ce3786f3b1e970b5e244e -Author: Shawn Betts -Date: Mon Feb 11 23:16:07 2008 -0800 - - return a value in read_single_key - -commit 6ef6c4ddce5eec679d81c48c0f5b72ab04a388f2 -Merge: a45a3c2... 4245904... -Author: Shawn Betts -Date: Mon Feb 11 23:13:39 2008 -0800 - - Merge branch 'master' of sabetts@git.sv.gnu.org:/srv/git/ratpoison - -commit a45a3c2cba130c6164088884d51af7545b7c671a -Author: Shawn Betts -Date: Mon Feb 11 23:12:09 2008 -0800 - - ifdef out Xtst library calls - -commit 42459044340ce1cb016a9a7d85e8c784f7e36979 -Merge: bd51b17... 3793365... -Author: Shawn -Date: Wed Feb 6 16:50:28 2008 -0800 - - Merge branch 'master' of ssh://sabetts@git.sv.gnu.org/srv/git/ratpoison - -commit bd51b1705292845686f8f682d15f6b7b90ddc787 -Author: Shawn -Date: Wed Feb 6 14:16:37 2008 -0800 - - Change the way input is read - - Before rp used xgrabkeyboard to read a key. Instead, the keyboard is - frozen when a top level key is read. Then when rp reads a key it first - sets the input focus to a suitable location such as key_window or - input_window, then thaws the keyboard and waits for a keypress. When a - key is pressed the keyboard is frozen again and the process repeats - until ratpoison is done reading input. At that point the keyboard is - thawed in a way that future keystrokes do not refreeze the keyboard. - -commit cbcc8f2882ac8985a027b5c8423b5e764c51c158 -Author: Shawn -Date: Wed Feb 6 14:13:45 2008 -0800 - - add TAGS to .gitignore - -commit 37933658a66f1d7f5cc00cbf83882b84cf8c8337 -Author: Shawn Betts -Date: Fri Dec 7 12:12:07 2007 -0800 - - call switchwin hook when a window in unmapped or destroyed - -commit c322af661de758faab2a8035d1dbfd64b36a5082 -Author: Shawn Betts -Date: Mon Oct 22 02:24:25 2007 -0700 - - bump the version number in the docs to 1.4.3 - -commit e0f6041ffe1bfa9cc0c347db7a60ba420f945134 -Merge: c72f081... d384649... -Author: Shawn Betts -Date: Thu Oct 11 13:58:41 2007 -0700 - - Merge branch 'master' of sabetts@git.sv.gnu.org:/srv/git/ratpoison - -commit c72f0811c3c6f35183e7ced8b686411f329c8671 -Author: Shawn Betts -Date: Thu Oct 11 13:57:37 2007 -0700 - - Properly shell-escape ratpoison commands for perl bindings. - -commit d3846498579cbc5bbdf7cbf012e07a049488ed6a -Merge: f30be19... f229711... -Author: Shawn Betts -Date: Mon Oct 8 17:26:54 2007 -0700 - - Merge branch 'master' of ssh://sabetts@git.sv.gnu.org/srv/git/ratpoison - -commit f30be1924830a6afee9935b1a6ef094dd9471dfe -Author: Shawn Betts -Date: Mon Oct 8 17:26:17 2007 -0700 - - add more ignored files - -commit f229711cc2633a95d88c1b59c5a3e48c5800d2b4 -Author: Bernhard R. Link -Date: Mon Oct 8 13:02:58 2007 +0200 - - Update debian/ directory - -commit e3f4eb16ef7fce25da1e77b16b87525a724b9526 -Author: Shawn Betts -Date: Sat Oct 6 21:13:52 2007 -0700 - - bump version to 1.4.3-GIT - -commit 2dc366b17f298ec697e453e648213e29d9dea815 -Author: Shawn Betts -Date: Sat Oct 6 21:13:21 2007 -0700 - - add NEWS for 1.4.2 - -commit d4b97b5a7ff4b9a9cb73ba0d1dbaf3b91e75f8f8 -Author: Shawn Betts -Date: Sat Oct 6 21:12:58 2007 -0700 - - Remove .cvsignore files. add .gitignore files - -2007-08-14 Bernhard R. Link - - * src/main.c (xvsprintf): limit memory allocation - to 200K when vsnprintf return -1. (i.e. on pre-1999 - systems not distinguising fatal errors and too small - buffer). - -2007-07-08 Bernhard R. Link - - * src/manage.c (get_res_name, get_res_class): remove - (update_window_name): call get_class_hints directly to avoid it - being called two times. - -2007-07-07 Bernhard R. Link - - * src/manage.c (get_wmname): always try XmbTextPropertyToTextList - first to also support UTF-8 window titles when encoded as XA_STRING - -2007-07-04 Bernhard R. Link - - * src/main.c (clean_up): call free_user_commands, free_groups only - after free_window_stuff - * src/window.c (free_window_stuff): remove windows from group lists - * src/action.h (free_user_commands): new prototype - * src/action.c (set_var_free,user_command_free,free_user_commands): - new functions - -2007-05-19 Bernhard R. Link - - * src/manage.c (get_wmname): free buffer to close memory hole - -2007-05-17 Bernhard R. Link - - * src/actions.c (cmd_windows): free buffer to close memory hole - -2007-05-07 Shawn Betts - - * src/main.c (init_defaults): only load the backup font when the - default font fails. - -2007-05-04 Shawn Betts - - * src/main.c (init_defaults): if the default font fails, use the - backup font. - - * src/conf.h (BACKUP_FONT): new define - -2007-04-23 Shawn Betts - - * src/input.c (update_modifier_map): don't map both super and - hyper to the same modifier slot. - -2007-03-08 Shawn Betts - - * src/split.c (set_active_frame): call switch_frame hook - (show_frame_indicator): only show frame indicator - (set_active_frame): new arg force_indicator. all callers updated. - (show_frame_indicator): new arg force. all callers updated. - - * src/main.c (init_defaults): init bar_in_padding - - * src/globals.c (rp_switch_screen_hook): new hook - - * src/data.h (struct rp_defaults): new slot, bar_in_padding - - * src/bar.c (bar_x): honour bar_in_padding setting - (bar_y): likewise - - * src/actions.c (init_set_vars): add barinpadding - (set_barinpadding): new function - - * src/globals.h: new global rp_switch_screen_hook - -2007-01-31 Bernhard R. Link - - * src/frame.c (frame_read): fix bug to never set dedicated - -2006-12-19 Shawn Betts - - * Release 1.4.1 - -2006-12-19 Shawn Betts - - * src/manage.c (force_maximize): remove call to usleep - -2006-12-13 Andreas Seltenreich - - * src/bar.c (show_bar, prepare_bar): Switch to default colormap. - (hide_bar): Possibly restore colormap. - - * src/input.c (get_more_input): Temporarily install default - colormap. - - * src/actions.c (cmd_help, cmd_license): Likewise. - - * src/events.c (colormap_notify): Postpone installing colormap - when bar is raised. - -2006-11-23 Shawn Betts - - * src/events.c (execute_remote_command): return a cmdred instead - of NULL when RP_COMMAND isn't present. - - * src/actions.h (cmdred_new): new prototype - - * src/actions.c (cmdret_new): no longer static function - -2006-11-23 Bernhard R. Link - - * doc/ratpoison.texi (set winfmt): document number between % and format. - - * doc/ratpoison.1 (set winfmt): complete format char description, - document number between % and format. - -2006-11-21 Bernhard R. Link - - * add MAINTAINERCLEANFILES variables to sub Makefile.ams - - * add depcomp to top-level Makefile.am's MAINTAINERCLEANFILES - - * add fdl.texi to doc/Makefile.am's EXTRA_DIST - -2006-11-18 Shawn Betts - - * src/split.c (show_frame_message): handle the case when the frame - is empty. - -2006-11-17 Shawn Betts - - * src/bar.c (bar_y): take into account screen padding - (bar_x): likewise - - * src/split.c (show_frame_indicator): use defaults.frame_fmt - (show_frame_message): format frame_fmt string with format_string - - * src/messages.h (MESSAGE_FRAME_STRING): removed - - * src/main.c (init_defaults): init defaults.frame_fmt - - * src/data.h (struct rp_defaults): add frame_fmt - - * src/actions.c (set_framefmt): new function - (init_set_vars): new set var "framefmt" - -2006-10-03 Shawn Betts - - * src/events.c (handle_key): demote the 'no matching key' error to debug output. - - * src/main.c (strtok_ws): remove useless debug ouput. - -2006-09-26 Shawn Betts - - * src/actions.c (initialize_default_keybindings): bind "swap" to C-t x and C-t C-x - -2006-09-26 Bernhard R. Link - - * src/actions.c (cmd_execa,cmd_execf): new functions - (spawn): new argument to set frame for client_info - (cmd_exec): give spawn current_frame() - (cmd_verbexec): give spawn current_frame() - (cmd_tmpwm): give spawn NULL - (init_user_commands): add execa and execf commands - - * src/actions.h (spawn): new argument added to prototype - (cmd_execa,cmd_execf): new prototypes - -2006-09-26 Bernhard R. Link - - * src/split.c, src/split.h: new function exchange_with_frame - - * src/actions.c, src/actions.h: add cmd_exchange_left,cmd_exchange_right,cmd_exchange_up,cmd_exchange_down, - add new keybindings C-Left,C-Right,C-Up,C-Down to those. - - * doc/ratpoison.1: document the new functions and keybindings. - -2006-09-26 Shawn Betts - - * src/frame.c (read_slot): use strtok_ws - (frame_read): likewise - - * src/actions.c (command): dont use strtok. manually pull out the - command and the rest. - - * src/main.c (strtok_ws): new function - - * src/manage.c (update_window_name): return 1 if anything changed. 0 otherwise. - - * src/events.c (property_notify): only update the window names if - the window name actually changed. - - * src/bar.h (redraw_last_message): new prototype - - * src/bar.c (update_bar): update the window list if that's what's - displayed. call redraw_last_message. - (update_window_names): call marked_message_internal. - (marked_message): call marked_message_internal. - (marked_message_internal): ripped body from old marked_message - minus alarm reset. - (redraw_last_message): new function - (show_last_message): call redraw_last_message - - * src/actions.c: include ctype.h - (cmd_license): use redraw_last_message - (cmd_help): likewise - -2006-08-27 Shawn Betts - - * src/actions.c (parse_args): gobble spaces at the beginning of - the string. - (parse_args): use isspace to test for spaces - -2006-08-23 Shawn Betts - - * src/bar.c (prepare_bar): cap the width and height to the size of - the screen. - -2006-05-23 Shawn Betts - - * src/actions.c (spawn): pass cmd twice to execcl - - * src/events.c (handle_signals): pass NULL to execlp - - * src/actions.c (spawn): pass NULL to execcl - - * src/xinerama.c (free_xinerama): take void arguments. prototype updated. - (init_xinerama): likewise - - * src/window.c (init_window_stuff): take void arguments. prototype updated. - (free_window_stuff): likewise - - * src/split.c (remove_all_splits): take void arguments. prototype updated. - (current_frame): likewise - (init_frame_lists): likewise - (find_last_frame): likewise - (current_window): likewise - (remove_all_splits): likewise - (hide_frame_indicator): likewise - (show_frame_indicator): likewise - - * src/main.c (check_child_procs): take void arguments. prototype updated. - (clean_up): likewise - - * src/number.c (numset_new): take void arguments. prototype updated. - - * src/manage.c (clear_unmanaged_list): take void arguments. prototype updated. - (list_unmanaged_windows): likewise - (ungrab_keys_all_wins): likewise - (grab_keys_all_wins): likewise - (current_screen): likewise - (unhide_all_windows): likewise - - * src/main.c (sighandler): static function - (hup_handler): likewise - (alrm_handler): likewise - (handler): likewise - (print_version): likewise - (print_help): likewise - (show_welcome_message): take void arguments - (init_defaults): likewise - - * src/input.c (ring_bell): take void arguments. prototype updated - (update_modifier_map): likewise - - * src/history.c (get_history_filename): take void arguments - (history_load): take void arguments. prototype updated - (history_save): likewise - (history_reset): likewise - (history_previous): likewise - (history_next): likewise - (history_list_items): likewise - - * src/group.c (group_in_list): static function - (init_groups): take void arguments. prototype updated - (free_groups): likewise - (group_next_group): likewise - (group_prev_group): likewise - - * src/globals.c (x_export_selection): take void arguments - (get_cut_buffer): likewise - (get_primary_selection): likewise - (get_selection): take void arguments. protype updated. - (init_globals): likewise - - * src/events.c (selection_clear): take void arguments - (handle_signals): likewise - (listen_for_events): take void argumens. prototype updated - - * src/bar.c (reset_alarm): take void arguments - (show_last_message): take void arguments. prototype updated. - (free_bar): likewise - - * src/actions.c (init_set_vars): static function. take void arguments - (clear_frame_redos): take void arguments - (pop_frame_undo): likewise - (pop_frame_redo): likewise - (keymap_new): static function - (parse_keydesc): likewise - (trivial_completions): likewise - (keymap_completions): likewise - (window_completions): likewise - (group_completions): likewise - (colon_completions): likewise - (exec_completions): likewise - (hook_completions): likewise - (var_completions): likewise - (update_all_gcs): take void arguments - (grab_rat): likewise - (ungrab_rat): likewise - (init_user_commands): take void arguments. prototype updated. - (free_keymaps): likewise - (free_aliases): likewise - -2006-05-21 Shawn Betts - - * src/conf.h (DEFAULT_FONT): changed - - * src/actions.c (command): return a cmdret structure if cmd is - NULL - -2006-05-15 Shawn Betts - - * src/manage.c (grab_top_level_keys): use defaults.top_kmap for the top kmap - - * src/main.c (init_defaults): init defaults.top_kmap - - * src/events.c (handle_key): use defaults.top_kmap for the top kmap - - * src/data.h (struct rp_defaults): new field, top_kmap - - * src/actions.c (set_topkmap): new prototype - (init_set_vars): topkmap new set variable - (initialize_default_keybindings): use defaults.top_kmap for the top kmap - (cmd_undefinekey): likewise - (cmd_definekey): likewise - (cmd_escape): likewise - (cmd_delkmap): likewise - (set_topkmap): new function - -2006-05-14 Shawn Betts - - * src/input.c (update_modifier_map): use XGetKeyboardMapping. - -2006-05-08 Shawn Betts - - * contrib/rpws (ws_init): loop from 1 not 0 - -2006-04-29 Shawn Betts - - * src/bar.c (marked_message): print NULL if msg is null in debug output - - * src/actions.c (cmd_getenv): return an empty string for - nonexistant env vars. - (command): print NULL if rest is null in debug output - -2006-04-21 Shawn Betts - - * src/main.c (print_version): print build date - -2006-04-20 Shawn Betts - - * src/actions.h: new command sfrestore - - * src/actions.c (init_user_commands): new command sfrestore - (cmd_sfrestore): new function - -2006-04-19 Shawn Betts - - * src/events.c (property_notify): Only map the first window in the launch frame. - - * src/split.c (show_frame_message): use XmbDrawString and XmbTextEscapement - - * src/screen.c (init_screen): don't include the font in the gc - - * src/ratpoison.h: include Xlocale.h - - * src/manage.c (get_wmname): support i18n characters - - * src/main.c (init_defaults): call load_query_font_set and set_extents_of_fontset - (main): call setlocale - (clean_up): call XFreeFontSet - (set_extents_of_fontset): new function - (load_query_font_set): likewise - - * src/input.c (update_input_window): use XmbTextEscapement and XmbDrawString - - * src/globals.h (FONT_HEIGHT): use rp_font_ascent and rp_font_descent - (MAX_FONT_WIDTH): use rp_font_width - new globals rp_font_ascent, rp_font_descent, rp_font_width - - * src/globals.c: new globals rp_font_ascent, rp_font_descent, rp_font_width - - * src/data.h (struct rp_defaults): font is a XFontSet - - * src/bar.c (max_line_length): call XmbTextEscapement - (draw_string): call XmbDrawString - (get_mark_box): call XmbTextEscapement - - * src/actions.c (read_frame): call XmbTextEscapement - (cmd_license): likewise - (read_frame): call XmbDrawString - (cmd_license): likewise - (cmd_help): likewise - (update_gc): don't include the font - (set_font): call load_query_font_set - -2006-04-18 Shawn Betts - - * src/hook.c (hook_run): echo the result of each command. free the - result. - -2006-04-03 Shawn Betts - - * src/messages.h (MESSAGE_MAP_TRANSIENT_GROUP): new define - (MESSAGE_MAP_WINDOW_GROUP): likewise - - * src/manage.c (map_window): call show_rudeness_msg - - * src/events.h (show_rudeness_msg): new prototype - - * src/events.c (show_rudeness_msg): renamed from - show_rudeness_raise_msg. handle the MAP messages as well. all - callers updated. - -2006-04-02 Shawn Betts - - * 1.4.0 release - -2006-04-02 Shawn Betts - - * contrib/Makefile.am (pkgdata_DATA): add sloppy.c - (EXTRA_DIST): likewise - - * src/events.c (handle_key): call XAllowEvents - -2006-04-01 Shawn Betts - - * src/input.c (grab_key): grab the keyboard synchronously - - -2006-03-16 Ryan Yeske - - * doc/ratpoison.texi (Groups): Fix description of gnew command. - -2006-03-15 Bernhard R. Link - - * src/screen.c (screen_update): new function - (init_screen): listen for screen resizes - * src/screen.h: new prototype - - * src/events.c (configure_notify): new function - (delegate_event): call configure_notify for ConfigureNotify events - - * src/frame.c (frame_dump): remember the size of the screen the - frame coordinates are relative to. - (frame_restore): adopt coordinates to possible screen resizes. - - * src/frame.h (frame_fump): take a screen argument - (frame_read): likewise - - * src/actions.c (cmd_tmpwm): listen for screen resizes again - (fdump, frestore, cmd_fdump): supply screen to frame_dump, frameread - -2006-03-15 Shawn Betts - - * src/main.c (clean_up): use list_size not rp_num_frame_undos - - * src/globals.c: remove global var rp_num_frame_undos. All callers updated. - - * src/actions.c (push_frame_undo): use list_size, not rp_num_frame_undos - (set_maxundos): likewise - - * src/window.c (_XOPEN_SOURCE): new define - - * src/screen.c (is_a_root_window): w is unsigned int - (init_screen): typecast _net_wm_pid as unsigned char*. - - * src/main.c (read_rc_file): linesize is size_t - - * src/frame.c (frame_read): use a temp var when reading the - :dedicated value. - - * src/bar.c (max_line_length): i and start are size_t - (draw_string): i is size_t - (get_mark_box): mark_start and mark_end are size_t - - * src/actions.c (find_keybinding): state is unsigned int - (remove_keybinding): likewise - (frame_selector): n is unsigned int - (frame_selector_match): i is size_t. typecast comparison as size_t. - - * src/bar.c (show_bar): accept a fmt argument. all callers and prototype updated. - (update_bar): just display the last message if bar isn't hidden. - (update_window_names): accept a fmt argument. all callers and prototype updated. - - * src/actions.c (init_user_commands): add optional argument to "info" - (cmd_info): handle optional argument - (cmd_windows): when called interactively use the argument as the format string. - -2006-03-14 Antti Nykдnen - - * src/format.c: new file - - * src/format.h: new file - - * Makefile.am (ratpoison_SOURCES): add format.c and format.h - - * src/actions.c (set_infofmt): new function - (wingravity_to_string): char * instead of static char * because needed in format.c - (cmd_info): use format_string - - * src/actions.h (wingravity_to_string): add prototype - - * src/data.h (info_fmt): new variable - - * src/main.c (init_defaults): set a value for defaults.info_fmt - - * src/ratpoison.h: include format.h - - * src/windows.c (get_window_list): use format_string - (isdigit): remove function as the formatting is now done in format.c - (concat_width): likewise - (format_window_name): likewise - -2006-03-14 Shawn Betts - - * src/manage.c (ungrab_top_level_keys): unconditionally ungrab every key. - - * src/events.c (mapping_notify): call ungrab_keys_all_wins and grab_keys_all_wins. - -2006-04-10 Bernhard R. Link - - * src/manage.c (maximize_transient,maximize_normal): - avoid divide by zero when resize increment is 0. - -2006-03-07 Shawn Betts - - * src/main.c (clean_up): properly free rp_frame_numset - - * src/editor.c (editor_enter): free line->buffer before setting it to the history expansion. - - * src/completions.c (completions_free): free the rp_completions struct too - - * src/actions.c (del_frame_undo): free the rp_frame_undo struct too. - -2006-02-26 Shawn Betts - - * src/editor.c (editor_insert): use memmove to make room for - inserted string. - - * src/window.c (add_to_window_list): only change the window's - group and frame if window_mapped is 0. - - * src/data.h (struct rp_child_info): new field window_mapped - - * src/actions.c (spawn): init window_mapped field in child_info. - -2006-01-18 Bernhard R. Link - - * src/events.c: look for _NET_WM_PID notify events and adopt the - intended frame number accordingly. - - * src/window.c, src/window.h: make get_child_info accessible from - events.c - -2006-01-04 Shawn Betts - - * src/conf.h (ASPECT_WINDOWS_ARE_TRANSIENTS): new define - - * src/manage.c (window_is_transient): new function - (maximize_normal): honour aspect ratio hint - - * src/window.c (update_window_gravity): use maxsize_gravity for windows with aspect hints. - (set_active_window_body): call window_is_transient - - * src/split.c (cleanup_frame): call window_is_transient - -2006-01-03 Shawn Betts - - * src/number.c (numset_add_num): store the ret val of - numset_find_empty_cell in a variable and use it as an index into - the numbers_taken array. - - * src/actions.c (cmd_curframe): return the frame number in - non-interactive mode. - - * src/split.c (cleanup_frame): in the maxsize windows are - transients check either the width or height must be less than the - screen width/height (just like in windows.c). - -2005-12-11 Shawn Betts - - * src/manage.c (withdraw_window): call rp_delete_window_hook hook - - * src/globals.c: new hook rp_delete_window_hook - -2005-11-05 Shawn Betts - - * src/events.c (handle_signals): xsync after hiding all windows - - * src/manage.h (unhide_all_windows): new prototype - - * src/manage.c (unhide_all_windows): new function. - - * src/events.c (handle_signals): unhide windows before switching to a new wm - -2005-10-22 Shawn Betts - - * src/window.c (get_mouse_position): renamed from - get_mouse_root_position. get pos relative to window. - -2005-10-20 Shawn Betts - - * src/window.c: include unistd.h - (get_child_info): new function - (add_to_window_list): get the window's client's pid if possible - and assign the window the appropriate group and frame. - (add_to_window_list): init intended_frame_number - (save_mouse_position): save the position relative to the window - (give_window_focus): restore the position relative to the window - (set_active_window_body): put the window in the frame contained in - intended_frame_number when appropriate. - - * src/screen.c (screen_find_frame_by_frame): new function - (init_screen): add the net_supported atom to the root window. - - * src/main.c (main): init netwm atoms - - * src/group.c (groups_find_group_by_group): new function - - * src/globals.c (_net_wm_pid, _net_supported): new globals - - * src/data.h (struct rp_window): new field intended_frame_number. - (struct rp_child_info): new fields group, frame, screen. - - * src/actions.c (spawn): call the command directly when new - argument, raw, is non zero. all callers updated. - (spawn): fill in the frame, group and screen for the child. - -2005-10-14 Shawn Betts - - * src/actions.c (cmd_describekey): print the key name even when it's bound. - -2005-08-23 Shawn Betts - - * src/actions.c (cmd_addhook): remove erroneous call to free. - - * contrib/Makefile.am (pkgdata_DATA): add unrat.c - (EXTRA_DIST): likewise - -2005-06-13 Shawn Betts - - * src/editor.c (edit_bindings): add C-h and C-m - -2005-06-11 Shawn Betts - - * src/main.c (clean_up): call del_frame_undo not pop_frame_undo - - * src/globals.h: new global prototype rp_frame_redos - - * src/globals.c: new global rp_frame_redos - - * src/actions.h: new command 'undo' - (del_frame_undo): new prototype - (pop_frame_undo): delete prototype - - * src/actions.c (init_user_commands): new command 'undo' - (clear_frame_redos): new function - (del_frame_undo): likewise - (push_frame_undo): call del_frame_undo instead of pop_frame_undo. call clear_frame_redos. - (pop_frame_list): new function - (pop_frame_undo): returns the popped frame. all callers updated. - (pop_frame_redo): new function - (initialize_default_keybindings): bind undo to u and C-u, bind redo to U. - (set_maxundos): call del_frame_undo instead of pop_frame_redo - (cmd_redo): new function - -2005-06-11 Shawn Betts - - * src/actions.h: remove the non-existant command, last. - - * src/window.c (isdigit): new function - (format_window_name): read a length argument and crop window names to that length. - (get_window_list): length argument applies to %c and %a. - - * src/actions.c (cmd_tmpwm): stop waiting for the child if waitpid - produced an error. - -2005-04-17 Shawn - - * src/actions.h: new prototype compat - - * src/actions.c (initialize_default_keybindings): move def* aliases to cmd_compat - (cmd_compat): new function - - * src/messages.h (MESSAGE_RAISE_TRANSIENT_GROUP): new define - (MESSAGE_RAISE_WINDOW_GROUP): likewise - - * src/group.h (groups_find_group_by_window): new prototype - - * src/group.c (groups_find_group_by_window): new function. - - * src/events.c (show_rudeness_raise_msg): new function - (map_request): call show_rudeness_raise_msg - (configure_request): likewise - -2005-04-12 Shawn - - * contrib/rpws: Replace with Mike O'Connor's perl version. - -2005-04-10 Shawn - - * src/actions.c (cmdret_new): malloc enough for the cmdret structure. - -2005-04-09 Shawn - - * src/actions.c (init_user_commands): add KEY argument to meta - command. - (cmd_meta): optionally use the KEY passed in as an argument. - (cmd_set): pass the string produced when no args are passid in to - cmdret_new using "%s". - (cmd_windows): return the string using "%s" in call to cmdret_new. - (cmd_help): likewise. - (cmd_gravity): likewise - (cmd_getenv): likewise - (cmd_fdump): likewise - (cmd_groups): likewise - (cmd_listhook): likewise - (cmd_sfdump): likewise - (cmd_sdump): likewise - (cmd_describekey): likewise - (cmd_prompt): likewise - (cmd_getsel): likewise - (cmd_unmanage): likewise - (cmd_prev): likewise - (cmd_prev_frame): likewise - (cmd_next): likewise - (cmd_next_frame): likewise - (cmd_other): likewise - (cmd_version): likewise - (cmd_time): likewise - (cmd_cnext): likewise - (cmd_cprev): likewise - (cmd_inext): likewise - (cmd_iprev): likewise - (cmd_cother): likewise - (cmd_iother): likewise - -2005-03-05 - - * src/ratpoison.h (check_child_procs): new prototype - (chld_handler): likewise - (set_sig_handler): likewise - - * src/main.c (check_child_procs): new function - (chld_handler): call check_child_procs - (free_screen): unselect all events on the root window. - - * src/actions.c: include signal.h - (spawn): don't prefix the command with exec. - (set_wingravity): print the setting as a string. - (set_transgravity): likewise - (set_maxsizegravity): likewise - (set_bargravity): likewise - (set_font): likewise - (set_winfmt): likewise - (set_fgcolor): likewise - (set_bgcolor): likewise - (set_framesels): likewise - (cmd_tmpwm): ungrab the keys for all windows before spawning the - new wm. - (cmd_tmpwm): disable the sigchld handler then enabled it after the - wm returns. call check_child_procs. - - -2005-02-26 - - * src/actions.c (parse_args): properly check if we've hit the arg - limit. - -2005-02-22 sabetts - - * src/main.c (read_startup_files): use xsprintf when generating - path to ratpoisonrc. - - * src/input.c (get_more_input): Use HAVE_HISTORY to ifdef out - history_reset. - - * src/actions.c (command): new variable, raw, which records - whether to tell parse_args not to parse the last arg. - (cmd_set): likewise - -2005-02-10 Shawn Betts - - * src/actions.c (parse_keydesc): return a cmdret error in the - event of an error and take a point to an rp_key as an - argument. Fill this argument with the parsed key. - (parse_keydesc): Don't accept the keysym if it doesn't map to a - keycode. - (cmdret_new): renamed from cmdret_new_printf. All callers updated. - (cmdret_new_printf): remove function. - (arg_free): free the key member. - -2005-02-09 Shawn Betts - - * src/main.c (main): set the RATPOISON env. variable to the path - to this executable. - -2005-02-06 Shawn Betts - - * src/actions.c (cmd_prompt): allow prompt to be run - interactively. - -2005-02-04 Shawn Betts - - * configure.in: bump version to 1.4.0-CVS. - -2005-02-04 Shawn Betts - - * src/actions.c (set_winname): return the cmdret created. - (cmd_unalias): likewise - (cmd_nextscreen): likewise - (cmd_prevscreen): likewise - (cmd_gdelete): likewise - -2005-01-30 Shawn Betts - - * src/actions.c (cmd_escape): when the escape key doesn't have a - modifier give the meta key a modifier. - (cmd_undefinekey): call XSync after ungrabbing and grabbing all - keys. - -2005-01-22 Shawn Betts - - * src/actions.h (argtype): add arg_RAW - - * src/actions.c (init_user_commands): make unmanage'd argument - optional when called non-interactively. - (init_user_commands): "title" accepts 1 argument. - (init_user_commands): "echo" and "putsel" take a raw argument. - (read_arg): parse arg_RAW - (parse_args): take a raw argument. gobble whitespace when we've - hit nargs and raw is false. callers updated. - (command): don't gobble whitespace after reading the command. set - nargs when the argtype is arg_RAW, too. - (cmd_set): set nargs when the argtype is arg_RAW, too. - -2005-01-20 Shawn Betts - - * src/actions.c (init_user_commands): fix unmanage command. - -2005-01-19 Shawn Betts - - * contrib/genrpbindings: add python bindings. - -2005-01-17 Shawn Betts - - * src/frame.c (frame_read): remove space in "(frame " string. - -2005-01-15 Shawn Betts - - * src/actions.c (spawn): Prepend cmd with exec. - -2004-01-15 Bernhard R. Link - - * actions.c (cmd_focusleft,cmd_focusright,cmd_focusup,cmd_focusdown): show - currectframe if movement not possible. - -2005-01-15 Shawn Betts - - * src/frame.c (frame_read): correctly determine if the input - starts with "(frame ". - -2005-01-15 Shawn Betts - - * src/actions.c (cmd_prev): return a cmdret*. same for error - messages. - (cmd_select): likewise. - (command): use cmdret* to report when alias recursion has hit the - limit. - (cmd_resize): return a cmdret when num frames is < 2. - (set_padding): return a cmdret*, not NULL. - (cmd_nextscreen): likewise - (cmd_prevscreen): likewise - (cmd_addhook): likewise - - * src/main.c (main): Report extra unparsed arguments. - - * src/actions.c (init_user_commands): set the last argument of the - following commands to arg_REST: addhook, chdir, remhook, source, - tmpwm, and prompt. - (command): check list_size of head when checking for too many - arguments. - (cmd_set): raise error if set command was passed too many - arguments. - -2005-01-15 Shawn Betts - - * src/actions.c (init_user_commands): change select's argument to - arg_REST. - - * configure.in: add AM_MAINTAINER_MODE - - * src/globals.h (rp_exec_newwm): new extern. - - * src/globals.c (rp_exec_newwm): new global. - - * src/actions.c (cmd_newwm): set rp_exec_newwm to the new wm. - - * src/events.c (listen_for_events): call XSync after - delegate_event. - (handle_signals): exec newwm if its not NULL. Report X11 errors - (moved from listen_for_events). - -2005-01-15 Ryan Yeske - - * src/editor.c (saved_command): Only define whe HAVE_HISTORY is - defined. - -2005-01-15 Shawn Betts - - * src/actions.c (command): treat arg_SHELLCMD like arg_REST. - (cmd_set): likewise - - * src/globals.h (RET_SUCCESS): set to 1 - (RET_FAILURE): set to 0 - - * src/communications.c (receive_command_result) - (receive_command_result): fix error deciding when to print to - stderr. - -2005-01-15 Shawn Betts - - * src/actions.c (parse_args): remove erroneous pointer dereference - of i when gobbling whitespace. - (init_user_commands): set second argument to "alias" command to - arg_REST. - (init_user_commands): likewise for "set" - (cmd_readkey): remove useless PRINT_DEBUG - (cmd_set): pass an empty string to parse_args when the args[1] is - NULL. - (cmd_set): call the set function if the arg list size is 0. - -2005-01-14 Shawn Betts - - * src/main.c (init_defaults): turn off warp by default. - -2005-01-14 Shawn Betts - - * src/actions.c (ARG_STRING): new define - (ARG): likewise - (set_vars): change to a list_head. - (add_set_var): new function - (init_set_vars): likewise - (user_commands): change to a list_head. Move command definitions - to init_user_commands. - (add_command): new function - (init_user_commands): likewise - (cmdret_new): likewise - (cmdret_new_printf): likewise - (cmdret_free): likewise - (read_string): likewise - (read_keymap): likewise - (read_keydesc): likewise - (read_command): likewise - (read_shellcmd): likewise - (read_frame): likewise - (read_window): likewise - (read_gravity): likewise - (read_group): likewise - (read_hook): likewise - (read_variable): likewise - (hook_completions): likewise - (read_number): likewise - (read_arg): likewise - (parsed_input_to_args): likewise - (fill_in_missing_args): likewise - (parse_args): likewise - (arg_array): likewise - (arg_free): likewise - (command): use parse_args, parsed_input_to_args, - fill_in_missing_args to parse arguments and pass to command - functions. - (command): return cmdret* structure. prototype updated. - (cmd_abort): second arg is an array of struct cmdarg*. Return - cmdret*. Updated to use new parsed arguments. - (cmd_addhook): likewise - (cmd_alias): likewise - (cmd_banish): likewise - (cmd_bind): likewise - (cmd_chdir): likewise - (cmd_clrunmanaged): likewise - (cmd_colon): likewise - (cmd_curframe): likewise - (cmd_delete): likewise - (cmd_echo): likewise - (cmd_escape): likewise - (cmd_exec): likewise - (cmd_fdump): likewise - (cmd_focusdown): likewise - (cmd_focuslast): likewise - (cmd_focusleft): likewise - (cmd_focusright): likewise - (cmd_focusup): likewise - (cmd_frestore): likewise - (cmd_fselect): likewise - (cmd_gdelete): likewise - (cmd_getenv): likewise - (cmd_gmerge): likewise - (cmd_gmove): likewise - (cmd_gnew): likewise - (cmd_gnewbg): likewise - (cmd_gnext): likewise - (cmd_gprev): likewise - (cmd_gravity): likewise - (cmd_groups): likewise - (cmd_gselect): likewise - (cmd_h_split): likewise - (cmd_help): likewise - (cmd_info): likewise - (cmd_kill): likewise - (cmd_last): likewise - (cmd_lastmsg): likewise - (cmd_license): likewise - (cmd_link): likewise - (cmd_listhook): likewise - (cmd_meta): likewise - (cmd_msgwait): likewise - (cmd_newwm): likewise - (cmd_next): likewise - (cmd_next_frame): likewise - (cmd_nextscreen): likewise - (cmd_number): likewise - (cmd_only): likewise - (cmd_other): likewise - (cmd_prev): likewise - (cmd_prev_frame): likewise - (cmd_prevscreen): likewise - (cmd_quit): likewise - (cmd_redisplay): likewise - (cmd_remhook): likewise - (cmd_remove): likewise - (cmd_rename): likewise - (cmd_resize): likewise - (cmd_restart): likewise - (cmd_rudeness): likewise - (cmd_select): likewise - (cmd_setenv): likewise - (cmd_shrink): likewise - (cmd_source): likewise - (cmd_startup_message): likewise - (cmd_time): likewise - (cmd_tmpwm): likewise - (cmd_unalias): likewise - (cmd_unbind): likewise - (cmd_unimplemented): likewise - (cmd_unmanage): likewise - (cmd_unsetenv): likewise - (cmd_v_split): likewise - (cmd_verbexec): likewise - (cmd_version): likewise - (cmd_warp): likewise - (cmd_windows): likewise - (cmd_readkey): likewise - (cmd_newkmap): likewise - (cmd_delkmap): likewise - (cmd_definekey): likewise - (cmd_undefinekey): likewise - (cmd_set): likewise - (cmd_sselect): likewise - (cmd_ratwarp): likewise - (cmd_ratclick): likewise - (cmd_ratrelwarp): likewise - (cmd_rathold): likewise - (cmd_cnext): likewise - (cmd_cother): likewise - (cmd_cprev): likewise - (cmd_dedicate): likewise - (cmd_describekey): likewise - (cmd_inext): likewise - (cmd_iother): likewise - (cmd_iprev): likewise - (cmd_prompt): likewise - (cmd_sdump): likewise - (cmd_sfdump): likewise - (cmd_undo): likewise - (cmd_putsel): likewise - (cmd_getsel): likewise - (set_resizeunit): arg is an array of struct cmdarg*. Return - cmdret*. Updated to use new parsed arguments. - (set_wingravity): likewise - (set_transgravity): likewise - (set_maxsizegravity): likewise - (set_bargravity): likewise - (set_font): likewise - (set_padding): likewise - (set_border): likewise - (set_barborder): likewise - (set_inputwidth): likewise - (set_waitcursor): likewise - (set_winfmt): likewise - (set_winname): likewise - (set_fgcolor): likewise - (set_bgcolor): likewise - (set_barpadding): likewise - (set_winliststyle): likewise - (set_framesels): likewise - (set_maxundos): likewise - - * src/actions.h: include ratpoison.h - (argtype): add arg_FRAME, arg_WINDOW, arg_COMMAND, arg_SHELLCMD, - arg_KEYMAP, arg_KEY, arg_GRAVITY, arg_GROUP, arg_HOOK, - arg_VARIABLE. - (union arg_union): new union - (struct cmdarg): new struct - (struct argspec): likewise - (struct cmdret): likewise - (user_command): change func to reflect new command function - args. add num_args, ni_required_args, i_required_args. - (RP_CMD): new macro for prototyping command functions. all command - function prototypes updated to use this macro. - (init_user_commands): new prototype - (cmdret_free): likewise - - * src/main.c (read_rc_file): handle cmdret* returned by command. - (main): call init_user_commands - - * src/linkedlist.h (list_size): new prototype - - * src/linkedlist.c (list_size): new function - - * src/globals.h (RET_SUCCESS): new define - (RET_FAILURE): new define - - * src/events.c (handle_key): handle the cmdret structure returned - by command. - (execute_remote_command): return cmdret*. - (receive_command): mark the command return string as error or - output before sending. - - * src/data.h (struct rp_action): change data element type to char* - - * src/communications.c (receive_command_result): print command - output to stderr if marked as an error. - -2005-01-04 Ryan Yeske - - * src/actions.c (cmd_rudeness): Print rudeness to bar when called - interactively. - -2005-01-03 Ryan Yeske - - * src/main.c (print_help): Update mailing list. - - * src/actions.c (cmd_license): Update mailing list and website. - -2005-01-14 Shawn Betts - - * contrib/genrpbindings: fix regex to match new actions.c format. - -2004-12-12 Shawn Betts - - * src/sbuf.c (sbuf_concat): call sbuf_nconcat. move bulk of body - to sbuf_nconcat. - (sbuf_nconcat): new function - - * src/globals.c (init_globals): new function - - * src/main.c (main): call init_globals. - - * src/globals.c: include unistd.h. - (x_export_selection): new function - (set_nselection): likewise - (set_selection): call x_export_selection - (get_cut_buffer): new function - (get_primary_selection): likewise - (get_selection): likewise - - * src/editor.c (editor_kill_word): add the deleted text to the X11 - selection - (editor_backward_kill_word): likewise - (editor_kill_line): likewise - (backward_kill_line): new fuction - (editor_backward_kill_line): add the deleted text to the X11 - selection. call backward_kill_line. - (paste_cut_buffer): remove function - (paste_primary_selection): likewise - (editor_paste_selection): call get_selection to get the X11 - selection. - (editor_complete): call backward_kill_line instead of - editor_backward_kill_line. - - * src/ratpoison.h: Include string.h. Include X11/XAtom.h. - - * src/globals.c (selection): new global - (set_selection): new function - - * src/events.c: include X11/Xmd.h - (selection_request): new function - (selection_clear): new function - (delegate_event): call selection_request and selection_clear for - SelectionRequest and SelectionClear events. - - * src/actions.c (user_commands): remove duplicate focusprev entry. Add putsel. Add getsel. - (cmd_putsel): new function - (cmd_getsel): new function - - * contrib/genrpbindings: add a missing paren to the elisp bindings. - -2004-12-12 Ryan Yeske - - * MERCHANDISE: Add file. - -2004-12-09 Shawn Betts - - * src/actions.c (cmd_unmanage): fix message formatting - (cmd_ratwarp): likewise - (cmd_ratrelwarp): likewise - (cmd_ratclick): likewise - (cmd_rathold): likewise - (cmd_unsetenv): likewise - (set_barpadding): likewise - (cmd_fselect): likewise - (cmd_addhook): likewise - (cmd_remhook): likewise - (cmd_listhook): likewise - (cmd_gdelete): likewise - (cmd_readkey): likewise - (cmd_newkmap): likewise - (cmd_delkmap): likewise - (cmd_describekey): likewise - - * src/messages.h (MESSAGE_NO_OTHER_WINDOW): remove padding spaces - (MESSAGE_NO_OTHER_FRAME): likewise - (MESSAGE_NO_MANAGED_WINDOWS): likewise - (MESSAGE_UNKNOWN_COMMAND): likewise - (MESSAGE_WINDOW_INFORMATION): likewise - (MESSAGE_RAISE_TRANSIENT): likewise - (MESSAGE_RAISE_WINDOW): likewise - (MESSAGE_MAP_TRANSIENT): likewise - (MESSAGE_MAP_WINDOW): likewise - (MESSAGE_WELCOME): likewise - (MESSAGE_FRAME_STRING): likewise - - * src/main.c (init_defaults): set bar_x_padding to 4 - - * src/events.c (handle_signals): Remove padding space on all calls - to message and marked_message_printf. - - * src/editor.c (editor_enter): Remove padding space on all calls - to message and marked_message_printf. - - * src/actions.c: Remove padding space on all calls to message and - marked_message_printf. - - * src/bar.c (get_mark_box): make the mark extend to the edge of - the box regardless of the bar padding. - -2004-12-08 Shawn Betts - - * src/events.c (destroy_window): make sure the current screen is - the windows screen before calling set_active_frame. - (unmap_notify): likewise - - * src/actions.c (frestore): use strtok_r. - -2004-12-06 Shawn Betts - - * src/manage.c (unmanage): remove call to numset_release. - -2004-12-04 Shawn Betts - - * src/frame.c (frame_dump): use a hyphen instead of underscore for - f->last_access. - -2004-11-22 Shawn Betts - - * src/actions.c (cmd_verbexec): rewritten to fix crash bug. - -2004-11-20 Shawn Betts - - * src/actions.c (cmd_rathold): change argument order. echo parse - errors. - -2004-11-19 Shawn Betts - - * src/actions.c (cmd_sfdump): properly declare i at the top of the - function. - - * src/frame.c (frame_dump): dump the frame as an sexpr instead of - a list of numbers. - (frame_read): read the new frame dump format - (init_frame): new static function - (frame_new): call init_frame - (frame_read): likewise - - * src/actions.c (cmd_describekey): fix error messages. - -2004-11-18 Shawn Betts - - * src/actions.c (set_vars): add maxundos - (push_frame_undo): new function - (pop_frame_undo): likewise - (initialize_default_keybindings): add binding for "undo" - (initialize_default_keybindings): add def alias for maxundos - (cmd_other): call set_active_window_force instead of - set_active_window - (cmd_v_split): push the frame set - (cmd_h_split): likewise - (cmd_only): likewise - (cmd_remove): likewise - (cmd_shrink): likewise - (cmd_tmpwm): likewise - (cmd_license): update copyright. Add build date and time. - (cmd_fselect): simplify code that returns the frame selected. - (fdump): new function - (cmd_fdump): call fdump to dump the screen's frame set. - (frestore): new function - (cmd_frestore): call frestore to restore the screen's frame set. - (cmd_sfdump): new function - (cmd_sdump): likewise - (set_maxundos): likewise - (cmd_cnext): likewise - (cmd_cprev): likewise - (cmd_inext): likewise - (cmd_iprev): likewise - (cmd_cother): likewise - (cmd_iother): likewise - (cmd_undo): likewise - (cmd_prompt): likewise - (cmd_describekey): likewise - (cmd_dedicate): likewise - - * src/main.c (init_defaults): init maxundos to 20 - (clean_up): free the undo history lists - - * src/window.h (set_active_window_body): new function - (set_active_window_force): likewise - - * src/window.c (set_active_window): new function - (set_active_window_force): likewise - (set_active_window_body): renamed from set_active_window - (set_active_window_body): Add code to handle dedicated frames. - - - * src/screen.h (screen_dump): new prototype - - * src/screen.c (screen_dump): new function - - * src/linkedlist.h (list_last): new macro - - * src/group.h (group_last_window_by_class_complement): new prototype - (group_last_window_by_class): likewise - - * src/group.c (group_last_window_by_class): new function - (group_last_window_by_class_complement): likewise - - * src/globals.h (rp_frame_undos): new extern. - (rp_num_frame_undos): likewise - - * src/globals.c (rp_frame_undos): new list. - (rp_num_frame_undos): new global - - * src/frame.c (frame_new): init f->dedicated to 0. - - * src/data.h (struct rp_frame): add dedicated member. - (struct rp_defaults): add maxundos member. - (struct rp_frame_undo): new struct. - - * src/actions.c: new commands, cnext, cother, cprev, - - * src/window.c (print_window_information): add argument, - group. print the window's number in the group. All callers - updated. - - * src/actions.c (cmd_info): print the window's number in the - current group. - - * src/window.c (unhide_transient_for): add a newline to debugging - output. - (hide_transient_for_between): likewise. - - * src/manage.c (get_wmname): typecast name when passing to - xstrdup. - - * src/main.c (main): typecast command[i] when passing to - send_command. - - * src/events.c (execute_remote_command): typecast req[1] when - passing to command. - (receive_command): typecast result when passing to - XChangeProperty. - - * src/editor.c (editor_history_previous): Add newline to - debugging output. - (editor_history_next): likewise. - (paste_primary_selection): typecast data when passing to editor_insert. - - * src/communications.c (receive_command_result): typecast result - when passing to strlen. - (send_command): typecast cmd when passing the XChangeProperty. - - * src/actions.c (user_commands): add focusprev - (cmd_prev): clean up - (cmd_next): likewise - (cmd_prev_frame): call find_frame_prev instead of find_frame_next. - (cmd_frestore): grab the frame's number first when processing the - frames. - -2004-11-17 Shawn Betts - - * src/actions.c (user_commands): add rathold - -2004-11-17 Shawn Betts - - * src/actions.c (cmd_rathold): new function - -2004-11-17 Bernhard R. Link - - * src/actions.c: (initialize_default_keybindings): Added - default keybindings for focusleft,fcousup,focusright,focusdown. - (cmd_resize): Added support for multiple keybindings - per action. Added arrow keys, escape and vi-like h,j,k,l - to the keys used for resizing. - - * doc/ratpoison.1: Documented C-t arrow key - * doc/ratpoison.texi: Documented C-t arrow key, - fixed description of C-t f - -2004-11-17 Shawn Betts - - * contrib/rpws: use env to find out where bash is - -2004-11-11 Shawn Betts - - * contrib/genrpbindings: fix up path to ratpoison binary - - * src/actions.c (cmd_ratclick): new function - (cmd_ratrelwarp): likewise - (cmd_ratwarp): likewise - (user_commands): new commands ratclick, ratrelwarp, ratwarp. - - * contrib/genrpbindings: add common lisp bindings - -2004-11-03 Shawn Betts - - * src/input.c (get_more_input): call history_reset - - * src/history.c (history_load): remove call to using_history. - (history_save): likewise - (history_add): likewise - -2004-11-02 Shawn Betts - - * src/split.c (blank_frame): use the frames screen, not the current screen. - - * src/group.c (group_last_window): add argument, the screen to find the - window in. All callers updated. - (group_prev_window): make sure the matched window is in the same - screen as win. - (group_next_window): likewise - - * src/window.c (find_window_other): add argument, the screen to - find the window in. All callers updated. - -2004-10-29 Shawn Betts - - * contrib/rpws: remove the echo /tmp/boom line. - -2004-10-28 Shawn Betts - - * src/actions.c (set_padding): fix the padding order in xsprintf. - -2002-02-05 Shawn Betts - - * src/actions.c (cmd_set): check if var is NULL before checking strlen(var) - -2004-10-07 Shawn Betts - - * doc/ratpoison.texi (Frame Numbering): new topic - -2004-07-24 Thien-Thi Nguyen - - * autogen.sh: Handle "-f" option. Add usage comment. - -2004-10-05 Shawn Betts - - * src/actions.c (cmd_unsetenv): add an '=' to the string passed to - putenv. - (cmd_source): display an error message if no file is supplied. - - * src/main.c (print_version): update copyright date. - - * src/conf.h (DEFAULT_FONT): new define - - * src/main.c (init_defaults): use the DEFAULT_FONT define - - * src/actions.c: new command, sselect - (cmd_sselect): new function. added prototype. - (cmd_set): free 'var' at the appropriate places. - (cmd_version): add the build date and time. - (cmd_fselect): in interactive mode, return 'abort' when the user - aborts, the frame number when they select one, or 'No such frame' - when they selected a nonexistent one. - (cmd_version): return the version string in non-interactive mode. - (parse_wingravity): accept numbers for gravity. - - * src/events.c (property_notify): pass the root window to - receive_command. - (receive_command): take a root window as an argument and use it to - listen for the command. - -2004-10-04 Shawn Betts - - * src/screen.h (is_a_root_window): new prototype - - * src/screen.c (is_a_root_window): new function - - * src/events.c (property_notify): check for ratpoison commands on - every root window, not just the default root window. - - * src/communications.c (send_command): store the root window in a - variable, root. and use it whenever the root window is needed. - -2004-09-29 Shawn Betts - - * configure.in: Warn when the history header or library is not - found and compile without history support. - - * src/ratpoison.h: change ifdef to check for HAVE_HISTORY. - - * src/manage.c (get_state): change data to an unsigned char and - cast data to a long* when it's used. - - * src/main.c (main): change ifdef to check for HAVE_HISTORY. - (clean_up): likewise - - * src/history.c: change ifdef to check for HAVE_HISTORY. - - * src/events.c (receive_command): make prop_return an unsigned char. - - * src/editor.c (editor_history_previous): change ifdef to check for HAVE_HISTORY. - (editor_history_next): likewise - (editor_enter): likewise - -2004-09-27 Shawn Betts - - * contrib/ratpoison.el (ratpoison-command): use call-process. - -2004-06-13 Shawn Betts - - * src/main.c (init_defaults): set default for window list style to - column. - -2004-06-03 Shawn Betts - - * src/number.c (numset_add_num): add debugging output to print the args. - (numset_release): likewise - (numset_request): add debugging output to print the requested number - - - * src/manage.c (withdraw_window): Print an error when withdrawing - a window who's number is -1. - - * src/main.c (clean_up): free the global frame numset. - (free_screen): don't free the screen's numset, since it's a - pointer to the global numset. - - * src/group.c (group_del_window): don't release the window number - here. It's already been done in group_unmap_window. - - * src/events.c (configure_request): only change the stack mode for - non withdrawn windows. - -2004-05-19 Shawn Betts - - * src/input.c (rp_mask_to_x11_mask): handle the shift modifier - (x11_mask_to_rp_mask): likewise - (keysym_to_keycode_mod): Make sure lower != keysym before adding - the shift mask. - (keysym_to_string): handle the shift modifier. use 's' for super - instead of 'S' - (cook_keycode): keep the shift modifier if XLookupString didn't - gobble it. - - * src/data.h (RP_SHIFT_MASK): new define - - * src/actions.c (parse_keydesc): parse the shift modifier change - super to 's' from 'S'. - - * src/window.c (format_window_name): add %f format option - -2004-05-05 Shawn Betts - - * src/input.c (grab_key): use keysym_to_keycode_mod to get the - keycode and modifier for the keysym. - (keysym_to_keycode_mod): new function - -2004-04-23 Shawn Betts - - * src/data.h (struct rp_defaults): new members, font_string, - fgcolor_string, bgcolor_string. - - * src/actions.c (set_font): return defaults.font_string when data is NULL - (set_fgcolor): likewise for fgcolor_string - (set_bgcolor): likewise for bgcolor_string - - * src/manage.c (ungrab_top_level_keys): properly grab capital letters. - - * src/main.c (init_defaults): init fgcolor_string, bgcolor_string, and font_string - - * src/input.c (grab_key): change keysym type to KeySym. convert - keysym to keycode. All callers updated. - -2004-04-18 Shawn Betts - - * src/actions.c (cmd_set): if non-interactive and no arguments are - specified, then output the current value of all variables. - - * src/messages.h (MESSAGE_PROMPT_SELECT_VAR): new define - (MESSAGE_PROMPT_VAR_VALUE): likewise - - * src/actions.h (cmd_set): new prototype - - * src/actions.c (user_commands): remove all def* commands. Add 'set' command. - rename all cmd_def* commands to set_*. Add prototypes for set_* commands. - (struct set_var): new struct - (set_vars): new static global - (cmd_set): new function - (var_completions): new function - (initialize_default_keybindings): add aliases for def* commands - - * src/events.c (configure_request): only display a raise request - if the window isn't already focused. - - * src/manage.h (ungrab_keys_all_wins): new prototype - (grab_keys_all_wins): likewise - - * src/manage.c (grab_top_level_keys): renamed from - grab_prefix_key (all callers updated). Grab all keys in the top level keymap. - (ungrab_top_level_keys): renamed from ungrab_prefix_key (all callers updated). ungrab - all keys in the top level keymap. - (ungrab_keys_all_wins): new function - (grab_keys_all_wins): likewise - - * src/globals.c: (rp_key_hook): rename from - rp_prefix_hook. Dependant code updated. - (set_rp_window_focus): change 'prefix' hook to 'key' hook. - - * src/events.c (handle_key): handle a top level key press. - (handle_key): new arguments ks, and mod. - (key_press): pass the keysym and modifier to handle_key - - * src/conf.h (TOP_KEYMAP): new define - - * src/actions.c (cmd_v_split, cmd_h_split): swap names. - (user_commands): bind split to cmd_v_split. - (initialize_default_keybindings): initialize the top level keymap - (cmd_definekey): update the keys grabbed when changing a key on - the top level keymap. - (cmd_escape): update the escape key in the top level map. - (cmd_delkmap): don't allow the deletion of the top level keymap. - -2004-04-03 Shawn Betts - - * src/main.c (init_defaults): init frame_selectors. - - * src/data.h (struct rp_defaults): new field, frame_selectors. - - * src/actions.h (cmd_defframesels): new prototype - - * src/actions.c (user_commands): new command defframesels - (frame_selector): new function - (frame_selector_match): likewise - (cmd_defframesels): likewise - (cmd_fselect): use default.frame_selectors to select a frame. - -2004-03-01 Shawn Betts - - * configure.in: fix check for Xinerama.h - -2004-02-27 Shawn Betts - - * src/screen.c (screen_free_nums): new function. prototype added - (init_screens): init rp_frame_numset - (init_screen): set screen's frames_numset to rp_frame_numset - - * src/globals.h: new global prototype, rp_frame_numset - - * src/globals.c: new global, rp_frame_numset - - * src/split.c (find_last_frame): find the last from of all the - screens. prototype updated. Callers updated. - (find_frame_number): search all screens. prototype - updated. callers updated. - - * src/actions.c (cmd_fselect): select from frames in all screens. - - * src/window.c (give_window_focus): save the mouse position before - checking if win is NULL. - (give_window_focus): set rp_current_screen to xine_screen_num of - the window's screen. - (set_active_window): when using xinerama get the frame from the - current screen. - - * src/split.c (set_frames_window): update the window's scr - attribute to point to the frame's screen. - (find_window_for_frame): when xinerama is being used search all - windows. - (set_active_frame): update rp_current_screen to point to the - frame's screen. - - * src/screen.h (init_screens): new prototype - (is_rp_window_for_screen): likewise - - * src/screen.c: include string.h and X11/cursorfont.h - (init_screens): new function - (is_rp_window_for_screen): new function. - (init_screen): fill in xine_screen_num when using xinerama. - - * src/ratpoison.h: include xinerama.h - - * src/manage.c (current_screen): use xine_screen_num to find the - current screen. - (scanwins): use is_rp_window_for_screen to skip over ratpoison windows. - (scanwins): when using xinerama only manage windows inside the viewable area. - - * src/main.c (main): call init_xinerama and init_screens. Move - screen initing code to these functions. - (init_rat_cursor): move to screen.c - (init_screen): likewise - (find_screen): likewise - (clean_up): call free_xinerama - - - * src/group.c (group_last_window): only check windows in the - current screen, unless xinerama is being used in which case all - windows are accessible. - (group_next_window): likewise - (group_prev_window): likewise - - * src/globals.h: new globals rp_have_xinerama, xine_screen_num. - - * src/events.c (new_window): when using xinerama, the new window's - screen is the current screen. - (key_press): when using xinerama, use the current screen. - - * src/data.h (struct rp_screen): remove root_attr and add left, - top, width, height. All dependant code updated. Add xine_screen_num. - - * src/actions.c (cmd_remove): show the frame indicator in the new - current frame after removing the frame. - - * src/Makefile.am (ratpoison_SOURCES): add xinerama.c and xinerama.h - -2004-02-26 Shawn Betts - - * src/split.c (hide_frame_indicator): unmap all 'current frame' - indicator windows. - (show_frame_indicator): hide the 'current frame' indicator before - showing it. - -2004-01-30 Shawn Betts - - * src/actions.c (cmd_tmpwm): add an XSync() call - -2004-01-25 Ryan Yeske - - * src/actions.c (sync_wins): Change list_for_each_entry to - list_for_each_entry_safe. - (cmd_tmpwm): Unhide and maximize each mapped window before - spawning a new wm. - -2003-11-29 Ryan Yeske - - * src/communications.c (receive_command_result): Rename from - recieve_command_result. From paxed. - - * src/events.c (handle_signals): s/recieve/receive. - -2003-11-24 Shawn Betts - - * src/main.c (ratpoison_longopts): add "file" - (ratpoison_opts): add f: option - (print_help): print help for --file option - (read_startup_files): take an alternative rc file as an argument - and use it if it is non-NULL. - (main): parse the --file option. pass alt_rcfile to - read_startup_files. - -2003-11-22 Shawn Betts - - * contrib/Makefile.am (pkgdata_DATA): add rpshowall.sh - (EXTRA_DIST): likewise - -2003-11-17 Shawn Betts - - * contrib/rpshowall.sh: store ratpoison binary location in - RATPOISON env var. - - * src/ratpoison.h (FD_CLOEXEC): new define - (set_close_on_exec): new prototype - - * src/main.c (ratpoison_longopts): add "interactive" option. - (ratpoison_opts): likewise - (print_help): print a help line for interactive option. - (set_close_on_exec): new function - (read_startup_files): call set_close_on_exec on file pointer - (main): parse interactive command line option and pass it to - send_command. - - * src/events.c (execute_remote_command): pass the interactive bit - to command. - - * src/communications.c (send_command): send an interactive bit at - the beginning of the message. Take an interactive argument. All - callers updated. Prototype updated. - - * src/actions.c (cmd_source): call set_close_on_exec on file pointer. - -2003-11-16 Ryan Yeske - - * contrib/rpshowall.sh: Added file. From Florian Cramer - - -2003-11-02 Thien-Thi Nguyen - - * AUTHORS: Add self. - - * configure.in: Add "--disable-history" handling. - Conditionalize libhistory checks accordingly. - - * README: Mention "--disable history". - - * src/history.c: Surround most of the code with - "#ifdef HAVE_READLINE_HISTORY_H". - - * src/ratpoison.h: Only #include history.h when - "#ifdef HAVE_READLINE_HISTORY_H". - - * src/main.c (main, clean_up): Only load and save history, - respectively, when "#ifdef HAVE_READLINE_HISTORY_H". - - * src/editor.c (editor_history_previous, editor_history_next): - Return EDIT_NO_OP when not "#ifdef HAVE_READLINE_HISTORY_H". - (editor_enter): Do not do line expansion or history add - when not "#ifdef HAVE_READLINE_HISTORY_H". - - * doc/ratpoison.texi: Mention that history cycling and - processing is not available when ratpoison is configured - with the "--disable-history" option. - -2003-11-01 Shawn Betts - - * src/input.c (cook_keycode): null terminate the string. - -2003-10-24 Ryan Yeske - - * contrib/ratpoison.el: Added requires. - -2003-10-15 Shawn Betts - - * src/globals.c (rp_hook_db): add hooks quit and restart - (rp_quit_hook): new global - (rp_restart_hook): likewise - - * src/events.c (handle_signals): call the restart and quit hooks - -2003-09-24 Shawn Betts - - * contrib/clickframe.pl: put the patch at the end of the file and - make it runnable through patch. - - * contrib/Makefile.am (EXTRA_DIST): add clickframe.pl - (pkgdata_DATA): likewise - -2003-09-21 Shawn Betts - - * src/bar.c (prepare_bar): move and resize the window before mapping it. - -2003-09-04 Shawn Betts - - * src/actions.c (initialize_default_keybindings): use ROOT_KEYMAP - in the bind and unbind aliases. - -2003-09-02 Shawn Betts - - * src/main.c (show_welcome_message): search the root keymap for - the help binding. - (clean_up): call free_keymaps and not free_keybindings. - - * src/events.c (handle_key): call cmd_readkey to hand actually - reading a key from the keyboard. - - * src/data.h (typedef rp_keymap): new typedef - (struct rp_keymap): new struct - - * src/conf.h (ROOT_KEYMAP): new define - - * src/actions.h (cmd_readkey): new prototype - (cmd_newkmap): likewise - (cmd_delkmap): likewise - (cmd_definekey): likewise - (find_keymap): likewise - (keymap_free): likewise - (free_keymaps): likewise - - * src/actions.c (rp_keymaps): new global. remove globals - key_actions, key_actions_last, and key_actions_table_size. - (user_commands): remove bind and unbind. New commands readkey, - newkmap, delkmap, and definekey. - (find_keybinding_by_action): take a rp_keymap argument and operate - on it. All callers updated. - (find_keybinding): likewise - (find_command_by_keydesc): likewise - (resolve_command_from_keydesc): likewise - (add_keybinding): likewise - (remove_keybinding): likewise - (cmd_definekey): new function - (cmd_newkmap): likewise - (cmd_delkmap): likewise - (keymap_new): likewise - (keymap_free): likewise - (find_keymap): likewise - (free_keymaps): likewise - (cmd_bind): remove function. Prototype removed. - (cmd_unbind): likewise - (initialize_default_keybindings): add aliases for unbind and bind. - (ungrab_rat): moved from events.c - (grab_rat): likewise - - -2003-08-30 Shawn Betts - - * src/input.c (get_more_input): use XGrabKeyboard and XUngrabKeyboard - for changing focus to read key presses. - - * src/events.c (handle_key): use XGrabKeyboard and XUngrabKeyboard - for changing focus to read key presses. - - * src/actions.c (cmd_resize): use XGrabKeyboard and - XUngrabKeyboard for changing focus to read key presses. - (cmd_license): likewise - (cmd_help): likewise - (cmd_fselect): likewise - -2003-08-29 Shawn Betts - - * src/window.c (give_window_focus): use set_rp_window_focus. - - * src/split.c (set_active_frame): use set_window_focus. - (blank_frame): likewise - - * src/main.c (main): use set_window_focus. - - * src/input.c (get_more_input): use set_window_focus - - * src/globals.h (set_window_focus): new prototype - (set_rp_window_focus): likewise - - * src/events.c (handle_key): use set_window_focus. - - * src/actions.c (cmd_resize): use set_window_focus. - (cmd_license): likewise - (cmd_help): likewise - (cmd_tmpwm): likewise - (cmd_fselect): likewise - - * src/globals.c (set_rp_window_focus): new function - (set_window_focus): likewise - -2003-08-24 Shawn Betts - - * src/window.c (goto_window): don't do anything if the window is - already the current window. - (set_active_window): don't abort if last_win and win are the same. - -2003-08-22 Shawn Betts - - * src/window.c (set_active_window): don't do anything if the - window is already the focused window. - - * src/split.c (remove_all_splits): only hide the windows in the - current screen. - - * src/group.h (group_delete_group): new prototype - - * src/group.c (group_last_window): find the last window in the - current screen. - (group_next_window): find next window in current screen. - (group_prev_window): find previous window in current screen. - - * src/manage.c (force_maximize): call XSync() after first resize. - - * src/globals.h (GROUP_DELETE_GROUP_OK): new define - (GROUP_DELETE_GROUP_NONEMPTY): likewise - - * src/actions.h (cmd_gdelete): new prototype - - * src/actions.c (user_commands): new command gdelete - (cmd_gdelete): new command - -2003-08-10 Shawn Betts - - * src/editor.c (editor_enter): return EDIT_ABORT if there was an - error with the history retrieval. - - * src/bar.c (get_mark_box): take the bar padding into account when - calculate the top of the highlight bar. - (prepare_bar): just use height for the height of the window. - (marked_message): add the padding to the height of the window. - - * src/window.c (give_window_focus): only save the pointer position - when win and last_win aren't the same window. - - * src/actions.h (cmd_listhook): new prototype - - * src/actions.c (use_commands): new command listhook - (cmd_remhook): fix error messages - (hook_completions): new function - (cmd_listhook): likewise - -2003-08-02 Shawn Betts - - * src/actions.c (cmd_number): rename the window's group number - instead of it's internal number. - -2003-07-16 Shawn Betts - - * src/hook.c: include string.h - - * src/window.c (set_active_window): run the switch window hook. - - * src/split.c (set_active_frame): run the switch frame hook. - - * src/ratpoison.h: include hook.h - - * src/group.h (set_current_group): new prototype - - * src/group.c (set_current_group): new function - - * src/globals.h (rp_prefix_hook): new extern - (rp_switch_win_hook): likewise - (rp_switch_frame_hook): likewise - (rp_switch_group_hook): likewise - (rp_hook_db): likewise - - * src/globals.c (rp_prefix_hook): new hook - (rp_switch_win_hook): likewise - (rp_switch_frame_hook): likewise - (rp_switch_group_hook): likewise - (rp_hook_db): new global - - * src/events.c (handle_key): call the prefix hook. - - * src/data.h (struct rp_hook_db_entry): new struct - - * src/actions.h (cmd_addhook): new prototype - (cmd_remhook): likewise - - * src/actions.c (user_commands): add commands addhook and remhook. - (cmd_windows): show the window bar no matter what if the bar - timeout is > 0. - (cmd_gnext): call set_current_group - (cmd_gprev): likewise - (cmd_gnew): likewise - (cmd_gselect): likewise - (cmd_addhook): new function - (cmd_remhook): likewise - - * src/Makefile.am (ratpoison_SOURCES): add hook.c and hook.h - -2003-06-29 Shawn Betts - - * src/editor.c (editor_enter): return EDIT_ABORT when a history - expansion fails. - -2003-06-25 Shawn Betts - - * contrib/rpws: only set RATPOISON if it's not already set. - - * src/actions.c (cmd_gmove): prompt the user if no group is passed - as an argument. - - * contrib/rpws: call /bin/bash - (rp_call): remove extraneous 'function' keyword in function declaration. - (ws_init_ws): likewise - (ws_init): likewise - (ws_save): likewise - (ws_restore): likewise - (ws_bindings): likewise - -2003-06-24 Shawn Betts - - * contrib/rpws (rp_call): Don't print debug information. - - * src/actions.c (cmd_resize): fix error message text - (cmd_resize): likewise - (cmd_defresizeunit): likewise - (cmd_defresizeunit): likewise - (cmd_chdir): likewise - (cmd_frestore): likewise - (cmd_frestore): likewise - (cmd_defwinliststyle): likewise - (cmd_defwinliststyle): likewise - (cmd_gmove): likewise - (cmd_gmove): likewise - (cmd_gmerge): likewise - -2003-06-22 Shawn Betts - - * src/actions.c (cmd_groups): print a * beside the current - group. if non-interactively called, return the string. - (sync_wins): rewrite. - (cmd_groups): always print a column in non-interactive mode. - -2003-06-21 Shawn Betts - - * contrib/Makefile.am (bin_SCRIPTS): add rpws - -2003-06-14 Shawn Betts - - * src/window.c (set_active_window): remove duplicate call to - unhide_window, it is made in give_window_focus. Call - give_window_focus before calling hide_others. - -2003-06-02 Shawn Betts - - * src/group.c (groups_merge): don't merge a group with itself. - - * src/bar.c (draw_mark): abort if mark_end is the beginning of the - line or the start and end of the mark is the same. - - * src/actions.c (group_completions): use a group's number if it - has no name. - -2003-05-31 Shawn Betts - - * configure.in: check for usleep - -2003-05-28 Shawn Betts - - * src/completions.c (completions_complete): if direction is - COMPLETION_PREVIOUS, then set last_match to it's previous entry. - - * src/globals.h (COMPLETION_NEXT): new define - (COMPLETION_PREVIOUS): likewise - - * src/editor.c (editor_complete): remove prototype - (editor_complete_prev): new prototype - (editor_complete_next): likewise - (editor_insert): make it a static function. update prototype - (edit_bindings): add editor_complete_prev. replace editor_complete - with editor_complete_next. - (editor_complete): call completions_complete - (editor_complete_next): new function - (editor_complete_prev): likewise - - * src/completions.h (completions_next_completion): remove prototype - (completions_update): likewise - (completions_assign): likewise - (completions_complete): new prototype - - * src/completions.c (completions_assign): make it a static - function - (completions_update): likewise - (completions_prev_match): new function - (completions_next_match): likewise - (completions_complete): renamed from - completions_next_completion. call completions_next_match and - completions_prev_match. - -2003-05-27 Shawn Betts - - * src/completions.c (completions_next_completion): check - c->last_match as a match to partial on a virgin completion. - - * src/group.c (free_groups): new function - - * src/group.h (free_groups): new prototype - - * src/main.c (clean_up): call free_groups - - * src/actions.c (cmd_fdump): free the string returned by frame_dump. - - * src/completions.c (completions_update): free new_list. - - * src/editor.c (input_line_free): free the completions structure - in line. - - * configure.in: add a check for libhistory. - - * src/editor.c (saved_command): new local global - (edit_binding): new typedef - (edit_binding): new struct - (edit_bindings): new local global - (input_line_new): new function - (input_line_free): likewise - (execute_edit_action): likewise - (editor_forward_char): likewise - (editor_backward_char): likewise - (editor_forward_word): likewise - (editor_backward_word): likewise - (editor_beginning_of_line): likewise - (editor_end_of_line): likewise - (editor_delete_char): likewise - (editor_backward_delete_char): likewise - (editor_kill_word): likewise - (editor_backward_kill_word): likewise - (editor_kill_line): likewise - (editor_backward_kill_line): likewise - (editor_history_previous): likewise - (editor_history_next): likewise - (editor_abort): likewise - (editor_no_action): likewise - (editor_insert): likewise - (editor_enter): likewise - (paste_cut_buffer): likewise - (paste_primary_selection): likewise - (editor_paste_selection): likewise - (editor_complete): likewise - (editor_forward_char): new prototype - (editor_backward_char): likewise - (editor_forward_word): likewise - (editor_backward_word): likewise - (editor_beginning_of_line): likewise - (editor_end_of_line): likewise - (editor_delete_char): likewise - (editor_backward_delete_char): likewise - (editor_kill_word): likewise - (editor_backward_kill_word): likewise - (editor_kill_line): likewise - (editor_paste_selection): likewise - (editor_abort): likewise - (editor_no_action): likewise - (editor_enter): likewise - (editor_history_previous): likewise - (editor_history_next): likewise - (editor_complete): likewise - (editor_backward_kill_line): likewise - - * src/sbuf.h (sbuf): add node field. - - * src/main.c (xrealloc): don't print debugger output - (init_defaults): init history_size - (main): initialize rp_selection - (main): load history - (clean_up): save history - - * src/linkedlist.h (list_first): new macro - - * src/input.h (free_history): remove prototype - (ring_bell): new function - - * src/input.c: include unistd.h - (input_history): remove - (input_num_history_entries): likewise - (update_input_window): remove prompt, input, and input_len - arguments. add line argument. - (update_input_window): use line argument. - (ring_bell): new function - (get_input): take completion_fn argument. prototype and callers - updated. - (free_history): remove function - (get_more_input): take completion_fn argument. prototype and - callers updated. use line structure and its functionality. - - * src/globals.h (MAX_FONT_WIDTH): new define - (rp_selection): new extern - - * src/globals.c (rp_selection): new global - - * src/completions.h (completions_new): new prototype - (completions_free): likewise - (completions_assign): likewise - (completions_update): likewise - (completions_next_completion): likewise - - - * src/completions.c (completions_new): new function - (completions_free): likewise - (completions_assign): likewise - (completions_update): likewise - (completions_next_completion): likewise - - * src/Makefile.am (ratpoison_SOURCES): add editor.c editor.h - history.h and history.c - - * src/data.h (rp_completions): new typedef - (rp_input_line): likewise - (completion_fn): likewise - (rp_defaults): new field, history_size - (rp_completions): new struct - (rp_input_line): new struct - - * src/conf.h (MAX_HISTORY_SIZE): new define - (HISTORY_FILE): likewise - (VISUAL_BELL): likewise - (MODIFIER_PREFIX): set to RP_CONTROL_MASK - (INPUT_ABORT_MODIFIER): likewise - (INPUT_PREV_HISTORY_MODIFIER): likewise - (INPUT_NEXT_HISTORY_MODIFIER): likewise - (RESIZE_VGROW_MODIFIER): likewise - (RESIZE_VSHRINK_MODIFIER): likewise - (RESIZE_HGROW_MODIFIER): likewise - (RESIZE_HSHRINK_MODIFIER): likewise - - * src/actions.c (trivial_completions): new function - (window_completions): likewise - (colon_completions): likewise - (exec_completions): likewise - (cmd_select): pass window_completions to get_input - (cmd_rename): pass trivial_completions to get_input - (cmd_colon): pass colon_completions to get_input and - get_more_input - (cmd_exec): pass exec_completions to get_input - (cmd_newwm): pass trivial_completions to get_input - (cmd_resize): convert the keysym modifier to something ratpoison - understands. - -2003-05-25 Shawn Betts - - * src/Makefile.am (ratpoison_SOURCES): add completions.c and completions.h - - * src/actions.c (cmd_gmerge): show a message if the group - specified by the user could not be found. - (cmd_gselect): if the user didn't type anything then return. - - * src/window.c: do not include ctype.h - - * src/ratpoison.h (str_comp): new prototype - - * src/messages.h (MESSAGE_PROMPT_SWITCH_TO_GROUP): new define - - * src/main.c: include ctype.h - (str_comp): moved from window.c - - * src/group.h (groups_find_group_by_name): new prototype. - (groups_find_group_by_number): likewise. - (groups_merge): likewise - (group_move_window): likewise - - * src/group.c: include string.h - (group_new): new argument, name. All callers updated. prototype - updated. - (init_groups): create the first group with DEFAULT_GROUP_NAME as - its name. - (group_new): new argument, name. All callers updated. Prototype - updated. - (group_free): free the group's name. - (group_add_new_group): new argument, name. All callers - updated. Prototype updated. - (groups_find_group_by_name): new function - (groups_find_group_by_number): likewise - (group_move_window): likewise - (groups_merge): likewise - - * src/conf.h (DEFAULT_GROUP_NAME): new define - - * src/actions.h (cmd_gselect): new prototype - (cmd_groups): likewise - (cmd_gmove): likewise - (cmd_gmerge): likewise - (cmd_gnewbg): likewise - - * src/actions.c (user_commands): new commands gselect, groups, - gmove, gmerge, gnewbg. - (cmd_gnewbg): new function - (find_group): likewise - (cmd_gselect): likewise - (cmd_groups): likewise - (cmd_gmove): likewise - (cmd_gmerge): likewise - - * src/bar.c (reset_alarm): new function - (show_bar): call reset_alarm() - (count_lines): make function static. clean up code. - (max_line_length): likewise - (pos_in_line): likewise - (line_beginning): likewise - (draw_string): new static function - (correct_mark): likewise - (prepare_bar): likewise - (get_mark_box): likewise - (draw_inverse_box): likewise - (draw_mark): likewise - (update_last_message): likewise - (marked_message): Move most of the code to seperate function - calls. Call reset_alarm(), prepare_bar(), draw_string(), - correct_mark(), draw_mark(), and update_last_message(). - - * src/actions.c (cmd_select): fix crash bug. - - * src/window.c (get_window_list): mark_end is the length of the - string. Don't do a special case if the window list is being - displayed as a column. - - * src/input.c (read_key): Do not wait for the key release - event. Remove gobble_rel argument. Callers updated. - -2003-05-24 Shawn Betts - - * src/group.h (group_resort_window): new prototype - - * src/group.c (group_find_window_by_number): return - rp_window_elem*. Dependant code updated. - (group_insert_window): new function - (group_in_list): likewise - (group_resort_window): likewise - (group_map_window): insert the window and sort the list. - - * src/actions.c (cmd_number): Change the group number of the - window. - (cmd_resize): print an error message if the command was called - interactively with <2 arguments. - -2003-05-21 Shawn Betts - - * src/actions.c (cmd_resize): fail if data == NULL when called - non-interactively. - -2003-05-20 Shawn Betts - - * src/linkedlist.h: Move all C function to linkedlist.c - -2003-05-19 Shawn Betts - - * src/window.c (find_window): add debugging output describing - which window list the window was found in. - - * src/group.c (group_new): assign the group's number the number - passed as an argument. - - * src/events.c (destroy_window): withdraw iconified and normal - windows before unmanaging them. - (handle_signals): delete the node from the list before freeing it. - - * src/bar.h (message): remove define. - (marked_wrapped_message): remove prototype - (message): new prototype - - * src/bar.c (message): new function - (marked_wrapped_message): renamed to marked_message. remove - marked_message. - -2003-05-18 Shawn Betts - - * src/bar.c (marked_wrapped_message): Free the GC's created with - XCreateGC. - -2003-05-17 Shawn Betts - - * configure.in: version bump to 1.3.0-cvs - - * src/main.c (chld_handler): Variable declaration placed in proper - location. - - * src/actions.c (spawn): always put the DISPLAY string in the - environment. - -2003-05-16 Shawn Betts - - * src/window.c (add_to_window_list): add the window to the current - group. - (find_window_name): search the current group for a matching - window. - (find_window_other): likewise. - (format_window_name): take a rp_window_elem as an argument, not an - rp_window. Print the group window's number, not the window's - internal number. - (get_window_list): loop through the current group. - - * src/split.c (find_window_for_frame): search the current group - for a window to fit in the frame. - - * src/ratpoison.h: include globals.h and group.h - - * src/manage.c (unmanage): remove the window from any groups it - was in. - (map_window): map the window in any groups it is in. - (withdraw_window): unmap the window in any groups it is in. - - * src/main.c: Move all globals to globals.h - (main): initialize the group functions. - - * src/data.h: Move all defines and extern globals to globals.h - (struct rp_window_elem): new struct - (struct rp_group): likewise - - * src/actions.h (cmd_gnext): new prototype - (cmd_gprev): likewise - (cmd_gnew): likewise - - * src/actions.c (user_commands): new commands gnext, gprev, and gnew - (cmd_prev): fix to work with new group code. - (cmd_next): likewise - (cmd_gnext): new function - (cmd_gprev): likewise - (cmd_gnew): likewise - - * src/Makefile.am (ratpoison_SOURCES): add files globals.h, - globals.c, group.h and group.c - -2003-05-15 Shawn Betts - - * src/data.h (struct rp_frame): renamed from rp_window_frame. All - dependant code updated. - - * src/main.c: remove child_info global. Add rp_children global. - (chld_handler): update the terminated and status fields of any - terminated children. - - * src/events.c (handle_signals): loop through each child process - and remove them from the list. Print a message for any child that - doesn't return a 0 status. - - * src/data.h (rp_child_info): new fields, terminated and node. - remove child_info global. Add rp_children global. - - * src/actions.c (spawn): Add the command to the list of children. - -2003-05-14 Shawn Betts - - * src/data.h (struct rp_screen): rename from - screen_info. Dependant code updated. - -2003-05-09 Shawn Betts - - * src/manage.h (clear_unmanaged_list): new prototype - (list_unmanaged_windows): likewise - (add_unmanaged_window): likewise - - * src/manage.c (unmanaged_window_list): no longer a const. - (num_unmanaged_windows): new static global - (clear_unmanaged_list): new function - (list_unmanaged_windows): likewise - (add_unmanaged_window): likewise - (unmanaged_window): use num_unmanaged_windows to tell how many - elements are in the unmanaged list. - - * src/actions.h (cmd_unmanage): new prototype - (cmd_clrunmanaged): likewise - - * src/actions.c (user_commands): new commands unmanage, - clrunmanaged. - (cmd_unmanage): new function - (cmd_clrunmanaged): likewise - - * src/split.c (split_frame): call update_bar() instead of - update_window_names(). - (set_active_frame): likewise - (blank_frame): likewise - - * src/bar.h (update_bar): new prototype. - - * src/bar.c (BAR_IS_HIDDEN): new define. - (update_bar): new function. - - * src/actions.c (cmd_frestore): call update_bar() instead of - update_window_names(). - - * src/split.c (set_active_frame): update the window list after - switching frames. - (blank_frame): update the window list after blanking the screen. - - * src/actions.c (cmd_frestore): update the window list after - restoring the frames. - - * src/split.c (split_frame): update the window list after the - split. - -2003-04-13 Shawn Betts - - * src/main.c (main): if the screen was specified on the - command-line, send the command to the correct screen. - - * src/communications.c (send_command): new argument, - screen_num. Get the root window for the specified - screen. prototype updated. - - * src/main.c (init_screen): print the display string for - debugging. - (ratpoison_opts): fix -c option by adding a : after it. - - * src/manage.c (current_screen): search for the current screen - using rp_current_screen. - - * src/main.c (main): add switch case for the display command line - option. - (print_help): add --display option. Add text to demonstrate - --display and --command take an argument. - (ratpoison_longopts): add display. - (ratpoison_longopts): add screen. - (ratpoison_opts): add 'd' - (ratpoison_opts): add 's' - (main): parse the screen argument and process it. - (print_help): add --screen - - * src/manage.c (get_wmname): add debugging output to print - returned elements from X11 call. - -2003-04-11 Shawn Betts - - * src/manage.c (get_wmname): add a debug line to print the - property returned. - (get_wmname): add newline in debug print out. - (get_wmname): fail if n is 0. - - * src/window.c (window_name): use WIN_NAME_* defines for possible - defaults.win_name values. - (window_name): remove case WIN_NAME_TITLE and glob it with the - default switch. - - * src/main.c (init_defaults): use WIN_NAME_* defines for - possible defaults.win_name values. - - * src/actions.c (cmd_defwinname): use WIN_NAME_* defines for - possible defaults.win_name values. - (cmd_defwinname): likewise - - * src/data.h (WIN_NAME_TITLE): new define - (WIN_NAME_RES_CLASS): new define - (WIN_NAME_RES_NAME): new define - - * src/window.c (add_to_window_list): use xstrdup to create the - default value for user_name. - -2003-04-10 Shawn Betts - - * src/events.c (unmap_notify): fix crash bug in NormalState case. - -2003-04-09 Shawn Betts - - * configure.in (TERM_PROG): Add doc string - - * src/events.c (receive_command): handle the case when more than - one client requests a command (fix infinite loop bug). - -2003-04-08 Shawn Betts - - * src/main.c (WAIT_ANY): define it if it isn't already define. - -2003-04-07 Shawn Betts - - * src/input.c (read_key): remove the local variable, key_presses. - - * src/Makefile.am (ratpoison_SOURCES): add linkedlist.h - - * src/bar.c (marked_message): pass correct arguments to bar_y. - - * src/actions.c (cmd_defwinliststyle): error messages print the - correct command name. - -2003-04-06 Shawn Betts - - * src/actions.h: All cmd_* functions take char* instead of - void*. All callers updated. - - * src/bar.c (marked_wrapped_message): make the marked line span - the whole line. - - * src/actions.c (cmd_number): update any frames pointing to the - windows that have changed. - -2003-04-05 Shawn Betts - - * src/window.c (get_window_list): if window_list_style is STYLE_COLUMN then - the end of the mark is the length of the buffer minus the start of - the mark. - - * src/main.c (init_defaults): init window_list_style to STYLE_ROW. - - * src/input.c (update_input_window): store the height in a - variable. - - * src/data.h (struct rp_defaults): new member, window_list_style. - - * src/bar.h [message]: wrap msg arg in parens. - (marked_wrapped_message): new prototype - - * src/bar.c (bar_y): new argument, height. All callers updated. - (bar_y): use height in calculations. - (update_window_names): print a column of windows if - defaults.window_list_style is in column mode. - (count_lines): new function - (max_line_length): likewise - (pos_in_line): likewise - (line_beginning): likewise - (marked_wrapped_message): likewise - - * src/actions.c (user_commands): new commands 'verbexec' and - 'defwinliststyle'. Move @end take to after the def* commands. - (cmd_verbexec): new function. Added prototype. - (cmd_defwinliststyle): likewise - -2003-04-04 Shawn Betts - - * src/split.c (set_active_frame): fix NULL pointer crash bug. - - * src/actions.c (cmd_setenv): properly parse the environment name - and value using strtok. - - * src/window.c (add_to_window_list): init the window's frame_number to EMPTY. - - * src/number.h (numset_clear): new prototype - - * src/manage.c (unmanage)[AUTO_CLOSE]: code update for new globals. - - * src/frame.c (frame_new): init f->last_access to 0. - (frame_dump): dump the X11 window ID, not the window number. - (frame_read): new function - - * src/events.c (destroy_window): just unmanage the window. - - * src/actions.h (cmd_fdump): new prototype - (cmd_frestore): likewise - - * src/actions.c (user_commands): new commands "fdump" and "frestore". - (cmd_fdump): new function - (cmd_frestore): likewise - - * src/number.c (numset_clear): new function. - -2003-03-31 Shawn Betts - - * src/window.c (set_current_window): use current_frame() - - * src/split.h (current_frame): new prototype - - * src/split.c (current_frame): new function - (current_window): use current_frame() - (split_frame): likewise - (remove_all_splits): likewise - (set_active_frame): likewise - (show_frame_message): likewise - (remove_all_splits): use current_screen() - - * src/actions.c (cmd_prev_frame): use current_frame() - (cmd_next_frame): likewise - (cmd_select): likewise - (cmd_h_split): likewise - (cmd_v_split): likewise - (cmd_remove): likewise - (cmd_shrink): likewise - (cmd_resize): likewise - (cmd_focusup): likewise - (cmd_focusdown): likewise - (cmd_focusleft): likewise - (cmd_focusright): likewise - -2003-03-30 Shawn Betts - - * src/split.c (current_window): call screen_get_frame. - (split_frame): call screen_get_frame to get appropriate structure. - (split_frame): call find_window_number to get appropriate - structure. - (remove_all_splits): call screen_get_frame to get appropriate - structure. - (resize_frame): make sure all frames that will be resized are big - enough for the resize. - (resize_frame): return int - (resize_shrink_to_window): call find_window_number to get the - appropriate structure. - (resize_frame_right): return int - (resize_frame_left): likewise - (resize_frame_top): likewise - (resize_frame_bottom): likewise - (resize_frame_horizontally): backup the frameset and restore it if - the resize fails. Do not allow a frame to be resized too small or - too big. - (resize_frame_vertically): likewise - (remove_frame): call find_window_number to get the appropriate - structure. - (set_active_frame): likewise - (blank_frame): likewise - (show_frame_message): call screen_get_frame to get the appropriate - structure. - - * src/screen.c (screen_width): new function (and prototype) - (screen_height): likewise - (screen_left): likewise - (screen_right): likewise - (screen_top): likewise - (screen_bottom): likewise - (screen_copy_frameset): likewise - (screen_restore_frameset): likewise - (frameset_free): likewise - (screen_get_frame): likewise - - * src/split.c (maximize_frame): call screen_width and - screen_height to get the size for the frame. - - * src/ratpoison.h: include screen.h - - * src/manage.c (move_window): - - * src/frame.h (frame_copy): new prototype - (frame_dump): likewise - - * src/frame.c (frame_copy): new function - (frame_dump): likewise - - * src/events.c (unmap_notify): compare frame numbers, not - pointers. - (client_msg): call screen_get_frame when blanking the frame. - - * src/data.h (EMPTY): new define - (struct rp_window_frame): replace the win field with - win_number. Dependant code updated. - (struct rp_window): replace frame with frame_number. Dependant - code updated. - (struct screen_info): replace rp_current_frame with current_frame - and change type to int. Dependant code updated. - - * src/Makefile.am (ratpoison_SOURCES): added screen.h and screen.c - -2003-03-25 Shawn Betts - - * src/split.h (show_frame_message): new prototype - - * src/split.c (show_frame_message): new function - - * src/main.c (init_screen): listen for key release events in the - key_window and input_window. - - * src/input.c (read_key): new argument, gobble_rel. All callers - updated. - - * src/actions.c (cmd_remove): only remove the current frame if it - isn't the ONLY one. - (cmd_remove): display a message informing the user if the frame - cannot be removed. - (cmd_resize): clean up resize loop. - (cmd_resize): display a window indicating which frame is being - resized. - -2003-03-23 Shawn Betts - - * src/split.c (resize_frame_vertically): fix typo error (frame_top - not frame_left). - -2003-03-17 Shawn Betts - - * src/split.c (resize_frame_horizontally): only resize to the left - if the frame isn't against the left side of the screen. - (resize_frame_vertically): only resize to the left - if the frame isn't against the top of the screen. - - * src/actions.c (initialize_default_keybindings): add keybindings - for fselect and resize. Move keybinding for curframe. - - * src/split.c (create_initial_frame): call frame_new to allocate a frame. - (split_frame): likewise - - * src/main.c (free_screen): call frame_free to free the screen - frames. - - * src/frame.h (frame_new): new prototype - (frame_free): likewise - - * src/frame.c (frame_new): new function. - (frame_free): likewise - -2003-03-07 Shawn Betts - - * src/Makefile.am (ratpoison_SOURCES): add frame.c and frame.h - - * src/frame.h (frame_left): new prototype - (frame_top): likewise - (frame_right): likewise - (frame_bottom): likewise - (frame_width): likewise - (frame_height): likewise - (frame_resize_left): likewise - (frame_resize_right): likewise - (frame_resize_up): likewise - (frame_resize_down): likewise - (frame_move_left): likewise - (frame_move_right): likewise - (frame_move_up): likewise - (frame_move_down): likewise - - * src/frame.c (frame_left): new function - (frame_top): likewise - (frame_right): likewise - (frame_bottom): likewise - (frame_width): likewise - (frame_height): likewise - (frame_resize_left): likewise - (frame_resize_right): likewise - (frame_resize_up): likewise - (frame_resize_down): likewise - (frame_move_left): likewise - (frame_move_right): likewise - (frame_move_up): likewise - (frame_move_down): likewise - - * src/split.c (resize_frame): new function - (resize_frame_right): likewise - (resize_frame_left): likewise - (resize_frame_top): likewise - (resize_frame_bottom): likewise - (resize_frame_horizontally): use resize_frame_right and - resize_frame_left to do the resizing. - (resize_frame_vertically): use resize_frame_top and - resize_frame_bottom to do the resizing. - - * src/ratpoison.h (PRINT_ERROR): flush stdout - (PRINT_DEBUG): likewise - include frame.h - -2003-03-06 Shawn Betts - - * src/split.h (find_frame_number): new prototype - - * src/split.c (create_initial_frame): give a number to the - initial frame - (split_frame): give the new frame a unique number - (split_frame): add the new frame after the current frame - (remove_all_splits): return the frame's number when deleting it. - (remove_frame): likewise - (find_frame_number): new function - - * src/main.c (init_screen): initialize the frames_numset member - (free_screen): free the frames_numset member - - * src/data.h (struct screen_info): new member, frames_numset - - * src/actions.h (cmd_fselect): new prototype - - * src/actions.c (user_commands): new command "fselect" - (cmd_fselect): new function - - * src/Makefile.am (ratpoison_SOURCES): remove list.h and list.c, - add window.c and window.h - - * src/ratpoison.h: include window.h instead of list.h - - * src/main.c (main): call init_window_stuff(). Remove call to init_numbers(). - (clean_up): call free_window_stuff(). Remove call to free_numbers(). - - * src/list.h (free_window_stuff): new prototype - (init_window_stuff): likewise - - * src/list.c (rp_window_numset): new global - (init_window_stuff): new function - (free_window_stuff): new function - - * src/data.h (rp_window_numset): new extern - - * src/number.c (numset_init): new function - (number_is_taken): rename to numset_num_is_taken, callers updated. - (find_empty_cell): rename to numset_find_empty_cell, callers updated. - (add_window_number): rename to numset_add_num, callers updated. - (return_window_number): rename to numset_release, callers updated. - (init_numbers): remove function - (free_numbers): rename to numset_free, callers updated. - (numset_num_is_taken): take struct numset* as an argument. - (numset_find_empty_cell): likewise - (numset_add_num): likewise - (numset_request): likewise - (numset_release): likewise - (numset_free): likewise - (numset_new): new function - -2003-02-27 Shawn Betts - - * src/main.c (free_screen): new function - (clean_up): call free_screen on each screen. free the screen - array. free defaults.window_fmt. - - * src/number.h (free_numbers): new prototype - - * src/number.c (free_numbers): new function - - * src/manage.c (get_wmname): use XGetWindowProperty to get the - window name. - (unmanaged_window): free wname after using it. - - * src/main.c (wm_name): new global - (main): internalize WM_NAME atom. - (clean_up): free data structures for keybindings, aliases, the - bar, window numbers, and input history. - - * src/input.h (free_history): new prototype - - * src/input.c (free_history): new function - - * src/events.c (execute_remote_command): free properties returned - by XGetWindowProperty(). - - * src/data.h (wm_name): new extern - - * src/communications.c (recieve_command_result): free properties - returned by XGetWindowProperty(). - - * src/bar.h (free_bar): new prototype - - * src/bar.c (update_window_names): bar_buffer is not static. - (update_window_names): free bar_buffer after using it. - (marked_message): free the GC after using it. - (free_bar): new function. - - * src/actions.h (free_keybindings): new prototype - (free_aliases): likewise - - * src/actions.c (free_keybindings): new function - (free_aliases): likewise - (cmd_tmpwm): unmap the key window before calling the new wm, and - remap it afterwards. - -2003-02-24 Shawn Betts - - * src/actions.c (cmd_tmpwm): unmap the key window before spawning - the wm and map it afterwards. - -2003-02-23 Shawn Betts - - * src/split.c (remove_all_splits): fix bug hiding windows not in - the current frame. - - * src/split.h (cleanup_frame): new protoype - - * src/manage.c (scanwins): added better debugging output - - * src/events.c (cleanup_frame): move to split.c - (handle_key): ungrab the rat right after we read the key. - - * src/actions.h (cmd_tmpwm): new prototype. - - * src/actions.c (spawn): return the pid of the child - process. prototype updated. - (cmd_tmpwm): new function - (user_commands): new command, tmp_wm. - -2003-02-22 Shawn Betts - - * configure.in: don't check for variable argument support in - preprocessor. - - * src/ratpoison.h (PRINT_LINE): new macro. - (PRE_PRINT_LOCATION): remove macro - (PRINT_ERROR): takes one argument which is the argument list - ,parens and all, to be passed to printf. Callers updated. - - * src/linkedlist.h (list_direction_entry): no longer returns NULL - if there is only one element in the list. Instead, returns the - same element again and again. - - * src/actions.c (cmd_number): use list delete entry macro - (cmd_number): likewise - (cmd_escape): use list looping macro - (cmd_escape): likewise - (cmd_defpadding): likewise - (cmd_defborder): likewise - - * src/data.h: include linkedlist.h - (struct rp_window_frame): use struct list_head instead of next, - prev pointers. - (struct rp_window): likewise - (struct screen_info): rename rp_window_frame_sentinel to - rp_window_frames and change it's type to list_head. - - * src/events.c (mapping_notify): use list looping macro - (mapping_notify): likewise - - * src/list.c: rename rp_unmapped_window_sentinel to - rp_unmapped_window and rp_mapped_window_sentinel to - rp_mapped_window. Use LIST_HEAD to create them. externs updated. - (add_to_window_list): use list add entry macro. - (find_window_in_list): list head is of type list_head. Prototype - and callers updated. - (find_window_in_list): use list looping macro - (init_window_list): remove function - (find_window_number): use list looping macro - (find_window_name): likewise - (find_window_prev): use list previous entry macro - (find_window_next): use list next entry macro - (find_window_other): use list looping macro - (append_to_list): remove function - (insert_into_list): use list looping macro - (insert_into_list): use list add entry macro - (remove_from_list): remove function - (get_window_list): use list looping macro - - * src/main.c (main): do not call init_window_list() - - * src/manage.c (unmanage): use list delete macro - (map_window): likewise - (withdraw_window): use list moving macro to move entry to - another list. - (hide_others): use list looping macro - - * src/split.c (num_frames): use list looping macro - (frames_screen): likewise - (maximize_all_windows_in_frame): likewise - (delete_frame_from_list): remove function - (create_initial_frame): remove list init code. Add current frame - to screen's frame list. - (init_frame_list): use list init macro - (find_last_frame): use list looping macro - (find_windows_frame): likewise - (find_frame_next): use list next entry macro - (find_frame_prev): use list previous entry macro - (find_window_for_frame): use list looping macro - (split_frame): use list add entry macro - (remove_all_splits): use list looping macro - (resize_frame_vertically): likewise - (resize_frame_horizontally): likewise - (total_frame_area): likewise - (frame_overlaps): likewise - (remove_frame): likewise - (find_frame_up): likewise - (find_frame_down): likewise - (find_frame_left): likewise - (find_frame_right): likewise - -2003-02-10 Shawn Betts - - * src/split.h (num_frames): new prototype - (resize_shrink_to_window): likewise - (resize_frame_vertically): likewise - (resize_frame_horizontally): likewise - - * src/split.c (num_frames): no longer a static function - (resize_shrink_to_window): new function - (resize_frame_vertically): likewise - (resize_frame_horizontally): likewise - - * src/main.c (init_defaults): init frame_resize_unit. - - * src/data.h (struct rp_defaults): new member frame_resize_unit. - - * src/conf.h (RESIZE_VGROW_KEY): new define - (RESIZE_VGROW_MODIFIER): likewise - (RESIZE_VSHRINK_KEY): likewise - (RESIZE_VSHRINK_MODIFIER): likewise - (RESIZE_HGROW_KEY): likewise - (RESIZE_HGROW_MODIFIER): likewise - (RESIZE_HSHRINK_KEY): likewise - (RESIZE_HSHRINK_MODIFIER): likewise - (RESIZE_SHRINK_TO_WINDOW_KEY): likewise - (RESIZE_SHRINK_TO_WINDOW_MODIFIER): likewise - (RESIZE_END_KEY): likewise - (RESIZE_END_MODIFIER): likewise - - * src/actions.h (cmd_shrink): new prototype - (cmd_resize): likewise - (cmd_defresizeunit): likewise - - * src/actions.c (user_commands): add commands cmd_resize and - cmd_shrink, and cmd_defresizeunit. - (cmd_shrink): new function - (cmd_resize): likewise - (cmd_defresizeunit): likewise - -2003-01-30 Shawn Betts - - * src/actions.c (cmd_bind): more informative error messages - (cmd_unbind): likewise - (cmd_source): likewise - (cmd_select): likewise - (cmd_number): likewise - (cmd_escape): likewise - (cmd_h_split): likewise - (cmd_v_split): likewise - (cmd_rudeness): likewise - (cmd_gravity): likewise - (cmd_defwingravity): likewise - (cmd_deftransgravity): likewise - (cmd_defmaxsizegravity): likewise - (cmd_msgwait): likewise - (cmd_defbargravity): likewise - (cmd_defbargravity): likewise - (cmd_defborder): likewise - (cmd_defbarborder): likewise - (cmd_definputwidth): likewise - (cmd_definputwidth): only accept input widths >=0 - (cmd_chdir): add error message if HOME environment variable is not - set. - (cmd_chdir): add error message if chdir fails. - (cmd_rudeness): only accept rudeness numbers between 0 and 15 - (cmd_msgwait): only accept waiting times >=0 - -2003-01-25 Shawn Betts - - * src/actions.c (cmd_help): Print key binding when called - non-interactively. - (cmd_defwaitcursor): error message correctly shows what command - the error occurred in. - (cmd_rudeness): rudeness data correctly stored in rudeness - variables. - -2002-12-11 Shawn - - * configure.in (AC_CHECK_FUNCS): Add check for putenv, remove - check for setenv and unsetenv. - - * src/actions.c (setenv): remove function - (unsetenv): likewise - (cmd_setenv): use putenv instead of setenv. - (cmd_unsetenv): likewise - -2002-12-09 Shawn Betts - - * src/actions.c (spawn): only add DISPLAY to the environment if it - isn't already there. - -2002-11-24 Shawn Betts - - * src/main.c: include sys/wait.h - (chld_handler): new function - - * src/events.c: include sys/wait.h - (handle_signals): Print an error message in the case of a child - signal. - - * src/data.h (struct rp_child_info): New struct. - (child_info): New global. - (chld_signalled): likewise - - * src/actions.c (spawn): Let the SIGCHLD handler handle process - completion instead of doing an ugly dance. - -2002-11-20 Shawn Betts - - * src/ratpoison.h[!HAVE_VARARG_MACROS]: PRINT_ERROR and - PRINT_DEBUG are defined as void macros. - - * src/events.c (client_msg): Add semicolon to the end of a - PRINT_DEBUG line. - - * src/actions.c (cmd_bind): typecast data as a (char *) before - using it in (char *) pointer arithmetic. - - * configure.in: Add check to see if the preprocessor has variable - argument macro capabilities. - - * src/main.c (init_defaults): set pointer warping to on by - default. - - * src/list.c (give_window_focus): only warp the pointer if the - warp setting is turned on. - - * src/data.h (struct rp_defaults): new member, warp. - - * src/actions.h (cmd_ward): new prototype - - * src/actions.c (user_command): new command "warp" - (cmd_warp): new function - -2002-10-18 Shawn Betts - - * src/actions.c (read_split): a negative number means subtract the - pixels from the frame's current size to get the new frame's size. - - * src/split.c (VERTICALLY): new define - (VERTICALLY): likewise - (split_frame): new argument 'pixels'. The current frame is split - and resized to 'pixels' pixels. - (v_split_frame): new argument 'pixels'. prototype updated. - (h_split_frame): likewise - - * src/actions.c (user_commands): hsplit, vsplit, and split take a - string argument. - (read_split): new function - (cmd_h_split): takes a ratio or number to determine how big the - frame split will be. - (cmd_v_split): likewise - -2002-08-31 Shawn Betts - - * src/actions.c (cmd_bind): malloc the correct amount of memory for keydesc - (cmd_unbind): likewise - -2002-07-28 Shawn Betts - - * src/main.c (handler): do not report badwindow errors if - IGNORE_BADWINDOW is define. - - * src/conf.h (IGNORE_BADWINDOW): new define - -2002-07-06 Shawn Betts - - * src/actions.c (cmd_help): key descriptions don't run off the - bottom of the screen. - -2002-03-23 Shawn Betts - - * src/actions.c (command): look for the command in the aliases - before looking in the command list. - - * src/actions.h (cmd_unalias): new prototype - - * src/actions.c (user_commands): new command unalias - (cmd_unalias): new function - -2002-04-25 Gergely Nagy - - * src/actions.c: include - include setenv implementation if HAVE_SETENV is not set, - OR setenv is not defined (removes a compiler warning on - AIX) - * src/events.c: include - * src/getopt.c: include - -2002-03-13 Shawn Betts - - * src/actions.c (cmd_nextscreen): An error message is displayed - when there is only 1 screen. - (cmd_prevscreen): likewise - - * src/split.c (set_active_frame): fix to operate properly with - multiple screens. - - * src/data.h (struct rp_window_frame): new data member 'number'. - - * src/actions.h (cmd_prevscreen): new prototype - (cmd_nextscreen): likewise - - * src/actions.c (user_commands): new commands "nextscreen" and - "prevscreen" - (cmd_nextscreen): new function - (cmd_prevscreen): likewise - -2002-02-19 Shawn Betts - - * src/split.c: include string.h - - * src/sbuf.c: likewise - - * src/events.c: likewise - - * src/communications.c: likewise - -2002-02-17 Shawn Betts - - * src/manage.c (update_normal_hints): fix debugging output to be - more readable. - - * src/events.c (configure_request): call XSync after granting - configure request. - (property_notify): maximize the window on receiving a normal hints - property change. - -2002-02-16 Shawn Betts - - * src/manage.c (maximize): remove calls to XSelectInput. - (force_maximize): likewise - (unhide_window): likewise - (unhide_window_below): likewise - - * src/events.c (configure_notify): remove function. - (configure_request): grant the request, then immediately maximize - the window. - (delegate_event): ignore ConfigureNotify events. - (configure_request): grant the request if ratpoison isn't managing - the window. - -2002-02-14 Shawn Betts - - * src/actions.c (cmd_license): redraw the bar if it was visible. - (cmd_help): likewise - - * configure.in: fix the --enable-debug help string. - - * src/events.c (configure_request): Ignore the configure notify - event caused by the geometry change if the window is not mapped. - - * src/manage.c (maximize_transient): correctly detect when the - window is bigger than its frame. - (maximize): ignore the structure events generated by the maximize - (force_maximize): likewise - (unhide_window): likewise - (unhide_window_below): likewise - - * src/events.c (configure_notify): Clear up ambiguous debugging - output. - (configure_request): initialize the changes structure to the - window's current attributes. - -2002-02-07 Shawn Betts - - * src/split.h (find_last_frame): prototype now correctly reflects - the actual function. - - * src/events.c (configure_notify): ignore substructurenotify - events. Add more debugging statements. - - * src/actions.c (cmd_focuslast): pass the current screen to the - call to find_last_frame. - -2002-02-02 Shawn Betts - - * src/actions.c (cmd_defbarpadding): print an error message if - defbarpadding is called interactively without arguments. - - * src/events.c (handle_signals): only hide the bar if it times - out. - - * src/bar.c (marked_message): Fix text marking bug. - -2002-02-01 Shawn Betts - - * src/actions.c (command): bail out if alias recursion gets too deep. - - * src/conf.h (MAX_ALIAS_RECURSIVE_DEPTH): new define - - * src/bar.c (bar_x): update to work with all X11 gravity values. - (bar_y): likewise - - * src/actions.c (cmd_defbargravity): Rename from - cmd_defbarloc. Dependant code updated. - (cmd_defbargravity): accept all gravity arguments. - -2002-01-26 shawn - - * configure.in: check for the vsnprintf function and stdarg.h - header. - - * src/main.c (xvsprintf): Cleaned up to call vsnprintf only in one - place. wrap the vsnprintf call with va_copy (or __va_copy) and - va_end. - - * src/list.c (format_window_name): If res_class or res_name are - NULL use "None" instead. - - * src/actions.c (alias_t): rename data structure from cmd_alias to - avoid a name clash with the function cmd_alias. Dependant code - updated. - - * src/list.c (set_active_window): Corrected a bug in determining - what a maxsize window is. Only one of width or height must be less - than the screen width or height for a window to qualify as a - maxsize window. - -2002-01-24 shawn - - * src/actions.c (cmd_defbarloc): Read the location argument as a - gravity argument using parse_wingravity. - (cmd_defbgcolor): don't set the background color for key_window. - (cmd_deffgcolor): don't set the foreground color for key_window. - - * src/messages.h (MESSAGE_FRAME_STRING): Pad the string with - spaces on both sides. - - * src/main.c (init_screen): Create the frame, input, and bar - windows with a border width of defaults.bar_border_width. - (init_defaults): initialize defaults.bar_border_width - - * src/bar.c (bar_x): Incorporate defaults.bar_border_width into - calculations. - (bar_y): likewise - - * src/actions.h (cmd_defbarborder): new prototype - - * src/actions.c (user_commands): new command "defbarborder" - (cmd_defbarborder): new function - - * src/main.c (init_screen): create the help window with a 0 border - width. - - * src/actions.c (find_alias_index): new function - (cmd_alias): When an alias is already in the alias list, replace - it with the new alias. - (command): Append to the end of alias command the arguments passed - in before evaluating the alias. - - * src/events.c (configure_request): do not send a synthetic - configure notify event. - - * src/actions.c (wingravity_to_string): Fix the north gravity - string to return "n" not "ng". - (cmd_defborder): return NULL when no (or a bad) argument is passed - in. - -2002-01-23 Shawn - - * src/manage.c (send_configure): Change parameters to X11 window, - x, y, width, height and border. Prototype updated. All callers - updated. - - * src/events.c (configure_request): For the changes variable, fill - in geometry parameters not part of the request with the - window's geometry. - - * src/manage.c (update_normal_hints): improve debugging output. - -2002-01-17 Gergely Nagy - - * debian/changelog: update for a new snapshot - - * doc/ratpoison.1, doc/ratpoison.texi (Keystrokes): removed - false statement that C-t C-: is bound to colon. - -2002-01-15 Shawn Betts - - * src/input.c (keysym_to_string): handle the case when - XKeysymToString returns NULL. - -2002-01-11 shawn - - * src/main.c (handler): store the error text at the beginning of - the string instead of 7 bytes in. - -2002-01-10 shawn - - * src/events.c (delegate_event): ignore the CirculateRequest event. - - * src/actions.c (cmd_rename): Allows the user to specify a second - argument which is the number of the window whose number will be - set to the first argument. - -2002-01-09 Gergely Nagy - - * src/actions.c (setenv, unsetenv): new functions, used when - the system libc does not have them. - - * configure.in: check for the presence of setenv and unsetenv. - -2002-01-02 shawn - - * src/main.c (init_screen): do not select on any events for the - bar_window and the frame_window. - - * src/events.h (listen_for_events): new prototype - - * src/events.c (configure_notify): If the event dimensions don't - match the windows, then re-maximize the window. - (configure_request): always grant the requests. - (delegate_event): Changes to the debugging output. - (delegate_event): Don't print debugging messages for events that - ratpoison doesn't need to handle. - (handle_signals): new function - (listen_for_events): new function - (handle_events): remove function. Dependant code uses - listen_for_events. - (get_event): likewise - - * src/manage.h (get_state): new prototype - - * src/manage.c (update_normal_hints): print only the hints that - are set as debugging output. - (scanwins): collect mapped and iconized windows. - (get_state): new function - - * src/main.c (clean_up): don't map iconized windows. - -2001-12-21 shawn - - * src/actions.h (cmd_alias): new prototype - - * src/actions.c (user_commands): remove "license" from the - unimplemented section. - (user_commands): new command "alias" - (cmd_alias): new function - (command): handle aliases - (initialize_default_keybindings): initialize the alias list - (struct cmd_alias): new struct - (alias_list): new static global - (alias_list_size): likewise - (alias_list_last): likewise - - * src/actions.h (cmd_license): new prototype - - * src/actions.c (cmd_license): new function - (user_commands): new command "license" - (initialize_default_keybindings): bind "license" to V and C-V - - * src/list.c (format_window_name): print unrecognized formatting - options. - - * src/manage.c (unmanage): set the kill_signalled variable. - - * src/actions.c (wingravity_to_string): new function - (cmd_gravity): return the current value when data is NULL - (cmd_defwingravity): likewise - (cmd_deftransgravity): likewise - (cmd_defmaxsizegravity): likewise - (cmd_msgwait): likewise - (cmd_defbarloc): likewise - (cmd_defpadding): likewise - (cmd_defborder): likewise - (cmd_definputwidth): likewise - (cmd_defwaitcursor): likewise - (cmd_defwinfmt): likewise - (cmd_defwinname): likewise - (cmd_defbarpadding): likewise - (cmd_startup_message): likewise - (cmd_rudeness): likewise - - * src/sbuf.h (sbuf_printf_concat): new prototype - (sbuf_printf): likewise - - * src/sbuf.c (sbuf_printf_concat): new function - (sbuf_printf): likewise - - * src/ratpoison.h: include stdarg.h - (xvsprintf): new prototype - (xsprintf): likewise - - * src/main.c (xvsprintf): new function - (xsprintf): likewise - - * src/bar.c: remove include of stdarg.h - (marked_message_printf): call xvsprintf. - - * src/input.c (input_history): new static global - (input_num_history_entries): likewise - (get_more_input): cycle through the input history. - - * src/conf.h (INPUT_PREV_HISTORY_KEY): new define - (INPUT_PREV_HISTORY_MODIFIER): likewise - (INPUT_NEXT_HISTORY_KEY): likewise - (INPUT_NEXT_HISTORY_MODIFIER): likewise - (INPUT_MAX_HISTORY): likewise - - * src/input.c (update_input_window): Draw the cursor in the right place. - - * src/actions.h (cmd_defbarpadding): new prototype - - * src/actions.c (user_commands): new command entry "defbarpadding" - (cmd_defbarpadding): new function - - * src/data.h (rp_error_msg): new global extern - - * src/main.c (rp_error_msg): new global variable - - * src/events.c (get_event): If there is an X11 error message to - print, print it. - - * src/main.c (handler): record the error in rp_error_msg - -2001-12-20 shawn - - * src/manage.c (maximize_transient): always honour the current - size of the window. - - * src/actions.c (cmd_info): print "Transient" if the window is a - transient window. - -2001-12-18 shawn - - * src/manage.c (maximize_transient): Fit the transient window - inside its frame. - -2001-12-11 shawn - - * src/actions.c (parse_keydesc): Don't mangle the key description - argument. - -2001-12-11 Ryan C Yeske - - * contrib/genrpbindings: Add ruby bindings. From Doug Kearns - . - -2001-12-08 shawn - - * src/events.c (handle_key): revert the focus immediately after - reading the key. - - * src/list.c (give_window_focus): update rp_current_frame when - setting the window focus. - - * src/main.c (main): scan for windows in a seperate pass after - initializing the screen structures. - (init_screen): build a display string for each screen. - (init_screen): remove the call to scanwins. - - * src/manage.c (current_screen): return the current screen using - rp_current_screen. - - * src/split.h (init_frame_lists): new function - - * src/split.c (rp_window_frame_sentinel): remove. - (rp_current_frame): remove. - (frames_screen): new function - (maximize_frame): use the frame's screen to find out the width and - height of the display. - (create_initial_frame): take a pointer to a screen_info as an - argument. - (init_frame_lists): new function - (init_frame_list): take a pointer to a screen_info as an argument. - (find_last_frame): take a pointer to a screen_info as an argument. - - * src/actions.c (spawn): Set the DISPLAY environment variable to - point to the current screen. - - * src/data.h (struct screen_info): add display_string, - rp_window_frame_sentinel, rp_current_frame. - (rp_current_screen): new global - (rp_current_frame): Remove. Dependant code uses - screen_info.rp_current_frame. - -2001-12-09 Gergely Nagy - - * debian/changelog: Lets have a snapshot release - * debian/control: Changed Maintainer, and added an Uploaders field - * debian/ratpoison.examples: added the files in contrib/ - * doc/Makefile.am (EXTRA_DIST): removed ratpoisonrc-mode.el - * contrib/Makefile.am (EXTRA_DIST, pkgdata_DATA): added genrpbindigs - -2001-12-05 Ryan C Yeske - - * contrib/genrpbindings: Fix perl typos. From Doug Kearns - . - -2001-12-04 Ryan C Yeske - - * contrib/genrpbindings: New file. - - * src/actions.c (user_commands): Add markup for genrpbindings. - (cmd_getenv): New function. - -2001-10-18 shawn - - * src/split.c (show_frame_indicator): call XSync after clearing the window. - - * src/input.c (get_more_input): clear the window after it is - raised. Call XSync aftwards. - - * src/conf.h (MAX_LINK_DEPTH): new define - - * src/bar.c (marked_message): clear the window after it is - raised. Call XSync aftwards. - - * src/actions.h (cmd_link): new prototype - - * src/actions.c (user_command): new command 'link' - (find_command_by_keydesc): new function - (resolve_command_from_keydesc): likewise - (cmd_link): likewise - - * src/split.h (find_last_frame): new prototype - - * src/split.c (update_last_access): new function - (find_last_frame): likewise - (split_frame): update the new frame's last_access field - (set_active_frame): update the new current frame's last_access field - - * src/input.h (x11_mask_to_rp_mask): new prototype - (rp_mask_to_x11_mask): likewise - - * src/input.c (x11_mask_to_rp_mask): new function - (rp_mask_to_x11_mask): likewise - - * src/events.c (handle_key): convert X11 modifier masks to rp - modifier masks where appropriate. - - * src/actions.h (cmd_focuslast): new prototype - - * src/actions.c (initialize_default_keybindings): new keybinding - for "focuslast" - (cmd_focuslast): new function - (user_command): new command "focuslast" - - * src/data.h (struct rp_window_frame): new field 'last_access' - (RP_CONTROL_MASK): new define. All code depending on the X11 - modifier mask equivalent has been changed to use this where - appropriate. - (RP_META_MASK): likewise - (RP_ALT_MASK): likewise - (RP_SUPER_MASK): likewise - (RP_HYPER_MASK): likewise - -2001-10-11 shawn - - * src/bar.c (show_last_message): abort if there was no last - message. - - * src/events.c (configure_request): Always check the rudeness - level before honouring a raise request. - -2001-10-09 shawn - - * src/split.c (remove_frame): Make sure the frame attempting to - take up the space of the deleted frame overlaps the deleted frame - after the size change. - (remove_frame): More debug messages - - * src/list.c (format_window_name): add formatting option '%l' to - grab the last_access field from the window. - -2001-10-05 Gergely Nagy - - * contrib/ratpoisonrc-mode.el: superceded by.. - * contrib/ratpoison.el: ..this one, now with AllYou'llEverNeed(tm) - -2001-10-01 shawn - - * src/bar.c (marked_message_printf): Handle a return value from - vsnprintf of -1 properly. - -2001-09-27 shawn - - * src/main.c[ratpoison_opts]: remove 'r' and 'k'. - -2001-09-23 shawn - - * src/actions.c (initialize_default_keybindings): Change C-t a and - C-t C-a binding to "time". - -2001-09-21 shawn - - * src/split.h (find_frame_up): new prototype - (find_frame_down): likewise - (find_frame_left): likewise - (find_frame_right): likewise - - * src/split.c (find_frame_up): new function - (find_frame_down): likewise - (find_frame_left): likewise - (find_frame_right): likewise - - * src/manage.c (move_window): use x11 gravity constants to denote - gravity. - - * src/main.c (ratpoison_longopts): remove --kill and - --restart. Dependant code updated. - (init_defaults): use x11 gravity constants to denote gravity. - (main): only display the startup message if - defaults.startup_message is on. - - * src/list.c (update_window_gravity): rename from - update_window_position. dependant code updated - - * src/events.c (client_msg): don't test for restart or kill client - messages. - (client_msg): properly handle iconify requests. - (get_event): kill and restart the process here. - - * src/data.h (TOP_LEFT): remove define - (TOP_CENTER): likewise - (TOP_RIGHT): likewise - (CENTER_LEFT): likewise - (CENTER_CENTER): likewise - (CENTER_RIGHT): likewise - (BOTTOM_LEFT): likewise - (BOTTOM_CENTER): likewise - (BOTTOM_RIGHT): likewise - (struct rp_window): rename field to position to gravity. - (struct rp_defaults): rename win_pos to win_gravity, trans_pos to - trans_gravity and maxsize_pos to maxsize_gravity. - (rp_restart): remove global variable - (rp_kill): likewise - - * src/communications.h (send_kill): remove prototype - (send_restart): likewise - - * src/communications.c (send_restart): remove function. obsolete. - (send_kill): likewise - - * src/bar.c (bar_x): Use X11 gravity constants to denote location. - (bar_y): likewise - - * src/actions.h (cmd_focusup): new prototype - (cmd_focusdown): likewise - (cmd_focusleft): likewise - (cmd_focusright): likewise - (cmd_startup_message): likewise - (cmd_restart): likewise - - * src/actions.c (cmd_quit): just set the kill_signalled variable. - (parse_wingravity): use compass directions to describe the gravity - (parse_wingravity): renamed from parse_winpos. dependant code - updated. - (cmd_gravity): renamed from cmd_pos. dependant code updated. - (cmd_defwingravity): renamed from cmd_defwinpos. dependant code - updated. - (cmd_deftransgravity): renamed from cmd_deftranspos. dependant - code updated. - (cmd_defmaxsizegravity): renamed from cmd_defmaxsizepos. dependant - code updated. - (cmd_focusup): new function - (cmd_focusdown): likewise - (cmd_focusleft): likewise - (cmd_focusright): likewise - (cmd_restart): likewise - (cmd_startup_message): likewise - (user_commands): new commands "focusup" "focusdown" "focusright" - "focusleft" "startup_message" "restart". - -2001-09-18 shawn - - * src/list.c (window_name): make sure the default window name is - not NULL. In this case return win's user_name field which is never - NULL. - -2001-09-18 shawn - - * src/actions.c(user_commands)[0]: remove "lastmsg" from the list. - (cmd_defwinpos): abort if data is NULL - (cmd_deftranspos): likewise - (cmd_defmaxsizepos): likewise - (cmd_defmaxsizepos): Use the correct command name in call to message. - (cmd_deftranspos): likewise - (cmd_defwinpos): likewise - - * src/actions.h (cmd_info): new prototype - (cmd_lastmsg): likewise - - * src/bar.h (show_last_message): new prototype - - * src/bar.c: new static globals last_msg, lash_mark_start, and last_mark_end. - (marked_message): Store the message in last_msg. - (show_last_message): new function - - * src/actions.c (cmd_info): new function - (cmd_lastmsg): likewise - (user_commands): new commands "info" and "lastmsg" - (initialize_default_keybindings): Add key bindings for "info" and - "lastmsg". - -2001-09-17 shawn - - * src/actions.h (cmd_unsetenv): new prototype - - * src/actions.c (cmd_unsetenv): new function - (user_commands): new "unsetenv" command - - * src/ratpoison.h (xstrdup): new prototype - - * src/main.c (xstrdup): new function. All calls to strdup replaced - with calls to xstrdup. - (main): Keep a list of all commands pasted in through the -c command-line option. - (main): execute all commands pasted in through the -c command-line option. - - * src/actions.h (cmd_chdir): new prototype - - * src/actions.c (cmd_clock): rename to cmd_time. Dependant code - updated. - (user_commands): rename "clock" command to "time". - (cmd_chdir): new function - (user_commands): new command "chdir". - -2001-09-16 shawn - - * src/actions.c (update_all_gcs): new function - (cmd_deffont): update the graphics contexts. - - * src/list.c (format_window_name): Use 2 character escape codes, - like printf. Dependant code updated. - - * configure.in: check for setpgrp. - - * src/actions.c (spawn): Only call setsid if it exists. - (spawn): Only call setpgid if it exists. - (spawn): if setpgid doesn't exist, try setpgrp. - - * configure.in: check for setsid and setpgid functions. Add - contrib/Makefile to AC_OUTPUT. - - * Makefile.am (SUBDIRS): add contrib - -2001-09-14 shawn - - * src/actions.c (spawn): set the process group ID and session ID - for the spawned process. - -2001-09-13 shawn - - * src/actions.c (command): Gobble the whitespace between the - command and the argument list. Code that did this in specific - commands has been removed. - (cmd_setenv): new function - (cmd_meta): rename from cmd_generate. All dependant code updated. - (cmd_redisplay): rename from cmd_maximize. All dependant code - updated. - (initialize_default_keybindings): bind "redisplay" to C-t l and - C-t c-l. - (cmd_msgwait): rename from cmd_defbartimeout. All dependant code - updated. - - * src/input.c (update_input_window): Draw a cheap-o cursor - -2001-09-12 Gergely Nagy - - * src/actions.c (cmd_bind): binding an empty string to a key will - unbind the key. - -2001-09-09 shawn - - * src/conf.h (MAXSIZE_WINDOWS_ARE_TRANSIENTS): defined - - * src/split.c (set_active_frame): give the key_window focus when - no window has focus. - (blank_frame): give the key_window focus. - - * src/main.c (init_screen): don't listen for keystrokes on the - root window. - (main): give the key_window focus in the case that no window has - focus. - - * src/bar.c (marked_message): use the screen_info fg_color and - bg_color to create the inverse GC. - - * src/actions.h (cmd_deffgcolor): new prototype - (cmd_defbgcolor): new prototype - - * src/actions.c (cmd_defbartimeout): merge the 2 ifs. - (cmd_defbartimeout): verify that the number is positive. - (cmd_defborder): likewise - (cmd_defwinname): gobble leading whitespace. Use strings as - arguments, not numbers. - (cmd_windows): Use the argument as a window format string in - non-interactive mode. - (cmd_windows): if data is NULL use the default format string. - (user_commands): new commands deffgcolor, defbgcolor. - (update_gc): new function - (cmd_deffgcolor): likewise - (cmd_defbgcolor): likewise - -2001-09-08 shawn - - * src/list.h (update_window_position): new prototype - (window_name): new prototype - (get_window_list): update prototype - - * src/events.c (grab_rat): Don't wrap in an #ifdef - (ungrab_rat): likewise - (handle_key): record if the rat is grabbed and only ungrab it at - the end if it was first grabbed. - - * src/actions.h (cmd_pos): new prototype - (cmd_defwinpos): new prototype - (cmd_deftranspos): new prototype - (cmd_defmaxsizepos): new prototype - (cmd_defbartimeout): new prototype - (cmd_defbarloc): new prototype - (cmd_deffont): new prototype - (cmd_defpadding): new prototype - (cmd_defborder): new prototype - (cmd_definputwidth): new prototype - (cmd_defwaitcursor): new prototype - (cmd_defwinfmt): new prototype - (cmd_defwinname): new prototype - - * src/messages.h (MESSAGE_FRAME_STRING): new message - - * src/manage.c (get_wmname): renamed from get_window_name - (get_class_hints): new function - (get_res_name): likewise - (get_res_class): likewise - (update_window_name): update the window's wm_name, res_name, and - res_class fields. - (update_window_name): calls functions get_wmname, get_res_name, - get_res_class. - (update_window_name): Don't crop the window name. - (update_window_information): call update_window_position. - (move_window): new function - (maximize_transient): only set the window's width and height - fields. - (maximize_normal): likewise - (maximize): call move_window - (force_maximize): likewise - (force_maximize): if the window has resize hints, resize it 1 - resize unit. - - * src/main.c: new global variable, defaults. remove static - variable, font, and move to defaults. Dependant code updated. - (init_defaults): new function - (main): call init_defaults. - (init_screen): initialize the screen's fg_color to black and - bg_color to white. - - * src/list.c (free_window): free the fields user_name, res_name, - res_class, and wm_name. - (update_window_position): new function - (window_name): new function. Code accessing a window's name uses - this function. All code updated. - (add_to_window_list): call update_window_position - (add_to_window_list): initialize wm_name, res_name, and res_class - for the new window. - (format_window_name): new function - (get_window_list): Add parameter fmt. All callers updated. - (get_window_list): call format_window_name. - - * src/conf.h: move Configuration variables to the global variable, - defaults. Dependant code updated. - - * src/data.h (TOP_LEFT): new define - (TOP_CENTER): likewise - (TOP_RIGHT): likewise - (CENTER_LEFT): likewise - (CENTER_CENTER): likewise - (CENTER_RIGHT): likewise - (BOTTOM_LEFT): likewise - (BOTTOM_CENTER): likewise - (BOTTOM_RIGHT): likewise - (struct rp_window): new fields user_name, wm_name, res_name, - res_class, position. - (struct rp_window): remove field name. Replaced with - user_name. Dependant code updated. - (struct screen_info): remove field font. dependant code updated. - (struct screen_info): new fields fg_color, bg_color. - (struct rp_defaults): new struct - (defaults): new global - - * src/actions.c (parse_winpos): new function - (cmd_pos): likewise - (cmd_defwinpos): likewise - (cmd_deftranspos): likewise - (cmd_defmaxsizepos): likewise - (cmd_defbartimeout): likewise - (cmd_defbarloc): likewise - (cmd_deffont): likewise - (cmd_defpadding): likewise - (cmd_defborder): likewise - (cmd_definputwidth): likewise - (cmd_defwaitcursor): likewise - (cmd_defwinfmt): likewise - (cmd_defwinname): likewise - (user_commands): New commands defbarloc, defbartimeout, defborder, - deffont, defintputwidth, defmaxsizepos, defpadding, deftranspos, - defwaitcursor, defwinfmt, defwinname, defwinpos. - -2001-09-06 shawn - - * configure.in: Use AC_CHECK_FUNCS to check for getopt and - getopt_long. - -2001-09-06 Gergely Nagy - - * doc/ratpoison-mode.el: major mode for editing .ratpoisonrc files - * doc/Makefile.am (EXTRA_DIST): added ratpoison-mode.el - - * debian/changelog: Updated to version 1.0.0 - - * doc/sample.ratpoisonrc: change escape ^a to escape C-a, to - reflect the new key naming scheme - - * ratpoison.spec: bring it up to date, and add %doc stuff - -2001-09-06 shawn - - * src/manage.c (grab_prefix_key): call grab_key. - (ungrab_prefix_key): use AnyModifier as the modifier mask param to - XUngrabKey. - - * src/input.h (grab_key): new protoype - - * src/input.c (update_modifier_map): find the numlock and scroll - lock modifiers. - (grab_key): new function - (cook_keycode): new param ignore_mad_mods. protoype updated. all - callers updated. - (cook_keycode): ignore caps lock, numlock and scroll lock - modifiers when ignore_bad_mods param is non-zero. - - * src/events.c (key_press): ignore numlock, scroll lock, and caps - lock modifiers when cooking the prefix key. - - * src/data.h (struct modifier_info): new fields num_lock_mask, - scroll_lock_mask. - -2001-09-05 shawn - - * src/main.c (show_welcome_message): If the help key is bound to ? - then print ? instead of `question'. - - * configure.in: check for getopt and getopt_long. - - * src/getopt.c: wrap the whole file in an #ifndef HAVE_GETOPT_LONG - - * src/getopt1.c: wrap the whole file in an #ifndef HAVE_GETOPT_LONG - - * src/messages.h (MESSAGE_WELCOME): The help keystroke is not - hardcoded. - - * src/main.c (show_welcome_message): new function - (main): call show_welcome_message to show the welcome message. - - * src/actions.h (find_keybinding_by_action): new prototype - - * src/actions.c (key_actions): change to a static variable. - (key_actions_last): likewise - (key_actions_table_size): likewise - (find_keybinding_by_action): new function - -2001-09-04 shawn - - * src/actions.h (cmd_unbind): new prototype - - * src/actions.c (find_keybinding): Change the first parameter's - type to KeySym. Prototype updated. - (add_keybinding): likewise - (remove_keybinding): new function. - (key_actions): new command 'unbind'. - (key_actions): #if out the unimplemented bindings. - (cmd_bind): Error messages are more accurate. - (cmd_unbind): new function. - (cmd_escape): update the "other" command before the "generate" - command. - (cmd_escape): When searching for the "other" and "generate" - commands' keystrokes, verify that the located action is the right - command. - -2001-08-31 Shawn - - * src/split.c (set_active_frame): Only show the frame indicator - when switching to a new frame and when there is more than 1 frame. - - * src/actions.c (cmd_next_frame): display MESSAGE_NO_OTHER_FRAME - when there is only 1 frame. - - * src/messages.h (MESSAGE_NO_OTHER_FRAME): new message - - * src/split.c (hide_frame_indicator): always hide the frame - indicator. - (blank_frame): don't show the frame indicator. - - * src/manage.c (maximize_normal)[MAXSIZE_WINDOWS_ARE_TRANSIENTS]: - win are centered properly in the frame. - -2001-08-29 Shawn - - * src/manage.c (unhide_window): always raise the window. - -2001-08-27 Shawn - - * src/actions.c (cmd_clock): pad the time with spaces on either - side. - - * src/manage.c (maximize_normal)[MAXSIZE_WINDOWS_ARE_TRANSIENTS]: - use maxx, maxy not the window's width and height. - - * src/events.c (handle_key): use marked_message_printf to notify - user of an unbound key. - - * src/messages.h (MESSAGE_RAISE_TRANSIENT): new message - (MESSAGE_RAISE_WINDOW): likewise - (MESSAGE_MAP_TRANSIENT): likewise - (MESSAGE_MAP_WINDOW): likewise - - * src/manage.c (update_window_information): update the - transient-ness of the window. - (maximize_normal)[MAXSIZE_WINDOWS_ARE_TRANSIENTS]: center the - window. - (map_window): use the appropriate define in messages.h to notify - the user about the new window. - - * src/list.h: remove prototypes unhide_transient_for, - is_transient_ancestor, hide_transient_for, - hide_transient_for_between from compilation. - - * src/list.c (unhide_transient_for): remove from compilation - (hide_transient_for_between): likewise - (hide_transient_for): likewise - (is_transient_ancestor): likewise - (set_active_window)[[MAXSIZE_WINDOWS_ARE_TRANSIENTS]: Don't hide the - other windows if the window has a max size hint. - (print_window_information): use marked_message_printf - - * src/events.c (cleanup_frame): restructure - (cleanup_frame)[MAXSIZE_WINDOWS_ARE_TRANSIENTS]: Don't hide the - other windows if the window has a max size hint. - (unmap_notify): don't try to locate the event's screen. - (unmap_notify): if the window wasn't found, return immediately. - (map_request): restructure. reword debugging output - (map_request): use the appropriate define in messages.h to notify - the user about window raise requests. - (configure_request): likewise - (property_notify): Handle the transient_for notify. - - * src/conf.h (MAXSIZE_WINDOWS_ARE_TRANSIENTS): new customization - - * src/bar.c (show_bar): map and raise the window - (marked_message): likewise - (marked_message): crop the mark_end and mark_start to the - boundaries of the message. - (marked_message): calculate the end of the marked part of the - message correctly. - - * src/actions.c (cmd_delete): use PRINT_DEBUG for debug messages. - (command): use marked_message_printf - (cmd_echo): likewise - (cmd_rudeness): pad messages with spaces. - -2001-08-26 Shawn - - * src/events.c (configure_request): make sure the window is iconic - before notifying a raise request. - - * src/split.c (num_frames): uncomment. - (set_active_frame): only show the frame indicator if, in addition, - there are more than 1 frames. - (set_active_frame): give the root window focus if there is no - current window. - (blank_frame): only show the frame indicator if, in addition, - there are more than 1 frames. - -2001-08-24 Shawn - - * src/input.c (get_more_input): detect and handle a user abort key - sequence. - - * src/conf.h (INPUT_ABORT_KEY): new define - (INPUT_ABORT_MODIFIER): likewise - - * src/actions.c (cmd_select): handle a user abort. - (cmd_rename): likewise - (cmd_colon): likewise - (cmd_exec): likewise - (cmd_newwm): likewise - -2001-08-23 Shawn - - * src/manage.c (maximize_normal): In the new height on windows - with increment hints code, reorder the steps. - (map_window): conditionally map the window based on the rudeness - level. - - * src/main.c (rp_honour_transient_raise): new global declaration - (rp_honour_transient_map): likewise - (rp_honour_normal_raise): likewise - (rp_honour_normal_map): likewise - - * src/events.c (map_request): conditionally map the window based - on the rudeness level. - (configure_request): conditionally raise the window based on the - rudeness level. - (configure_request): only maximize the window if the height, - width, border, or position was changed. - - * src/data.h (rp_honour_transient_raise): new global - (rp_honour_normal_raise): likewise - (rp_honour_transient_map): likewise - (rp_honour_normal_map): likewise - - * src/bar.h (marked_message_printf): new prototype - - * src/bar.c: include stdarg.h - (marked_message_printf): new function - - * src/actions.h (cmd_rudeness): new prototype - - * src/actions.c (user_commands): new command 'rudeness' - (cmd_rudeness): new function - -2001-08-22 Shawn - - * src/split.h (set_frames_window): new prototype - (maximize_all_windows_in_frame): likewise - - * src/split.c (set_frames_window): new function. all code setting - a frame's window updated to use this function. - (maximize_all_windows_in_frame): new function - (find_window_for_frame): don't include windows that are mapped in - another frame (not necessarily the frames active window). - (split_frame): maximize all windows in the existing frame, not - just the active one. - (split_frame): comment out unhiding transient window code. - (remove_all_splits): hide all mapped windows not in the current - frame. - (remove_all_splits): maximize all windows mapped in the current - frame. - (remove_all_splits): comment out hiding transient window code. - (remove_frame): when a frame's size has been changed, maximize all - windows in that frame. - (remove_frame): hide all windows in the frame being removed. - - * src/manage.h (hide_others): new prototype - - * src/manage.c (hide_window): set win's frame to NULL. - (unhide_window_below): renamed frame unhide_below_window. All - callers updated. - (hide_others): new function - - * src/list.c (set_active_window): comment out hiding transient - window code. - - * src/events.c (cleanup_frame): comment out hiding transient - window code. - - * src/data.h (struct rp_window): new field 'frame'. - - * src/actions.c (cmd_help): initialize old_i to 0 - - * src/list.c (set_active_window): Don't hide last_win's transient_for - windows if last_win and win share the same transient_for window. - - * src/events.c (cleanup_frame): Don't hide last_win's transient_for - windows if last_win and win share the same transient_for window. - -2001-08-20 Shawn - - * src/events.c (cleanup_frame): set the new window's frame before - maximizing it. - -2001-08-19 Shawn - - * src/events.c (cleanup_frame): unhide the new active window - before hiding the last window - - * src/list.c (set_active_window): unhide the new active window - before hiding the last window. - -2001-08-18 Shawn - - * src/actions.c (cmd_bind): Gobble whitespace between keystroke and command. - (cmd_help): keystrokes and commands no longer overlap. - - * src/events.c (configure_request): grant Iconized and Withdrawn - windows any geometry they like. - - * src/list.c (is_transient_ancestor): make sure tmp is a valid - pointer before testing if it is a transient. - - * src/main.c (read_rc_file): free the command's result string. - - * src/list.h (get_window_list): new prototype - - * src/list.c (get_window_list): new function - - * src/events.c (handle_key): free the command's result string. - (receive_command): send the command's result string if there is - one, otherwise send NULL. - - * src/communications.c (recieve_command_result): only print the - result if the string is not empty. - - * src/bar.c (update_window_names): calls get_window_list. - - * src/actions.c (cmd_windows): return a list of the windows when - called non-interactively. - (cmd_colon): free the command result. - - * src/actions.c: command functions have been changed to return a - result string and take a parameter that tells the function if it - was called interactively or not. All callers updated. - - * src/split.c (split_frame): unhide transient_for windows as well - as the active window. - (remove_all_splits): hide transient_for windows as well as the - frame's active window. - - * src/manage.c (unhide_below_window): always lower the window - - * src/list.h (hide_transient_for_between): new prototype - (is_transient_ancestor): likewise - - * src/list.c (hide_transient_for_between): new function - (hide_transient_for): calls hide_transient_for_between - (is_transient_ancestor): new function - (set_active_window): don't temporarily hide windows that the newly - active window is a transient for (removes unnecessary flicker). - - * src/events.c (cleanup_frame): don't temporarily hide windows that the new - window is a transient for (removes unnecessary flicker). - -2001-08-07 Ryan Yeske - - * doc/ratpoison.texi: Fix spelling and grammar. - -2001-06-29 Gergely Nagy <8@free.bsd.hu> - - * Makefile.am: do not include debian/ in the tarball - * configure.in: better xterm checking, fixes #430631 - -2001-06-11 shawn - - * src/events.c (grab_rat): wrap in ifdef - (ungrab_rat): likewise - (handle_key): only change the mouse icon if USE_WAITFORKEY_CURSOR is - defined. - - * src/conf.h (USE_WAITFORKEY_CURSOR): new define - -2001-06-10 shawn - - * src/actions.c (cmd_generate): return if there is no current - window. - - * src/split.c (split_frame): empty frames can be split. - - * src/main.c (rp_rat_bits): remove - (rp_rat_mask_bits): remove include - (sighandler): only increment kill_signalled - (hup_handler): only increment hup_signalled - (alrm_handler): only increment alarm_signalled - (read_startup_files): use PRINT_ERROR for error messages. - (init_rat_cursor): Use a standard X cursor for the screen's rat. - - * src/events.h (unmap_notify): remove prototype - (delegate_event): likewise - (key_press): likewise - (keymapstate): likewise - (map_request): likewise - - * src/events.c: includes and - (new_window): static function - (unmap_notify): likewise - (map_request): likewise - (destroy_window): likewise - (configure_notify): likewise - (configure_request): likewise - (key_press): likewise - (property_notify): likewise - (colormap_notify): likewise - (delegate_event): likewise - (get_event): new function - (more_destroy_events): remove function - (handle_events): call get_event. - - * src/data.h: rp_current_event is an XEvent dependant code - updated. new globals alarm_signalled, kill_signalled, - hup_signalled. - - * src/actions.c (initialize_default_keybindings): new bindings for - "split" and "vsplit". - -2001-06-06 Shawn Betts - - * src/list.c (unhide_transient_for): abort if the transient_for - window can't be found. - (hide_transient_for): likewise - -2001-06-01 Shawn Betts - - * src/events.c (map_request): If the window is iconified call - set_active_window on it. - -2001-06-05 shawn - - * src/list.c (set_active_window): calls give_window_focus which - was accidentally removed. - - * src/actions.c (parse_keydesc): return NULL if the keydesc is a - '-'. - - * src/manage.c (hide_window): ignore only StructureNotify events. - - * src/data.h (WIN_EVENTS): Add StructureNotifyMask. - - * src/events.c (unmap_notify): ignore SubstructureNotify unmaps. - -2001-06-02 shawn - - * src/split.c (blank_frame): hide transient's transient_for. - - * src/manage.c (unhide_below_window): new function - - * src/manage.h (unhide_below_window): new prototype - - * src/list.h (unhide_transient_for): new prototype - (hide_transient_for): likewise - - * src/list.c (unhide_transient_for): new function - (hide_transient_for): likewise - (set_active_window): print the name of the last and new windows. - (set_active_window): unhide new window's transient_for. hide old - window's transient_for. - - * src/events.c (cleanup_frame): hide any transients for the old - window and unhide any transients for the new one. - - * src/manage.c (hide_window): ignore unmap_notify events when - unmapping the window. - - * src/list.c (add_to_window_list): use WIN_EVENTS in XSelectInput. - - * src/data.h (struct rp_window): remove iconizing field. remove - code using iconizing. - (WIN_EVENTS): new define - -2001-06-01 shawn - - * src/events.c (cleanup_frame): hide the frame's window's - transient_for windows. - -2001-05-24 Shawn Betts - - * src/events.c (colormap_notify): ignore badwindows when - retrieving and installing the colormap. - - * src/manage.c (withdraw_window): ignore badwindows during all - Xlib calls. - -2001-05-22 Shawn Betts - - * src/actions.c (cmd_generate): only generate the event if there - is a current window. - -2001-05-18 Shawn Betts - - * src/input.c (update_modifier_map): rename from - init_modifier_map. all callers updated. prototype updated. - - * src/events.c (mapping_notify): new function - (delegate_event): handle MappingNotify events. - -2001-05-09 Gergely Nagy <8@free.bsd.hu> - - * ratpoison.spec: spec file for rpm-based systems - -2001-05-03 Gergely Nagy <8@free.bsd.hu> - - * debian/control: adjust build-depends to potato - * debian/rules: fixed, so it works under both potato - and woody/sid - -2001-04-19 Shawn Betts - - * src/manage.c (unhide_window): map and raise the window. - -2001-04-18 shawn - - * src/input.c (keysym_to_string): handles control, meta, alt, - hyper, and super modifiers. Returns full keysym names. - - * src/actions.c (parse_keydesc): parses control, meta, alt, hyper, - and super modifiers. - (cmd_clock): sets the last character in msg to 0. - -2001-04-15 shawn - - * src/split.c (show_frame_indicator): contents of - update_frame_indicator merged into here. - (update_frame_indicator): remove function - - * src/number.h (add_window_number): new prototype - - * src/number.c (add_window_number): renamed from - add_to_list. Dependant code updated. - - * src/messages.h (MESSAGE_WINDOW_INFORMATION): new define - - * src/list.h (print_window_information): new prototype - - * src/list.c (print_window_information): new function - - * src/actions.h (cmd_number): new prototype - - * src/actions.c (cmd_clock): remove newline from date string. - (cmd_rename): passes current_screen() to update_window_names. - (cmd_number): new function - - * src/messages.h (MESSAGE_WELCOME): new define - - * src/manage.c (scanwins): ignore the help window - (hide_window): increment window's iconizing variable - - * src/main.c (main): display welcoming message - (init_screen): create the help window - (init_screen): don't map the frame indicator window - (clean_up): destroy the help window - - * src/list.c (add_to_window_list): initialize iconizing to 0 - - * src/events.c (new_window): skip help_window - (unmap_notify): skip normal processing if the event is from - iconizing the window. - (unmap_notify): clean up the window's frame if it is being - withdrawn. - - * src/data.h (struct screen_info): new variable help_window - - * src/bar.c (update_window_names): only print the window list if - the bar is already displaying the window list. - - * src/actions.h (cmd_help): new prototype - (cmd_quit): likewise - - * src/actions.c (initialize_default_keybindings): new keybinding for "help" - (cmd_quit): new function - (cmd_help): likewise - -2001-04-13 shawn - - * src/actions.c (cmd_clock): doesn't allocate memory. displays the - date. - - * src/split.h (blank_frame): new prototype - - * src/split.c (split_frame): calls unhide_window after maximizing - the new frame's window. - (remove_all_splits): hide all windows but the current one - (remove_all_splits): maximize the current window in its newly - resized frame. - (remove_frame): hide the frame's window after removing it from the - list. - (blank_frame): new function - - * src/manage.h (withdraw_window): new prototype - (hide_window): likewise - (unhide_window): likewise - - * src/manage.c (scanwins): glob ignored windows into 1 if - statement. - (scanwins): set the window's state to NormalState before calling - map_window. - (set_state): sets win->state - (map_window): calls set_state - (hide_window): new function - (unhide_window): likewise - (withdraw_window): new function - - * src/main.c (main): setup error handlers after --command, - --restart, and --kill commands have been processed. - (main): doesn't call set_active_window - (init_screen): XSync's after selecting ewents on the root window. - (clean_up): map iconized windows - - * src/list.h (give_window_focus): prototype updated - - * src/list.c (give_window_focus): takes a second argument, - last_win. - (give_window_focus): calls unhide_window - (give_window_focus): uses last_win instead of current_window() - (set_active_window): hides the last window and unhides the new - window. - (set_active_window): calls give_window_focus - - * src/events.c (cleanup_frame): maximizes the frame's new window - (unmap_notify): do nothing if the window is in the iconic - state. Withdraw the window if it is in the normal state. - (map_request): calls unhide_window if the window is iconized. Do - nothing if it is already mapped. - (destroy_window): tightened up - (client_msg): detects iconize requests from clients. - - * src/data.h (STATE_UNMAPPED): remove. Dependant code uses - WithdawnState in its stead. - (STATE_MAPPED): likewise. Dependant code uses NormalState in its - stead - - * src/actions.c (initialize_default_keybindings): new keybinding - - bound to "select -" - (cmd_select): the string "-" selects a blank window - -2001-04-12 shawn - - * src/main.c (main): calls XCloseDisplay before exitting after - sending a kill, restart, or command message. - -2001-04-10 Gergely Nagy - - * src/main.c (main): initialize command to NULL, silences an - annoying warning - - * debian/rules: sync it up a bit, so it works with both - the current CVS ratpoison - - * debian/ratpoison.examples: new file listing examples installed - to /usr/share/doc/ratpoison/examples - -2001-04-08 shawn - - * src/main.c (clean_up): destroys resources stored in screens - (init_rat_cursor): frees the pixmaps - -2001-04-06 shawn - - * src/split.h (hide_frame_indicator): new prototype - (show_frame_indicator): likewise - - * src/split.c: include - (split_frame): set the new_frame's window to NULL - (split_frame): calls show_frame_indicator once the split is done. - (set_active_frame): only call show_frame_indicator if the frame - has no window or if we switched to a different frame. - (update_frame_indicator): prints FRAME_STRING in the frame - indicator window. - (hide_frame_indicator): new function - (show_frame_indicator): likewise - - * src/main.c (rp_rat_bits): new variable - (rp_rat_mask_bits): likewise - (alrm_handler): calls hide_frame_indicator - (init_rat_cursor): new function - (init_screen): calls init_rat_cursor - - * src/events.c (unmap_notify): calls set_active_frame if the - window being unmapped was in the current frame - (destroy_window): calls set_active_frame if the - window being destroyed was in the current frame - (grab_rat): new function - (grab_rat): likewise - (handle_key): calls grab_rat and ungrab_rat - - * src/data.h (struct screen_info): new variable rat - - * src/conf.h (FRAME_INDICATOR_TIMEOUT): new #define - (FRAME_STRING): likewise - (RAT_HEIGHT): likewise - (RAT_WIDTH): likewise - (RAT_HOT_X): likewise - (RAT_HOT_Y): likewise - - * src/actions.h (cmd_curframe): new prototype - - * src/actions.c (initialize_default_keybindings): new key binds - for "curframe" - (user_commands): new command "curframe" - (cmd_curframe): new function - - * src/split.c (remove_all_splits): only maximize the current - window if there is one. - (maximize_frame): remove unused code to retrieve the current - screen_info. - - * src/actions.c (cmd_h_split): calls h_split_frame on the current - frame. - (cmd_v_split): likewise - (cmd_only): even if the current frame is empty, call - remove_all_splits. - - * src/split.c (maximize_frame): new function - (create_initial_frame): calls maximize_frame to fill in the - initial frame's fields. - (num_frames): comment out - (remove_frame): remove special case when there is only 1 frame - left. - - * src/split.h (h_split_frame): renamed frome h_split_window - (v_split_frame): renamed frome v_split_window - (split_frame): renamed frome split_window - (remove_all_splits): renamed frome remove_all_frames - (find_windows_frame): new prototype - (find_frame_next): likewise - (find_frame_prev): likewise - (current_window): likewise - (init_frame_list): likewise - (set_active_frame): likewise - - * src/split.c (create_initial_frame): new function - (init_frame_list): likewise - (find_windows_frame): likewise - (find_frame_next): likewise - (find_frame_prev): likewise - (current_window): likewise - (update_frame_indicator): likewise - (set_active_frame): likewise - (split_frame): rename from split_window - (v_split_frame): rename from v_split_window - (h_split_frame): rename from h_split_window - (remove_all_splits): renamed frome remove_all_frames - (total_frame_area): traverses rp_window_frame list - (num_frames): likewise - (frame_overlaps): likewise - (remove_frame): likewise - (remove_frame): calls delete_frame_from_list - - * src/manage.c (scanwins): skips the frame_window - (maximize_transient): finds the window's frame - (maximize_normal): likewise - - * src/main.c (main): calls init_frame_list - (init_screen): create and map the frame_window - - * src/list.c (give_window_focus): new function - (goto_window): likewise - (set_active_window): calls give_window_focus - - * src/list.h (give_window_focus): new prototype - (goto_window): likewise - - * src/events.c (new_window): the screen's frame_window is not - managed - (cleanup_frame): new function - (unmap_notify): calls cleanup_frame if window exists in a frame - (destroy_window): likewise - - * src/data.h (struct screen_info): remove frame field - (struct rp_window_frame): new fields win, prev, next - (rp_window_frame_sentinel): new global - - * src/actions.c (cmd_prev): jumps to last accessed window if - current frame is empty. - (cmd_next): likewise - (cmd_remove): nothing is done if only 1 frame exists - - * src/data.h (struct screen_info): new field frame_window - (rp_current_frame): new global - (rp_current_window): removed. All dependant code updated. - -2001-04-04 Ryan Yeske - - * src/actions.c: add :banish to user_commands. - (initialize_default_keybindings): Add keybinding for :banish. - (cmd_banish): New function. - -2001-04-01 shawn - - * src/manage.c (maximize_normal): fixed maximizing problems for - windows with resize hints. - (maximize_transient): likewise - -2001-03-31 shawn - - * src/split.h (find_window_for_frame): new function prototype - (find_window_for_frame): likewise - (find_window_for_frame): likewise - (find_window_for_frame): likewise - (find_window_for_frame): likewise - - * src/split.c (window_fits_in_frame): new function - (find_window_for_frame): likewise - (split_window): likewise - (v_split_window): likewise - (h_split_window): likewise - (remove_all_frames): likewise - (frame_is_below): likewise - (frame_is_above): likewise - (frame_is_left): likewise - (frame_is_right): likewise - (total_frame_area): likewise - (num_frames): likewise - (frames_overlap): likewise - (frame_overlaps): likewise - (remove_frame): likewise - - * src/ratpoison.h: includes "split.h" - - * src/manage.c (unmanage): calls free_window - (maximize_transient): takes the window's frame into account - (maximize_normal): likewise - - * src/list.h (find_window_prev_with_frame): new function prototype - (find_window_next_with_frame): likewise - (free_window): likewise - - * src/list.c (free_window): new function - (add_to_window_list): initialize new window's frame to NULL. - (find_window_prev): skips windows with frames - (find_window_next): likewise - (find_window_other): likewise - (find_window_prev_with_frame): new function - (find_window_next_with_frame): new function - (set_active_window): returns if the specified window is already - the current window. - (set_active_window): If the new window has no frame it inherits - the current window's frame. - (set_active_window): maximize and raise the newly active window. - - * src/events.c (unmap_notify): handles window frames. - (destroy_window): simplified - - * src/data.h (struct rp_window_frame): new struct - (struct rp_window): add frame variable - - * src/conf.h (WINDOW_BORDER_WIDTH): set to 1 - - * src/actions.h (cmd_next_frame): new function prototype - (cmd_prev_frame): likewise - (cmd_h_split): likewise - (cmd_v_split): likewise - (cmd_only): likewise - (cmd_remove): likewise - - * src/actions.c (initialize_default_keybindings): new default - bindings for "split", "vsplit", "focus", "only", "remove" - (user_commands): new user commands "split", "vsplit", "focus", - "only", "remove" - (cmd_prev_frame): new function - (cmd_next_frame): likewise - (cmd_h_split): likewise - (cmd_v_split): likewise - (cmd_only): likewise - (cmd_remove): likewise - - * src/Makefile.am (ratpoison_SOURCES): new files split.c split.h - -2001-03-31 Ryan Yeske - - * doc/ipaq.ratpoisonrc: Use keysym names. - -2001-03-28 Shawn - - * src/main.c (main): initialize rp_command_request and - rp_command_result. - - * src/data.h (rp_command_request): new global - (rp_command_result): new global - - * src/events.c (execute_remote_command): new function - (receive_command): loops through the list of command requests - calling execute_remote_command on each one. - (property_notify): better detection of command requests. - - * src/communications.c (recieve_command_result): new function - (send_command): creates a new window to attach the command - to. Waits for confirmation that the command has been executed. - - * src/actions.h (cmd_echo): new prototype - - * src/actions.c (cmd_echo): new function - (user_commands): update "echo" entry - -2001-03-22 Gergely Nagy <8@free.bsd.hu> - - * debian/control: removed build-dependency on x-terminal-emulator, - downgraded xterm | x-terminal-emulator dependency to a recommends - only - -2001-03-19 shawn - - * src/main.c (ratpoison_longopts): add --command to recognized - command-line options. - - * src/communications.h (send_command): new function prototype - - * src/data.h (rp_command): new global variable - - * src/events.c (receive_command): new function - (property_notify): handles rp_command Atoms - - * src/communications.c (send_command): new function - - * src/main.c (print_help): prints help for --command - (main): handles --command command-line option - -2001-03-14 shawn - - * src/events.c (delegate_event): calls focus_change on FocusOut - and FocusIn events. - (focus_change): new function - - * src/list.c (add_to_window_list): add FocusChangeMask to the - window's event mask. - -2001-03-13 shawn - - * configure.in: warn the user if the x terminal emulator cannot be - found. - - * src/conf.h: replaced the silly c++ style comment around - HIDE_MOUSE with a REAL comment. - - * src/manage.c (update_window_information): updates the window's - border width. - - * src/conf.h (WINDOW_BORDER_WIDTH): new constant - - * src/manage.c (maximize_normal): Set the border width to - WINDOW_BORDER_WIDTH. takes the border width into account when - calculating the position, width, and height. - (maximize_transient): likewise - (maximize): calls XSetWindowBorderWidth to set the window's border - width. - (force_maximize): likewise - -2001-03-07 shawn - - * doc/Makefile.am (EXTRA_DIST): Added sample.ratpoisonrc and - ipaq.ratpoisonrc - -2001-03-07 Ryan Yeske - - * doc/ipaq.ratpoisonrc: New file. - -2001-03-07 Ryan Yeske - - * src/actions.c (string_to_keysym): New function. - (parse_keydesc): Call string_to_keysym. - - * src/main.c (read_startup_files): Use PRINT_DEBUG to report failure - to load rc files. - - * src/main.c (read_rc_file): Check for comment character '#' in first - column. - (read_rc_file): Fix typo that was resulting in exhausting virtual - memory when parsing rc files. - -2001-03-06 shawn - - * src/input.c (init_modifier_map): rp_modifier_info masks are or'd - with existing value. - (init_modifier_map): Resolves alt-meta conficts just like emacs. - (cook_keycode): returns a KeySym string. Updated Dependant code. - (read_key): likewise - (get_more_input): copies the KeySym string passed back from - read_key into the input buffer. - - * src/data.h (struct modifier_info): commented out - mode_switch_mask. Dependant code commented out. - - * src/actions.c (cmd_select): the search is not carried out on empty - strings. - - * src/events.c (configure_request): Handles restacking requests. - - * src/main.c: removed rp_mode_switch and rp_numlock. Added - rp_modifier_info global. - (main): calls init_modifier_map. - (init_screen): windows no longer select on KeyRelease and - KeymapState events. - - * src/input.h (init_modifier_map): new prototype - - * src/input.c (init_modifier_map): new function - (cook_keycode): uses rp_modifier_info to get Mode_switch modifier - mask. - (read_key): only listens for key presses. - - * src/events.c (keymap_state): removed function - (key_release): likewise - (delegate_event): removed case for KeymapNotify. - - * src/data.h (struct modifier_info): added mode_switch_mask, removed - shift_lock_mask. removed rp_mode_switch, and - rp_numlock. dependant code updated. - -2001-03-05 shawn - - * configure.in: bumped version to 0.1.1-cvs - -2001-03-05 Ryan Yeske - - * src/actions.c: remove silly C,M,A,S,H #defines and propagate - changes. - - * src/bar.c (update_window_names): Print a '+' for the last accessed - window. - -2001-03-05 shawn - - * src/events.c (key_press): set rp_mode_switch to 0 before processing - the key. - - * src/main.c: new globals rp_mode_switch, rp_numlock. - (init_screen): selects on KeyRelease events for the root window, - input_window, and key_window. - (init_screen): selects on KeymapState events for input_window and - key_window. - - * src/input.c (cook_keycode): Handles Mode_switch (aka AltGr). - (read_key): listens for KeyRelease and KeymapState events. - (read_key): updates rp_mode_switch status - - * src/events.h (keymap_state): new prototype - - * src/events.c (keymap_state): new function - (key_release): new function - (key_press): uses cook_keycode to get the event's keysym. - (key_press): updates rp_mode_switch status - (delegate_event): handles KeymapNotify events. - - * src/data.h (struct modifier_info): new struct - new globals rp_mode_switch and rp_numlock. - -2001-03-04 shawn - - * configure.in: bumbped version number to 0.1.0 - -2001-03-04 Gergely Nagy <8@free.bsd.hu> - - * debian/changelog: bumped version number to 0.1.0 - - * debian/rules: fixed clean target, it failed when there - was no Makefile - - * doc/ratpoison.1: some indentitation fixes, removed the note - that upstream doesn't have a manpage, because it has - -2001-03-03 Ryan Yeske - - * src/actions.c (cmd_bind): Do not pollute the message bar with - chatter about the keybinding. - -2001-03-03 shawn - - * src/manage.c (maximize_normal): windows with resize increments - resize properly when their original size is > the screen size. - (maximize_transient): likewise - -2001-03-02 shawn - - * configure.in: adds -g to CFLAGS when debugging is turned on. - - * doc/Makefile.am (EXTRA_DIST): man page comes with the distro. - - * Makefile.am (SUBDIRS): removed man/ - - * configure.in (AC_OUTPUT): removed man/Makefile - removed references to emacs. - - * doc/Makefile.am (man_MANS): ratpoison.1 moved to doc/ - - * doc/ratpoison.texi: minor updates. - - * man/ratpoison.1: added changes from texinfo docs. - -2001-03-02 shawn - - * src/main.c (print_version): updated copyright notice. - - * src/actions.c (initialize_default_keybindings): removed emacs - binding. - -2001-03-01 shawn - - * doc/ratpoison.texi (Commands): filled in remaining commands and - keys. - -2001-03-01 Ryan Yeske - - * src/ratpoison.h (xmalloc, xrealloc, fatal): Prototype. - - * src/main.c (xmalloc): Move here from sbuf.c. - (xrealloc): Likewise. - (fatal): Likewise. - - * src/number.c (find_empty_cell): Use xrealloc, remove error check. - (init_numbers): Likewise. - - * src/manage.c (get_window_name): Likewise. - - * src/main.c (main): Likewise. - - * src/list.c (add_to_window_list): Likewise. - (add_to_window_list): Likewise. - - * src/events.c (handle_key): Likewise. - - * src/input.c (keysym_to_string): Likewise. - (get_more_input): Use xrealloc, remove error check. - - * src/actions.c (cmd_source): Open the file. Error report as - appropriate. - (cmd_windows): Call current_screen() to find the current screen. - (cmd_clock): Show the clock even if no windows are open. - (cmd_clock): Use xmalloc, remove error check. - (initialize_default_keybindings): Use xmalloc. - (cmd_bind): Use xmalloc. - (cmd_rename): Use xmalloc, remove error check. - (add_keybinding): Use xrealloc. - (replace_keybinding): Use xrealloc. - - * src/main.c (read_rc_file): Take a file pointer rather than a - filename. - (read_startup_files): If ~/.ratpoisonrc is not readable try - /etc/ratpoisonrc. - - * src/actions.c: Use PRINT_DEBUG instead of fprintf. Put useful error - text in calls to message(). - (cmd_select): Show the window list if there is no such window - number. - -2001-02-28 shawn - - * src/manage.c (map_window): calls update_window_information. - - * src/manage.h (map_window): new prototype. - - * src/events.c (new_window): calls update_window_information on new windows. - (map_request): calls map_window on managed unmapped windows. - (configure_request): removed commented out old crusty - code. Updates window's structure based on what bits are set in the - event's value_mask. Doesn't honour resize request. Windows are - always maximized. - (property_notify): doesn't call maximize when WM_NORMAL_HINTS are - updated. - - * src/manage.c (manage): no longer maps the window, this code is in - map_window. - (map_window): new function - (maximize): no longer sends a synthetic configure event. - (scanwins): calls map_window on viewable windows. - (update_window_information): renamed from manage. dependant code - updated. - -2001-02-27 shawn - - * doc/ratpoison.texi (Commands): added escape command - -2001-02-27 shawn - - * src/actions.c (cmd_escape): updates the "other" command keybinding - - * src/manage.h (ungrab_prefix_key): new prototype - (grab_prefix_key): likewise - - * src/manage.c (ungrab_prefix_key): new function - - * src/main.c (main): calls initialize_default_keybindings after - init_window_list. - - * src/data.h (struct rp_action): key is of type KeySym. state is - unsigned int. - - * src/conf.h (KEY_PREFIX): set to XK_t - - * src/actions.h (cmd_escape): new prototype - - * src/actions.c (cmd_escape): new function - - * src/data.h (struct key): move from actions.h - (struct rp_key): rename from struct key. dependant code updated. - (prefix_key): new global variable. code dependant on KEY_PREFIX - and MODIFIER_PREFIX updated to use this. - - * src/actions.c: "maximize" user command calls cmd_maximize - (initialize_default_keybindings): initializes prefix_key. - Added "escape" command. - - * src/manage.c (force_maximize): moved from actions.c - (maximize): likewise - (maximize_normal): likewise - (maximize_transient): likewise - - * src/actions.c (cmd_maximize): New function - - * src/main.c (handler): Prepends error message with "ERROR: ". - Displays error in message bar. Returns 0. - - * src/events.c (destroy_window): sets rp_current_window to NULL when - there are no more mapped windows. - (destroy_window): calls set_current_window and find_window_other - directly instead of cmd_other. - -2001-02-26 shawn - - * src/list.c (save_mouse_position): stores the mouse position relative - to the root window. - (set_active_window): warps the mouse relative to the root window. - - * src/actions.h: prototype for force_maximize added - - * src/actions.c: the user command "maximize" calls force_maximize - (force_maximize): New function - -2001-02-25 shawn - - * configure.in (AC_OUTPUT): added man/Makefile - - * Makefile.am (SUBDIRS): added man dir - -2001-02-25 Ryan Yeske - - * src/main.c (read_rc_file): rename from load_rc_file. Remove static - keyword. - (read_startup_files): rename from read_initialization_files. - - * src/actions.c (cmd_prev): Handle situation when there is no other - window. - (cmd_next): Likewise. - (cmd_other): Likewise. - (cmd_source): New function. - -2001-02-24 Ryan Yeske - - * src/main.c (load_rc_file): new function - (read_initialization_files): new function - (main): read the initialization files - - * src/conf.h: remove themes support - - * src/themes.h: remove file - - * src/actions.c (replace_keybinding): add function - (cmd_bind): handle binding of previously bound key - -2001-02-23 shawn - - * src/main.c (main): passes return value of find_window_other() to - set_active_window(). - - * src/list.h (remove_from_window_list): removed prototype - (find_window_in_list): new prototype - (append_to_list): likewise - (insert_into_list): likewise - (remove_from_list): likewise - - * src/list.c: propogated use of rp_unmapped_window_sentinel and - rp_mapped_window_sentinel. - (find_window_in_list): new function - (find_window): calls find_window_in_list to search mapped and - unmapped window lists. - (remove_from_window_list): removed function - (init_window_list): initialized sentinels - (find_window_prev): searches only the mapped window list. - (find_window_next): likewise - (find_window_other): likewise - (append_to_list): new function - (insert_into_list): new function - (remove_from_list): new function - - * src/events.c (unmap_notify): Searches only the mapped window - list. moves the window from the unmapped window list to the mapped - window list. - - * src/data.h: removed rp_window_head and rp_window_tail, updated - dependant files. Added rp_mapped_window_sentinel and - rp_unmapped_window_sentinel globals. - - * src/bar.c (update_window_names): loops only through mapped window - list. - -2001-02-21 Ryan Yeske - - * configure.in: change version to 0.0.6-cvs - -2001-02-21 Ryan Yeske - - * src/manage.c (manage): comment out broken sort_window_list_by_number - call - - * src/actions.h (key): new structure - - * src/actions.c (find_keybinding): return an rp_action*, not a char* - (user_commands): add bind command - (parse_keydesc): new function - (cmd_bind): new function - - * src/actions.h: update find_keybinding prototype - - * src/events.c (handle_key): handle new return value of - find_keybinding - - * src/actions.c (cmd_generate): Send the modifier prefix state as well - as the keycode. - (find_keybinding): Do not strdup the key action data. - (add_keybinding): Strdup the key action data. - -2001-02-19 Ryan Yeske - - * autogen.sh: Run aclocal before autoheader. - -2001-02-19 Ryan Yeske - - * src/events.c (handle_key): Call find_keybinding() instead of looping - through keytable here. - - * src/main.c (main): Call initialize_default_keybindings. - - * src/actions.c (find_keybinding): Added. - (add_keybinding): Added. - (initialize_default_keybindings): Added. Do not use static table - of keybindings. Instead call add_keybinding() for each key. - - * src/Makefile.am (ratpoison_SOURCES): add themes.h - - * src/main.c (FONT_NAME): Rename to FONT - (BAR_BG_COLOR): Rename to BACKGROUND - (BAR_FG_COLOR): Rename to FOREGROUND - - * src/list.c (find_window_by_number): Rename to find_window_number. - (find_window_by_name): Rename to find_window_name. - (goto_window_name): Remove. - (find_window_prev): Clean up. - (find_window_next): Clean up. - - * src/list.h: Update prototypes. - - * src/conf.h: Include "themes.h". - - * src/actions.c (cmd_generate): Fix typo. - (prev_window): Remove. - (next_window): Remove. - (last_window): Remove. - (cmd_prev): Add. - (cmd_next): Add. - (cmd_other): Add. - (string_to_window_number): Add. - (cmd_select): Add. - (cmd_rename): Add. - (delete_window): Remove. - (cmd_delete): Add. - (cmd_delete): Remove. - (cmd_kill): Add. - (show_version): Remove. - (cmd_version): Add. - (command): Remove. - (command): Remove. - (cmd_colon): Deal with partial input. - (cmd_exec): Add. - (cmd_newwm): Remove. - (cmd_newwm): Add. - (cmd_clock): Remove. - (cmd_clock): Add. - (cmd_clock): Remove. - (cmd_windows): Add. - (goto_window_number): Remove. - (abort_keypress): Remove. - (cmd_abort): Add. - - * src/actions.c: Make :select command handle numbers. - (cmd_unimplemented): new function. - - Commands are all cmd_ prefixed. Major changes within this file. - * src/input.c (get_more_input): New function. Used to collect input - on top of some existing input. - (get_input): Calls get_more_input to do work. - - * src/conf.h (THEME): added themes support. - - * src/bar.h (message): New macro. Calls marked_message with (0, 0) - highlight parameters. - - * src/bar.c (marked_message): New function - - * src/actions.h: Update prototypes. - -2001-02-19 shawn - - * src/manage.c (manage): calls sort_window_list_by_number - - * src/list.h (sort_window_list_by_number): Added prototype - - * src/list.c (swap_list_elements): Added - (sort_window_list_by_number): Added - - * src/input.c (update_input_window): Added - (get_input): calls update_input_window in place of xlib calls. - (get_input): exits if realloc fails - - * src/conf.h: Added INPUT_WINDOW_SIZE - - * src/bar.c (update_window_names): loops through window list from head - to tail. - -2001-02-18 Gergely Nagy <8@free.bsd.hu> - - * NEWS: mention that ALL of the fixed size buffers are fixed. - -2001-02-18 shawn - - * src/conf.h: restructured comments. Added #define for AUTO_CLOSE. - - * src/manage.c (unmanage): kills ratpoison when there are no more - windows. - -2001-02-17 Ryan Yeske - - * Makefile.am (SUBDIRS): Source dir before documentation dirs. - - * autogen.sh: Do not continue if a step fails. - -2001-02-17 Gergely Nagy <8@free.bsd.hu> - - * man/ratpoison.1, - * doc/ratpoison.texi: removed reference to :center - and :resize - -2001-02-17 Ryan Yeske - - * src/actions.c (generate_key_event): Send KEY_PREFIX. - -2001-02-17 Ryan Yeske - - * src/manage.c (current_screen): Rename get_screen() and move to this - file. - - * src/input.c (get_input): Remove screen_info as paramater. Call - current_screen() to get screen_info. - - * src/actions.c (get_screen): Remove. - -2001-02-17 Gergely Nagy <8@free.bsd.hu> - - * src/actions.c (goto_window_by_name, rename_current_window, command) - (shell_command, switch_to, xterm_command): changed static char[100]s - to dynamic char *s, as get_input() now supports this - * src/input.h: reflect get_input change - * src/input.c (get_input): use dynamically allocated strings - -2001-02-15 Gergely Nagy <8@free.bsd.hu> - - * autogen.sh: added autoheader call - - * debian/control: bumped Standards-Version - * debian/copyright: changed URL - * debian/patches/00list: removed 01-xterm - * debian/patches/01-xterm.dpatch: removed, useless with 0.0.6 - * debian/rules: rewritten using a newer version of my - build system - - * man/Makefile.am: new file - * Makefile.am (SUBDIRS): added man - (debian_FILES): new variable, added to EXTRA_DIST - - * debian/ratpoison.1: moved... - * man/ratpoison.1: ...here, and updated to include all - the new keystrokes - * doc/ratpoison.texi: updated - * doc/ratpoison.info: regenerated - - * configure.in: fixed --enable-debug, added --with-emacs, - added man/Makefile to AC_OUTPUT - -2001-02-15 Gergely Nagy <8@free.bsd.hu> - - * src/getopt.c: fixed a warning - - * src/events.c (handle_key): use dynamically allocated strings - - * src/bar.c (display_msg_in_bar), - * src/sbuf.c (xrealloc): changed an fprintf to PRINT_DEBUG - -2001-02-15 Ryan Yeske - - * src/list.c (save_mouse_position): changed declaration of mask to - unsigned int - (get_mouse_root_position): changed declaration of mask to unsigned - int - - * src/actions.c (xterm_command): added new function. Thanks to Ben - Leslie - (user_commands): added "xterm" - (key_actions): added C-t C-! binding for "xterm" - - * src/messages.h (MESSAGE_PROMPT_XTERM_COMMAND): new message - -2001-02-14 Ryan Yeske - - * src/actions.h (generate_key_event): added prototype - - * src/actions.c (key_actions): added additional keybindings to include - C- versions for all keys. - (generate_key_event): added command - -2001-02-13 Ryan Yeske - - * src/bar.c (update_window_names): get indexes around current window - text to pass to display_msg_in_bar - (display_msg_in_bar): xor a rectangle around the text represented - by mark_start and mark_end arguments - - * src/conf.h (BAR_FG_COLOR): changed to black - (BAR_BG_COLOR): changed to white - (FONT_NAME): changed to 9x15bold - (BAR_Y_PADDING): changed to zero - (BAR_X_PADDING): changed to zero - - * src/data.h (struct screen_info): removed bold_gc - - * src/events.c (handle_key): can no longer over modify keystrokes - (handle_key): updated call to display_msg_in_bar to take extra - highlighting parameters. - - * src/main.c (init_screen): removed bold_color - (XGCValues gv): made global - - * src/actions.h (user_command): new struct - (argtype): new enumeration - - * src/actions.h: many updated prototypes - - * src/actions.c (key_actions): every command is now executed by - calling command() with a string version of the command, rewrote - this table to reflect that. - (user_commands): new symbol table added, a mapping between strings - and functions and arguments. - (spawn): now handles commands with arguments by calling them - through "/bin/sh -c" - (get_screen): new function. - - * src/actions.c: all calls to display_msg_in_bar updated to call with - 2 additional highlight parameters. - - * src/actions.c (goto_win_by_name, rename_current_window, ...): most - all user functions that need arguments will prompt the user for - them, unless they are supplied. Allows the same function to be - used interactively or internally. - - * src/bar.h (display_msg_in_bar): updated prototype - - * src/bar.c (display_msg_in_bar): takes two additional int arguments - which are offsets into the string describing which part of the - text to draw highlighted. - (update_window_names): highlight current window - -2001-02-12 Ryan Yeske - - * src/actions.c (spawn): will now execute commands with arguments by - execl'ing through /bin/sh -c - -2001-02-11 Ryan Yeske - - * autogen.sh: added to repository - -2001-02-11 Ryan Yeske - - * src/ratpoison.h: #include "sbuf.h" - removed duplicate #include "messages.h" - - * src/Makefile.am (ratpoison_SOURCES): added sbuf.c sbuf.h - - * src/bar.c (calc_bar_width): removed function - (update_window_names): now builds up the entire window list string - in dynamic storage before printing the window list. No longer - displays the current window in a different colour. - -2001-02-11 shawn - - * src/main.c (set_sig_handler): Added - (main): Uses set_sig_handler() instead of signal() - - * src/manage.h (set_state): Added prototype - - * src/manage.c (send_configure): Now sends the window's x,y,width,height - coordinates. - (set_state): Added - - * src/events.c (map_request): Calls set_state when mapping an unmapped - window. - - * src/actions.c (maximize_transient): takes an rp_window as the - argument. Removed code to handle void *data. Incremental resizing - only happens if the maximum size isn't set. Removed actual X - maximization code. - (maximize): Moved meat to maximize_normal(). - -2001-02-10 Ryan Yeske - - * src/ratpoison.h: #include "messages.h" - - * src/list.h (goto_window_number): moved prototype to actions.h - - * src/actions.h (goto_window_number): added prototype - (goto_window): removed prototype - - * src/Makefile.am (ratpoison_SOURCES): added messages.h - - * src/actions.c (prev_window): display correct message when there is - no other window or there are no windows at all. - (next_window): display correct message when there is no other - window or there are no windows at all. - (key_actions): all number keys call goto_window_number with an - argument instead of a dedicated function. - (key_actions): XK_exclam now runs execute_command - - * src/actions.c: replaced all user message strings with #define'd - messages. - - * src/actions.h (goto_window): removed - (goto_window_0): removed - (goto_window_1): removed - (goto_window_2): removed - (goto_window_3): removed - (goto_window_4): removed - (goto_window_5): removed - (goto_window_6): removed - (goto_window_7): removed - (goto_window_8): removed - -2001-02-10 shawn - - * src/communications.c (send_restart, send_kill): Added - - * src/ratpoison.h: includes communications.h - - * src/main.c (send_restart, send_kill): Moved to communications.c - - * src/list.c (get_mouse_root_position): Added - (add_to_window_list): Initialize new rp_window fields - (save_mouse_position): Added - (set_active_window): Added code to save and restore the position - of the mouse - - * src/events.c (property_notify): Added code to listen for a - WM_TRANSIENT_FOR property change. - - * src/data.h (struct rp_window): Added transient, transient_for, mouse_x, mouse_y. - - * src/actions.c (maximize_transient): Added - (maximize): Added code to handle transient windows differently - - * src/Makefile.am (ratpoison_SOURCES): Added communications.h and communications.c - -2001-02-04 Ryan Yeske - - * doc/ratpoison.texi: added keystroke for `Show current time.' - - * debian/ratpoison.1: added keystroke for `Show current time.' - -2001-01-02 shawn - - * src/communications.c (send_restart): moved from main.c - (send_kill): moved from main.c - - * src/main.c: Removed send_kill, send_restart - - * src/input.h: Added copyright notice. - - * src/input.c: Added copyright notice. - - * src/actions.c: Added copyright notice. - -2001-02-04 Ryan Yeske - - * src/actions.c (prev_window): do not set active window when - recursing. - (next_window): do not set active window when recursing. - -2001-01-28 Ryan Yeske - - * src/actions.c: changed rename_current_window key to `A', bound `a' - to show_clock - -2001-01-02 shawn - - * src/actions.h (show_clock): added prototype - - * src/actions.c (show_clock): added - -2000-12-15 shawn - - * src/actions.c (maximize): increment size in hints->width_inc and - hints->height_inc intervals - - * src/manage.c (manage): set the dimension members of the rp_window struct - -2000-12-15 shawn - - * src/manage.c (manage): added ColormapChangeMask and - StructureNotifyMask to events listened for on managed windows. - - * src/main.c (main): propagated changes to set_active_window usage - - * src/events.c: propagated changes to set_active_window usage - - * src/data.h (struct rp_window): Added colormap member - - * src/list.c (set_active_window): Installs colormap - (set_active_window): sets rp_current_window to window passed in as - parameter - - * src/actions.c (prev_window): No longer uses rp_current_window to - keep track of state - (next_window): No longer uses rp_current_window to keep track of - state - - * src/list.c (add_to_window_list): sets member colormap to the - DefaultColormap - - * src/manage.c (update_window_name): fixed memory leak. Not freeing - the win->name before updating it. - (manage): Gets the colormap now. - - * src/list.c (add_to_window_list): Added init code for `hints' - - * src/events.c (property_notify): Added handler for XA_WM_NORMAL_HINTS. - - * src/data.h (struct rp_window): Added XSizeHints member - - * src/actions.c (maximize): Adhere to the window's Size Hints - -2000-12-14 shawn - - * src/manage.h (update_normal_hints): added prototype - - * src/manage.c (update_normal_hints): added - - * src/list.c (add_to_window_list): added comment describing function - -2000-12-13 shawn - - * src/actions.c: removed gross tabs from key_actions definition. Add - C-t space to go to next window. - -2000-12-09 shawn - - * src/data.h (struct rp_window): added x, y, width, height, border; - - * src/events.c (configure_request): Now honours request, but then - maximizes it afterwards. - (configure_request): updates the rp_window's geometry fields - - * src/manage.c (manage): commented out XMoveResizeWindow call - (send_configure): added - - * src/actions.h (maximize): added prototype - - * src/actions.c (maximize): added - - * src/input.c (cook_keycode): properly handle LockMask - (cook_keycode): updated comments - - * src/input.h: added prototype for keysym_to_string - - * src/input.c (keysym_to_string): added - - * src/bar.c (show_bar): update_window_names(s) is called whether the - bar is raised or not. - - * src/conf.h: Added BAR_Y_PADDING BAR_X_PADDING - - * src/list.c (goto_window_name): return success or failure - - * src/list.h: updated prototype for goto_window_name - - * src/events.c (handle_key): Added a message indicating an unbound - key. - - * src/bar.c (display_msg_in_bar): added - (update_window_names): uses BAR_X_PADDING instead of `5' - (update_window_names): Updated BAR_PADDING to BAR_Y_PADDING - - * src/input.c (cook_keycode): mod is now an usigned int - (read_key): Ignores modifier keys. Now returns keysym and - modifiers. - (get_input): Updated BAR_PADDING to BAR_Y_PADDING and - BAR_X_PADDING. - - * src/events.c (handle_key): uses read_key instead of XMaskEvent to - read a key. - - * src/actions.c (goto_window_number): window list is displayed on failure. - (bye): added - (switch_to): added - (execute_command): no longer seg faults when no windows exist. - -2000-12-03 shawn - - * src/input.h (cook_keycode): added prototype - - * src/actions.c: key_actions now uses the #define'd keysyms from X11/keysym.h - - * src/events.c (handle_key): calls cook_keycode() before processing the keysym. - - * src/input.c (read_key): calls cook_keycode() before returning the keysym - (cook_keycode): added. - -2000-12-01 shawn - - * src/list.c (find_window_by_name): added check to make sure the - window's state is not STATE_UNMAPPED. - -2000-11-27 shawn - - * src/events.c (handle_key): Code to generate the prefix event has - been moved to generate_prefix(). - - * src/actions.h (toggle_bar): added prefixes for generate_prefix, and - abort_keypress. - - * src/actions.c (generate_prefix): added. - (abort_keypress): added. - -2000-11-04 Ryan Yeske - - * src/Makefile.am (ratpoison_SOURCES): added getopt.c, getopt1.c and - getopt.h - -2000-10-30 Ryan Yeske - - * src/actions.h (execute_command): added prototype - - * src/actions.c (rename_current_window): added test to skip renaming - if user entered an empty string - (execute_command): added command - (key_actions): execute_command is called by pressing ':' - -2000-10-30 shawn - - * src/conf.h: added HIDE_MOUSE - -2000-10-24 Ryan Yeske - - * src/bar.c (bar_x): rightmost border is no longer off screen - -2000-10-20 shawn - - * src/events.c (key_press): fixed MODIFIER_PREFIX bug - -2000-10-19 Ryan yeske - - * src/manage.c (unmanaged_window): added. - - * src/conf.h (PADDING_LEFT, PADDING_TOP, PADDING_RIGHT, - PADDING_BOTTOM, UNMANAGED_WINDOW_LIST): added. Windows listed in - UNMANAGED_WINDOW_LIST will not be managed. Space reserved for - unmanaged windows can be defined with PADDING_* - -2000-10-19 shawn - - * src/manage.c (get_window_name): added - -2000-10-17 shawn - - * src/events.c (configure_request): resize windows to the max-1. Call - XConfigureWindow as well as XSendEvent. - - * src/manage.c (scanwins): Now only maps visible windows - - * src/conf.h: Removed keystroke related defines - - * src/actions.c: Moved all key activated functions here. Added - key_actions array. - - * src/events.c (unmap_notify): now properly unmaps windows - - * src/data.h: added ignore_badwindow - - * src/main.c (handler): added ability to ignore BadWindow errors - -2000-10-15 shawn - - * src/main.c, src/data.h, src/events.c: Added ability to kill and - hup running ratpoison processes. +See https://savannah.nongnu.org/git/?group=ratpoison diff -Nru ratpoison-1.4.8/configure ratpoison-1.4.9/configure --- ratpoison-1.4.8/configure 2014-09-14 16:34:30.000000000 +0000 +++ ratpoison-1.4.9/configure 2017-04-02 23:39:56.000000000 +0000 @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for ratpoison 1.4.8. +# Generated by GNU Autoconf 2.69 for ratpoison 1.4.9. # # Report bugs to . # @@ -580,8 +580,8 @@ # Identity of this package. PACKAGE_NAME='ratpoison' PACKAGE_TARNAME='ratpoison' -PACKAGE_VERSION='1.4.8' -PACKAGE_STRING='ratpoison 1.4.8' +PACKAGE_VERSION='1.4.9' +PACKAGE_STRING='ratpoison 1.4.9' PACKAGE_BUGREPORT='ratpoison-devel@nongnu.org' PACKAGE_URL='' @@ -627,6 +627,8 @@ LTLIBOBJS LIBOBJS lispdir +HAVE_XRANDR_FALSE +HAVE_XRANDR_TRUE HISTORY_LIBS EGREP GREP @@ -663,6 +665,10 @@ MAINT MAINTAINER_MODE_FALSE MAINTAINER_MODE_TRUE +AM_BACKSLASH +AM_DEFAULT_VERBOSITY +AM_DEFAULT_V +AM_V am__untar am__tar AMTAR @@ -727,6 +733,7 @@ ac_subst_files='' ac_user_opts=' enable_option_checking +enable_silent_rules enable_maintainer_mode enable_debug with_electric_fence @@ -734,6 +741,7 @@ with_xft with_xkb enable_mdoc +with_xrandr enable_dependency_tracking with_x enable_history @@ -1294,7 +1302,7 @@ # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures ratpoison 1.4.8 to adapt to many kinds of systems. +\`configure' configures ratpoison 1.4.9 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1364,7 +1372,7 @@ if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of ratpoison 1.4.8:";; + short | recursive ) echo "Configuration of ratpoison 1.4.9:";; esac cat <<\_ACEOF @@ -1372,15 +1380,20 @@ --disable-option-checking ignore unrecognized --enable/--with options --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] - --disable-maintainer-mode disable make rules and dependencies not useful - (and sometimes confusing) to the casual installer + --enable-silent-rules less verbose build output (undo: "make V=1") + --disable-silent-rules verbose build output (undo: "make V=0") + --disable-maintainer-mode + disable make rules and dependencies not useful (and + sometimes confusing) to the casual installer --enable-debug build with extra debugging messages --disable-mdoc install man(7) manpages, useful if you don't have a mdoc(7) formatter such as mandoc(1) or groff(1) - --disable-dependency-tracking speeds up one-time build - --enable-dependency-tracking do not reject slow dependency extractors - --disable-history ignore libhistory (default: use it if available, - only used for ! expansion) + --enable-dependency-tracking + do not reject slow dependency extractors + --disable-dependency-tracking + speeds up one-time build + --enable-history Link with libhistory (default: disabled. Note: only + used for ! expansion) Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] @@ -1389,7 +1402,9 @@ debugging). --with-xterm=PROG set the x terminal emulator used by ratpoison --without-xft Don't use the Xft library even if available - --disable-xkb Don't build XKB support for keyboard input. + --without-xkb Don't build XKB support for keyboard input. + --without-xrandr Build without Xrandr support, default is to require + and use it. --with-x use the X Window System Some influential environment variables: @@ -1478,7 +1493,7 @@ test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -ratpoison configure 1.4.8 +ratpoison configure 1.4.9 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -1847,7 +1862,7 @@ This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by ratpoison $as_me 1.4.8, which was +It was created by ratpoison $as_me 1.4.9, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -2226,7 +2241,7 @@ -am__api_version='1.11' +am__api_version='1.15' # Find a good install program. We prefer a C program (faster), # so one script is as good as another. But avoid the broken or @@ -2323,9 +2338,6 @@ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5 $as_echo_n "checking whether build environment is sane... " >&6; } -# Just in case -sleep 1 -echo timestamp > conftest.file # Reject unsafe characters in $srcdir or the absolute working directory # name. Accept space and tab only in the latter. am_lf=' @@ -2336,32 +2348,40 @@ esac case $srcdir in *[\\\"\#\$\&\'\`$am_lf\ \ ]*) - as_fn_error $? "unsafe srcdir value: \`$srcdir'" "$LINENO" 5;; + as_fn_error $? "unsafe srcdir value: '$srcdir'" "$LINENO" 5;; esac -# Do `set' in a subshell so we don't clobber the current shell's +# Do 'set' in a subshell so we don't clobber the current shell's # arguments. Must try -L first in case configure is actually a # symlink; some systems play weird games with the mod time of symlinks # (eg FreeBSD returns the mod time of the symlink's containing # directory). if ( - set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` - if test "$*" = "X"; then - # -L didn't work. - set X `ls -t "$srcdir/configure" conftest.file` - fi - rm -f conftest.file - if test "$*" != "X $srcdir/configure conftest.file" \ - && test "$*" != "X conftest.file $srcdir/configure"; then - - # If neither matched, then we have a broken ls. This can happen - # if, for instance, CONFIG_SHELL is bash and it inherits a - # broken ls alias from the environment. This has actually - # happened. Such a system could not be considered "sane". - as_fn_error $? "ls -t appears to fail. Make sure there is not a broken -alias in your environment" "$LINENO" 5 - fi + am_has_slept=no + for am_try in 1 2; do + echo "timestamp, slept: $am_has_slept" > conftest.file + set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` + if test "$*" = "X"; then + # -L didn't work. + set X `ls -t "$srcdir/configure" conftest.file` + fi + if test "$*" != "X $srcdir/configure conftest.file" \ + && test "$*" != "X conftest.file $srcdir/configure"; then + # If neither matched, then we have a broken ls. This can happen + # if, for instance, CONFIG_SHELL is bash and it inherits a + # broken ls alias from the environment. This has actually + # happened. Such a system could not be considered "sane". + as_fn_error $? "ls -t appears to fail. Make sure there is not a broken + alias in your environment" "$LINENO" 5 + fi + if test "$2" = conftest.file || test $am_try -eq 2; then + break + fi + # Just in case. + sleep 1 + am_has_slept=yes + done test "$2" = conftest.file ) then @@ -2373,6 +2393,16 @@ fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } +# If we didn't sleep, we still need to ensure time stamps of config.status and +# generated files are strictly newer. +am_sleep_pid= +if grep 'slept: no' conftest.file >/dev/null 2>&1; then + ( sleep 1 ) & + am_sleep_pid=$! +fi + +rm -f conftest.file + test "$program_prefix" != NONE && program_transform_name="s&^&$program_prefix&;$program_transform_name" # Use a double $ so make ignores it. @@ -2383,8 +2413,8 @@ ac_script='s/[\\$]/&&/g;s/;s,x,x,$//' program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"` -# expand $ac_aux_dir to an absolute path -am_aux_dir=`cd $ac_aux_dir && pwd` +# Expand $ac_aux_dir to an absolute path. +am_aux_dir=`cd "$ac_aux_dir" && pwd` if test x"${MISSING+set}" != xset; then case $am_aux_dir in @@ -2395,15 +2425,15 @@ esac fi # Use eval to expand $SHELL -if eval "$MISSING --run true"; then - am_missing_run="$MISSING --run " +if eval "$MISSING --is-lightweight"; then + am_missing_run="$MISSING " else am_missing_run= - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`missing' script is too old or missing" >&5 -$as_echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: 'missing' script is too old or missing" >&5 +$as_echo "$as_me: WARNING: 'missing' script is too old or missing" >&2;} fi -if test x"${install_sh}" != xset; then +if test x"${install_sh+set}" != xset; then case $am_aux_dir in *\ * | *\ *) install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; @@ -2412,10 +2442,10 @@ esac fi -# Installed binaries are usually stripped using `strip' when the user -# run `make install-strip'. However `strip' might not be the right +# Installed binaries are usually stripped using 'strip' when the user +# run "make install-strip". However 'strip' might not be the right # tool to use in cross-compilation environments, therefore Automake -# will honor the `STRIP' environment variable to overrule this program. +# will honor the 'STRIP' environment variable to overrule this program. if test "$cross_compiling" != no; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. @@ -2554,12 +2584,6 @@ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5 $as_echo "$MKDIR_P" >&6; } -mkdir_p="$MKDIR_P" -case $mkdir_p in - [\\/$]* | ?:[\\/]*) ;; - */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;; -esac - for ac_prog in gawk mawk nawk awk do # Extract the first word of "$ac_prog", so it can be a program name with args. @@ -2642,6 +2666,45 @@ fi rmdir .tst 2>/dev/null +# Check whether --enable-silent-rules was given. +if test "${enable_silent_rules+set}" = set; then : + enableval=$enable_silent_rules; +fi + +case $enable_silent_rules in # ((( + yes) AM_DEFAULT_VERBOSITY=0;; + no) AM_DEFAULT_VERBOSITY=1;; + *) AM_DEFAULT_VERBOSITY=1;; +esac +am_make=${MAKE-make} +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5 +$as_echo_n "checking whether $am_make supports nested variables... " >&6; } +if ${am_cv_make_support_nested_variables+:} false; then : + $as_echo_n "(cached) " >&6 +else + if $as_echo 'TRUE=$(BAR$(V)) +BAR0=false +BAR1=true +V=1 +am__doit: + @$(TRUE) +.PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then + am_cv_make_support_nested_variables=yes +else + am_cv_make_support_nested_variables=no +fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5 +$as_echo "$am_cv_make_support_nested_variables" >&6; } +if test $am_cv_make_support_nested_variables = yes; then + AM_V='$(V)' + AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' +else + AM_V=$AM_DEFAULT_VERBOSITY + AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY +fi +AM_BACKSLASH='\' + if test "`cd $srcdir && pwd`" != "`pwd`"; then # Use -I$(srcdir) only when $(srcdir) != ., so that make's output # is not polluted with repeated "-I." @@ -2664,7 +2727,7 @@ # Define the identity of the package. PACKAGE='ratpoison' - VERSION='1.4.8' + VERSION='1.4.9' cat >>confdefs.h <<_ACEOF @@ -2692,12 +2755,22 @@ MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} -# We need awk for the "check" target. The system "awk" is bad on -# some platforms. +# For better backward compatibility. To be removed once Automake 1.9.x +# dies out for good. For more background, see: +# +# +mkdir_p='$(MKDIR_P)' + +# We need awk for the "check" target (and possibly the TAP driver). The +# system "awk" is bad on some platforms. # Always define AMTAR for backward compatibility. Yes, it's still used # in the wild :-( We should find a proper way to deprecate it ... AMTAR='$${TAR-tar}' + +# We'll loop over all known methods to create a tar archive until one works. +_am_tools='gnutar pax cpio none' + am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -' @@ -2705,6 +2778,49 @@ +# POSIX will say in a future version that running "rm -f" with no argument +# is OK; and we want to be able to make that assumption in our Makefile +# recipes. So use an aggressive probe to check that the usage we want is +# actually supported "in the wild" to an acceptable degree. +# See automake bug#10828. +# To make any issue more visible, cause the running configure to be aborted +# by default if the 'rm' program in use doesn't match our expectations; the +# user can still override this though. +if rm -f && rm -fr && rm -rf; then : OK; else + cat >&2 <<'END' +Oops! + +Your 'rm' program seems unable to run without file operands specified +on the command line, even when the '-f' option is present. This is contrary +to the behaviour of most rm programs out there, and not conforming with +the upcoming POSIX standard: + +Please tell bug-automake@gnu.org about your system, including the value +of your $PATH and any error possibly output before this message. This +can help us improve future automake versions. + +END + if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then + echo 'Configuration will proceed anyway, since you have set the' >&2 + echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2 + echo >&2 + else + cat >&2 <<'END' +Aborting the configuration process, to ensure you take notice of the issue. + +You can download and install GNU coreutils to get an 'rm' implementation +that behaves properly: . + +If you want to complete the configuration process using your problematic +'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM +to "yes", and re-run configure. + +END + as_fn_error $? "Your 'rm' program is bad, sorry." "$LINENO" 5 + fi +fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable maintainer-specific portions of Makefiles" >&5 $as_echo_n "checking whether to enable maintainer-specific portions of Makefiles... " >&6; } @@ -3045,6 +3161,19 @@ $as_echo "$manpage_format" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking Xrandr support" >&5 +$as_echo_n "checking Xrandr support... " >&6; } + +# Check whether --with-xrandr was given. +if test "${with_xrandr+set}" = set; then : + withval=$with_xrandr; with_xrandr=$withval +else + with_xrandr=check +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_xrandr" >&5 +$as_echo "$with_xrandr" >&6; } + ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' @@ -3833,6 +3962,65 @@ ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5 +$as_echo_n "checking whether $CC understands -c and -o together... " >&6; } +if ${am_cv_prog_cc_c_o+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF + # Make sure it works both with $CC and with simple cc. + # Following AC_PROG_CC_C_O, we do the test twice because some + # compilers refuse to overwrite an existing .o file with -o, + # though they will create one. + am_cv_prog_cc_c_o=yes + for am_i in 1 2; do + if { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o conftest2.$ac_objext" >&5 + ($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } \ + && test -f conftest2.$ac_objext; then + : OK + else + am_cv_prog_cc_c_o=no + break + fi + done + rm -f core conftest* + unset am_i +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5 +$as_echo "$am_cv_prog_cc_c_o" >&6; } +if test "$am_cv_prog_cc_c_o" != yes; then + # Losing compiler, so override with the script. + # FIXME: It is wrong to rewrite CC. + # But if we don't then we get into trouble of one sort or another. + # A longer-term fix would be to have automake use am__CC in this case, + # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" + CC="$am_aux_dir/compile $CC" +fi +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + DEPDIR="${am__leading_dot}deps" ac_config_commands="$ac_config_commands depfiles" @@ -3852,7 +4040,7 @@ _am_result=none # First try GNU make style include. echo "include confinc" > confmf -# Ignore all kinds of additional output from `make'. +# Ignore all kinds of additional output from 'make'. case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=include @@ -3908,8 +4096,8 @@ # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up - # making a dummy file named `D' -- because `-MD' means `put the output - # in D'. + # making a dummy file named 'D' -- because '-MD' means "put the output + # in D". rm -rf conftest.dir mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're @@ -3944,16 +4132,16 @@ : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c - # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with - # Solaris 8's {/usr,}/bin/sh. - touch sub/conftst$i.h + # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with + # Solaris 10 /bin/sh. + echo '/* dummy */' > sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf - # We check with `-c' and `-o' for the sake of the "dashmstdout" + # We check with '-c' and '-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly - # handle `-M -o', and we need to detect this. Also, some Intel - # versions had trouble with output in subdirs + # handle '-M -o', and we need to detect this. Also, some Intel + # versions had trouble with output in subdirs. am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in @@ -3962,8 +4150,8 @@ test "$am__universal" = false || continue ;; nosideeffect) - # after this tag, mechanisms are not by side-effect, so they'll - # only be used when explicitly requested + # After this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested. if test "x$enable_dependency_tracking" = xyes; then continue else @@ -3971,7 +4159,7 @@ fi ;; msvc7 | msvc7msys | msvisualcpp | msvcmsys) - # This compiler won't grok `-c -o', but also, the minuso test has + # This compiler won't grok '-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} @@ -4030,16 +4218,48 @@ -if test "x$CC" = "xgcc"; then - CFLAGS="-Wall $CFLAGS" + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts -Wall" >&5 +$as_echo_n "checking whether C compiler accepts -Wall... " >&6; } +if ${ax_cv_check_cflags___Wall+:} false; then : + $as_echo_n "(cached) " >&6 +else + + ax_check_save_flags=$CFLAGS + CFLAGS="$CFLAGS -Wall" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ax_cv_check_cflags___Wall=yes +else + ax_cv_check_cflags___Wall=no fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + CFLAGS=$ax_check_save_flags +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cflags___Wall" >&5 +$as_echo "$ax_cv_check_cflags___Wall" >&6; } +if test "x$ax_cv_check_cflags___Wall" = xyes; then : + CFLAGS="-Wall $CFLAGS" +else + : +fi + { $as_echo "$as_me:${as_lineno-$LINENO}: checking terminal emulator" >&5 $as_echo_n "checking terminal emulator... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $term_prog" >&5 $as_echo "$term_prog" >&6; } - ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' @@ -4871,7 +5091,7 @@ if test "${enable_history+set}" = set; then : enableval=$enable_history; else - enable_history=default + enable_history=no fi @@ -5139,7 +5359,7 @@ case $enable_history in #( no) : ;; #( - yes|default) : + yes) : for ac_header in readline/history.h do : ac_fn_c_check_header_mongrel "$LINENO" "readline/history.h" "ac_cv_header_readline_history_h" "$ac_includes_default" @@ -5192,7 +5412,7 @@ done ;; #( *) : - as_fn_error $? "invalid --enable-history=\"$enable_history\" parameter" "$LINENO" 5 ;; + as_fn_error $? "invalid --disable-history=\"$enable_history\" parameter" "$LINENO" 5 ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to use libhistory" >&5 @@ -5201,10 +5421,10 @@ yes:no) : as_fn_error $? "Can't find history headers/lib. \ Install readline dev libs for history expansion." "$LINENO" 5 ;; #( - default:no|no:*) : + no:*) : { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } ;; #( - *:yes) : + yes:yes) : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } @@ -5264,25 +5484,6 @@ mysavedCPPFLAGS="$CPPFLAGS" CPPFLAGS="$CPPFLAGS $X_CFLAGS" -for ac_header in X11/extensions/Xinerama.h -do : - ac_fn_c_check_header_compile "$LINENO" "X11/extensions/Xinerama.h" "ac_cv_header_X11_extensions_Xinerama_h" " -#include - -" -if test "x$ac_cv_header_X11_extensions_Xinerama_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_X11_EXTENSIONS_XINERAMA_H 1 -_ACEOF - -fi - -done - -CPPFLAGS="$mysavedCPPFLAGS" - -mysavedCPPFLAGS="$CPPFLAGS" -CPPFLAGS="$CPPFLAGS $X_CFLAGS" for ac_header in X11/XKBlib.h do : ac_fn_c_check_header_compile "$LINENO" "X11/XKBlib.h" "ac_cv_header_X11_XKBlib_h" " @@ -5300,13 +5501,13 @@ CPPFLAGS="$mysavedCPPFLAGS" -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for XMissingExtension in -lXext" >&5 -$as_echo_n "checking for XMissingExtension in -lXext... " >&6; } -if ${ac_cv_lib_Xext_XMissingExtension+:} false; then : +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for XTestFakeButtonEvent in -lXtst" >&5 +$as_echo_n "checking for XTestFakeButtonEvent in -lXtst... " >&6; } +if ${ac_cv_lib_Xtst_XTestFakeButtonEvent+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS -LIBS="-lXext $X_LIBS $X_EXTRA_LIBS $LIBS" +LIBS="-lXtst $X_LIBS $X_EXTRA_LIBS $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -5316,37 +5517,39 @@ #ifdef __cplusplus extern "C" #endif -char XMissingExtension (); +char XTestFakeButtonEvent (); int main () { -return XMissingExtension (); +return XTestFakeButtonEvent (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_Xext_XMissingExtension=yes + ac_cv_lib_Xtst_XTestFakeButtonEvent=yes else - ac_cv_lib_Xext_XMissingExtension=no + ac_cv_lib_Xtst_XTestFakeButtonEvent=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_Xext_XMissingExtension" >&5 -$as_echo "$ac_cv_lib_Xext_XMissingExtension" >&6; } -if test "x$ac_cv_lib_Xext_XMissingExtension" = xyes; then : - X_LIBS="-lXext $X_LIBS" +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_Xtst_XTestFakeButtonEvent" >&5 +$as_echo "$ac_cv_lib_Xtst_XTestFakeButtonEvent" >&6; } +if test "x$ac_cv_lib_Xtst_XTestFakeButtonEvent" = xyes; then : + X_LIBS="-lXtst $X_LIBS"; +$as_echo "#define HAVE_LIBXTST 1" >>confdefs.h + fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for XineramaQueryScreens in -lXinerama" >&5 -$as_echo_n "checking for XineramaQueryScreens in -lXinerama... " >&6; } -if ${ac_cv_lib_Xinerama_XineramaQueryScreens+:} false; then : +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for XkbKeycodeToKeysym in -lX11" >&5 +$as_echo_n "checking for XkbKeycodeToKeysym in -lX11... " >&6; } +if ${ac_cv_lib_X11_XkbKeycodeToKeysym+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS -LIBS="-lXinerama $X_LIBS $X_EXTRA_LIBS $LIBS" +LIBS="-lX11 $X_LIBS $X_EXTRA_LIBS $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -5356,81 +5559,61 @@ #ifdef __cplusplus extern "C" #endif -char XineramaQueryScreens (); +char XkbKeycodeToKeysym (); int main () { -return XineramaQueryScreens (); +return XkbKeycodeToKeysym (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_Xinerama_XineramaQueryScreens=yes + ac_cv_lib_X11_XkbKeycodeToKeysym=yes else - ac_cv_lib_Xinerama_XineramaQueryScreens=no + ac_cv_lib_X11_XkbKeycodeToKeysym=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_Xinerama_XineramaQueryScreens" >&5 -$as_echo "$ac_cv_lib_Xinerama_XineramaQueryScreens" >&6; } -if test "x$ac_cv_lib_Xinerama_XineramaQueryScreens" = xyes; then : - X_LIBS="-lXinerama $X_LIBS"; -$as_echo "#define HAVE_LIBXINERAMA 1" >>confdefs.h +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_X11_XkbKeycodeToKeysym" >&5 +$as_echo "$ac_cv_lib_X11_XkbKeycodeToKeysym" >&6; } +if test "x$ac_cv_lib_X11_XkbKeycodeToKeysym" = xyes; then : + +$as_echo "#define HAVE_XKBKEYCODETOKEYSYM 1" >>confdefs.h fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for XTestFakeButtonEvent in -lXtst" >&5 -$as_echo_n "checking for XTestFakeButtonEvent in -lXtst... " >&6; } -if ${ac_cv_lib_Xtst_XTestFakeButtonEvent+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lXtst $X_LIBS $X_EXTRA_LIBS $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char XTestFakeButtonEvent (); -int -main () -{ -return XTestFakeButtonEvent (); - ; - return 0; -} +mysavedCPPFLAGS="$CPPFLAGS" +CPPFLAGS="$CPPFLAGS $X_CFLAGS" +for ac_header in X11/extensions/Xrandr.h +do : + ac_fn_c_check_header_compile "$LINENO" "X11/extensions/Xrandr.h" "ac_cv_header_X11_extensions_Xrandr_h" " +#include + +" +if test "x$ac_cv_header_X11_extensions_Xrandr_h" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_X11_EXTENSIONS_XRANDR_H 1 _ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_Xtst_XTestFakeButtonEvent=yes + xrandr_h=yes else - ac_cv_lib_Xtst_XTestFakeButtonEvent=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS + xrandr_h=no fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_Xtst_XTestFakeButtonEvent" >&5 -$as_echo "$ac_cv_lib_Xtst_XTestFakeButtonEvent" >&6; } -if test "x$ac_cv_lib_Xtst_XTestFakeButtonEvent" = xyes; then : - X_LIBS="-lXtst $X_LIBS"; -$as_echo "#define HAVE_LIBXTST 1" >>confdefs.h -fi +done -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for XkbKeycodeToKeysym in -lX11" >&5 -$as_echo_n "checking for XkbKeycodeToKeysym in -lX11... " >&6; } -if ${ac_cv_lib_X11_XkbKeycodeToKeysym+:} false; then : +CPPFLAGS="$mysavedCPPFLAGS" + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for XRRGetScreenResources in -lXrandr" >&5 +$as_echo_n "checking for XRRGetScreenResources in -lXrandr... " >&6; } +if ${ac_cv_lib_Xrandr_XRRGetScreenResources+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS -LIBS="-lX11 $X_LIBS $X_EXTRA_LIBS $LIBS" +LIBS="-lXrandr $X_LIBS $X_EXTRA_LIBS $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -5440,30 +5623,59 @@ #ifdef __cplusplus extern "C" #endif -char XkbKeycodeToKeysym (); +char XRRGetScreenResources (); int main () { -return XkbKeycodeToKeysym (); +return XRRGetScreenResources (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_X11_XkbKeycodeToKeysym=yes + ac_cv_lib_Xrandr_XRRGetScreenResources=yes else - ac_cv_lib_X11_XkbKeycodeToKeysym=no + ac_cv_lib_Xrandr_XRRGetScreenResources=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_X11_XkbKeycodeToKeysym" >&5 -$as_echo "$ac_cv_lib_X11_XkbKeycodeToKeysym" >&6; } -if test "x$ac_cv_lib_X11_XkbKeycodeToKeysym" = xyes; then : +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_Xrandr_XRRGetScreenResources" >&5 +$as_echo "$ac_cv_lib_Xrandr_XRRGetScreenResources" >&6; } +if test "x$ac_cv_lib_Xrandr_XRRGetScreenResources" = xyes; then : + libxrandr=yes +else + libxrandr=no +fi -$as_echo "#define HAVE_XKBKEYCODETOKEYSYM 1" >>confdefs.h +compile_xrandr=no +case "$with_xrandr:$xrandr_h:$libxrandr" in #( + yes:no:*) : + as_fn_error $? "*** Can't enable Xrandr support, header Xrandr.h not found." "$LINENO" 5 ;; #( + yes:*:no) : + as_fn_error $? "*** Can't enable Xrandr support, libXrandr not found." "$LINENO" 5 ;; #( + check:no:*) : + as_fn_error $? "*** Header Xrandr.h not found, use ./configure --without-xrandr to build without multiple screens support." "$LINENO" 5 ;; #( + check:*:no) : + as_fn_error $? "*** libXrandr not found, use ./configure --without-xrandr to build without multiple screens support." "$LINENO" 5 ;; #( + yes:yes:yes|check:yes:yes) : + X_LIBS="-lXrandr $X_LIBS" + +$as_echo "#define HAVE_XRANDR 1" >>confdefs.h + + compile_xrandr=yes ;; #( + *) : + ;; +esac + + if test "$compile_xrandr" = yes; then + HAVE_XRANDR_TRUE= + HAVE_XRANDR_FALSE='#' +else + HAVE_XRANDR_TRUE='#' + HAVE_XRANDR_FALSE= fi @@ -5702,31 +5914,6 @@ fi -for ac_func in getline getopt_long getpwuid setenv setpgid setpgrp setsid -do : - as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` -ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" -if eval test \"x\$"$as_ac_var"\" = x"yes"; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 -_ACEOF - -fi -done - -for ac_func in unsetenv vsnprintf -do : - as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` -ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" -if eval test \"x\$"$as_ac_var"\" = x"yes"; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 -_ACEOF - -fi -done - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for __builtin_prefetch()" >&5 $as_echo_n "checking for __builtin_prefetch()... " >&6; } @@ -5757,6 +5944,31 @@ rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext +for ac_func in getline getopt_long getpwuid setenv setpgid setpgrp setsid +do : + as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` +ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" +if eval test \"x\$"$as_ac_var"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +fi +done + +for ac_func in unsetenv vsnprintf +do : + as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` +ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" +if eval test \"x\$"$as_ac_var"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +fi +done + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for nl_langinfo and CODESET" >&5 $as_echo_n "checking for nl_langinfo and CODESET... " >&6; } @@ -5906,6 +6118,14 @@ LTLIBOBJS=$ac_ltlibobjs +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking that generated files are newer than configure" >&5 +$as_echo_n "checking that generated files are newer than configure... " >&6; } + if test -n "$am_sleep_pid"; then + # Hide warnings about reused PIDs. + wait $am_sleep_pid 2>/dev/null + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: done" >&5 +$as_echo "done" >&6; } if test -n "$EXEEXT"; then am__EXEEXT_TRUE= am__EXEEXT_FALSE='#' @@ -5926,6 +6146,10 @@ as_fn_error $? "conditional \"am__fastdepCC\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi +if test -z "${HAVE_XRANDR_TRUE}" && test -z "${HAVE_XRANDR_FALSE}"; then + as_fn_error $? "conditional \"HAVE_XRANDR\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi : "${CONFIG_STATUS=./config.status}" ac_write_fail=0 @@ -6323,7 +6547,7 @@ # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by ratpoison $as_me 1.4.8, which was +This file was extended by ratpoison $as_me 1.4.9, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -6389,7 +6613,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -ratpoison config.status 1.4.8 +ratpoison config.status 1.4.9 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" @@ -7120,7 +7344,7 @@ case $ac_file$ac_mode in "depfiles":C) test x"$AMDEP_TRUE" != x"" || { - # Autoconf 2.62 quotes --file arguments for eval, but not when files + # Older Autoconf quotes --file arguments for eval, but not when files # are listed without --file. Let's play safe and only enable the eval # if we detect the quoting. case $CONFIG_FILES in @@ -7133,7 +7357,7 @@ # Strip MF so we end up with the name of the file. mf=`echo "$mf" | sed -e 's/:.*$//'` # Check whether this is an Automake generated Makefile or not. - # We used to match only the files named `Makefile.in', but + # We used to match only the files named 'Makefile.in', but # some people rename them; so instead we look at the file content. # Grep'ing the first line is not enough: some people post-process # each Makefile.in and add a new line on top of each file to say so. @@ -7167,21 +7391,19 @@ continue fi # Extract the definition of DEPDIR, am__include, and am__quote - # from the Makefile without running `make'. + # from the Makefile without running 'make'. DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` test -z "$DEPDIR" && continue am__include=`sed -n 's/^am__include = //p' < "$mf"` - test -z "am__include" && continue + test -z "$am__include" && continue am__quote=`sed -n 's/^am__quote = //p' < "$mf"` - # When using ansi2knr, U may be empty or an underscore; expand it - U=`sed -n 's/^U = //p' < "$mf"` # Find all dependency output files, they are included files with # $(DEPDIR) in their names. We invoke sed twice because it is the # simplest approach to changing $(DEPDIR) to its actual value in the # expansion. for file in `sed -n " s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ - sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do + sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do # Make sure the directory exists. test -f "$dirpart/$file" && continue fdir=`$as_dirname -- "$file" || diff -Nru ratpoison-1.4.8/configure.ac ratpoison-1.4.9/configure.ac --- ratpoison-1.4.8/configure.ac 2014-09-14 16:33:31.000000000 +0000 +++ ratpoison-1.4.9/configure.ac 2017-04-02 23:30:38.000000000 +0000 @@ -17,7 +17,7 @@ dnl along with this program; if not, write to the Free Software dnl Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -AC_INIT([ratpoison], [1.4.8], [ratpoison-devel@nongnu.org]) +AC_INIT([ratpoison], [1.4.9], [ratpoison-devel@nongnu.org]) AC_CONFIG_AUX_DIR([build-aux]) AC_CONFIG_MACRO_DIR([m4]) AC_CONFIG_SRCDIR([src/main.c]) @@ -81,7 +81,7 @@ AC_SUBST(XFT_LIBS) AC_ARG_WITH([xkb], - [AS_HELP_STRING([--disable-xkb], [Don't build XKB support for keyboard input.])], + [AS_HELP_STRING([--without-xkb], [Don't build XKB support for keyboard input.])], [xkb=$withval], [xkb=yes]) AS_IF([test "X$xkb" = "Xyes"], @@ -101,6 +101,14 @@ AC_MSG_RESULT([$manpage_format]) AC_SUBST([manpage_format]) +AC_MSG_CHECKING([Xrandr support]) +AC_ARG_WITH([xrandr], + [AS_HELP_STRING([--without-xrandr], + [Build without Xrandr support, default is to require and use it.])], + [with_xrandr=$withval], + [with_xrandr=check]) +AC_MSG_RESULT([$with_xrandr]) + dnl Checks for programs. AC_PROG_CC AM_MISSING_PROG([MANDOC], [mandoc]) @@ -108,9 +116,7 @@ [path to mandoc(1), only used when regenerating doc/ratpoison.man.1 \ after editing doc/ratpoison.mdoc.1]) -if test "x$CC" = "xgcc"; then - CFLAGS="-Wall $CFLAGS" -fi +AX_CHECK_COMPILE_FLAG([-Wall], [CFLAGS="-Wall $CFLAGS"], [], [], []) dnl check for an x terminal emulator AC_MSG_CHECKING(terminal emulator) @@ -128,26 +134,26 @@ dnl Those who do not learn the lessons of history dnl are doomed to delete it... yuk yuk. --ttn AC_ARG_ENABLE([history], - AS_HELP_STRING([--disable-history], - [ignore libhistory (default: use it if available, only used for ! expansion)]), - [], [enable_history=default]) + AS_HELP_STRING([--enable-history], + [Link with libhistory (default: disabled. Note: only used for ! expansion)]), + [], [enable_history=no]) HISTORY_LIBS= have_history=no AS_CASE([$enable_history], [no], [], - [yes|default], + [yes], [AC_CHECK_HEADERS([readline/history.h], [AC_CHECK_LIB([history], [add_history], [have_history=yes], [])], [])], - [AC_MSG_ERROR([invalid --enable-history="$enable_history" parameter])]) + [AC_MSG_ERROR([invalid --disable-history="$enable_history" parameter])]) AC_MSG_CHECKING([whether to use libhistory]) AS_CASE([$enable_history:$have_history], [yes:no], [AC_MSG_ERROR([Can't find history headers/lib. \ Install readline dev libs for history expansion.])], - [default:no|no:*], [AC_MSG_RESULT([no])], - [*:yes], [AC_MSG_RESULT([yes]) + [no:*], [AC_MSG_RESULT([no])], + [yes:yes], [AC_MSG_RESULT([yes]) AC_DEFINE_UNQUOTED(HAVE_HISTORY, 1, Define this to enable history) HISTORY_LIBS="-lhistory"]) @@ -158,26 +164,38 @@ mysavedCPPFLAGS="$CPPFLAGS" CPPFLAGS="$CPPFLAGS $X_CFLAGS" -AC_CHECK_HEADERS([X11/extensions/Xinerama.h], [], [], [ -#include -]) -CPPFLAGS="$mysavedCPPFLAGS" - -mysavedCPPFLAGS="$CPPFLAGS" -CPPFLAGS="$CPPFLAGS $X_CFLAGS" AC_CHECK_HEADERS([X11/XKBlib.h], [], [], [ #include ]) CPPFLAGS="$mysavedCPPFLAGS" -AC_CHECK_LIB(Xext, XMissingExtension, [X_LIBS="-lXext $X_LIBS"],,$X_LIBS $X_EXTRA_LIBS) -AC_CHECK_LIB(Xinerama, XineramaQueryScreens, [X_LIBS="-lXinerama $X_LIBS"; AC_DEFINE(HAVE_LIBXINERAMA,1,[Xinerama])],,$X_LIBS $X_EXTRA_LIBS) AC_CHECK_LIB(Xtst, XTestFakeButtonEvent, [X_LIBS="-lXtst $X_LIBS"; AC_DEFINE(HAVE_LIBXTST,1,[Xtst])],,$X_LIBS $X_EXTRA_LIBS) AC_CHECK_LIB([X11], [XkbKeycodeToKeysym], [AC_DEFINE(HAVE_XKBKEYCODETOKEYSYM, 1, [Define to 1 if you have the `XkbKeycodeToKeysym' function.])], [], [$X_LIBS $X_EXTRA_LIBS]) +mysavedCPPFLAGS="$CPPFLAGS" +CPPFLAGS="$CPPFLAGS $X_CFLAGS" +AC_CHECK_HEADERS([X11/extensions/Xrandr.h], [xrandr_h=yes], [xrandr_h=no], [ +#include +]) +CPPFLAGS="$mysavedCPPFLAGS" + +AC_CHECK_LIB(Xrandr, XRRGetScreenResources, [libxrandr=yes], [libxrandr=no], [$X_LIBS $X_EXTRA_LIBS]) + +compile_xrandr=no +AS_CASE(["$with_xrandr:$xrandr_h:$libxrandr"], + [yes:no:*], [AC_MSG_ERROR([*** Can't enable Xrandr support, header Xrandr.h not found.])], + [yes:*:no], [AC_MSG_ERROR([*** Can't enable Xrandr support, libXrandr not found.])], + [check:no:*], [AC_MSG_ERROR([*** Header Xrandr.h not found, use ./configure --without-xrandr to build without multiple screens support.])], + [check:*:no], [AC_MSG_ERROR([*** libXrandr not found, use ./configure --without-xrandr to build without multiple screens support.])], + [yes:yes:yes|check:yes:yes], [X_LIBS="-lXrandr $X_LIBS" + AC_DEFINE(HAVE_XRANDR, 1, [Define to 1 if you want Xrandr support.]) + compile_xrandr=yes]) + +AM_CONDITIONAL(HAVE_XRANDR, [test "$compile_xrandr" = yes]) + AC_SUBST(X_LIBS) AC_SUBST(X_EXTRA_LIBS) AC_SUBST(X_CFLAGS) @@ -193,10 +211,6 @@ dnl Checks for typedefs, structures, and compiler characteristics. AC_C_TYPEOF -dnl Checks for library functions. -AC_CHECK_FUNCS(getline getopt_long getpwuid setenv setpgid setpgrp setsid) -AC_CHECK_FUNCS(unsetenv vsnprintf) - AH_TEMPLATE([HAVE___BUILTIN_PREFETCH], [Define to 1 if your compiler supports the `__builtin_prefetch' function.]) AC_MSG_CHECKING([for __builtin_prefetch()]) @@ -210,6 +224,10 @@ AC_MSG_RESULT(yes)], [AC_MSG_RESULT(no)]) +dnl Checks for library functions. +AC_CHECK_FUNCS(getline getopt_long getpwuid setenv setpgid setpgrp setsid) +AC_CHECK_FUNCS(unsetenv vsnprintf) + AM_LANGINFO_CODESET lispdir='${datarootdir}/emacs/site-lisp' diff -Nru ratpoison-1.4.8/contrib/Makefile.in ratpoison-1.4.9/contrib/Makefile.in --- ratpoison-1.4.8/contrib/Makefile.in 2014-09-14 16:34:31.000000000 +0000 +++ ratpoison-1.4.9/contrib/Makefile.in 2017-04-02 23:39:57.000000000 +0000 @@ -1,9 +1,8 @@ -# Makefile.in generated by automake 1.11.6 from Makefile.am. +# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software -# Foundation, Inc. +# Copyright (C) 1994-2014 Free Software Foundation, Inc. + # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. @@ -36,23 +35,61 @@ VPATH = @srcdir@ -am__make_dryrun = \ - { \ - am__dry=no; \ +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ - echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ - | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ - *) \ - for am__flg in $$MAKEFLAGS; do \ - case $$am__flg in \ - *=*|--*) ;; \ - *n*) am__dry=yes; break;; \ - esac; \ - done;; \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ - test $$am__dry = yes; \ - } + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ @@ -70,12 +107,13 @@ PRE_UNINSTALL = : POST_UNINSTALL = : subdir = contrib -DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/m4/codeset.m4 \ - $(top_srcdir)/m4/pkg.m4 $(top_srcdir)/configure.ac +am__aclocal_m4_deps = $(top_srcdir)/m4/ax_check_compile_flag.m4 \ + $(top_srcdir)/m4/codeset.m4 $(top_srcdir)/m4/pkg.m4 \ + $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/src/config.h CONFIG_CLEAN_FILES = @@ -110,6 +148,18 @@ am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(lispdir)" \ "$(DESTDIR)$(pkgdatadir)" SCRIPTS = $(bin_SCRIPTS) +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ @@ -118,9 +168,12 @@ *) (install-info --version) >/dev/null 2>&1;; \ esac DATA = $(lisp_DATA) $(pkgdata_DATA) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +am__DIST_COMMON = $(srcdir)/Makefile.in DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ @@ -240,7 +293,6 @@ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu contrib/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu contrib/Makefile -.PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ @@ -335,11 +387,11 @@ @list='$(pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(pkgdatadir)'; $(am__uninstall_files_from_dir) -tags: TAGS -TAGS: +tags TAGS: + +ctags CTAGS: -ctags: CTAGS -CTAGS: +cscope cscopelist: distdir: $(DISTFILES) @@ -479,17 +531,20 @@ .MAKE: install-am install-strip -.PHONY: all all-am check check-am clean clean-generic distclean \ - distclean-generic distdir dvi dvi-am html html-am info info-am \ - install install-am install-binSCRIPTS install-data \ - install-data-am install-dvi install-dvi-am install-exec \ - install-exec-am install-html install-html-am install-info \ - install-info-am install-lispDATA install-man install-pdf \ - install-pdf-am install-pkgdataDATA install-ps install-ps-am \ - install-strip installcheck installcheck-am installdirs \ - maintainer-clean maintainer-clean-generic mostlyclean \ - mostlyclean-generic pdf pdf-am ps ps-am uninstall uninstall-am \ - uninstall-binSCRIPTS uninstall-lispDATA uninstall-pkgdataDATA +.PHONY: all all-am check check-am clean clean-generic cscopelist-am \ + ctags-am distclean distclean-generic distdir dvi dvi-am html \ + html-am info info-am install install-am install-binSCRIPTS \ + install-data install-data-am install-dvi install-dvi-am \ + install-exec install-exec-am install-html install-html-am \ + install-info install-info-am install-lispDATA install-man \ + install-pdf install-pdf-am install-pkgdataDATA install-ps \ + install-ps-am install-strip installcheck installcheck-am \ + installdirs maintainer-clean maintainer-clean-generic \ + mostlyclean mostlyclean-generic pdf pdf-am ps ps-am tags-am \ + uninstall uninstall-am uninstall-binSCRIPTS uninstall-lispDATA \ + uninstall-pkgdataDATA + +.PRECIOUS: Makefile # Tell versions [3.59,3.63) of GNU make to not export all variables. diff -Nru ratpoison-1.4.8/debian/changelog ratpoison-1.4.9/debian/changelog --- ratpoison-1.4.8/debian/changelog 2018-04-03 12:41:34.000000000 +0000 +++ ratpoison-1.4.9/debian/changelog 2019-01-30 20:26:47.000000000 +0000 @@ -1,8 +1,11 @@ -ratpoison (1.4.8-2build1) bionic; urgency=high +ratpoison (1.4.9-1) unstable; urgency=medium - * No change rebuild to pick up -fPIE compiler default + * new upstream release + - switch from xinerama to xrandr (Closes: #776766) + * switch to debhelper compat level 10 + * use hardening=+all - -- Balint Reczey Tue, 03 Apr 2018 12:41:34 +0000 + -- Bernhard R. Link Wed, 30 Jan 2019 21:26:47 +0100 ratpoison (1.4.8-2) unstable; urgency=medium diff -Nru ratpoison-1.4.8/debian/compat ratpoison-1.4.9/debian/compat --- ratpoison-1.4.8/debian/compat 2015-12-30 14:19:41.000000000 +0000 +++ ratpoison-1.4.9/debian/compat 2019-01-30 20:26:47.000000000 +0000 @@ -1 +1 @@ -9 +10 diff -Nru ratpoison-1.4.8/debian/control ratpoison-1.4.9/debian/control --- ratpoison-1.4.8/debian/control 2018-04-03 12:41:34.000000000 +0000 +++ ratpoison-1.4.9/debian/control 2019-01-30 20:26:47.000000000 +0000 @@ -1,13 +1,10 @@ Source: ratpoison Section: x11 -Priority: extra -Maintainer: Ubuntu Developers -XSBC-Original-Maintainer: Bernhard R. Link -Build-Depends: debhelper (>= 9), libx11-dev, libxext-dev, x11proto-core-dev, libxinerama-dev, libxtst-dev, libxft-dev, perl, autoconf, automake, pkg-config -Standards-Version: 3.9.6 +Priority: optional +Maintainer: Bernhard R. Link +Build-Depends: debhelper (>= 10), libx11-dev, libxtst-dev, libxrandr-dev, libxft-dev, perl, autoconf, automake, pkg-config, texinfo +Standards-Version: 4.3.0 Homepage: http://www.nongnu.org/ratpoison/ -Vcs-Browser: http://anonscm.debian.org/gitweb/?p=users/brlink/ratpoison.git;a=shortlog;h=refs/heads/debian -Vcs-Git: git://anonscm.debian.org/users/brlink/ratpoison.git Package: ratpoison Architecture: any diff -Nru ratpoison-1.4.8/debian/patches/0001-add-with-menu.patch ratpoison-1.4.9/debian/patches/0001-add-with-menu.patch --- ratpoison-1.4.8/debian/patches/0001-add-with-menu.patch 2015-12-30 14:19:41.000000000 +0000 +++ ratpoison-1.4.9/debian/patches/0001-add-with-menu.patch 2019-01-30 20:26:47.000000000 +0000 @@ -1,31 +1,34 @@ -From 6009aabd7e378fc2402642fdd4e2f59b2008da9a Mon Sep 17 00:00:00 2001 +From 2c1cebcaca7356f9bc4b8c2e404bfe9782ce3fec Mon Sep 17 00:00:00 2001 From: "Bernhard R. Link" Date: Sat, 15 Jan 2005 12:00:00 +0100 Subject: add --with-menu -This patch adds an --with-menu that allows to specify a menu command +This patch adds an --with-menu that allows one to specify a menu command that will be available with :menu and with "C-t ." * configure.in: add --with-menu to specify a menu program * src/action.c: add menu alias and binding if menu specified * src/main.c: tell menu command if menu specified --- - configure.ac | 9 +++++++++ + configure.ac | 12 ++++++++++++ src/actions.c | 7 +++++++ src/main.c | 45 ++++++++++++++++++++++++++++++++++----------- src/messages.h | 1 + - 4 files changed, 51 insertions(+), 11 deletions(-) + 4 files changed, 54 insertions(+), 11 deletions(-) diff --git a/configure.ac b/configure.ac -index ad1ed37..278b018 100644 +index 76cb5c1..b07f8bf 100644 --- a/configure.ac +++ b/configure.ac -@@ -101,6 +101,15 @@ AS_CASE([$enable_mdoc], - AC_MSG_RESULT([$manpage_format]) - AC_SUBST([manpage_format]) - -+AC_ARG_WITH(menu, [ --with-menu=PROG set a external menu program to be advertised ], -+menu_prog="$withval", menu_prog="") +@@ -109,6 +109,18 @@ AC_ARG_WITH([xrandr], + [with_xrandr=check]) + AC_MSG_RESULT([$with_xrandr]) + ++AC_ARG_WITH([menu], ++ [AS_HELP_STRING([--with-menu=PROG], ++ [set a external menu program to be advertised ])], ++ [menu_prog="$withval"], ++ [menu_prog=""]) + +if test "$menu_prog" != "no" && ! test -z "$menu_prog" ; then +AC_DEFINE_UNQUOTED(MENU_PROG, "$menu_prog", external menu program to advertise) @@ -37,10 +40,10 @@ AC_PROG_CC AM_MISSING_PROG([MANDOC], [mandoc]) diff --git a/src/actions.c b/src/actions.c -index 7579101..076aa30 100644 +index a044f7a..73e60f5 100644 --- a/src/actions.c +++ b/src/actions.c -@@ -728,6 +728,9 @@ initialize_default_keybindings (void) +@@ -941,6 +941,9 @@ initialize_default_keybindings (void) add_keybinding (prefix_key.sym, prefix_key.state, "other", map); add_keybinding (prefix_key.sym, 0, "meta", map); add_keybinding (XK_g, RP_CONTROL_MASK, "abort", map); @@ -50,7 +53,7 @@ add_keybinding (XK_0, 0, "select 0", map); add_keybinding (XK_1, 0, "select 1", map); add_keybinding (XK_2, 0, "select 2", map); -@@ -810,6 +813,10 @@ initialize_default_keybindings (void) +@@ -1023,6 +1026,10 @@ initialize_default_keybindings (void) add_alias ("unbind", "undefinekey " ROOT_KEYMAP); add_alias ("bind", "definekey " ROOT_KEYMAP); add_alias ("split", "vsplit"); @@ -62,10 +65,10 @@ cmdret * diff --git a/src/main.c b/src/main.c -index 52dbcce..728344c 100644 +index da6fb9f..f65c9fd 100644 --- a/src/main.c +++ b/src/main.c -@@ -493,7 +493,13 @@ show_welcome_message (void) +@@ -475,7 +475,13 @@ show_welcome_message (void) { rp_action *help_action; char *prefix, *help; @@ -79,7 +82,7 @@ prefix = keysym_to_string (prefix_key.sym, prefix_key.state); -@@ -502,27 +508,44 @@ show_welcome_message (void) +@@ -484,27 +490,44 @@ show_welcome_message (void) /* Find the help key binding. */ help_action = find_keybinding_by_action ("help " ROOT_KEYMAP, map); if (help_action) @@ -136,7 +139,7 @@ } diff --git a/src/messages.h b/src/messages.h -index c9efe01..9e1e49d 100644 +index bea93ad..5102e02 100644 --- a/src/messages.h +++ b/src/messages.h @@ -48,6 +48,7 @@ diff -Nru ratpoison-1.4.8/debian/patches/0002-add-removeleft-up-right-down-commands.patch ratpoison-1.4.9/debian/patches/0002-add-removeleft-up-right-down-commands.patch --- ratpoison-1.4.8/debian/patches/0002-add-removeleft-up-right-down-commands.patch 2015-12-30 14:19:41.000000000 +0000 +++ ratpoison-1.4.9/debian/patches/0002-add-removeleft-up-right-down-commands.patch 2019-01-30 20:26:47.000000000 +0000 @@ -1,6 +1,6 @@ -From 31be48b4098484b550623ed22db2fc4a386dfeca Mon Sep 17 00:00:00 2001 +From 36d0ccc0fb6624289afafd0ef07aa5eac2fcfcac Mon Sep 17 00:00:00 2001 From: "Bernhard R. Link" -Date: Tue, 12 Feb 2013 22:50:17 +0100 +Date: Mon, 28 Jan 2019 22:42:59 +0100 Subject: add removeleft/up/right/down commands This patch adds new removeleft/up/right/down commands to extend the current @@ -13,27 +13,26 @@ (remove_frame): moved code to new rotine maximaize_all_in_frame. (find_frame_{left,up,right,down}): try harder to find a frame in the specified direction. (So that it also works with parts of -the screen not beeing in any frame). +the screen not being in any frame). * src/split.h: added prototypes for enlarge_frame_{left,up,right,down} -* src/actions.{c,h}: Added cmd_remove{left,up,right,down} calling +* src/actions.c: Added cmd_remove{left,up,right,down} calling enlarge_frame_*, added C-t M-{Left,Right,Up,Down} as keybindings. * doc/ratpoison.1: Document the new commands and keybindings. --- doc/ratpoison.mdoc.1 | 12 ++ - src/actions.c | 40 ++++++ - src/actions.h | 4 + - src/split.c | 347 ++++++++++++++++++++++++++++++++++++++++++++++++--- + src/actions.c | 44 +++++ + src/split.c | 371 ++++++++++++++++++++++++++++++++++++++++--- src/split.h | 4 + - 5 files changed, 392 insertions(+), 15 deletions(-) + 4 files changed, 408 insertions(+), 23 deletions(-) diff --git a/doc/ratpoison.mdoc.1 b/doc/ratpoison.mdoc.1 -index 2e3c356..258f484 100644 +index 40badcb..ebfef14 100644 --- a/doc/ratpoison.mdoc.1 +++ b/doc/ratpoison.mdoc.1 -@@ -654,6 +654,18 @@ to get a list of all attached commands. +@@ -644,6 +644,18 @@ to get a list of all attached commands. .It Ic remove Pq Ic C\-t R Remove the current frame and extend some frames around to fill the remaining gap. @@ -53,10 +52,21 @@ If .Ar deltax diff --git a/src/actions.c b/src/actions.c -index 076aa30..e9a4e82 100644 +index 73e60f5..800be7e 100644 --- a/src/actions.c +++ b/src/actions.c -@@ -332,6 +332,10 @@ init_user_commands(void) +@@ -209,6 +209,10 @@ static cmdret *cmd_exchangeup (int interactive, struct cmdarg **args); + static cmdret *cmd_exchangedown (int interactive, struct cmdarg **args); + static cmdret *cmd_exchangeleft (int interactive, struct cmdarg **args); + static cmdret *cmd_exchangeright (int interactive, struct cmdarg **args); ++static cmdret *cmd_removeup (int interactive, struct cmdarg **args); ++static cmdret *cmd_removedown (int interactive, struct cmdarg **args); ++static cmdret *cmd_removeleft (int interactive, struct cmdarg **args); ++static cmdret *cmd_removeright (int interactive, struct cmdarg **args); + static cmdret *cmd_swap (int interactive, struct cmdarg **args); + static cmdret *cmd_frestore (int interactive, struct cmdarg **args); + static cmdret *cmd_fselect (int interactive, struct cmdarg **args); +@@ -551,6 +555,10 @@ init_user_commands(void) "Hook: ", arg_HOOK, "Command: ", arg_COMMAND); add_command ("remove", cmd_remove, 0, 0, 0); @@ -67,7 +77,7 @@ add_command ("resize", cmd_resize, 2, 0, 2, "", arg_NUMBER, "", arg_NUMBER); -@@ -795,6 +799,10 @@ initialize_default_keybindings (void) +@@ -1008,6 +1016,10 @@ initialize_default_keybindings (void) add_keybinding (XK_Down, 0, "focusdown", map); add_keybinding (XK_Q, 0, "only", map); add_keybinding (XK_R, 0, "remove", map); @@ -78,13 +88,14 @@ add_keybinding (XK_f, 0, "fselect", map); add_keybinding (XK_f, RP_CONTROL_MASK, "fselect", map); add_keybinding (XK_F, 0, "curframe", map); -@@ -3042,6 +3050,38 @@ cmd_remove (int interactive UNUSED, struct cmdarg **args UNUSED) +@@ -3259,6 +3271,38 @@ cmd_remove (int interactive UNUSED, struct cmdarg **args UNUSED) + return cmdret_new (RET_SUCCESS, NULL); } - cmdret * ++cmdret * +cmd_removeup (int interactive UNUSED, struct cmdarg **args UNUSED) +{ -+ push_frame_undo (current_screen()); /* fdump to stack */ ++ push_frame_undo (rp_current_screen); /* fdump to stack */ + enlarge_frame_up (current_frame(), 1); + return cmdret_new(RET_SUCCESS, NULL); +} @@ -92,7 +103,7 @@ +cmdret * +cmd_removedown (int interactive UNUSED, struct cmdarg **args UNUSED) +{ -+ push_frame_undo (current_screen()); /* fdump to stack */ ++ push_frame_undo (rp_current_screen); /* fdump to stack */ + enlarge_frame_down (current_frame(), 1); + return cmdret_new(RET_SUCCESS, NULL); +} @@ -100,7 +111,7 @@ +cmdret * +cmd_removeleft (int interactive UNUSED, struct cmdarg **args UNUSED) +{ -+ push_frame_undo (current_screen()); /* fdump to stack */ ++ push_frame_undo (rp_current_screen); /* fdump to stack */ + enlarge_frame_left (current_frame(), 1); + return cmdret_new(RET_SUCCESS, NULL); +} @@ -108,35 +119,19 @@ +cmdret * +cmd_removeright (int interactive UNUSED, struct cmdarg **args UNUSED) +{ -+ push_frame_undo (current_screen()); /* fdump to stack */ ++ push_frame_undo (rp_current_screen); /* fdump to stack */ + enlarge_frame_right (current_frame(), 1); + return cmdret_new(RET_SUCCESS, NULL); +} + -+cmdret * + cmdret * cmd_shrink (int interactive UNUSED, struct cmdarg **args UNUSED) { - push_frame_undo (current_screen()); /* fdump to stack */ -diff --git a/src/actions.h b/src/actions.h -index 519c1a7..4dabea0 100644 ---- a/src/actions.h -+++ b/src/actions.h -@@ -169,6 +169,10 @@ RP_CMD (quit); - RP_CMD (redisplay); - RP_CMD (remhook); - RP_CMD (remove); -+RP_CMD (removedown); -+RP_CMD (removeup); -+RP_CMD (removeleft); -+RP_CMD (removeright); - RP_CMD (rename); - RP_CMD (resize); - RP_CMD (restart); diff --git a/src/split.c b/src/split.c -index b36b99e..5a2e51b 100644 +index a9d69cd..6ebc174 100644 --- a/src/split.c +++ b/src/split.c -@@ -700,6 +700,301 @@ frame_overlaps (rp_frame *frame) +@@ -694,6 +694,301 @@ frame_overlaps (rp_frame *frame) return 0; } @@ -183,7 +178,7 @@ + struct list_head *tmp, *iter; + + int old_x = frame_left(frame); -+ int new_x = screen_left(s); ++ int new_x = defaults.padding_left; + + list_for_each_entry (cur, &s->frames, node) + { @@ -248,7 +243,7 @@ + struct list_head *tmp, *iter; + + int old_x = frame_right(frame); -+ int new_x = screen_right(s); ++ int new_x = defaults.padding_left + screen_width(s); + + list_for_each_entry (cur, &s->frames, node) + { @@ -313,7 +308,7 @@ + struct list_head *tmp, *iter; + + int old_y = frame_top(frame); -+ int new_y = screen_top(s); ++ int new_y = defaults.padding_top; + + list_for_each_entry (cur, &s->frames, node) + { @@ -378,7 +373,7 @@ + struct list_head *tmp, *iter; + + int old_y = frame_bottom(frame); -+ int new_y = screen_bottom(s); ++ int new_y = defaults.padding_top + screen_height(s); + + list_for_each_entry (cur, &s->frames, node) + { @@ -438,7 +433,7 @@ void remove_frame (rp_frame *frame) { -@@ -797,17 +1092,7 @@ remove_frame (rp_frame *frame) +@@ -791,17 +1086,7 @@ remove_frame (rp_frame *frame) } if (fits) @@ -457,23 +452,28 @@ else { memcpy (cur, &tmp_frame, sizeof (rp_frame)); -@@ -1003,16 +1288,24 @@ find_frame_up (rp_frame *frame) - rp_screen *s = frames_screen (frame); +@@ -1003,17 +1288,27 @@ find_frame_up (rp_frame *frame) + rp_screen *s; rp_frame *cur; + rp_frame *best_frame_yet = NULL; -+ int best_x_yet = frame->x + frame->width + 1; ++ int best_x_yet = frame_right_abs(frame) + 1; + - list_for_each_entry (cur, &s->frames, node) + list_for_each_entry (s, &rp_screens, node) { - if (frame->y == cur->y + cur->height) + list_for_each_entry (cur, &s->frames, node) { - if (frame->x >= cur->x && frame->x < cur->x + cur->width) - return cur; -+ if (cur->x >= frame->x && cur->x < best_x_yet ) -+ { -+ best_x_yet = cur->x; -+ best_frame_yet = cur; + if (frame_top_abs (frame) == frame_bottom_abs (cur)) +- if (frame_right_abs (frame) >= frame_left_abs (cur) && frame_left_abs (frame) <= frame_right_abs (cur)) +- return cur; ++ { ++ if (frame_left_abs (frame) >= frame_left_abs(cur) && frame_left_abs(frame) <= frame_right_abs(cur)) ++ return cur; ++ if (frame_left_abs(cur) >= frame_left_abs(frame) && frame_left_abs(cur) < best_x_yet ) ++ { ++ best_x_yet = frame_left_abs(cur); ++ best_frame_yet = cur; ++ } + } } } @@ -483,23 +483,28 @@ } rp_frame * -@@ -1021,16 +1314,24 @@ find_frame_down (rp_frame *frame) - rp_screen *s = frames_screen (frame); +@@ -1022,17 +1317,27 @@ find_frame_down (rp_frame *frame) + rp_screen *s; rp_frame *cur; + rp_frame *best_frame_yet = NULL; -+ int best_x_yet = frame->x + frame->width + 1; ++ int best_x_yet = frame_right_abs(frame) + 1; + - list_for_each_entry (cur, &s->frames, node) + list_for_each_entry (s, &rp_screens, node) { - if (frame->y + frame->height == cur->y) + list_for_each_entry (cur, &s->frames, node) { - if (frame->x >= cur->x && frame->x < cur->x + cur->width) - return cur; -+ if (cur->x >= frame->x && cur->x < best_x_yet ) + if (frame_bottom_abs (frame) == frame_top_abs (cur)) +- if (frame_right_abs (frame) >= frame_left_abs (cur) && frame_left_abs (frame) <= frame_right_abs (cur)) +- return cur; + { -+ best_x_yet = cur->x; -+ best_frame_yet = cur; ++ if (frame_left_abs(frame) >= frame_left_abs(cur) && frame_left_abs(frame) < frame_right_abs(cur)) ++ return cur; ++ if (frame_left_abs(cur) >= frame_left_abs(frame) && frame_left_abs(cur) < best_x_yet) ++ { ++ best_x_yet = frame_left_abs(cur); ++ best_frame_yet = cur; ++ } + } } } @@ -509,23 +514,28 @@ } rp_frame * -@@ -1039,16 +1340,24 @@ find_frame_left (rp_frame *frame) - rp_screen *s = frames_screen (frame); +@@ -1041,17 +1346,27 @@ find_frame_left (rp_frame *frame) + rp_screen *s; rp_frame *cur; + rp_frame *best_frame_yet = NULL; -+ int best_y_yet = frame->y + frame->height + 1; ++ int best_y_yet = frame_bottom_abs(frame) + 1; + - list_for_each_entry (cur, &s->frames, node) + list_for_each_entry (s, &rp_screens, node) { - if (frame->x == cur->x + cur->width) + list_for_each_entry (cur, &s->frames, node) { - if (frame->y >= cur->y && frame->y < cur->y + cur->height) - return cur; -+ if (cur->y >= frame->y && cur->y < best_y_yet ) + if (frame_left_abs (frame) == frame_right_abs (cur)) +- if (frame_top_abs (frame) >= frame_top_abs (cur) && frame_top_abs (frame) < frame_bottom_abs (cur)) +- return cur; + { -+ best_y_yet = cur->y; -+ best_frame_yet = cur; ++ if (frame_top_abs (frame) >= frame_top_abs(cur) && frame_top_abs(frame) < frame_bottom_abs(cur)) ++ return cur; ++ if (frame_top_abs(cur) >= frame_top_abs(frame) && frame_top_abs(cur) < best_y_yet) ++ { ++ best_y_yet = frame_top_abs(cur); ++ best_frame_yet = cur; ++ } + } } } @@ -535,24 +545,29 @@ } rp_frame * -@@ -1057,16 +1366,24 @@ find_frame_right (rp_frame *frame) - rp_screen *s = frames_screen (frame); +@@ -1060,17 +1375,27 @@ find_frame_right (rp_frame *frame) + rp_screen *s; rp_frame *cur; + rp_frame *best_frame_yet = NULL; + int best_y_yet = frame->y + frame->height + 1; + - list_for_each_entry (cur, &s->frames, node) + list_for_each_entry (s, &rp_screens, node) { - if (frame->x + frame->width == cur->x) + list_for_each_entry (cur, &s->frames, node) { - if (frame->y >= cur->y && frame->y < cur->y + cur->height) - return cur; -+ if (cur->y >= frame->y && cur->y < best_y_yet ) + if (frame_right_abs (frame) == frame_left_abs (cur)) +- if (frame_top_abs (frame) >= frame_top_abs (cur) && frame_top_abs (frame) < frame_bottom_abs (cur)) +- return cur; + { -+ best_y_yet = cur->y; ++ if (frame_top_abs(frame) >= frame_top_abs(cur) && frame_top_abs(frame) < frame_bottom_abs(cur)) ++ return cur; ++ if (frame_top_abs(cur) >= frame_top_abs(frame) && frame_top_abs(cur) < best_y_yet ) ++ { ++ best_y_yet = frame_top_abs(cur); + best_frame_yet = cur; + } ++ } } } @@ -562,10 +577,10 @@ rp_frame * diff --git a/src/split.h b/src/split.h -index 87bb660..b3096a4 100644 +index f125df6..ac1cccf 100644 --- a/src/split.h +++ b/src/split.h -@@ -33,6 +33,10 @@ void resize_shrink_to_window (rp_frame *frame); +@@ -32,6 +32,10 @@ void resize_shrink_to_window (rp_frame *frame); void resize_frame_horizontally (rp_frame *frame, int diff); void resize_frame_vertically (rp_frame *frame, int diff); void remove_frame (rp_frame *frame); @@ -575,4 +590,4 @@ +void enlarge_frame_down (rp_frame *frame, int remove); rp_window *find_window_for_frame (rp_frame *frame); rp_frame *find_windows_frame (rp_window *win); - rp_frame *find_frame_next (rp_frame *frame); + int num_frames (rp_screen *s); diff -Nru ratpoison-1.4.8/debian/patches/0003-manpage-layout-fixes.patch ratpoison-1.4.9/debian/patches/0003-manpage-layout-fixes.patch --- ratpoison-1.4.8/debian/patches/0003-manpage-layout-fixes.patch 2015-12-30 14:19:41.000000000 +0000 +++ ratpoison-1.4.9/debian/patches/0003-manpage-layout-fixes.patch 2019-01-30 20:26:47.000000000 +0000 @@ -1,17 +1,17 @@ -From 6f2b167934b18767304494e5b3b58826178368cc Mon Sep 17 00:00:00 2001 +From 7b1ae88874f5cf049e7f56830c8831dcada9a869 Mon Sep 17 00:00:00 2001 From: "Bernhard R. Link" Date: Sun, 4 May 2014 11:03:43 +0200 Subject: manpage layout fixes --- - doc/ratpoison.mdoc.1 | 46 +++++++++++++++++++++++----------------------- + doc/ratpoison.mdoc.1 | 46 ++++++++++++++++++++++---------------------- 1 file changed, 23 insertions(+), 23 deletions(-) diff --git a/doc/ratpoison.mdoc.1 b/doc/ratpoison.mdoc.1 -index 258f484..55c7a8d 100644 +index ebfef14..043f364 100644 --- a/doc/ratpoison.mdoc.1 +++ b/doc/ratpoison.mdoc.1 -@@ -170,7 +170,7 @@ as new way to call +@@ -172,7 +172,7 @@ as new way to call .Ar command . .It Ic bind Ar key command alias for @@ -20,7 +20,7 @@ .It Ic banish .Pq Ic C\-t b Banish the rat cursor to the lower right corner of the screen. -@@ -295,9 +295,9 @@ Update the default escape key to +@@ -282,9 +282,9 @@ Update the default escape key to .Ar key . .Pp Strictly speaking it updates the @@ -32,7 +32,7 @@ to .Ar key , the -@@ -319,11 +319,11 @@ if +@@ -306,11 +306,11 @@ if .Ar key has no modifiers. (If @@ -47,7 +47,7 @@ .It Ic exchangedown Pq Ic C\-t C\-Down Exchange the window in the current frame with the window in the frame below the current frame. -@@ -452,7 +452,7 @@ If the optional parameter +@@ -439,7 +439,7 @@ If the optional parameter is given, list all keybindings in this keymap, otherwise list all key bindings in keymap .Li root . @@ -56,7 +56,7 @@ Split the current frame into left frame and a right frame. If no parameter is given, split in halves. If two numbers separated by a slash -@@ -605,7 +605,7 @@ relative to the current position. +@@ -595,7 +595,7 @@ relative to the current position. Simulate a rat click with .Ar button (button 1=left button if none given). @@ -65,7 +65,7 @@ Simulate pressing|releasing rat button .Ar button (1=left button if none given). -@@ -624,7 +624,7 @@ configuration: by pressing +@@ -614,7 +614,7 @@ configuration: by pressing which is the only key in the keymap top , the command @@ -74,7 +74,7 @@ is executed. The next key then executes the command in keymap .Li root -@@ -724,7 +724,7 @@ Output the list of all screens. +@@ -701,7 +701,7 @@ Output the list of all screens. The screens are separated by commas. Each screen is shown as 6 values: its number, its x-coordinate, its y-coordinate, its width, its height and if it is currently selected (1=true, 0=false). @@ -83,7 +83,7 @@ If a number is given, switch to the window with number .Ar number . If a name is given, switch to the window in the current group with -@@ -784,7 +784,7 @@ command. +@@ -761,7 +761,7 @@ command. Switch to the screen .Ar screennumber . (If you have multiple physical ones.) @@ -92,7 +92,7 @@ Select whether .Nm will show a startup message or not. -@@ -844,7 +844,7 @@ Spawn a shell executing +@@ -824,7 +824,7 @@ Spawn a shell executing after showing a message with the command. .It Ic version Pq Ic C\-t v Output version and compile time information. @@ -101,7 +101,7 @@ Split the current frame into upper frame and a lower frame. If no parameter is given, split in halves. If two numbers separated by a slash -@@ -866,7 +866,7 @@ wide or the upper one +@@ -846,7 +846,7 @@ wide or the upper one high, depending whether there is a .Dq Li \- in front of the number or not. @@ -109,8 +109,8 @@ +.It Ic warp Brq Cm on | off Select if focusing a window moves the rat cursor to the place it had been last time this window was focused, or not. - .It Ic windows Oo Ar format Oc Pq Ic C\-t w -@@ -974,7 +974,7 @@ can undo with the + This command is deprecated, please set the +@@ -957,7 +957,7 @@ can undo with the command. .Pp Default is 20. @@ -119,7 +119,7 @@ Set the default gravity new normal windows will get. Possible values are the same as in the .Ic gravity -@@ -983,7 +983,7 @@ points or numbers 1 to 9. +@@ -966,7 +966,7 @@ points or numbers 1 to 9. .Pp Default is .Li nw . @@ -128,7 +128,7 @@ Set the default gravity new self-maximized windows will get. Possible values are the same as in the .Ic gravity -@@ -992,7 +992,7 @@ points or numbers 1 to 9. +@@ -975,7 +975,7 @@ points or numbers 1 to 9. .Pp Default is .Li c . @@ -137,7 +137,7 @@ Set the default gravity new transient windows will get. Possible values are the same as in the .Ic gravity -@@ -1001,7 +1001,7 @@ points or numbers 1 to 9. +@@ -984,7 +984,7 @@ points or numbers 1 to 9. .Pp Default is .Li c . @@ -146,7 +146,7 @@ Select the location where message and prompt bars appear. .Pp Default is -@@ -1034,7 +1034,7 @@ Determine the width of the input window. +@@ -1017,7 +1017,7 @@ Determine the width of the input window. .Pp Default is .Li 200 . @@ -155,7 +155,7 @@ If there is padding, determines whether the bar appears at the edge of the screen .Pq Li 1 -@@ -1052,7 +1052,7 @@ grabs directly. +@@ -1035,7 +1035,7 @@ grabs directly. .Pp The default value is .Li top . @@ -164,7 +164,7 @@ Determine whether to change the rat cursor when waiting for a key .Pq Li 1 or not -@@ -1071,7 +1071,7 @@ command. +@@ -1054,7 +1054,7 @@ command. .Pp Default is .Li %n%s%t . @@ -173,7 +173,7 @@ Choose what is considered the "name" of the window by .Nm : .Pp -@@ -1120,7 +1120,7 @@ and vertical padding to +@@ -1103,7 +1103,7 @@ and vertical padding to .Pp Default is .Li 4 0 . @@ -182,7 +182,7 @@ Determines whether windows are shown in rows or in columns. .Pp Default is column. -@@ -1139,14 +1139,14 @@ Specify maximum number of values kept in input history. +@@ -1122,14 +1122,14 @@ Specify maximum number of values kept in input history. .Pp Default is .Li 20 . @@ -198,4 +198,4 @@ +.It Cm historyexpansion Brq Cm 0 | 1 Decide if history expansion using ! is available. (Can only be activated when compiled with readline's libhistory.) - .Pp + .It Cm msgwait Ar seconds diff -Nru ratpoison-1.4.8/debian/rules ratpoison-1.4.9/debian/rules --- ratpoison-1.4.8/debian/rules 2015-12-30 14:19:41.000000000 +0000 +++ ratpoison-1.4.9/debian/rules 2019-01-30 20:26:47.000000000 +0000 @@ -3,24 +3,22 @@ # Uncomment this to turn on verbose mode. #export DH_VERBOSE=1 +DEB_BUILD_MAINT_OPTIONS=hardening=+all +include /usr/share/dpkg/architecture.mk +include /usr/share/dpkg/buildflags.mk + # These are used for cross-compiling and for saving the configure script # from having to guess our platform (since we know it already) -DEB_HOST_GNU_TYPE := $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE) -DEB_BUILD_GNU_TYPE := $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE) ifeq ($(DEB_HOST_GNU_TYPE),$(DEB_BUILD_GNU_TYPE)) BUILD_SYSTEM = --build $(DEB_BUILD_GNU_TYPE) else BUILD_SYSTEM = --build $(DEB_BUILD_GNU_TYPE) --host $(DEB_HOST_GNU_TYPE) endif -CFLAGS := $(shell dpkg-buildflags --get CFLAGS) -CPPFLAGS := $(shell dpkg-buildflags --get CPPFLAGS) -LDFLAGS := $(shell dpkg-buildflags --get LDFLAGS) - CFLAGS += -Wall -LDFLAGS += -Wl,-z,syms +LDFLAGS += -Wl,-z,defs -CONFIG_OPTIONS = --with-xkb --enable-mdoc +CONFIG_OPTIONS = --with-xkb --with-xrandr --enable-mdoc ifneq (,$(filter ratpoison:gendeps,$(DEB_BUILD_OPTIONS))) CONFIG_OPTIONS += else @@ -56,8 +54,6 @@ $(CONFIG_OPTIONS) \ --x-includes="" --x-libraries="" \ CFLAGS='$(CFLAGS)' CPPFLAGS='$(CPPFLAGS)' LDFLAGS='$(LDFLAGS)' - # libXext is not needed for dynamic linking: - sed -i -e '/^X_LIBS =/s/-lXext //' src/Makefile # do not delete config.status if above rule failed, # as that might hide other left over files that need cleaning .PRECIOUS: config.status @@ -104,11 +100,11 @@ dh_installdirs $(MAKE) install pkgdatadir=/usr/share/doc/ratpoison/examples DESTDIR=$(CURDIR)/debian/ratpoison + sed -e 's%^#!/usr/bin/env perl$$%#!/usr/bin/perl%' -i debian/ratpoison/usr/bin/rpws # since Debian uses gnu install-info, this seems to need manual removing... find debian/ratpoison -name "dir" -print -delete # Those are installed to different places already by dh_* rm debian/ratpoison/usr/share/doc/ratpoison/COPYING - rm debian/ratpoison/usr/share/doc/ratpoison/ChangeLog # not needed two times: rm debian/ratpoison/usr/share/doc/ratpoison/examples/rpws # The menu command: diff -Nru ratpoison-1.4.8/debian/upstream/signing-key.asc ratpoison-1.4.9/debian/upstream/signing-key.asc --- ratpoison-1.4.8/debian/upstream/signing-key.asc 2015-12-30 14:19:41.000000000 +0000 +++ ratpoison-1.4.9/debian/upstream/signing-key.asc 2019-01-30 20:26:47.000000000 +0000 @@ -1,5 +1,4 @@ -----BEGIN PGP PUBLIC KEY BLOCK----- -Version: GnuPG v1 mQINBFJ00FQBEAC4qGwh4qQvG8L2Wex/jfWIojSV8vIkI1nf+kFLt0i9IzkP+uHc GTQw9KD2JHI/ade64BKdAGAYDMpthhPlv7B6uEEVneXTt5AHj7hS5cXOV6qeZhU6 @@ -13,18 +12,68 @@ r88yplKHGs62EEpHXqNqRpTN7sw0sy7FqMHcwQIE0djZt6i+jiY0BuZbvIEzV1Qv JT/qDB2kXWWSaQ1gIpoRaEIN2KFc+xXglg1tc3wZZKllvzOKiFOVT+f7uwARAQAB tCxKw6lyw6ltaWUgQ291cnLDqGdlcy1BbmdsYXMgPGpjYUB3eGN2Ym4ub3JnPokC -QAQTAQgAKgIbAwUJBaOagAULCQgHAwUVCgkICwUWAgMBAAIeAQIXgAUCUnTTXgIZ -AQAKCRAN+nSuFSTn7gcjD/0T4l6rEGnGfGceP6riY6UAbIM3DrBHzGuyeOi9dHMm -bfQGfgpboLMac+38td7X0WhJeO4mfWiGutDYt03U2bkwLQFaUcKLS6E7uJLiTBm7 -MYWXAmODsIyM+f5JDwyWF592vLDkr06GGHo9RjJIYCnYlCUQRF/LHJMhMvOC/mIH -zTl7/0aTU/Ifvd7IRNV6p+XKwC2s2J52zw5TqFPi//4aUg+JCwK19nJamKoGoeEc -ljC6s8jtVMfGsTKheeVoG269Uzq6Y45SPTyTizsZFyKBZ9XDlLrZZnreuYAKnuIY -mz83aoB8TFmCOKSzezChwe1GrsyEUYyg+djwxVoQfF4Alu6xPZ1S896GVrjUbAYM -aM8rSApFh86/4jVpJAjE9B8+3ktB518Bz824CoIM6N2bcT8v9gDfMHLhW2I4IE4m -AaHBCCqOa304ZFU12YxiuNOvIvIO6UF3btd9pNyQEXyf0DUWZLrpFvBc/mpdtQKk -KjgGyRfpjH7nXINPQ7umF0+Cv4mILsp6mI9t+yt774gGJY2D13yZ7bgnK4giRz7K -xoaOuGAtIa3smk1kvbyuIDIbTMOiIFyb5QkWXggKgzeBMSocyfZ8jB9PB6VQyqI9 -EiPHzDkW9R48ZmdE1XN0ERyNpKfE+kCn4oBVCXo+0FaI+bzVcW9kJxAQcWaRAG2m -pA== -=AGcE +VwQTAQgAQQIbAwULCQgHAwUVCgkICwUWAgMBAAIeAQIXgAIZARYhBFE1ksGtNlKT +K9/dzA36dK4VJOfuBQJblj11BQkLAqChAAoJEA36dK4VJOfucN0P/iM7v6a00WW1 +0IY9T3SaCAZpxWDTUNRAcCPCA5M2F8SIMxNNjhpPH2wmZ43F2RmVve4o7UUW6QIT +6RhTgJh5lnlfdUGG/R0NGYys6SzWBNDFwGy+ZI0hm6qNQgRvkWb6G+vMwuks2WmB +deVEzqxWG5vbzFMlNc/Y4VkP3Mo/IND2PlL4ljIZJA0sP8iXehxt0ak7ZlKPLYoX +Fq9zxNNb8WHfgkeJTCUgXso4BC111R818ER9sKT2QVHyy7EiubbyDCVl1c5PUtxN +8DNUDIbzRa5vh3T99Trlz5RE/kOKoyXwI8+WlmMHzpb3sN9+P8nK8bZ+L9qjO6Xj +Sb1xndI1/vb/FexY6L2Mo2vDE4zSLeNWRuFFHESrrX3hm3S28XLtTthJzKAiniBr +CQ1UM7X5eDYAOwygS4nNyGRC2hy1zc/kF5ySlRk/2EUfDjlWXU/wxy+hZJVDOwao +TffDFxTIea/2DcfHXGupIf5kYF3PW8EJqe8I6WtZJcS/JQTnaosr0qWowjhbivxs +3winsCKgmJ9m+YoOWs40lTZKI4uF0Vyvg3isHfAmiw7oZia4NSpCVDgSNWTw+PYM +4FY+f2OoQQaVWKmXhfaMa5iierP1FUaEQ+gaYf3u9jN0GavebhPs5UjmAHDEKhjo +2FdAxnb4bIg0p4T0FyTnqINZsmyM5RsntC1Kw6lyw6ltaWUgQ291cnLDqGdlcy1B +bmdsYXMgPGpjYUBvcGVuYnNkLm9yZz6JAlQEEwEIAD4CGwMFCwkIBwMFFQoJCAsF +FgIDAQACHgECF4AWIQRRNZLBrTZSkyvf3cwN+nSuFSTn7gUCW5Y9dQUJCwKgoQAK +CRAN+nSuFSTn7kFtEACuMdX+2U6afgY4xseuoWflw1ybWIIHQuAiwWWqnCupJP7N +aY5BdunNfGgPSLRWqjorMi1OsTlHkKxQg+S3Uvtsdo5VCMilvofZL2waCt4bOgtY +Cd4BphppzR+YlvAehp+qCVAvqPxIoh3j5+/RCZLQtG2lzh4B2gOG+z5cyCXkNRsl +BoVvSZBwk896TbsPaKs9jBhDhpksAIchVWTrMPEmqNACmSp3VqYnP1XuxzihF7vI +KfRMcBUhpGhCstusdpwJyPjd5PcPsVUldItJyv4nDIIvFuzci+4vY77oeMDMNf/T +6Ne/Af0h5seBNtpWMgF4Ou6tjp0OF92/NByyP63mi/mXnMvwlaYzEZG875x9rAZO +AyQpuZmUjXNM8l9Hcax4+Hpx0uQed/33l7OaAh4fTvEzYX0qsChV4QJ6acKyXaMq +UwGp41GR9sgOzqTQsOOEnhPt60Sg86IlNkoYlJN7CuWB8csmuzqLDMu1UiTXyuW0 +0MQ9SpqxDTfOEtDxMyOHpC9Nhe9PjotQmre358/gFX6mQQIaN4XPfOxerrZfReF2 +VKg2b1KI02eslZuJ7aHDkJoo2ho5cej7ZAhAvCsIm8Sbijob0b2K/a41rMLlUBgn +2er19OemQIeo+mtyiviC0kXM+ywYiXJw1r5cWOezE3gtIFRSjiHjfklI2FzfO7Qv +SsOpcsOpbWllIENvdXJyw6hnZXMtQW5nbGFzIDxqY2FAYXV0b2dlcmVlLm5ldD6J +AlQEEwEIAD4CGwMFCwkIBwMFFQoJCAsFFgIDAQACHgECF4AWIQRRNZLBrTZSkyvf +3cwN+nSuFSTn7gUCW5Y9dgUJCwKgoQAKCRAN+nSuFSTn7iVFD/9LKJR/jiEw/nek +Yjn5VC6+nvisgA+eRoHh+emq+CWx/rhyy2pYZQoEzb9INBq630c2eQWqOyUzF+su +oyS0t/Ov3G7Vgk2UlbotkaToZSIhJQh2+gIKoQxdvs0vzL7GGW1DO2xYblIAe/Bj +IAvqvni/Czo6Dver8QcUvyTe9Vd3B7hrpx86TJbtSfGB04ZVNIVMAq1wGaNj2Yb8 +PBbe4sPNC/njo275R5RFoGbgu+fYrjlZTOy5YZhYozcmXSweIwxVww8xeyzepen6 +pWkl9kLioNcLLK2/62Z8dsPL8PwIr4AEmwO8z6jRaZcHRDT5F6aUOk6O0dwQAAJ3 ++rwe1ZHdygDvxy43byThr97u/MOEOy1nSbTi0KQaHkJfhJ8xZhWorvordKC5cc4A +DW1+oa2hXBMV23LZvX9G8eSrQhLNiLk25peZKjzLJYbrJ2iNc/IAD++Eu+0xyHFZ +BbSchtd3JzpALSx2GN6crTg+r76hQEfyKqlUZA9+8KfVyqE4NhPRGCwFUKxg3Isr +4lbV6t7NIvB2qh0lEyf2MkdMqKz7cw7eMwmFvlvMWu3o77U+Ua7TFB9v1iNADyAu +DNLMKqU+O9Ce5fQELDUTP7rEUHn09Ss/97Hcj5NR6Fz0fdDF6GpI3bmBptYkOxyS +gYh2uyf9OGyF6zVEzWduAO9kJvjyR7kCDQRSdNBUARAAv+LI8WRA3Q9bSsD2II1I +guaC5TQOsvsTY1I5/OhAri7wJVCO/qoOiItL92qF7ZYEVsN9b0PS+VZZdz0pRvQP +JDEPKJno0yh6NSBnhJWGCQ2F50PLwWB8bfeJfVl6QgAMFI1fwb5PJbpbYtt8XFnT +DBQMbb4rEcGC94qUNasD+Ek4rvrLM0cTTyfLBm2vW8n4SIzqmD1jdI0sunFSrSqq +8M0ciJQ3CcgdtQ2BMMsZPZczgjSbtEC8ZhG3LcP515vkP9RHogFb1ORXP/6pMIYH +rAvma4GQ8NMwrom0gBKIc1qh3FznThQvB++RCdT4i2Om2EP0HmFl/f6FbyudFf7y +A+ASg2Yu6BRRPLHuNfn9qqqOB/4bv7BOPfw9DoJF86MhzervvPZzhAZC7qpgSe94 +6j12JJgbLPMAf5/eb0AVEpn6Cru2pc1oe7+pE/R2X3jMoewAOQGEOb3jsVdLW6nq +N8DvhfxD6fvc7AvGwh3vu/xqnm2+Hz67rrB/KkGIQKIdmdyFUgio2nSdHye4v1fY +Zd02xM0aVsDm+JEFlMdGEJ5iud2H/94FgumnMcAc3HvIl8xNakiYLT5aVG/lKTM/ +f7vJ/lbk0rtn5JUVsaZ5uWTlgfvJqqbRLWfU/0M2Qn+yZoUYQSphdkJtBk8bissm +pvLwKgItqO7cSZgi10wwxLEAEQEAAYkCPAQYAQgAJgIbDBYhBFE1ksGtNlKTK9/d +zA36dK4VJOfuBQJblj0mBQkLAqBSAAoJEA36dK4VJOfubc4QAKB1ShJp26OB6GRu +6L7kYudwtQX8pVJn1eFSh3U/1kW7hFyTYbsiu5+ze80Hq8VhXUFE1BmrJUoF48e5 +kWP8YJyXMZJkNYFj1PS/Y1QdmWxL7EQY5BhHWS23Jh3b74vMV9JCwaCQHDmnRphQ +C6mvpIO/gFxNSpeLHwyuuwIeAkl0gFHVhlG5Ha8ip0sbevd2dmcnPI2cQCWDJ3HG +qzfGh7wZvv1EAy1hRlP9kwIoLjf0OWxcClX5+HOyAYDyAdYkkivXvH0T/ulr6umY +3aH5JBI+9n9qm0FO3JQEJ3iQVeA4tCB8Z/ETKLcvPgkXTy8TqildHDlH/22fjCsz +WFEzthWCtmlHTXmll3SAA6sjORrtg2vOgElNqf/wPqfG0Vl/gOdq9gsnhU5Py/Zc +CgTaruDrPuzQYxZuaxQ273UJv2alMrCPO6Eigv+tNHeZhbYWOOwsXw1gAkdrArq4 +kj1BIzpmI2Tzw5vy0ZpA5JlMRfSRKjrFOONM8H8JSg0/bQicLUOHUTuZu5lyo+a6 +X4rEXFfcNueCmmiGGpnIzsmXJsRZxduvXkWifK6qWEcyHOliCKyXMx+5dbAl/jdb +77Kth4iDcV9dbqWxSbYVV2hQ4ka6J6kXUDADp9qw79i5BBpuYmgHn33/c/3tO7zj +TCT/5LtG/3JgJsBoi+3S+bjUWtzw +=i0H1 -----END PGP PUBLIC KEY BLOCK----- diff -Nru ratpoison-1.4.8/doc/Makefile.in ratpoison-1.4.9/doc/Makefile.in --- ratpoison-1.4.8/doc/Makefile.in 2014-09-14 16:34:31.000000000 +0000 +++ ratpoison-1.4.9/doc/Makefile.in 2017-04-02 23:39:57.000000000 +0000 @@ -1,9 +1,8 @@ -# Makefile.in generated by automake 1.11.6 from Makefile.am. +# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software -# Foundation, Inc. +# Copyright (C) 1994-2014 Free Software Foundation, Inc. + # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. @@ -34,23 +33,61 @@ # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # VPATH = @srcdir@ -am__make_dryrun = \ - { \ - am__dry=no; \ +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ - echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ - | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ - *) \ - for am__flg in $$MAKEFLAGS; do \ - case $$am__flg in \ - *=*|--*) ;; \ - *n*) am__dry=yes; break;; \ - esac; \ - done;; \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ - test $$am__dry = yes; \ - } + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ @@ -68,19 +105,60 @@ PRE_UNINSTALL = : POST_UNINSTALL = : subdir = doc -DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ - $(srcdir)/stamp-vti $(srcdir)/version.texi ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/m4/codeset.m4 \ - $(top_srcdir)/m4/pkg.m4 $(top_srcdir)/configure.ac +am__aclocal_m4_deps = $(top_srcdir)/m4/ax_check_compile_flag.m4 \ + $(top_srcdir)/m4/codeset.m4 $(top_srcdir)/m4/pkg.m4 \ + $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/version.texi \ + $(srcdir)/stamp-vti $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/src/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = SOURCES = DIST_SOURCES = +AM_V_DVIPS = $(am__v_DVIPS_@AM_V@) +am__v_DVIPS_ = $(am__v_DVIPS_@AM_DEFAULT_V@) +am__v_DVIPS_0 = @echo " DVIPS " $@; +am__v_DVIPS_1 = +AM_V_MAKEINFO = $(am__v_MAKEINFO_@AM_V@) +am__v_MAKEINFO_ = $(am__v_MAKEINFO_@AM_DEFAULT_V@) +am__v_MAKEINFO_0 = @echo " MAKEINFO" $@; +am__v_MAKEINFO_1 = +AM_V_INFOHTML = $(am__v_INFOHTML_@AM_V@) +am__v_INFOHTML_ = $(am__v_INFOHTML_@AM_DEFAULT_V@) +am__v_INFOHTML_0 = @echo " INFOHTML" $@; +am__v_INFOHTML_1 = +AM_V_TEXI2DVI = $(am__v_TEXI2DVI_@AM_V@) +am__v_TEXI2DVI_ = $(am__v_TEXI2DVI_@AM_DEFAULT_V@) +am__v_TEXI2DVI_0 = @echo " TEXI2DVI" $@; +am__v_TEXI2DVI_1 = +AM_V_TEXI2PDF = $(am__v_TEXI2PDF_@AM_V@) +am__v_TEXI2PDF_ = $(am__v_TEXI2PDF_@AM_DEFAULT_V@) +am__v_TEXI2PDF_0 = @echo " TEXI2PDF" $@; +am__v_TEXI2PDF_1 = +AM_V_texinfo = $(am__v_texinfo_@AM_V@) +am__v_texinfo_ = $(am__v_texinfo_@AM_DEFAULT_V@) +am__v_texinfo_0 = -q +am__v_texinfo_1 = +AM_V_texidevnull = $(am__v_texidevnull_@AM_V@) +am__v_texidevnull_ = $(am__v_texidevnull_@AM_DEFAULT_V@) +am__v_texidevnull_0 = > /dev/null +am__v_texidevnull_1 = INFO_DEPS = $(srcdir)/ratpoison.info TEXINFO_TEX = $(top_srcdir)/build-aux/texinfo.tex am__TEXINFO_TEX_DIR = $(top_srcdir)/build-aux @@ -130,9 +208,14 @@ man1dir = $(mandir)/man1 NROFF = nroff MANS = $(man_MANS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +am__DIST_COMMON = $(srcdir)/Makefile.in \ + $(top_srcdir)/build-aux/mdate-sh \ + $(top_srcdir)/build-aux/texinfo.tex DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ @@ -253,7 +336,6 @@ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu doc/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu doc/Makefile -.PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ @@ -273,7 +355,7 @@ $(am__aclocal_m4_deps): .texi.info: - restore=: && backupdir="$(am__leading_dot)am$$$$" && \ + $(AM_V_MAKEINFO)restore=: && backupdir="$(am__leading_dot)am$$$$" && \ am__cwd=`pwd` && $(am__cd) $(srcdir) && \ rm -rf $$backupdir && mkdir $$backupdir && \ if ($(MAKEINFO) --version) >/dev/null 2>&1; then \ @@ -295,27 +377,25 @@ rm -rf $$backupdir; exit $$rc .texi.dvi: - TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \ + $(AM_V_TEXI2DVI)TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \ MAKEINFO='$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir)' \ - $(TEXI2DVI) $< + $(TEXI2DVI) $(AM_V_texinfo) --build-dir=$(@:.dvi=.t2d) -o $@ $(AM_V_texidevnull) \ + $< .texi.pdf: - TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \ + $(AM_V_TEXI2PDF)TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \ MAKEINFO='$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir)' \ - $(TEXI2PDF) $< + $(TEXI2PDF) $(AM_V_texinfo) --build-dir=$(@:.pdf=.t2p) -o $@ $(AM_V_texidevnull) \ + $< .texi.html: - rm -rf $(@:.html=.htp) - if $(MAKEINFOHTML) $(AM_MAKEINFOHTMLFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) \ + $(AM_V_MAKEINFO)rm -rf $(@:.html=.htp) + $(AM_V_at)if $(MAKEINFOHTML) $(AM_MAKEINFOHTMLFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) \ -o $(@:.html=.htp) $<; \ then \ - rm -rf $@; \ - if test ! -d $(@:.html=.htp) && test -d $(@:.html=); then \ - mv $(@:.html=) $@; else mv $(@:.html=.htp) $@; fi; \ + rm -rf $@ && mv $(@:.html=.htp) $@; \ else \ - if test ! -d $(@:.html=.htp) && test -d $(@:.html=); then \ - rm -rf $(@:.html=); else rm -Rf $(@:.html=.htp) $@; fi; \ - exit 1; \ + rm -rf $(@:.html=.htp); exit 1; \ fi $(srcdir)/ratpoison.info: ratpoison.texi $(srcdir)/version.texi ratpoison.dvi: ratpoison.texi $(srcdir)/version.texi @@ -328,21 +408,22 @@ echo "@set UPDATED $$1 $$2 $$3"; \ echo "@set UPDATED-MONTH $$2 $$3"; \ echo "@set EDITION $(VERSION)"; \ - echo "@set VERSION $(VERSION)") > vti.tmp - @cmp -s vti.tmp $(srcdir)/version.texi \ - || (echo "Updating $(srcdir)/version.texi"; \ - cp vti.tmp $(srcdir)/version.texi) - -@rm -f vti.tmp + echo "@set VERSION $(VERSION)") > vti.tmp$$$$ && \ + (cmp -s vti.tmp$$$$ $(srcdir)/version.texi \ + || (echo "Updating $(srcdir)/version.texi" && \ + cp vti.tmp$$$$ $(srcdir)/version.texi.tmp$$$$ && \ + mv $(srcdir)/version.texi.tmp$$$$ $(srcdir)/version.texi)) && \ + rm -f vti.tmp$$$$ $(srcdir)/version.texi.$$$$ @cp $(srcdir)/version.texi $@ mostlyclean-vti: - -rm -f vti.tmp + -rm -f vti.tmp* $(srcdir)/version.texi.tmp* maintainer-clean-vti: @MAINTAINER_MODE_TRUE@ -rm -f $(srcdir)/stamp-vti $(srcdir)/version.texi .dvi.ps: - TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \ - $(DVIPS) -o $@ $< + $(AM_V_DVIPS)TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \ + $(DVIPS) $(AM_V_texinfo) -o $@ $< uninstall-dvi-am: @$(NORMAL_UNINSTALL) @@ -421,10 +502,7 @@ done mostlyclean-aminfo: - -rm -rf ratpoison.aux ratpoison.cp ratpoison.cps ratpoison.fn ratpoison.fns \ - ratpoison.ky ratpoison.kys ratpoison.log ratpoison.pg \ - ratpoison.pgs ratpoison.tmp ratpoison.toc ratpoison.tp \ - ratpoison.tps ratpoison.vr ratpoison.vrs + -rm -rf ratpoison.t2d ratpoison.t2p clean-aminfo: -test -z "ratpoison.dvi ratpoison.pdf ratpoison.ps ratpoison.html" \ @@ -479,27 +557,14 @@ } | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \ -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \ dir='$(DESTDIR)$(man1dir)'; $(am__uninstall_files_from_dir) -tags: TAGS -TAGS: +tags TAGS: + +ctags CTAGS: -ctags: CTAGS -CTAGS: +cscope cscopelist: distdir: $(DISTFILES) - @list='$(MANS)'; if test -n "$$list"; then \ - list=`for p in $$list; do \ - if test -f $$p; then d=; else d="$(srcdir)/"; fi; \ - if test -f "$$d$$p"; then echo "$$d$$p"; else :; fi; done`; \ - if test -n "$$list" && \ - grep 'ab help2man is required to generate this page' $$list >/dev/null; then \ - echo "error: found man pages containing the \`missing help2man' replacement text:" >&2; \ - grep -l 'ab help2man is required to generate this page' $$list | sed 's/^/ /' >&2; \ - echo " to fix them, install help2man, remove and regenerate the man pages;" >&2; \ - echo " typically \`make maintainer-clean' will remove them" >&2; \ - exit 1; \ - else :; fi; \ - else :; fi @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ @@ -735,19 +800,21 @@ .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-aminfo clean-generic \ - dist-info distclean distclean-generic distdir dvi dvi-am html \ - html-am info info-am install install-am install-data \ - install-data-am install-dvi install-dvi-am install-exec \ - install-exec-am install-html install-html-am install-info \ - install-info-am install-man install-man1 install-pdf \ - install-pdf-am install-ps install-ps-am install-strip \ - installcheck installcheck-am installdirs maintainer-clean \ - maintainer-clean-aminfo maintainer-clean-generic \ - maintainer-clean-vti mostlyclean mostlyclean-aminfo \ - mostlyclean-generic mostlyclean-vti pdf pdf-am ps ps-am \ - uninstall uninstall-am uninstall-dvi-am uninstall-html-am \ - uninstall-info-am uninstall-man uninstall-man1 \ - uninstall-pdf-am uninstall-ps-am + cscopelist-am ctags-am dist-info distclean distclean-generic \ + distdir dvi dvi-am html html-am info info-am install \ + install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-man1 install-pdf install-pdf-am install-ps \ + install-ps-am install-strip installcheck installcheck-am \ + installdirs maintainer-clean maintainer-clean-aminfo \ + maintainer-clean-generic maintainer-clean-vti mostlyclean \ + mostlyclean-aminfo mostlyclean-generic mostlyclean-vti pdf \ + pdf-am ps ps-am tags-am uninstall uninstall-am \ + uninstall-dvi-am uninstall-html-am uninstall-info-am \ + uninstall-man uninstall-man1 uninstall-pdf-am uninstall-ps-am + +.PRECIOUS: Makefile ratpoison.1: $(srcdir)/ratpoison.$(manpage_format).1 Makefile diff -Nru ratpoison-1.4.8/doc/ratpoison.info ratpoison-1.4.9/doc/ratpoison.info --- ratpoison-1.4.8/doc/ratpoison.info 2014-09-14 16:35:45.000000000 +0000 +++ ratpoison-1.4.9/doc/ratpoison.info 2017-04-02 23:41:02.000000000 +0000 @@ -44,7 +44,7 @@ Ratpoison ********* -This document explains how to use ratpoison 1.4.8. +This document explains how to use ratpoison 1.4.9. Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006 Shawn Betts @@ -87,7 +87,7 @@ * Windows:: Navigating The Windows * Groups:: Grouping Windows Together * Frames:: Dividing The Screen -* Multiple Monitors:: What To Do With All Your Computer Junk +* Multiple Screens:: What To Do With All Your Computer Junk * Keystrokes:: Key Commands And Functionality * Hooks:: Attaching Scripts To Ratpoison Events * The Status Bar:: Ratpoison's Input/Output Area @@ -332,6 +332,15 @@ Set the default window format for the `info' command. See `set winfmt' for accepted format characters. + -- Command: set warp N + Set rat warping. By default this variable is set (`1') and + ratpoison saves the position of the rat when leaving a window and + when the user returns to the window the rat's position is + restored. If you find this counter-intuitive, set this variable to + `0'. + + When called with no arguments, the current setting is returned. + -- Command: set winname NAME There are three resources ratpoison can get a window's name from: the WMNAME hint, the res_name from the WMCLASS hint, or the @@ -512,10 +521,10 @@ permission. Not only is this a sign of a lame programmers attempt to fix a window manager problem in the wrong place, it's just plain rude. By default ratpoison will honour these rudeness requests, but it doesn't -have to. Use the `rudeness' command to deal with such programs. +have to. Use the rudeness variable to deal with such programs. - -- Command: rudeness N - The rudeness command lets you decide what windows pop-up + -- Command: set rudeness N + The rudeness variable lets you decide what windows pop-up automatically and when. This is often useful for those deep hack sessions when you absolutely can't be disturbed. @@ -546,8 +555,8 @@ windows For example, if you wanted only wanted to grant transient windows - raise requests and display requests you would type `rudeness 5'. - If a request is not granted ratpoison will tell you about the + raise requests and display requests you would type `set rudeness + 5'. If a request is not granted ratpoison will tell you about the request with a message like `Raise request from window 1 (emacs)'. When called with no arguments, the current setting is returned. @@ -624,7 +633,7 @@ groups can be deleted. To empty a group see `gmerge'.  -File: ratpoison.info, Node: Frames, Next: Multiple Monitors, Prev: Groups, Up: Top +File: ratpoison.info, Node: Frames, Next: Multiple Screens, Prev: Groups, Up: Top 7 Frames ******** @@ -832,7 +841,7 @@ Without an argument the current screen's frames are dumped. With an argument the SCREEN-NUMth screen is dumped. *Note Multiple - Monitors::. + Screens::. -- Command: frestore FRAMES Restore the frame layout based on the list of frames FRAMES. @@ -874,22 +883,23 @@ A dedicated frame is a frame that will not allow new windows to appear in it. Only the user may switch windows in this frame. - -- Command: dedicate - Toggle whether the current frame is dedicated or not. + -- Command: dedicate ARG + Set the current frame as dedicated (ARG = 1) or not (ARG = 0). If + ARG is not supplied, toggle the dedicated state of the current + frame.  -File: ratpoison.info, Node: Multiple Monitors, Next: Keystrokes, Prev: Frames, Up: Top +File: ratpoison.info, Node: Multiple Screens, Next: Keystrokes, Prev: Frames, Up: Top -8 Multiple Monitors -******************* +8 Multiple Screens +****************** When you've finally accumulated enough computer junk, you'll find -yourself attaching a second monitor to your computer. ratpoison has +yourself attaching a second screen to your computer. ratpoison has functionality to help you get around your new and improved desktop space. - The X Windowing System assigns each monitor a screen number. To -switch to another screen use the commands `nextscreen' and + To switch to another screen use the commands `nextscreen' and `prevscreen'. Or, `sselect' to jump to a specified screen. ratpoison will tell you which frame has focus by drawing the current frame indicator in it. @@ -901,15 +911,17 @@ ratpoison means there's no other window to switch to in the current screen. If you want to switch to the other xterm you can switch to it by name (use `select' or `C-t ''), by number, or you can use -`nextscreen', `prevscreen', and `sselect'. +`nextscreen', `prevscreen', and `sselect'. The commands `focusright', +`focusleft', `focusup', and `focusdown' also allow you to navigate +across screens. -- Command: nextscreen This jumps you to the next X11 screen. `nextscreen' is used for - dual-head displays and multiple monitor setups. + dual-head displays and multiple screen setups. -- Command: prevscreen This jumps you to the previous X11 screen. `prevscreen' is used - for dual-head displays and multiple monitor setups. + for dual-head displays and multiple screen setups. -- Command: sselect N This jumps you to the Nth X11 screen. Screen numbers start at 0. @@ -925,7 +937,7 @@ restore a frame configuration created using `sfdump'.  -File: ratpoison.info, Node: Keystrokes, Next: Hooks, Prev: Multiple Monitors, Up: Top +File: ratpoison.info, Node: Keystrokes, Next: Hooks, Prev: Multiple Screens, Up: Top 9 Keystrokes ************ @@ -1281,6 +1293,9 @@ switchgroup Run when the user switches to a different group. + switchscreen + Run when the user switches to a different screen. + deletewindow Run when a window is deleted. @@ -1320,17 +1335,17 @@ your favorite desktop background) there are also copious visual customizations available for those rainy days. - -- Command: msgwait N - Set the bar's timeout in seconds. - - When called with no arguments, the current setting is returned. - -- Command: lastmsg Display the last message. -- Command: echo TEXT Display TEXT as a message. + -- Command: set msgwait N + Set the bar's timeout in seconds. + + When called with no arguments, the current setting is returned. + -- Command: set inputwidth N Set the width of the input window. @@ -1370,6 +1385,13 @@ When called with no arguments, the current setting is returned. + -- Command: set framemsgwait N + Set the duration the `Current frame' indicator is shown. If + seconds is zero, wait until the next interactive command. If + seconds is -1, don't show any message. + + When called with no arguments, the current setting is returned. + -- Command: set barpadding X Y Set the horizontal and vertical padding inside the bar. @@ -1469,10 +1491,6 @@ -- Command: colon COMMAND Run a ratpoison command. - -- Command: compat - Install the now obsolete `def*' commands as aliases to the - corresponding `set *' command. - -- Command: set padding LEFT TOP RIGHT BOTTOM Set the padding around the edge of the screen. @@ -1531,7 +1549,7 @@ work. -- Command: getenv ENV - Display the value of the environment variable, ENV. + Display the value of the environment variable ENV. -- Command: getsel Return the contents of the X11 selection. @@ -1605,8 +1623,7 @@ Restart ratpoison. -- Command: set VAR VALUE - Set the value of a ratpoison variable. This command replaces the - older `def*' variable get/set style. + Set the value of a ratpoison variable. Here is a list of variables that can be set: @@ -1654,6 +1671,14 @@ * historyexpansion + * msgwait + + * framemsgwait + + * startupmessage + + * warp + -- Command: setenv ENV VALUE Set the environment variable ENV to VALUE @@ -1661,12 +1686,6 @@ -- Command: source FILE Read a text file containing ratpoison commands. - -- Command: startup_message STATE - Turn on or off the startup_message. This is most useful in your - .ratpoisonrc file. STATE can be `on' or `off'. - - When called with no arguments, the current setting is returned. - -- Command: swap DESTINATION-FRAME SOURCE-FRAME When called interactively prompt for a frame and swap its window with the window in the current frame. An optional second argument @@ -1688,12 +1707,6 @@ -- Command: version Print ratpoison version. By default, this is bound to `C-t v'. - -- Command: warp STATE - Toggle rat warping. By default ratpoison saves the position of the - rat when leaving a window and when the user returns to the window - the rat's position is restored. This can be counter-intuitive, so - you can toggle it with this command. STATE can be `on' or `off'. -  File: ratpoison.info, Node: Input, Next: Command Line Arguments, Prev: Other Commands, Up: Top @@ -1813,7 +1826,7 @@ script ratpoison using any programming language that can spawn a process. Some commands behave differently when invoked this way. Currently the only commands that behaves differently are the - `windows' command and some def* commands. Instead of displaying + `windows' and `set' commands. For `windows', instead of displaying the window list in a message window, it is printed to stdout. The output can then be captured and used in the ratpoison script. For instance, this could be used to check whether a program is running @@ -1858,6 +1871,12 @@ allowing you to switch between different configurations (*note Command Line Arguments::). + -- Command: set startupmessage N + Turn on or off the startup_message. This is most useful in your + .ratpoisonrc file. N can be `1' (default) or `0'. + + When called with no arguments, the current setting is returned. +  File: ratpoison.info, Node: GNU Free Documentation License, Next: Command Index, Prev: Startup file, Up: Top @@ -2309,7 +2328,6 @@ * clrunmanaged: Unmanaged Windows. (line 13) * cnext: Window Classes. (line 25) * colon: Other Commands. (line 37) -* compat: Other Commands. (line 40) * cother: Window Classes. (line 33) * cprev: Window Classes. (line 29) * curframe: Frame Navigation Commands. @@ -2320,15 +2338,15 @@ (line 82) * delkmap: Key Maps. (line 33) * describekey: Key Maps. (line 61) -* echo: The Status Bar. (line 25) -* escape: Other Commands. (line 72) -* exchangedown: Other Commands. (line 76) -* exchangeleft: Other Commands. (line 79) -* exchangeright: Other Commands. (line 82) -* exchangeup: Other Commands. (line 85) -* exec: Other Commands. (line 88) -* execa: Other Commands. (line 91) -* execf: Other Commands. (line 96) +* echo: The Status Bar. (line 20) +* escape: Other Commands. (line 68) +* exchangedown: Other Commands. (line 72) +* exchangeleft: Other Commands. (line 75) +* exchangeright: Other Commands. (line 78) +* exchangeup: Other Commands. (line 81) +* exec: Other Commands. (line 84) +* execa: Other Commands. (line 87) +* execf: Other Commands. (line 92) * fdump: Saving and Restoring Frame Sets. (line 26) * focus: Frame Navigation Commands. @@ -2350,8 +2368,8 @@ * fselect: Frame Navigation Commands. (line 9) * gdelete: Groups. (line 67) -* getenv: Other Commands. (line 101) -* getsel: Other Commands. (line 104) +* getenv: Other Commands. (line 97) +* getsel: Other Commands. (line 100) * gmerge: Groups. (line 63) * gmove: Groups. (line 36) * gnew: Groups. (line 25) @@ -2365,7 +2383,7 @@ * grename: Groups. (line 48) * groups: Groups. (line 33) * gselect: Groups. (line 59) -* help: Other Commands. (line 107) +* help: Other Commands. (line 103) * hsplit: Splitting Frames. (line 46) * inext: Window Classes. (line 13) * info: Manipulating Windows. @@ -2374,108 +2392,110 @@ * iprev: Window Classes. (line 17) * kill: Manipulating Windows. (line 58) -* lastmsg: The Status Bar. (line 22) -* license: Other Commands. (line 110) +* lastmsg: The Status Bar. (line 17) +* license: Other Commands. (line 106) * link: Key Maps. (line 57) -* listhook: Hooks. (line 62) -* meta: Other Commands. (line 113) -* msgwait: The Status Bar. (line 17) +* listhook: Hooks. (line 65) +* meta: Other Commands. (line 109) * newkmap: Key Maps. (line 29) * newwm: Using Other Window Managers. (line 32) * next: Manipulating Windows. (line 53) -* nextscreen: Multiple Monitors. (line 27) +* nextscreen: Multiple Screens. (line 28) * number: Manipulating Windows. - (line 176) + (line 185) * only: Splitting Frames. (line 27) * other: Manipulating Windows. (line 45) * prev: Manipulating Windows. (line 49) -* prevscreen: Multiple Monitors. (line 31) -* prompt: Other Commands. (line 126) -* putsel: Other Commands. (line 131) -* quit: Other Commands. (line 134) -* ratclick: Other Commands. (line 152) -* rathold: Other Commands. (line 156) -* ratinfo: Other Commands. (line 137) -* ratrelinfo: Other Commands. (line 141) -* ratrelwarp: Other Commands. (line 145) -* ratwarp: Other Commands. (line 149) +* prevscreen: Multiple Screens. (line 32) +* prompt: Other Commands. (line 122) +* putsel: Other Commands. (line 127) +* quit: Other Commands. (line 130) +* ratclick: Other Commands. (line 148) +* rathold: Other Commands. (line 152) +* ratinfo: Other Commands. (line 133) +* ratrelinfo: Other Commands. (line 137) +* ratrelwarp: Other Commands. (line 141) +* ratwarp: Other Commands. (line 145) * readkey: Key Maps. (line 53) -* redisplay: Other Commands. (line 160) +* redisplay: Other Commands. (line 156) * redo: Saving and Restoring Frame Sets. (line 42) -* remhook: Hooks. (line 58) +* remhook: Hooks. (line 61) * remove: Splitting Frames. (line 24) * resize: Resizing Frames. (line 45) -* restart: Other Commands. (line 172) -* rudeness: Rudeness. (line 13) -* sdump: Multiple Monitors. (line 38) +* restart: Other Commands. (line 168) +* sdump: Multiple Screens. (line 39) * select: Manipulating Windows. (line 14) -* set <1>: Frame Numbering. (line 14) -* set: Other Commands. (line 175) -* set barborder: The Status Bar. (line 78) -* set bargravity: The Status Bar. (line 72) -* set barinpadding: The Status Bar. (line 83) -* set barpadding: The Status Bar. (line 67) +* set <1>: Other Commands. (line 171) +* set: Frame Numbering. (line 14) +* set barborder: The Status Bar. (line 85) +* set bargravity: The Status Bar. (line 79) +* set barinpadding: The Status Bar. (line 90) +* set barpadding: The Status Bar. (line 74) * set bgcolor: The Status Bar. (line 49) * set border: Manipulating Windows. - (line 196) + (line 205) * set bwcolor: The Status Bar. (line 61) * set fgcolor: The Status Bar. (line 43) * set font: The Status Bar. (line 33) * set framefmt: The Status Bar. (line 38) +* set framemsgwait: The Status Bar. (line 67) * set fwcolor: The Status Bar. (line 55) -* set historcompaction: Other Commands. (line 61) -* set historexpansion: Other Commands. (line 67) -* set historysize: Other Commands. (line 56) +* set historcompaction: Other Commands. (line 57) +* set historexpansion: Other Commands. (line 63) +* set historysize: Other Commands. (line 52) * set infofmt: Manipulating Windows. (line 86) * set inputwidth: The Status Bar. (line 28) * set maxsizegravity: Manipulating Windows. - (line 190) -* set padding: Other Commands. (line 44) + (line 199) +* set msgwait: The Status Bar. (line 23) +* set padding: Other Commands. (line 40) * set resizeunit: Resizing Frames. (line 39) +* set rudeness: Rudeness. (line 13) +* set startupmessage: Startup file. (line 23) * set topkmap: Key Maps. (line 67) * set transgravity: Manipulating Windows. - (line 184) -* set waitcursor: Other Commands. (line 49) + (line 193) +* set waitcursor: Other Commands. (line 45) +* set warp: Manipulating Windows. + (line 90) * set winfmt: Manipulating Windows. - (line 109) + (line 118) * set wingravity: Manipulating Windows. - (line 99) + (line 108) * set winliststyle: Manipulating Windows. - (line 105) + (line 114) * set winname: Manipulating Windows. - (line 90) -* setenv: Other Commands. (line 226) -* sfdump: Multiple Monitors. (line 42) -* sfrestore: Multiple Monitors. (line 45) + (line 99) +* setenv: Other Commands. (line 229) +* sfdump: Multiple Screens. (line 43) +* sfrestore: Multiple Screens. (line 46) * shrink: Resizing Frames. (line 55) -* source: Other Commands. (line 229) +* source: Other Commands. (line 232) * split: Splitting Frames. (line 30) -* sselect: Multiple Monitors. (line 35) -* startup_message: Other Commands. (line 232) -* swap: Other Commands. (line 238) -* time: Other Commands. (line 243) +* sselect: Multiple Screens. (line 36) +* swap: Other Commands. (line 235) +* time: Other Commands. (line 240) * title: Manipulating Windows. (line 40) * tmpwm: Using Other Window Managers. (line 24) -* unalias: Other Commands. (line 246) +* unalias: Other Commands. (line 243) * unbind: Key Maps. (line 43) * undefinekey: Key Maps. (line 50) * undo: Saving and Restoring Frame Sets. (line 37) * unmanage: Unmanaged Windows. (line 16) -* unsetenv: Other Commands. (line 249) -* verbexec: Other Commands. (line 252) -* version: Other Commands. (line 256) +* unsetenv: Other Commands. (line 246) +* verbexec: Other Commands. (line 249) +* version: Other Commands. (line 253) * vsplit: Splitting Frames. (line 31) -* warp: Other Commands. (line 259) * windows: Manipulating Windows. (line 17) @@ -2489,29 +2509,29 @@ Node: General Use8276 Node: Windows9358 Node: Manipulating Windows9590 -Node: Window Classes16138 -Node: Unmanaged Windows17310 -Node: Rudeness18123 -Node: Groups20096 -Node: Frames22573 -Node: Splitting Frames23025 -Node: Resizing Frames25655 -Node: Frame Navigation Commands27703 -Node: Saving and Restoring Frame Sets28922 -Node: Frame Numbering30763 -Node: Dedicated Frames31374 -Node: Multiple Monitors31712 -Node: Keystrokes33511 -Node: Key Maps34787 -Node: Default Key Bindings37107 -Node: Hooks40732 -Node: The Status Bar42484 -Node: Using Other Window Managers45466 -Node: Other Commands47002 -Node: Input54602 -Node: Command Line Arguments56748 -Node: Startup file58501 -Node: GNU Free Documentation License59500 -Node: Command Index81926 +Node: Window Classes16513 +Node: Unmanaged Windows17685 +Node: Rudeness18498 +Node: Groups20480 +Node: Frames22957 +Node: Splitting Frames23408 +Node: Resizing Frames26038 +Node: Frame Navigation Commands28086 +Node: Saving and Restoring Frame Sets29305 +Node: Frame Numbering31145 +Node: Dedicated Frames31756 +Node: Multiple Screens32191 +Node: Keystrokes34034 +Node: Key Maps35309 +Node: Default Key Bindings37629 +Node: Hooks41254 +Node: The Status Bar43084 +Node: Using Other Window Managers46350 +Node: Other Commands47886 +Node: Input54845 +Node: Command Line Arguments56991 +Node: Startup file58747 +Node: GNU Free Documentation License59975 +Node: Command Index82401  End Tag Table diff -Nru ratpoison-1.4.8/doc/ratpoison.man.1 ratpoison-1.4.9/doc/ratpoison.man.1 --- ratpoison-1.4.8/doc/ratpoison.man.1 2014-09-14 16:35:45.000000000 +0000 +++ ratpoison-1.4.9/doc/ratpoison.man.1 2017-04-02 23:41:02.000000000 +0000 @@ -1,4 +1,4 @@ -.TH "RATPOISON" "1" "2014-02-12" "OpenBSD 5.6" "General Commands Manual" +.TH "RATPOISON" "1" "2017-03-09" "OpenBSD 6.1" "General Commands Manual" .nh .if n .ad l .SH "NAME" @@ -168,6 +168,9 @@ \fBswitchgroup\fR Run after selecting a new group. .TP 8n +\fBswitchscreen\fR +Run when the user switches to a different screen. +.TP 8n \fBswitchwin\fR Run after a new window is selected. (With dedication, it may already be inactive again, if it was put into @@ -230,11 +233,6 @@ interactively. (i.e. ask for possible missing arguments.) .TP 8n -\fBcompat\fR -Add aliases for the new -\fBset\fR -commands starting with "def" to support older scripts. -.TP 8n \fBcother\fR Like \fBother\fR @@ -266,18 +264,6 @@ \fB:describekey\fR \fRroot\fR and pressing the key. .TP 8n -\fBdef...\fR -When -\fBcompat\fR -was called there are some aliases starting with "def", which alias the -new form with -\fBset\fR. -I.e. instead of -\fBdefresizeunit\fR -better use the new -\fBset\fR \fBresizeunit\fR -and so on... -.TP 8n \fBdedicate\fR [\fB0\fR | \fB1\fR] Consider the current frame dedicated/chaste (\fB1\fR) @@ -553,7 +539,7 @@ Output the current the width, height, window number and window name of the current window. (What name means is chosen by -\(lq\fBset\fR \fIwinname\fR\(rq.) +\(Lq\fBset\fR \fIwinname\fR\(Rq.) .TP 8n \fBiprev\fR Like @@ -613,6 +599,9 @@ If \fIseconds\fR is zero, wait infinitely. +This command is deprecated, please set the +\fImsgwait\fR +variable instead. .TP 8n \fBnewkmap\fR \fIkeymap\fR Generate a new keymap named @@ -804,30 +793,9 @@ \fBratpoison\fR. .TP 8n \fBrudeness\fR [\fIrudeness\fR] -Show or set what kind of windows are allowed to jostle into the foreground. +This command is deprecated, please use the \fIrudeness\fR -is a bitwise OR of the following values: -.sp -.RS 10n -.PD 0 -.TP 4n -1 -Transient windows may raise. -.TP 4n -2 -Normal windows may raise. -.TP 4n -4 -New transient windows end up in the foreground. -.TP 4n -8 -New normal windows end up in the foreground. -.RE -.RS 8n -.sp -Default is all allowed i.e.\& 15. -.RE -.PD +variable instead. .TP 8n \fBsdump\fR Output the list of all screens. @@ -906,6 +874,9 @@ Select whether \fBratpoison\fR will show a startup message or not. +This command is deprecated, please use the +\fIstartupmessage\fR +variable instead. .TP 8n \fBswap\fR \fIdest-frame\fR [\fIsrc-frame\fR] (\fBC\-t x\fR) Exchange the window in @@ -981,7 +952,7 @@ Split the current frame into upper frame and a lower frame. If no parameter is given, split in halves. If two numbers separated by a slash -(\(lq\fR/\fR\(rq) +(\(Lq\fR/\fR\(Rq) are given, the upper one is \fIl\fR times the @@ -995,21 +966,24 @@ wide or the upper one \fIpixels from top\fR high, depending whether there is a -\(lq\fR\-\fR\(rq +\(Lq\fR\-\fR\(Rq in front of the number or not. .TP 8n \fBwarp\fR (\fBon\fR | \fBoff\fR) Select if focusing a window moves the rat cursor to the place it had been last time this window was focused, or not. +This command is deprecated, please set the +\fIwarp\fR +variable instead. .TP 8n \fBwindows\fR [\fIformat\fR] (\fBC\-t w\fR) In interactive mode, show the list of all windows in the current group for the duration -specified by -\fBmsgwait\fR. -If the -\fBmsgwait\fR -argument was zero, toggle between indefinitely showing and not showing. +specified by the variable +\fImsgwait\fR. +If +\fImsgwait\fR +was zero, toggle between indefinitely showing and not showing. .sp The messages are shown in columns or rows depending on the value of \fIwinliststyle\fR @@ -1076,7 +1050,7 @@ .TP 4n \fR\&%T\fR the string -\(lq\fRTransient\fR\(rq, +\(Lq\fRTransient\fR\(Rq, if it is a transient window .TP 4n \fR%w\fR @@ -1329,10 +1303,64 @@ \fBhistoryexpansion\fR \fR0\fR | \fR1\fR Decide if history expansion using ! is available. (Can only be activated when compiled with readline's libhistory.) +.TP 8n +\fBmsgwait\fR \fIseconds\fR +The duration the message window is shown. +If +\fIseconds\fR +is zero, wait infinitely. +.TP 8n +\fBframemsgwait\fR \fIseconds\fR +The duration the +\(oqCurrent frame\(cq +indicator is shown. +If +\fIseconds\fR +is zero, wait until the next interactive command. +If +\fIseconds\fR +is +\fR-1\fR, +don't show any message. +.TP 8n +\fBstartupmessage\fR \fR0\fR | \fR1\fR +Decide whether to show a greeting message at startup. +.TP 8n +\fBwarp\fR \fR0\fR | \fR1\fR +Decide if focusing a window moves the rat cursor to the place it had +been last time this window was focused, or not. .sp Default is \fR0\fR (off). +.TP 8n +\fBrudeness\fR \fInumber\fR +Show or set what kind of windows are allowed to jostle into the +foreground. +.sp +\fInumber\fR +is a bitwise OR of the following values: +.sp +.RS 10n +.PD 0 +.TP 4n +1 +Transient windows may raise. +.TP 4n +2 +Normal windows may raise. +.TP 4n +4 +New transient windows end up in the foreground. +.TP 4n +8 +New normal windows end up in the foreground. +.RE +.RS 8n +.sp +Default is all allowed i.e.\& 15. +.RE +.PD .SH "FILES" .TP 28n \fI~/.ratpoisonrc\fR diff -Nru ratpoison-1.4.8/doc/ratpoison.mdoc.1 ratpoison-1.4.9/doc/ratpoison.mdoc.1 --- ratpoison-1.4.8/doc/ratpoison.mdoc.1 2014-04-09 08:44:12.000000000 +0000 +++ ratpoison-1.4.9/doc/ratpoison.mdoc.1 2017-04-02 23:28:36.000000000 +0000 @@ -22,7 +22,7 @@ .\" [2] http://mdocml.bsd.lv/ .\" [3] http://mdocml.bsd.lv/mdoc.7.html .\" -.Dd 2014-02-12 +.Dd 2017-03-09 .Dt RATPOISON 1 .Os .Sh NAME @@ -158,6 +158,8 @@ focused. .It Cm switchgroup Run after selecting a new group. +.It Cm switchscreen +Run when the user switches to a different screen. .It Cm switchwin Run after a new window is selected. (With dedication, it may already be inactive again, if it was put into @@ -207,10 +209,6 @@ .Ar ratpoison\-command interactively. (i.e. ask for possible missing arguments.) -.It Ic compat -Add aliases for the new -.Ic set -commands starting with "def" to support older scripts. .It Ic cother Like .Ic other @@ -239,17 +237,6 @@ and look at the error message, or try .Ic :describekey Li root and pressing the key. -.It Ic def... -When -.Ic compat -was called there are some aliases starting with "def", which alias the -new form with -.Ic set . -I.e. instead of -.Ic defresizeunit -better use the new -.Ic set Cm resizeunit -and so on... .It Ic dedicate Op Cm 0 | 1 Consider the current frame dedicated/chaste .Pq Cm 1 @@ -540,6 +527,9 @@ If .Ar seconds is zero, wait infinitely. +This command is deprecated, please set the +.Va msgwait +variable instead. .It Ic newkmap Ar keymap Generate a new keymap named .Ar keymap . @@ -691,22 +681,9 @@ Restart .Nm . .It Ic rudeness Op Ar rudeness -Show or set what kind of windows are allowed to jostle into the foreground. -.Ar rudeness -is a bitwise OR of the following values: -.Pp -.Bl -tag -offset 2n -width 2n -compact -.It 1 -Transient windows may raise. -.It 2 -Normal windows may raise. -.It 4 -New transient windows end up in the foreground. -.It 8 -New normal windows end up in the foreground. -.El -.Pp -Default is all allowed i.e.\& 15. +This command is deprecated, please use the +.Va rudeness +variable instead. .It Ic sdump Output the list of all screens. The screens are separated by commas. Each screen is shown as 6 values: @@ -776,6 +753,9 @@ Select whether .Nm will show a startup message or not. +This command is deprecated, please use the +.Va startupmessage +variable instead. .It Ic swap Ar dest-frame Oo Ar src-frame Oc Pq Ic C\-t x Exchange the window in .Ar src\-frame @@ -857,14 +837,17 @@ .It Ic warp Cm ( on | off ) Select if focusing a window moves the rat cursor to the place it had been last time this window was focused, or not. +This command is deprecated, please set the +.Va warp +variable instead. .It Ic windows Oo Ar format Oc Pq Ic C\-t w In interactive mode, show the list of all windows in the current group for the duration -specified by -.Ic msgwait . -If the -.Ic msgwait -argument was zero, toggle between indefinitely showing and not showing. +specified by the variable +.Va msgwait . +If +.Va msgwait +was zero, toggle between indefinitely showing and not showing. .Pp The messages are shown in columns or rows depending on the value of .Va winliststyle @@ -1137,10 +1120,51 @@ .It Cm historyexpansion Li 0 | 1 Decide if history expansion using ! is available. (Can only be activated when compiled with readline's libhistory.) +.It Cm msgwait Ar seconds +The duration the message window is shown. +If +.Ar seconds +is zero, wait infinitely. +.It Cm framemsgwait Ar seconds +The duration the +.Ql Current frame +indicator is shown. +If +.Ar seconds +is zero, wait until the next interactive command. +If +.Ar seconds +is +.Li -1 , +don't show any message. +.It Cm startupmessage Li 0 | 1 +Decide whether to show a greeting message at startup. +.It Cm warp Li 0 | 1 +Decide if focusing a window moves the rat cursor to the place it had +been last time this window was focused, or not. .Pp Default is .Li 0 (off). +.It Cm rudeness Ar number +Show or set what kind of windows are allowed to jostle into the +foreground. +.sp +.Ar number +is a bitwise OR of the following values: +.Pp +.Bl -tag -offset 2n -width 2n -compact +.It 1 +Transient windows may raise. +.It 2 +Normal windows may raise. +.It 4 +New transient windows end up in the foreground. +.It 8 +New normal windows end up in the foreground. +.El +.Pp +Default is all allowed i.e.\& 15. .El .Sh FILES .Bl -tag -width "%%sysconfdir%%/ratpoisonrc" -compact diff -Nru ratpoison-1.4.8/doc/ratpoison.texi ratpoison-1.4.9/doc/ratpoison.texi --- ratpoison-1.4.8/doc/ratpoison.texi 2014-02-24 01:57:42.000000000 +0000 +++ ratpoison-1.4.9/doc/ratpoison.texi 2017-04-02 23:29:48.000000000 +0000 @@ -73,7 +73,7 @@ * Windows:: Navigating The Windows * Groups:: Grouping Windows Together * Frames:: Dividing The Screen -* Multiple Monitors:: What To Do With All Your Computer Junk +* Multiple Screens:: What To Do With All Your Computer Junk * Keystrokes:: Key Commands And Functionality * Hooks:: Attaching Scripts To Ratpoison Events * The Status Bar:: Ratpoison's Input/Output Area @@ -321,8 +321,16 @@ @command{set winfmt} for accepted format characters. @end deffn +@deffn Command {set warp} @var{n} +Set rat warping. By default this variable is set (@code{1}) and +ratpoison saves the position of the rat when leaving a window and when +the user returns to the window the rat's position is restored. If you +find this counter-intuitive, set this variable to @code{0}. + +When called with no arguments, the current setting is returned. +@end deffn + @deffn Command {set winname} @var{name} -@c @deffnx Command defwinname @var{name} There are three resources ratpoison can get a window's name from: the WMNAME hint, the res_name from the WMCLASS hint, or the res_class from the WMCLASS hint. @var{name} can be @samp{title} which is what most @@ -333,7 +341,6 @@ @end deffn @deffn Command {set wingravity} @var{g} -@c @deffnx Command defwingravity @var{g} Set the default gravity for normal windows. See the @command{gravity} command. @@ -341,13 +348,11 @@ @end deffn @deffn Command {set winliststyle} @var{setting} -@c @deffnx Command defwinliststyle @var{setting} The window list can be displayed in a row or a column. @var{setting} can be @samp{row} or @samp{column}. @end deffn @deffn Command {set winfmt} @var{fmt} -@c @deffnx Command defwinfmt @var{fmt} Set the default window format for the @command{windows} command. By default it is @samp{%n%s%t}. The following is a list of valid format characters: @@ -410,7 +415,6 @@ @end deffn @deffn Command {set transgravity} @var{g} -@c @deffnx Command deftransgravity @var{g} Set the default alignment for transient windows. See the @command{gravity} command. @@ -419,7 +423,6 @@ @end deffn @deffn Command {set maxsizegravity} @var{g} -@c @deffnx Command defmaxsizegravity @var{g} Set the default alignment for windows with maxsize hints. See the @command{gravity} command. @@ -428,7 +431,6 @@ @end deffn @deffn Command {set border} @var{n} -@c @deffnx Command defborder @var{n} Set the border width for all windows. When called with no arguments, the current setting is @@ -504,12 +506,12 @@ permission. Not only is this a sign of a lame programmers attempt to fix a window manager problem in the wrong place, it's just plain rude. By default ratpoison will honour these rudeness requests, but it doesn't -have to. Use the @command{rudeness} command to deal with such programs. +have to. Use the rudeness variable to deal with such programs. -@deffn Command rudeness @var{n} -The rudeness command lets you decide what windows pop-up automatically -and when. This is often useful for those deep hack sessions when you -absolutely can't be disturbed. +@deffn Command {set rudeness} @var{n} +The rudeness variable lets you decide what windows pop-up +automatically and when. This is often useful for those deep hack +sessions when you absolutely can't be disturbed. There are two kinds of windows: normal windows (like an xterm) and transient windows (generally pop-up dialog boxes). When a client @@ -537,8 +539,9 @@ @end table For example, if you wanted only wanted to grant transient windows -raise requests and display requests you would type @samp{rudeness -5}. If a request is not granted ratpoison will tell you about the +raise requests and display requests you would type @samp{set rudeness +5}. +If a request is not granted ratpoison will tell you about the request with a message like @samp{Raise request from window 1 (emacs)}. @@ -737,7 +740,6 @@ customized with the command @command{set resizeunit}. @deffn Command {set resizeunit} @var{pixels} -@c @deffnx Command defresizeunit @var{pixels} Set the number of pixels a frame will grow or shrink by when being dynamically resized. @@ -833,7 +835,7 @@ Dump the current frame layout as text. Without an argument the current screen's frames are dumped. With an -argument the @var{screen-num}th screen is dumped. @xref{Multiple Monitors}. +argument the @var{screen-num}th screen is dumped. @xref{Multiple Screens}. @end deffn @deffn Command frestore @var{frames} @@ -877,19 +879,21 @@ A dedicated frame is a frame that will not allow new windows to appear in it. Only the user may switch windows in this frame. -@deffn Command dedicate -Toggle whether the current frame is dedicated or not. +@deffn Command dedicate @var{arg} +Set the current frame as dedicated (@var{arg} = 1) or not (@var{arg} = 0). +If @var{arg} is not supplied, toggle the dedicated state of the +current frame. @end deffn -@node Multiple Monitors -@chapter Multiple Monitors +@node Multiple Screens +@chapter Multiple Screens + When you've finally accumulated enough computer junk, you'll find -yourself attaching a second monitor to your computer. ratpoison has +yourself attaching a second screen to your computer. ratpoison has functionality to help you get around your new and improved desktop space. -The X Windowing System assigns each monitor a screen number. To switch -to another screen use the commands @command{nextscreen} and +To switch to another screen use the commands @command{nextscreen} and @command{prevscreen}. Or, @command{sselect} to jump to a specified screen. ratpoison will tell you which frame has focus by drawing the current frame indicator in it. @@ -902,16 +906,18 @@ current screen. If you want to switch to the other xterm you can switch to it by name (use @command{select} or @kbd{C-t '}), by number, or you can use @command{nextscreen}, @command{prevscreen}, and -@command{sselect}. +@command{sselect}. The commands @command{focusright}, +@command{focusleft}, @command{focusup}, and @command{focusdown} also +allow you to navigate across screens. @deffn Command nextscreen This jumps you to the next X11 screen. @command{nextscreen} is -used for dual-head displays and multiple monitor setups. +used for dual-head displays and multiple screen setups. @end deffn @deffn Command prevscreen This jumps you to the previous X11 screen. @command{prevscreen} is -used for dual-head displays and multiple monitor setups. +used for dual-head displays and multiple screen setups. @end deffn @deffn Command sselect @var{n} @@ -1261,6 +1267,8 @@ user switches to a different screen, since a frame switch also occurs. @item switchgroup Run when the user switches to a different group. +@item switchscreen +Run when the user switches to a different screen. @item deletewindow Run when a window is deleted. @item newwindow @@ -1297,13 +1305,6 @@ your favorite desktop background) there are also copious visual customizations available for those rainy days. -@deffn Command msgwait @var{n} -Set the bar's timeout in seconds. - -When called with no arguments, the current setting is -returned. -@end deffn - @deffn Command lastmsg Display the last message. @end deffn @@ -1312,8 +1313,14 @@ Display @var{text} as a message. @end deffn +@deffn Command {set msgwait} @var{n} +Set the bar's timeout in seconds. + +When called with no arguments, the current setting is +returned. +@end deffn + @deffn Command {set inputwidth} @var{n} -@c @deffnx Command definputwidth @var{n} Set the width of the input window. When called with no arguments, the current setting is @@ -1321,7 +1328,6 @@ @end deffn @deffn Command {set font} @var{font} -@c @deffnx Command deffont @var{font} Set the font. @var{font} is a font string like @samp{9x15bold}. When called with no arguments, the current setting is returned. @@ -1334,7 +1340,6 @@ @end deffn @deffn Command {set fgcolor} @var{color} -@c @deffnx Command deffgcolor @var{color} Set the foreground color for all text ratpoison displays. @var{color} is any valid X11 color. @@ -1342,7 +1347,6 @@ @end deffn @deffn Command {set bgcolor} @var{color} -@c @deffnx Command defbgcolor @var{color} Set the background color for all text ratpoison displays. @var{color} is any valid X11 color. @@ -1363,8 +1367,15 @@ When called with no arguments, the current setting is returned. @end deffn +@deffn Command {set framemsgwait} @var{n} +Set the duration the @samp{Current frame} indicator is shown. If seconds +is zero, wait until the next interactive command. If seconds is -1, +don't show any message. + +When called with no arguments, the current setting is returned. +@end deffn + @deffn Command {set barpadding} @var{x} @var{y} -@c @deffnx Command defbarpadding @var{x} @var{y} Set the horizontal and vertical padding inside the bar. When called with no arguments, the current setting is @@ -1372,7 +1383,6 @@ @end deffn @deffn Command {set bargravity} @var{g} -@c @deffnx Command defbargravity @var{g} Set the default alignment for the message bar. See the @command{gravity} command. When called with no arguments, the current setting is @@ -1381,7 +1391,6 @@ @deffn Command {set barborder} @var{n} -@c @deffnx Command defbarborder @var{n} Set the border width for the bar window. When called with no arguments, the current setting is returned. @@ -1389,7 +1398,6 @@ @deffn Command {set barinpadding} @var{n} -@c @deffnx Command defbarinpadding @var{n} Set whether the bar window appears at the edge of the screen when there is padding -- that is, within the "padding" area -- or whether it appears at the edge of the window area. "1" represents the former, "0" the latter. See the @@ -1478,20 +1486,13 @@ Run a ratpoison command. @end deffn -@deffn Command compat -Install the now obsolete @samp{def*} commands as aliases to the -corresponding @samp{set *} command. -@end deffn - @deffn Command {set padding} @var{left} @var{top} @var{right} @var{bottom} -@c @deffnx Command defpadding @var{left} @var{top} @var{right} @var{bottom} Set the padding around the edge of the screen. When called with no arguments, the current setting is returned. @end deffn @deffn Command {set waitcursor} @var{n} -@c @deffnx Command defwaitcursor @var{n} Set whether the rat cursor should change into a square when waiting for a key. A non-zero number means change the cursor. Zero means don't change the cursor. @@ -1555,7 +1556,7 @@ @end deffn @deffn Command getenv @var{env} -Display the value of the environment variable, @var{env}. +Display the value of the environment variable @var{env}. @end deffn @deffn Command getsel @@ -1642,8 +1643,7 @@ @end deffn @deffn Command set @var{var} @var{value} -Set the value of a ratpoison variable. This command replaces the older -@samp{def*} variable get/set style. +Set the value of a ratpoison variable. Here is a list of variables that can be set: @@ -1670,6 +1670,10 @@ @item historysize @item historycompaction @item historyexpansion +@item msgwait +@item framemsgwait +@item startupmessage +@item warp @end itemize @end deffn @@ -1682,14 +1686,6 @@ Read a text file containing ratpoison commands. @end deffn -@deffn Command startup_message @var{state} -Turn on or off the startup_message. This is most useful in your -.ratpoisonrc file. @var{state} can be @code{on} or @code{off}. - -When called with no arguments, the current setting is -returned. -@end deffn - @deffn Command swap @var{destination-frame} @var{source-frame} When called interactively prompt for a frame and swap its window with the window in the current frame. An optional second argument allows @@ -1717,13 +1713,6 @@ Print ratpoison version. By default, this is bound to @kbd{C-t v}. @end deffn -@deffn Command warp @var{state} -Toggle rat warping. By default ratpoison saves the position of the -rat when leaving a window and when the user returns to the window the -rat's position is restored. This can be counter-intuitive, so you can -toggle it with this command. @var{state} can be @code{on} or @code{off}. -@end deffn - @node Input @chapter Input At various times ratpoison will prompt you for input. Ratpoison sports @@ -1837,11 +1826,11 @@ ratpoison using any programming language that can spawn a process. Some commands behave differently when invoked this way. Currently the only commands that behaves differently are the -@code{windows} command and some def* commands. Instead of displaying -the window list in a message window, it is printed to stdout. The -output can then be captured and used in the ratpoison script. For -instance, this could be used to check whether a program is running and -if it is switch to its window otherwise launch it. +@code{windows} and @code{set} commands. For @code{windows}, instead of +displaying the window list in a message window, it is printed to +stdout. The output can then be captured and used in the ratpoison +script. For instance, this could be used to check whether a program is +running and if it is switch to its window otherwise launch it. It should also be noted that multiple @option{-c} options can be used. @@ -1883,6 +1872,13 @@ file, allowing you to switch between different configurations (@pxref{Command Line Arguments}). +@deffn Command {set startupmessage} @var{n} +Turn on or off the startup_message. This is most useful in your +.ratpoisonrc file. @var{n} can be @code{1} (default) or @code{0}. + +When called with no arguments, the current setting is returned. +@end deffn + @node GNU Free Documentation License @chapter GNU Free Documentation License @include fdl.texi diff -Nru ratpoison-1.4.8/doc/stamp-vti ratpoison-1.4.9/doc/stamp-vti --- ratpoison-1.4.8/doc/stamp-vti 2014-09-14 16:35:45.000000000 +0000 +++ ratpoison-1.4.9/doc/stamp-vti 2017-04-02 23:41:02.000000000 +0000 @@ -1,4 +1,4 @@ -@set UPDATED 24 February 2014 -@set UPDATED-MONTH February 2014 -@set EDITION 1.4.8 -@set VERSION 1.4.8 +@set UPDATED 3 April 2017 +@set UPDATED-MONTH April 2017 +@set EDITION 1.4.9 +@set VERSION 1.4.9 diff -Nru ratpoison-1.4.8/doc/version.texi ratpoison-1.4.9/doc/version.texi --- ratpoison-1.4.8/doc/version.texi 2014-09-14 16:35:45.000000000 +0000 +++ ratpoison-1.4.9/doc/version.texi 2017-04-02 23:41:02.000000000 +0000 @@ -1,4 +1,4 @@ -@set UPDATED 24 February 2014 -@set UPDATED-MONTH February 2014 -@set EDITION 1.4.8 -@set VERSION 1.4.8 +@set UPDATED 3 April 2017 +@set UPDATED-MONTH April 2017 +@set EDITION 1.4.9 +@set VERSION 1.4.9 diff -Nru ratpoison-1.4.8/m4/ax_check_compile_flag.m4 ratpoison-1.4.9/m4/ax_check_compile_flag.m4 --- ratpoison-1.4.8/m4/ax_check_compile_flag.m4 1970-01-01 00:00:00.000000000 +0000 +++ ratpoison-1.4.9/m4/ax_check_compile_flag.m4 2017-03-09 22:20:26.000000000 +0000 @@ -0,0 +1,74 @@ +# =========================================================================== +# https://www.gnu.org/software/autoconf-archive/ax_check_compile_flag.html +# =========================================================================== +# +# SYNOPSIS +# +# AX_CHECK_COMPILE_FLAG(FLAG, [ACTION-SUCCESS], [ACTION-FAILURE], [EXTRA-FLAGS], [INPUT]) +# +# DESCRIPTION +# +# Check whether the given FLAG works with the current language's compiler +# or gives an error. (Warnings, however, are ignored) +# +# ACTION-SUCCESS/ACTION-FAILURE are shell commands to execute on +# success/failure. +# +# If EXTRA-FLAGS is defined, it is added to the current language's default +# flags (e.g. CFLAGS) when the check is done. The check is thus made with +# the flags: "CFLAGS EXTRA-FLAGS FLAG". This can for example be used to +# force the compiler to issue an error when a bad flag is given. +# +# INPUT gives an alternative input source to AC_COMPILE_IFELSE. +# +# NOTE: Implementation based on AX_CFLAGS_GCC_OPTION. Please keep this +# macro in sync with AX_CHECK_{PREPROC,LINK}_FLAG. +# +# LICENSE +# +# Copyright (c) 2008 Guido U. Draheim +# Copyright (c) 2011 Maarten Bosmans +# +# This program is free software: you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by the +# Free Software Foundation, either version 3 of the License, or (at your +# option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General +# Public License for more details. +# +# You should have received a copy of the GNU General Public License along +# with this program. If not, see . +# +# As a special exception, the respective Autoconf Macro's copyright owner +# gives unlimited permission to copy, distribute and modify the configure +# scripts that are the output of Autoconf when processing the Macro. You +# need not follow the terms of the GNU General Public License when using +# or distributing such scripts, even though portions of the text of the +# Macro appear in them. The GNU General Public License (GPL) does govern +# all other use of the material that constitutes the Autoconf Macro. +# +# This special exception to the GPL applies to versions of the Autoconf +# Macro released by the Autoconf Archive. When you make and distribute a +# modified version of the Autoconf Macro, you may extend this special +# exception to the GPL to apply to your modified version as well. + +#serial 5 + +AC_DEFUN([AX_CHECK_COMPILE_FLAG], +[AC_PREREQ(2.64)dnl for _AC_LANG_PREFIX and AS_VAR_IF +AS_VAR_PUSHDEF([CACHEVAR],[ax_cv_check_[]_AC_LANG_ABBREV[]flags_$4_$1])dnl +AC_CACHE_CHECK([whether _AC_LANG compiler accepts $1], CACHEVAR, [ + ax_check_save_flags=$[]_AC_LANG_PREFIX[]FLAGS + _AC_LANG_PREFIX[]FLAGS="$[]_AC_LANG_PREFIX[]FLAGS $4 $1" + AC_COMPILE_IFELSE([m4_default([$5],[AC_LANG_PROGRAM()])], + [AS_VAR_SET(CACHEVAR,[yes])], + [AS_VAR_SET(CACHEVAR,[no])]) + _AC_LANG_PREFIX[]FLAGS=$ax_check_save_flags]) +AS_VAR_IF(CACHEVAR,yes, + [m4_default([$2], :)], + [m4_default([$3], :)]) +AS_VAR_POPDEF([CACHEVAR])dnl +])dnl AX_CHECK_COMPILE_FLAGS diff -Nru ratpoison-1.4.8/Makefile.am ratpoison-1.4.9/Makefile.am --- ratpoison-1.4.8/Makefile.am 2014-06-14 14:41:20.000000000 +0000 +++ ratpoison-1.4.9/Makefile.am 2017-03-09 22:20:26.000000000 +0000 @@ -26,7 +26,7 @@ SUBDIRS = src doc contrib -doc_DATA = AUTHORS COPYING ChangeLog NEWS README +doc_DATA = AUTHORS COPYING NEWS README EXTRA_DIST = $(doc_DATA) diff -Nru ratpoison-1.4.8/Makefile.in ratpoison-1.4.9/Makefile.in --- ratpoison-1.4.8/Makefile.in 2014-09-14 16:34:31.000000000 +0000 +++ ratpoison-1.4.9/Makefile.in 2017-04-02 23:39:57.000000000 +0000 @@ -1,9 +1,8 @@ -# Makefile.in generated by automake 1.11.6 from Makefile.am. +# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software -# Foundation, Inc. +# Copyright (C) 1994-2014 Free Software Foundation, Inc. + # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. @@ -16,23 +15,61 @@ @SET_MAKE@ VPATH = @srcdir@ -am__make_dryrun = \ - { \ - am__dry=no; \ +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ - echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ - | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ - *) \ - for am__flg in $$MAKEFLAGS; do \ - case $$am__flg in \ - *=*|--*) ;; \ - *n*) am__dry=yes; break;; \ - esac; \ - done;; \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ - test $$am__dry = yes; \ - } + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ @@ -50,31 +87,42 @@ PRE_UNINSTALL = : POST_UNINSTALL = : subdir = . -DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \ - $(srcdir)/Makefile.in $(top_srcdir)/configure AUTHORS COPYING \ - ChangeLog INSTALL NEWS TODO build-aux/depcomp \ - build-aux/install-sh build-aux/mdate-sh build-aux/missing \ - build-aux/texinfo.tex ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/m4/codeset.m4 \ - $(top_srcdir)/m4/pkg.m4 $(top_srcdir)/configure.ac +am__aclocal_m4_deps = $(top_srcdir)/m4/ax_check_compile_flag.m4 \ + $(top_srcdir)/m4/codeset.m4 $(top_srcdir)/m4/pkg.m4 \ + $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(top_srcdir)/configure \ + $(am__configure_deps) $(am__DIST_COMMON) am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ configure.lineno config.status.lineno mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/src/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = SOURCES = DIST_SOURCES = -RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ - html-recursive info-recursive install-data-recursive \ - install-dvi-recursive install-exec-recursive \ - install-html-recursive install-info-recursive \ - install-pdf-recursive install-ps-recursive install-recursive \ - installcheck-recursive installdirs-recursive pdf-recursive \ - ps-recursive uninstall-recursive +RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ + ctags-recursive dvi-recursive html-recursive info-recursive \ + install-data-recursive install-dvi-recursive \ + install-exec-recursive install-html-recursive \ + install-info-recursive install-pdf-recursive \ + install-ps-recursive install-recursive installcheck-recursive \ + installdirs-recursive pdf-recursive ps-recursive \ + tags-recursive uninstall-recursive am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ @@ -111,12 +159,39 @@ DATA = $(doc_DATA) RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive -AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ - $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ - distdir dist dist-all distcheck +am__recursive_targets = \ + $(RECURSIVE_TARGETS) \ + $(RECURSIVE_CLEAN_TARGETS) \ + $(am__extra_recursive_targets) +AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ + cscope distdir dist dist-all distcheck +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags +CSCOPE = cscope DIST_SUBDIRS = $(SUBDIRS) +am__DIST_COMMON = $(srcdir)/Makefile.in \ + $(top_srcdir)/build-aux/compile \ + $(top_srcdir)/build-aux/install-sh \ + $(top_srcdir)/build-aux/missing AUTHORS COPYING ChangeLog \ + INSTALL NEWS README TODO build-aux/compile \ + build-aux/install-sh build-aux/missing DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) distdir = $(PACKAGE)-$(VERSION) top_distdir = $(distdir) @@ -126,6 +201,7 @@ && rm -rf "$(distdir)" \ || { sleep 5 && rm -rf "$(distdir)"; }; \ else :; fi +am__post_remove_distdir = $(am__remove_distdir) am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ @@ -153,12 +229,14 @@ reldir="$$dir2" DIST_ARCHIVES = $(distdir).tar.gz GZIP_ENV = --best +DIST_TARGETS = dist-gzip distuninstallcheck_listfiles = find . -type f -print am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \ | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$' distcleancheck_listfiles = find . -type f -print ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ @@ -265,7 +343,7 @@ build-aux/missing build-aux/texinfo.tex SUBDIRS = src doc contrib -doc_DATA = AUTHORS COPYING ChangeLog NEWS README +doc_DATA = AUTHORS COPYING NEWS README EXTRA_DIST = $(doc_DATA) all: all-recursive @@ -285,7 +363,6 @@ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu Makefile -.PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ @@ -327,22 +404,25 @@ dir='$(DESTDIR)$(docdir)'; $(am__uninstall_files_from_dir) # This directory's subdirectories are mostly independent; you can cd -# into them and run `make' without going through this Makefile. -# To change the values of `make' variables: instead of editing Makefiles, -# (1) if the variable is set in `config.status', edit `config.status' -# (which will cause the Makefiles to be regenerated when you run `make'); -# (2) otherwise, pass the desired values on the `make' command line. -$(RECURSIVE_TARGETS): - @fail= failcom='exit 1'; \ - for f in x $$MAKEFLAGS; do \ - case $$f in \ - *=* | --[!k]*);; \ - *k*) failcom='fail=yes';; \ - esac; \ - done; \ +# into them and run 'make' without going through this Makefile. +# To change the values of 'make' variables: instead of editing Makefiles, +# (1) if the variable is set in 'config.status', edit 'config.status' +# (which will cause the Makefiles to be regenerated when you run 'make'); +# (2) otherwise, pass the desired values on the 'make' command line. +$(am__recursive_targets): + @fail=; \ + if $(am__make_keepgoing); then \ + failcom='fail=yes'; \ + else \ + failcom='exit 1'; \ + fi; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ - list='$(SUBDIRS)'; for subdir in $$list; do \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ @@ -357,57 +437,12 @@ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" -$(RECURSIVE_CLEAN_TARGETS): - @fail= failcom='exit 1'; \ - for f in x $$MAKEFLAGS; do \ - case $$f in \ - *=* | --[!k]*);; \ - *k*) failcom='fail=yes';; \ - esac; \ - done; \ - dot_seen=no; \ - case "$@" in \ - distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ - *) list='$(SUBDIRS)' ;; \ - esac; \ - rev=''; for subdir in $$list; do \ - if test "$$subdir" = "."; then :; else \ - rev="$$subdir $$rev"; \ - fi; \ - done; \ - rev="$$rev ."; \ - target=`echo $@ | sed s/-recursive//`; \ - for subdir in $$rev; do \ - echo "Making $$target in $$subdir"; \ - if test "$$subdir" = "."; then \ - local_target="$$target-am"; \ - else \ - local_target="$$target"; \ - fi; \ - ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ - || eval $$failcom; \ - done && test -z "$$fail" -tags-recursive: - list='$(SUBDIRS)'; for subdir in $$list; do \ - test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ - done -ctags-recursive: - list='$(SUBDIRS)'; for subdir in $$list; do \ - test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ - done - -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-recursive +TAGS: tags -TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ @@ -423,12 +458,7 @@ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ + $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ @@ -440,15 +470,11 @@ $$unique; \ fi; \ fi -ctags: CTAGS -CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ +ctags: ctags-recursive + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique @@ -457,9 +483,31 @@ here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" +cscope: cscope.files + test ! -s cscope.files \ + || $(CSCOPE) -b -q $(AM_CSCOPEFLAGS) $(CSCOPEFLAGS) -i cscope.files $(CSCOPE_ARGS) +clean-cscope: + -rm -f cscope.files +cscope.files: clean-cscope cscopelist +cscopelist: cscopelist-recursive + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + -rm -f cscope.out cscope.in.out cscope.po.out cscope.files distdir: $(DISTFILES) $(am__remove_distdir) @@ -530,40 +578,42 @@ || chmod -R a+r "$(distdir)" dist-gzip: distdir tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz - $(am__remove_distdir) + $(am__post_remove_distdir) dist-bzip2: distdir tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2 - $(am__remove_distdir) + $(am__post_remove_distdir) dist-lzip: distdir tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz - $(am__remove_distdir) - -dist-lzma: distdir - tardir=$(distdir) && $(am__tar) | lzma -9 -c >$(distdir).tar.lzma - $(am__remove_distdir) + $(am__post_remove_distdir) dist-xz: distdir tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz - $(am__remove_distdir) + $(am__post_remove_distdir) dist-tarZ: distdir + @echo WARNING: "Support for distribution archives compressed with" \ + "legacy program 'compress' is deprecated." >&2 + @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z - $(am__remove_distdir) + $(am__post_remove_distdir) dist-shar: distdir + @echo WARNING: "Support for shar distribution archives is" \ + "deprecated." >&2 + @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz - $(am__remove_distdir) + $(am__post_remove_distdir) dist-zip: distdir -rm -f $(distdir).zip zip -rq $(distdir).zip $(distdir) - $(am__remove_distdir) + $(am__post_remove_distdir) -dist dist-all: distdir - tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz - $(am__remove_distdir) +dist dist-all: + $(MAKE) $(AM_MAKEFLAGS) $(DIST_TARGETS) am__post_remove_distdir='@:' + $(am__post_remove_distdir) # This target untars the dist file and tries a VPATH configuration. Then # it guarantees that the distribution is self-contained by making another @@ -574,8 +624,6 @@ GZIP=$(GZIP_ENV) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\ *.tar.bz2*) \ bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\ - *.tar.lzma*) \ - lzma -dc $(distdir).tar.lzma | $(am__untar) ;;\ *.tar.lz*) \ lzip -dc $(distdir).tar.lz | $(am__untar) ;;\ *.tar.xz*) \ @@ -587,18 +635,19 @@ *.zip*) \ unzip $(distdir).zip ;;\ esac - chmod -R a-w $(distdir); chmod u+w $(distdir) - mkdir $(distdir)/_build - mkdir $(distdir)/_inst + chmod -R a-w $(distdir) + chmod u+w $(distdir) + mkdir $(distdir)/_build $(distdir)/_build/sub $(distdir)/_inst chmod a-w $(distdir) test -d $(distdir)/_build || exit 0; \ dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ && am__cwd=`pwd` \ - && $(am__cd) $(distdir)/_build \ - && ../configure --srcdir=.. --prefix="$$dc_install_base" \ + && $(am__cd) $(distdir)/_build/sub \ + && ../../configure \ $(AM_DISTCHECK_CONFIGURE_FLAGS) \ $(DISTCHECK_CONFIGURE_FLAGS) \ + --srcdir=../.. --prefix="$$dc_install_base" \ && $(MAKE) $(AM_MAKEFLAGS) \ && $(MAKE) $(AM_MAKEFLAGS) dvi \ && $(MAKE) $(AM_MAKEFLAGS) check \ @@ -621,7 +670,7 @@ && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \ && cd "$$am__cwd" \ || exit 1 - $(am__remove_distdir) + $(am__post_remove_distdir) @(echo "$(distdir) archives ready for distribution: "; \ list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x' @@ -760,13 +809,12 @@ uninstall-am: uninstall-docDATA -.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \ - install-am install-strip tags-recursive +.MAKE: $(am__recursive_targets) install-am install-strip -.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ - all all-am am--refresh check check-am clean clean-generic \ - ctags ctags-recursive dist dist-all dist-bzip2 dist-gzip \ - dist-hook dist-lzip dist-lzma dist-shar dist-tarZ dist-xz \ +.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am \ + am--refresh check check-am clean clean-cscope clean-generic \ + cscope cscopelist-am ctags ctags-am dist dist-all dist-bzip2 \ + dist-gzip dist-hook dist-lzip dist-shar dist-tarZ dist-xz \ dist-zip distcheck distclean distclean-generic distclean-tags \ distcleancheck distdir distuninstallcheck dvi dvi-am html \ html-am info info-am install install-am install-data \ @@ -776,8 +824,10 @@ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs installdirs-am \ maintainer-clean maintainer-clean-generic mostlyclean \ - mostlyclean-generic pdf pdf-am ps ps-am tags tags-recursive \ - uninstall uninstall-am uninstall-docDATA + mostlyclean-generic pdf pdf-am ps ps-am tags tags-am uninstall \ + uninstall-am uninstall-docDATA + +.PRECIOUS: Makefile dist-hook: diff -Nru ratpoison-1.4.8/NEWS ratpoison-1.4.9/NEWS --- ratpoison-1.4.8/NEWS 2014-09-14 16:30:03.000000000 +0000 +++ ratpoison-1.4.9/NEWS 2017-04-02 22:57:27.000000000 +0000 @@ -1,12 +1,58 @@ ratpoison NEWS --- history of user-visible changes. -*- outline -*- Copyright (C) 2000, 2001, 2002, 2003, 2004 Shawn Betts -Copyright (C) 2013, 2014 Jérémie Courrèges-Anglas +Copyright (C) 2013, 2014, 2017 Jérémie Courrèges-Anglas Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. +* Changes since 1.4.8 + +** Incompatible changes + +*** command `compat' and the various def* compat commands were removed + +*** `msgwait', `rudeness', `startupmessage', `warp' are now variables +The msgwait, rudeness, startup_message and warp commands will stay +around for a few releases. Upgrade your config file now! + +** Feature/misc changes + +*** XRandR support +ratpoison now uses XRandR to detect screens additions/removals at +runtime. The Xinerama support has been removed. + +*** the focus* commands can be used to navigate across screens + +*** window completion match by substring, case-insensitive + +*** new variable `framemsgwait' +Timeout (in seconds) for the `Current frame' message window. +If set to -1, no message is shown. + +*** better `select' error handling + +*** the command `set' with no argument dumps a list of all variables/values + +*** unknown commands are now logged as warnings to stdout too +Should help debugging a config file. + +*** various cleanups and minor bugfixes + +** Packaging changes + +*** ratpoison now depends on libXrandr instead of libXinerama + +*** ratpoison doesn't link against libhistory by default any more +Use ./configure --enable-history to force the use of said library. + +*** no ChangeLog file +Please use the git repository instead. Savannah offers a web interface. + +*** no more timestamps in compiled code +Should help reproducible builds. + * Changes since 1.4.7 This is mostly a bugfix release. @@ -112,7 +158,8 @@ This expands to Maxsize if the window is a maxsize window, nothing if not. ** ratpoison can use xft -If xft is found on your system ratpoison will use it unless explicitely told not to using --without-xft +If xft is found on your system ratpoison will use it unless explicitely +told not to using --without-xft. * Changes since 1.4.2 ** key event handling diff -Nru ratpoison-1.4.8/README ratpoison-1.4.9/README --- ratpoison-1.4.8/README 2014-04-21 20:56:27.000000000 +0000 +++ ratpoison-1.4.9/README 2017-03-23 03:26:33.000000000 +0000 @@ -29,7 +29,7 @@ if you want to install it system-wide, simply type 'make install' as a privileged user: -$ sudo make install +# make install If you retrieved ratpoison from the source repository, you will have to install somewhat recent versions of autoconf and automake before @@ -40,9 +40,8 @@ Customization ------------- -Use the configure option '--enable-debug' to enable debugging symbols. - -Use the configure option '--disable-history' to disable the filesystem rat. +Use the configure option '--enable-debug' to enable debugging symbols +and verbose logging. Use the configure option '--with-xterm=PROG' to set the x terminal emulator to use. The default is `xterm'. diff -Nru ratpoison-1.4.8/src/actions.c ratpoison-1.4.9/src/actions.c --- ratpoison-1.4.8/src/actions.c 2014-09-14 14:46:08.000000000 +0000 +++ ratpoison-1.4.9/src/actions.c 2017-03-10 03:12:49.000000000 +0000 @@ -41,9 +41,55 @@ #endif + + +/* arg_REST and arg_SHELLCMD eat the rest of the input. */ +enum argtype { + arg_REST, + arg_NUMBER, + arg_STRING, + arg_FRAME, + arg_WINDOW, + arg_COMMAND, + arg_SHELLCMD, + arg_KEYMAP, + arg_KEY, + arg_GRAVITY, + arg_GROUP, + arg_HOOK, + arg_VARIABLE, + arg_RAW, +}; + +union arg_union { + rp_frame *frame; + int number; + float fnumber; + rp_window *win; + rp_keymap *keymap; + rp_group *group; + struct list_head *hook; + struct set_var *variable; + struct rp_key *key; + int gravity; +}; + +struct cmdarg +{ + int type; + char *string; + union arg_union arg; + struct list_head node; +}; #define ARG_STRING(elt) args[elt]->string #define ARG(elt, type) args[elt]->arg.type +struct argspec +{ + int type; + char *prompt; +}; + struct set_var { char *var; @@ -53,6 +99,55 @@ struct list_head node; }; +struct user_command +{ + char *name; + cmdret * (*func)(int, struct cmdarg **); + struct argspec *args; + int num_args; + /* The number of required arguments. Any arguments after that are + optional and won't be filled in when called + interactively. ni_required_args is used when called non-interactively, + i_required_args when called interactively. */ + int ni_required_args, i_required_args; + + struct list_head node; +}; + +typedef struct +{ + char *name; + char *alias; +} alias_t; + +typedef struct rp_frame_undo +{ + char *frames; + rp_screen *screen; + struct list_head node; +} rp_frame_undo; + + + +static LIST_HEAD (user_commands); +static LIST_HEAD (rp_keymaps); +static LIST_HEAD (set_vars); +static LIST_HEAD (rp_frame_undos); +static LIST_HEAD (rp_frame_redos); + +static alias_t *alias_list; +static int alias_list_size; +static int alias_list_last; + +static const char invalid_negative_arg[] = "invalid negative argument"; + + + +static cmdret* frestore (char *data, rp_screen *s); +static char* fdump (rp_screen *screen); +static int spawn(char *data, int raw, rp_frame *frame); + +/* setter function prototypes */ static cmdret * set_resizeunit (struct cmdarg **args); static cmdret * set_wingravity (struct cmdarg **args); static cmdret * set_transgravity (struct cmdarg **args); @@ -81,8 +176,130 @@ static cmdret * set_historysize (struct cmdarg **args); static cmdret * set_historycompaction (struct cmdarg **args); static cmdret * set_historyexpansion (struct cmdarg **args); +static cmdret * set_msgwait(struct cmdarg **args); +static cmdret * set_framemsgwait(struct cmdarg **args); +static cmdret * set_startupmessage(struct cmdarg **args); +static cmdret * set_warp(struct cmdarg **args); +static cmdret * set_rudeness(struct cmdarg **args); + +/* command function prototypes. */ +static cmdret *cmd_abort (int interactive, struct cmdarg **args); +static cmdret *cmd_addhook (int interactive, struct cmdarg **args); +static cmdret *cmd_alias (int interactive, struct cmdarg **args); +static cmdret *cmd_banish (int interactive, struct cmdarg **args); +static cmdret *cmd_banishrel (int interactive, struct cmdarg **args); +static cmdret *cmd_chdir (int interactive, struct cmdarg **args); +static cmdret *cmd_clrunmanaged (int interactive, struct cmdarg **args); +static cmdret *cmd_colon (int interactive, struct cmdarg **args); +static cmdret *cmd_commands (int interactive, struct cmdarg **args); +static cmdret *cmd_curframe (int interactive, struct cmdarg **args); +static cmdret *cmd_delete (int interactive, struct cmdarg **args); +static cmdret *cmd_echo (int interactive, struct cmdarg **args); +static cmdret *cmd_escape (int interactive, struct cmdarg **args); +static cmdret *cmd_exec (int interactive, struct cmdarg **args); +static cmdret *cmd_execa (int interactive, struct cmdarg **args); +static cmdret *cmd_execf (int interactive, struct cmdarg **args); +static cmdret *cmd_fdump (int interactive, struct cmdarg **args); +static cmdret *cmd_focusdown (int interactive, struct cmdarg **args); +static cmdret *cmd_focuslast (int interactive, struct cmdarg **args); +static cmdret *cmd_focusleft (int interactive, struct cmdarg **args); +static cmdret *cmd_focusright (int interactive, struct cmdarg **args); +static cmdret *cmd_focusup (int interactive, struct cmdarg **args); +static cmdret *cmd_exchangeup (int interactive, struct cmdarg **args); +static cmdret *cmd_exchangedown (int interactive, struct cmdarg **args); +static cmdret *cmd_exchangeleft (int interactive, struct cmdarg **args); +static cmdret *cmd_exchangeright (int interactive, struct cmdarg **args); +static cmdret *cmd_swap (int interactive, struct cmdarg **args); +static cmdret *cmd_frestore (int interactive, struct cmdarg **args); +static cmdret *cmd_fselect (int interactive, struct cmdarg **args); +static cmdret *cmd_gdelete (int interactive, struct cmdarg **args); +static cmdret *cmd_getenv (int interactive, struct cmdarg **args); +static cmdret *cmd_gmerge (int interactive, struct cmdarg **args); +static cmdret *cmd_gmove (int interactive, struct cmdarg **args); +static cmdret *cmd_gnew (int interactive, struct cmdarg **args); +static cmdret *cmd_gnewbg (int interactive, struct cmdarg **args); +static cmdret *cmd_gnext (int interactive, struct cmdarg **args); +static cmdret *cmd_gnumber (int interactive, struct cmdarg **args); +static cmdret *cmd_gprev (int interactive, struct cmdarg **args); +static cmdret *cmd_gother (int interactive, struct cmdarg **args); +static cmdret *cmd_gravity (int interactive, struct cmdarg **args); +static cmdret *cmd_grename (int interactive, struct cmdarg **args); +static cmdret *cmd_groups (int interactive, struct cmdarg **args); +static cmdret *cmd_gselect (int interactive, struct cmdarg **args); +static cmdret *cmd_h_split (int interactive, struct cmdarg **args); +static cmdret *cmd_help (int interactive, struct cmdarg **args); +static cmdret *cmd_info (int interactive, struct cmdarg **args); +static cmdret *cmd_kill (int interactive, struct cmdarg **args); +static cmdret *cmd_lastmsg (int interactive, struct cmdarg **args); +static cmdret *cmd_license (int interactive, struct cmdarg **args); +static cmdret *cmd_link (int interactive, struct cmdarg **args); +static cmdret *cmd_listhook (int interactive, struct cmdarg **args); +static cmdret *cmd_meta (int interactive, struct cmdarg **args); +static cmdret *cmd_msgwait (int interactive, struct cmdarg **args); +static cmdret *cmd_newwm (int interactive, struct cmdarg **args); +static cmdret *cmd_next (int interactive, struct cmdarg **args); +static cmdret *cmd_next_frame (int interactive, struct cmdarg **args); +static cmdret *cmd_nextscreen (int interactive, struct cmdarg **args); +static cmdret *cmd_number (int interactive, struct cmdarg **args); +static cmdret *cmd_only (int interactive, struct cmdarg **args); +static cmdret *cmd_other (int interactive, struct cmdarg **args); +static cmdret *cmd_prev (int interactive, struct cmdarg **args); +static cmdret *cmd_prev_frame (int interactive, struct cmdarg **args); +static cmdret *cmd_prevscreen (int interactive, struct cmdarg **args); +static cmdret *cmd_quit (int interactive, struct cmdarg **args); +static cmdret *cmd_redisplay (int interactive, struct cmdarg **args); +static cmdret *cmd_remhook (int interactive, struct cmdarg **args); +static cmdret *cmd_remove (int interactive, struct cmdarg **args); +static cmdret *cmd_rename (int interactive, struct cmdarg **args); +static cmdret *cmd_resize (int interactive, struct cmdarg **args); +static cmdret *cmd_restart (int interactive, struct cmdarg **args); +static cmdret *cmd_rudeness (int interactive, struct cmdarg **args); +static cmdret *cmd_select (int interactive, struct cmdarg **args); +static cmdret *cmd_setenv (int interactive, struct cmdarg **args); +static cmdret *cmd_shrink (int interactive, struct cmdarg **args); +static cmdret *cmd_source (int interactive, struct cmdarg **args); +static cmdret *cmd_startup_message (int interactive, struct cmdarg **args); +static cmdret *cmd_time (int interactive, struct cmdarg **args); +static cmdret *cmd_tmpwm (int interactive, struct cmdarg **args); +static cmdret *cmd_unalias (int interactive, struct cmdarg **args); +static cmdret *cmd_unmanage (int interactive, struct cmdarg **args); +static cmdret *cmd_unsetenv (int interactive, struct cmdarg **args); +static cmdret *cmd_v_split (int interactive, struct cmdarg **args); +static cmdret *cmd_verbexec (int interactive, struct cmdarg **args); +static cmdret *cmd_version (int interactive, struct cmdarg **args); +static cmdret *cmd_warp (int interactive, struct cmdarg **args); +static cmdret *cmd_windows (int interactive, struct cmdarg **args); +static cmdret *cmd_readkey (int interactive, struct cmdarg **args); +static cmdret *cmd_newkmap (int interactive, struct cmdarg **args); +static cmdret *cmd_delkmap (int interactive, struct cmdarg **args); +static cmdret *cmd_definekey (int interactive, struct cmdarg **args); +static cmdret *cmd_undefinekey (int interactive, struct cmdarg **args); +static cmdret *cmd_set (int interactive, struct cmdarg **args); +static cmdret *cmd_sselect (int interactive, struct cmdarg **args); +static cmdret *cmd_ratwarp (int interactive, struct cmdarg **args); +static cmdret *cmd_ratinfo (int interactive, struct cmdarg **args); +static cmdret *cmd_ratrelinfo (int interactive, struct cmdarg **args); +static cmdret *cmd_ratclick (int interactive, struct cmdarg **args); +static cmdret *cmd_ratrelwarp (int interactive, struct cmdarg **args); +static cmdret *cmd_rathold (int interactive, struct cmdarg **args); +static cmdret *cmd_cnext (int interactive, struct cmdarg **args); +static cmdret *cmd_cother (int interactive, struct cmdarg **args); +static cmdret *cmd_cprev (int interactive, struct cmdarg **args); +static cmdret *cmd_dedicate (int interactive, struct cmdarg **args); +static cmdret *cmd_describekey (int interactive, struct cmdarg **args); +static cmdret *cmd_inext (int interactive, struct cmdarg **args); +static cmdret *cmd_iother (int interactive, struct cmdarg **args); +static cmdret *cmd_iprev (int interactive, struct cmdarg **args); +static cmdret *cmd_prompt (int interactive, struct cmdarg **args); +static cmdret *cmd_sdump (int interactive, struct cmdarg **args); +static cmdret *cmd_sfdump (int interactive, struct cmdarg **args); +static cmdret *cmd_sfrestore (int interactive, struct cmdarg **args); +static cmdret *cmd_undo (int interactive, struct cmdarg **args); +static cmdret *cmd_redo (int interactive, struct cmdarg **args); +static cmdret *cmd_putsel (int interactive, struct cmdarg **args); +static cmdret *cmd_getsel (int interactive, struct cmdarg **args); + -LIST_HEAD(set_vars); static void add_set_var (char *name, cmdret * (*fn)(struct cmdarg **), int nargs, ...) @@ -106,7 +323,7 @@ } va_end(va); - list_add (&var->node, &set_vars); + list_add_tail (&var->node, &set_vars); } static void @@ -119,43 +336,45 @@ } static void -init_set_vars(void) +init_set_vars (void) { - add_set_var ("resizeunit", set_resizeunit, 1, "", arg_NUMBER); - add_set_var ("maxundos", set_maxundos, 1, "", arg_NUMBER); - add_set_var ("wingravity", set_wingravity, 1, "", arg_GRAVITY); - add_set_var ("transgravity", set_transgravity, 1, "", arg_GRAVITY); - add_set_var ("maxsizegravity", set_maxsizegravity, 1, "", arg_GRAVITY); - add_set_var ("bargravity", set_bargravity, 1, "", arg_GRAVITY); - add_set_var ("font", set_font, 1, "", arg_STRING); - add_set_var ("padding", set_padding, 4, - "", arg_NUMBER, "", arg_NUMBER, "", arg_NUMBER, "", arg_NUMBER); - add_set_var ("border", set_border, 1, "", arg_NUMBER); + /* Keep this sorted alphabetically. */ add_set_var ("barborder", set_barborder, 1, "", arg_NUMBER); + add_set_var ("bargravity", set_bargravity, 1, "", arg_GRAVITY); add_set_var ("barinpadding", set_barinpadding, 1, "", arg_NUMBER); - add_set_var ("inputwidth", set_inputwidth, 1, "", arg_NUMBER); - add_set_var ("waitcursor", set_waitcursor, 1, "", arg_NUMBER); - add_set_var ("winfmt", set_winfmt, 1, "", arg_REST); - add_set_var ("winname", set_winname, 1, "", arg_STRING); - add_set_var ("framefmt", set_framefmt, 1, "", arg_REST); - add_set_var ("fgcolor", set_fgcolor, 1, "", arg_STRING); + add_set_var ("barpadding", set_barpadding, 2, "", arg_NUMBER, "", arg_NUMBER); add_set_var ("bgcolor", set_bgcolor, 1, "", arg_STRING); - add_set_var ("fwcolor", set_fwcolor, 1, "", arg_STRING); + add_set_var ("border", set_border, 1, "", arg_NUMBER); add_set_var ("bwcolor", set_bwcolor, 1, "", arg_STRING); - add_set_var ("barpadding", set_barpadding, 2, "", arg_NUMBER, "", arg_NUMBER); - add_set_var ("winliststyle", set_winliststyle, 1, "", arg_STRING); + add_set_var ("fgcolor", set_fgcolor, 1, "", arg_STRING); + add_set_var ("font", set_font, 1, "", arg_STRING); + add_set_var ("framefmt", set_framefmt, 1, "", arg_REST); + add_set_var ("framemsgwait", set_framemsgwait, 1, "", arg_NUMBER); add_set_var ("framesels", set_framesels, 1, "", arg_STRING); - add_set_var ("infofmt", set_infofmt, 1, "", arg_REST); - add_set_var ("topkmap", set_topkmap, 1, "", arg_STRING); - add_set_var ("historysize", set_historysize, 1, "", arg_NUMBER); + add_set_var ("fwcolor", set_fwcolor, 1, "", arg_STRING); add_set_var ("historycompaction", set_historycompaction, 1, "", arg_NUMBER); add_set_var ("historyexpansion", set_historyexpansion, 1, "", arg_NUMBER); + add_set_var ("historysize", set_historysize, 1, "", arg_NUMBER); + add_set_var ("infofmt", set_infofmt, 1, "", arg_REST); + add_set_var ("inputwidth", set_inputwidth, 1, "", arg_NUMBER); + add_set_var ("maxsizegravity", set_maxsizegravity, 1, "", arg_GRAVITY); + add_set_var ("maxundos", set_maxundos, 1, "", arg_NUMBER); + add_set_var ("msgwait", set_msgwait, 1, "", arg_NUMBER); + add_set_var ("padding", set_padding, 4, "", arg_NUMBER, "", arg_NUMBER, "", + arg_NUMBER, "", arg_NUMBER); + add_set_var ("resizeunit", set_resizeunit, 1, "", arg_NUMBER); + add_set_var ("rudeness", set_rudeness, 1, "", arg_NUMBER); + add_set_var ("startupmessage", set_startupmessage, 1, "", arg_NUMBER); + add_set_var ("topkmap", set_topkmap, 1, "", arg_STRING); + add_set_var ("transgravity", set_transgravity, 1, "", arg_GRAVITY); + add_set_var ("waitcursor", set_waitcursor, 1, "", arg_NUMBER); + add_set_var ("warp", set_warp, 1, "", arg_NUMBER); + add_set_var ("winfmt", set_winfmt, 1, "", arg_REST); + add_set_var ("wingravity", set_wingravity, 1, "", arg_GRAVITY); + add_set_var ("winliststyle", set_winliststyle, 1, "", arg_STRING); + add_set_var ("winname", set_winname, 1, "", arg_STRING); } -/* rp_keymaps is ratpoison's list of keymaps. */ -LIST_HEAD(rp_keymaps); -LIST_HEAD(user_commands); - /* i_nrequired is the number required when called interactively. ni_nrequired is when called non-interactively. */ static void @@ -394,40 +613,22 @@ add_command ("putsel", cmd_putsel, 1, 1, 1, "Text: ", arg_RAW); add_command ("getsel", cmd_getsel, 0, 0, 0); - add_command ("compat", cmd_compat, 0, 0, 0); + add_command ("commands", cmd_commands, 0, 0, 0); /*@end (tag required for genrpbindings) */ - /* Commands to help debug ratpoison. */ -#ifdef DEBUG -#endif - - /* the following screen commands may or may not be able to be - implemented. See the screen documentation for what should be - emulated with these commands */ -#if 0 - add_command ("msgminwait", cmd_unimplemented, 0); - add_command ("nethack", cmd_unimplemented, 0); - add_command ("sleep", cmd_unimplemented, 0); - add_command ("stuff", cmd_unimplemented, 0); -#endif + /* + The following screen commands may or may not be able to be + implemented. See the screen documentation for what should be + emulated with these commands + - msgminwait + - nethack + - sleep + - stuff + */ init_set_vars(); } -typedef struct -{ - char *name; - char *alias; -} alias_t; - -static alias_t *alias_list; -static int alias_list_size; -static int alias_list_last; -static const char *invalid_negative_arg = "invalid negative argument"; - -static cmdret* frestore (char *data, rp_screen *s); -static char* fdump (rp_screen *screen); - /* Delete all entries in the redo list. */ static void clear_frame_redos (void) @@ -442,7 +643,7 @@ } } -void +static void del_frame_undo (rp_frame_undo *u) { if (!u) return; @@ -451,6 +652,18 @@ free (u); } +void +clear_frame_undos (void) +{ + while (list_size (&rp_frame_undos) > 0) + { + /* Delete the oldest node */ + rp_frame_undo *cur; + list_last (cur, &rp_frame_undos, node); + del_frame_undo (cur); + } +} + static void push_frame_undo(rp_screen *screen) { @@ -473,7 +686,7 @@ static rp_frame_undo * pop_frame_list (struct list_head *undo_list, struct list_head *redo_list) { - rp_screen *screen = current_screen(); + rp_screen *screen = rp_current_screen; rp_frame_undo *first, *new; /* Is there something to restore? */ @@ -1034,9 +1247,9 @@ static void grab_rat (void) { - XGrabPointer (dpy, current_screen()->root, True, 0, + XGrabPointer (dpy, rp_current_screen->root, True, 0, GrabModeAsync, GrabModeAsync, - None, current_screen()->rat, CurrentTime); + None, rp_current_screen->rat, CurrentTime); } static void @@ -1144,12 +1357,6 @@ } cmdret * -cmd_unimplemented (int interactive UNUSED, struct cmdarg **args UNUSED) -{ - return cmdret_new (RET_FAILURE, "FIXME: unimplemented command"); -} - -cmdret * cmd_source (int interactive UNUSED, struct cmdarg **args) { FILE *fileptr; @@ -1278,7 +1485,7 @@ rp_window *w; /* w = find_window_other (); */ - w = group_last_window (rp_current_group, current_screen()); + w = group_last_window (rp_current_group, rp_current_screen); if (!w) return cmdret_new (RET_FAILURE, "%s", MESSAGE_NO_OTHER_WINDOW); @@ -1365,7 +1572,7 @@ /* switch to window number or name */ cmdret * -cmd_select (int interactive UNUSED, struct cmdarg **args) +cmd_select (int interactive, struct cmdarg **args) { cmdret *ret = NULL; char *str; @@ -1374,8 +1581,8 @@ /* FIXME: This is manually done because of the kinds of things select accepts. */ if (args[0] == NULL) - str = get_input (MESSAGE_PROMPT_SWITCH_TO_WINDOW, hist_SELECT, - window_completions); + str = get_more_input (MESSAGE_PROMPT_SWITCH_TO_WINDOW, "", hist_SELECT, + SUBSTRING, window_completions); else str = xstrdup (ARG_STRING(0)); @@ -1403,10 +1610,17 @@ } else { - /* show the window list as feedback */ - show_bar (current_screen (), defaults.window_fmt); - ret = cmdret_new (RET_FAILURE, - "select: unknown window number '%d'", n); + if (interactive) + { + /* show the window list as feedback */ + show_bar (rp_current_screen, defaults.window_fmt); + ret = cmdret_new (RET_SUCCESS, NULL); + } + else + { + ret = cmdret_new (RET_FAILURE, + "select: unknown window number '%d'", n); + } } } else @@ -1447,7 +1661,7 @@ hook_run (&rp_title_changed_hook); /* Update the program bar. */ - update_window_names (current_screen(), defaults.window_fmt); + update_window_names (rp_current_screen, defaults.window_fmt); return cmdret_new (RET_SUCCESS, NULL); } @@ -1493,7 +1707,7 @@ cmdret * cmd_version (int interactive UNUSED, struct cmdarg **args UNUSED) { - return cmdret_new (RET_SUCCESS, "%s", PACKAGE " " VERSION " (built " __DATE__ " " __TIME__ ")"); + return cmdret_new (RET_SUCCESS, "%s", PACKAGE " " VERSION); } static char * @@ -1780,45 +1994,48 @@ int keysym_bufsize = sizeof (keysym_buf); unsigned int mod; Window *wins; - int i, j; - rp_frame *cur; + int i; + rp_frame *cur_frame; + rp_screen *cur_screen; int frames; if (s == NULL) { frames = 0; - for (j=0; jfg_color; - attr.background_pixel = screen->bg_color; + attr.border_pixel = rp_glob_screen.fg_color; + attr.background_pixel = rp_glob_screen.bg_color; attr.override_redirect = True; - list_for_each_entry (cur, &screen->frames, node) + list_for_each_entry (cur_frame, &cur_screen->frames, node) { int width, height; char *num; /* Create the string to be displayed in the window and determine the height and width of the window. */ - /* num = xsprintf (" %d ", cur->number); */ - num = frame_selector (cur->number); - width = defaults.bar_x_padding * 2 + rp_text_width (screen, num, -1); - height = (FONT_HEIGHT (screen) + defaults.bar_y_padding * 2); + /* num = xsprintf (" %d ", cur_frame->number); */ + num = frame_selector (cur_frame->number); + width = defaults.bar_x_padding * 2 + rp_text_width (cur_screen, num, -1); + height = (FONT_HEIGHT (cur_screen) + defaults.bar_y_padding * 2); /* Create and map the window. */ - wins[i] = XCreateWindow (dpy, screen->root, screen->left + cur->x, screen->top + cur->y, width, height, 1, + wins[i] = XCreateWindow (dpy, cur_screen->root, cur_screen->left + cur_frame->x, cur_screen->top + cur_frame->y, width, height, 1, CopyFromParent, CopyFromParent, CopyFromParent, CWOverrideRedirect | CWBorderPixel | CWBackPixel, &attr); @@ -1826,9 +2043,9 @@ XClearWindow (dpy, wins[i]); /* Display the frame's number inside the window. */ - rp_draw_string (screen, wins[i], STYLE_NORMAL, + rp_draw_string (cur_screen, wins[i], STYLE_NORMAL, defaults.bar_x_padding, - defaults.bar_y_padding + FONT_ASCENT(screen), + defaults.bar_y_padding + FONT_ASCENT(cur_screen), num, -1); free (num); @@ -2488,7 +2705,7 @@ cmdret *result = NULL; char *cmd, *rest; char *input; - user_command *uc; + struct user_command *uc; int i; if (data == NULL) @@ -2613,6 +2830,7 @@ } } + PRINT_WARNING (("command \"%s\" unknown, ignored\n", cmd)); result = cmdret_new (RET_FAILURE, MESSAGE_UNKNOWN_COMMAND, cmd); done: @@ -2630,7 +2848,7 @@ input = get_input (MESSAGE_PROMPT_COMMAND, hist_COMMAND, colon_completions); else input = get_more_input (MESSAGE_PROMPT_COMMAND, ARG_STRING(0), hist_COMMAND, - colon_completions); + BASIC, colon_completions); /* User aborted. */ if (input == NULL) @@ -2673,7 +2891,7 @@ { /* Some process setup to make sure the spawned process runs in its own session. */ - putenv(current_screen()->display_string); + putenv(rp_current_screen->display_string); #ifdef HAVE_SETSID if (setsid() == -1) #endif @@ -2714,7 +2932,7 @@ child->terminated = 0; child->frame = frame; child->group = rp_current_group; - child->screen = current_screen(); + child->screen = rp_current_screen; child->window_mapped = 0; list_add (&child->node, &rp_children); @@ -2822,7 +3040,7 @@ if (interactive) { - s = current_screen (); + s = rp_current_screen; /* This is a yukky hack. If the bar already hidden then show the bar. This handles the case when msgwait is 0 (the bar sticks) and the user uses this command to toggle the bar on and @@ -2950,7 +3168,7 @@ rp_frame *frame; int pixels; - push_frame_undo (current_screen()); /* fdump to stack */ + push_frame_undo (rp_current_screen); /* fdump to stack */ frame = current_frame(); /* Default to dividing the frame in half. */ @@ -2978,7 +3196,7 @@ rp_frame *frame; int pixels; - push_frame_undo (current_screen()); /* fdump to stack */ + push_frame_undo (rp_current_screen); /* fdump to stack */ frame = current_frame(); /* Default to dividing the frame in half. */ @@ -3002,7 +3220,7 @@ cmdret * cmd_only (int interactive UNUSED, struct cmdarg **args UNUSED) { - push_frame_undo (current_screen()); /* fdump to stack */ + push_frame_undo (rp_current_screen); /* fdump to stack */ remove_all_splits(); maximize (current_window()); @@ -3012,10 +3230,10 @@ cmdret * cmd_remove (int interactive UNUSED, struct cmdarg **args UNUSED) { - rp_screen *s = current_screen(); + rp_screen *s = rp_current_screen; rp_frame *frame; - push_frame_undo (current_screen()); /* fdump to stack */ + push_frame_undo (rp_current_screen); /* fdump to stack */ if (num_frames(s) <= 1) { @@ -3037,7 +3255,7 @@ cmdret * cmd_shrink (int interactive UNUSED, struct cmdarg **args UNUSED) { - push_frame_undo (current_screen()); /* fdump to stack */ + push_frame_undo (rp_current_screen); /* fdump to stack */ resize_shrink_to_window (current_frame()); return cmdret_new (RET_SUCCESS, NULL); } @@ -3079,7 +3297,7 @@ cmdret * cmd_resize (int interactive, struct cmdarg **args) { - rp_screen *s = current_screen (); + rp_screen *s = rp_current_screen; /* If the user calls resize with arguments, treat it like the non-interactive version. */ @@ -3187,7 +3405,7 @@ { rp_screen *s; - s = current_screen (); + s = rp_current_screen; XWarpPointer (dpy, None, s->root, 0, 0, 0, 0, s->left + s->width - 2, s->top + s->height - 2); return cmdret_new (RET_SUCCESS, NULL); @@ -3196,7 +3414,7 @@ cmdret * cmd_banishrel (int interactive UNUSED, struct cmdarg **args UNUSED) { - rp_screen *s = current_screen(); + rp_screen *s = rp_current_screen; rp_window *w = current_window(); rp_frame *f = current_frame(); @@ -3216,7 +3434,7 @@ int mouse_x, mouse_y, root_x, root_y; unsigned int mask; - s = current_screen(); + s = rp_current_screen; XQueryPointer (dpy, s->root, &root_win, &child_win, &mouse_x, &mouse_y, &root_x, &root_y, &mask); return cmdret_new (RET_SUCCESS, "%d %d", mouse_x, mouse_y); @@ -3232,7 +3450,7 @@ int mouse_x, mouse_y, root_x, root_y; unsigned int mask; - s = current_screen(); + s = rp_current_screen; rpw = current_window(); f = current_frame(); @@ -3253,7 +3471,7 @@ { rp_screen *s; - s = current_screen (); + s = rp_current_screen; XWarpPointer (dpy, None, s->root, 0, 0, 0, 0, ARG(0,number), ARG(1,number)); return cmdret_new (RET_SUCCESS, NULL); } @@ -3329,12 +3547,12 @@ cmdret * cmd_license (int interactive UNUSED, struct cmdarg **args UNUSED) { - rp_screen *s = current_screen(); + rp_screen *s = rp_current_screen; int x = 10; int y = 10; int i; int max_width = 0; - char *license_text[] = { PACKAGE " " VERSION, "(built " __DATE__ " " __TIME__ ")", + char *license_text[] = { PACKAGE " " VERSION, "", "Copyright (C) 2000, 2001, 2002, 2003, 2004 Shawn Betts", "", @@ -3405,7 +3623,7 @@ } /* The help window overlaps the bar, so redraw it. */ - if (current_screen()->bar_is_raised) + if (rp_current_screen->bar_is_raised) redraw_last_message(); return cmdret_new (RET_SUCCESS, NULL); @@ -3423,7 +3641,7 @@ if (interactive) { - rp_screen *s = current_screen(); + rp_screen *s = rp_current_screen; int i, old_i; int x = 10; int y = 0; @@ -3540,7 +3758,7 @@ } /* The help window overlaps the bar, so redraw it. */ - if (current_screen()->bar_is_raised) + if (rp_current_screen->bar_is_raised) redraw_last_message(); return cmdret_new (RET_SUCCESS, NULL); @@ -3574,7 +3792,7 @@ } cmdret * -cmd_rudeness (int interactive UNUSED, struct cmdarg **args) +set_rudeness (struct cmdarg **args) { int num; @@ -3597,6 +3815,16 @@ return cmdret_new (RET_SUCCESS, NULL); } +/* compat */ +cmdret * +cmd_rudeness (int interactive UNUSED, struct cmdarg **args) +{ + PRINT_WARNING (("command \"rudeness\" is deprecated, " + "use \"set rudeness\" instead\n")); + + return set_rudeness (args); +} + char * wingravity_to_string (int g) { @@ -3683,8 +3911,8 @@ return cmdret_new (RET_SUCCESS, NULL); } -cmdret * -cmd_msgwait (int interactive UNUSED, struct cmdarg **args) +static cmdret * +set_msgwait (struct cmdarg **args) { if (args[0] == NULL) return cmdret_new (RET_SUCCESS, "%d", defaults.bar_timeout); @@ -3697,6 +3925,30 @@ return cmdret_new (RET_SUCCESS, NULL); } +/* compat */ +cmdret * +cmd_msgwait (int interactive UNUSED, struct cmdarg **args) +{ + PRINT_WARNING (("command \"msgwait\" is deprecated, " + "use \"set msgwait\" instead\n")); + + return set_msgwait (args); +} + +static cmdret * +set_framemsgwait (struct cmdarg **args) +{ + if (args[0] == NULL) + return cmdret_new (RET_SUCCESS, "%d", defaults.frame_indicator_timeout); + + if (ARG(0,number) < -1) + return cmdret_new (RET_FAILURE, "framemsgwait: %s", invalid_negative_arg); + else + defaults.frame_indicator_timeout = ARG(0,number); + + return cmdret_new (RET_SUCCESS, NULL); +} + static cmdret * set_bargravity (struct cmdarg **args) { @@ -3713,8 +3965,8 @@ { XGCValues gcv; - gcv.foreground = s->fg_color; - gcv.background = s->bg_color; + gcv.foreground = rp_glob_screen.fg_color; + gcv.background = rp_glob_screen.bg_color; gcv.function = GXcopy; gcv.line_width = 1; gcv.subwindow_mode = IncludeInferiors; @@ -3723,8 +3975,8 @@ GCForeground | GCBackground | GCFunction | GCLineWidth | GCSubwindowMode, &gcv); - gcv.foreground = s->bg_color; - gcv.background = s->fg_color; + gcv.foreground = rp_glob_screen.bg_color; + gcv.background = rp_glob_screen.fg_color; XFreeGC (dpy, s->inverse_gc); s->inverse_gc = XCreateGC(dpy, s->root, GCForeground | GCBackground @@ -3736,11 +3988,11 @@ static void update_all_gcs (void) { - int i; + rp_screen *cur; - for (i=0; iframes),node) + list_for_each_entry (frame,&(rp_current_screen->frames),node) { int bk_pos, bk_len; @@ -3867,8 +4119,8 @@ frame->width += bk_pos - l; } - if ((bk_pos + bk_len) == (current_screen()->left + current_screen()->width - defaults.padding_right)) - frame->width = current_screen()->left + current_screen()->width - r - frame->x; + if ((bk_pos + bk_len) == (rp_current_screen->left + rp_current_screen->width - defaults.padding_right)) + frame->width = rp_current_screen->left + rp_current_screen->width - r - frame->x; /* Resize vertically. */ bk_pos = frame->y; @@ -3880,8 +4132,8 @@ frame->height += bk_pos - t; } - if ((bk_pos + bk_len) == (current_screen()->top + current_screen()->height - defaults.padding_bottom)) - frame->height = current_screen()->top + current_screen()->height - b - frame->y; + if ((bk_pos + bk_len) == (rp_current_screen->top + rp_current_screen->height - defaults.padding_bottom)) + frame->height = rp_current_screen->top + rp_current_screen->height - b - frame->y; maximize_all_windows_in_frame (frame); } @@ -3920,7 +4172,7 @@ static cmdret * set_barborder (struct cmdarg **args) { - int i; + rp_screen *cur; if (args[0] == NULL) return cmdret_new (RET_SUCCESS, "%d", defaults.bar_border_width); @@ -3931,11 +4183,11 @@ defaults.bar_border_width = ARG(0,number); /* Update the frame and bar windows. */ - for (i=0; ibar_window, defaults.bar_border_width); + XSetWindowBorderWidth (dpy, cur->frame_window, defaults.bar_border_width); + XSetWindowBorderWidth (dpy, cur->input_window, defaults.bar_border_width); } return cmdret_new (RET_SUCCESS, NULL); @@ -4076,28 +4328,28 @@ static cmdret * set_fgcolor (struct cmdarg **args) { - int i; XColor color, junk; + rp_screen *cur; if (args[0] == NULL) return cmdret_new (RET_SUCCESS, "%s", defaults.fgcolor_string); - for (i=0; idef_cmap, ARG_STRING(0), &color, &junk)) return cmdret_new (RET_FAILURE, "set fgcolor: unknown color"); - screens[i].fg_color = color.pixel; - update_gc (&screens[i]); - XSetWindowBorder (dpy, screens[i].bar_window, color.pixel); - XSetWindowBorder (dpy, screens[i].input_window, color.pixel); - XSetWindowBorder (dpy, screens[i].frame_window, color.pixel); - XSetWindowBorder (dpy, screens[i].help_window, color.pixel); + rp_glob_screen.fg_color = color.pixel; + update_gc (cur); + XSetWindowBorder (dpy, cur->bar_window, color.pixel); + XSetWindowBorder (dpy, cur->input_window, color.pixel); + XSetWindowBorder (dpy, cur->frame_window, color.pixel); + XSetWindowBorder (dpy, cur->help_window, color.pixel); #ifdef USE_XFT_FONT - if (!XftColorAllocName (dpy, DefaultVisual (dpy, screens[i].screen_num), - DefaultColormap (dpy, screens[i].screen_num), - ARG_STRING(0), &screens[i].xft_fg_color)) + if (!XftColorAllocName (dpy, DefaultVisual (dpy, cur->screen_num), + DefaultColormap (dpy, cur->screen_num), + ARG_STRING(0), &cur->xft_fg_color)) return cmdret_new (RET_FAILURE, "set fgcolor: unknown color"); #endif @@ -4111,28 +4363,29 @@ static cmdret * set_bgcolor (struct cmdarg **args) { - int i; XColor color, junk; + rp_screen *cur; if (args[0] == NULL) return cmdret_new (RET_SUCCESS, "%s", defaults.bgcolor_string); - for (i=0; idef_cmap, ARG_STRING(0), &color, &junk)) return cmdret_new (RET_FAILURE, "set bgcolor: unknown color"); - screens[i].bg_color = color.pixel; - update_gc (&screens[i]); - XSetWindowBackground (dpy, screens[i].bar_window, color.pixel); - XSetWindowBackground (dpy, screens[i].input_window, color.pixel); - XSetWindowBackground (dpy, screens[i].frame_window, color.pixel); - XSetWindowBackground (dpy, screens[i].help_window, color.pixel); + rp_glob_screen.bg_color = color.pixel; + update_gc (cur); + XSetWindowBackground (dpy, cur->bar_window, color.pixel); + XSetWindowBackground (dpy, cur->input_window, color.pixel); + XSetWindowBackground (dpy, cur->frame_window, color.pixel); + XSetWindowBackground (dpy, cur->help_window, color.pixel); #ifdef USE_XFT_FONT - if (!XftColorAllocName (dpy, DefaultVisual (dpy, screens[i].screen_num), - DefaultColormap (dpy, screens[i].screen_num), - ARG_STRING(0), &screens[i].xft_bg_color)) + if (!XftColorAllocName (dpy, DefaultVisual (dpy, cur->screen_num), + DefaultColormap (dpy, cur->screen_num), + ARG_STRING(0), &cur->xft_bg_color)) return cmdret_new (RET_FAILURE, "set fgcolor: unknown color"); #endif @@ -4146,20 +4399,20 @@ static cmdret * set_fwcolor (struct cmdarg **args) { - int i; XColor color, junk; rp_window *win = current_window(); + rp_screen *cur; if (args[0] == NULL) return cmdret_new (RET_SUCCESS, "%s", defaults.fwcolor_string); - for (i=0; idef_cmap, ARG_STRING(0), &color, &junk)) return cmdret_new (RET_FAILURE, "set fwcolor: unknown color"); - screens[i].fw_color = color.pixel; - update_gc (&screens[i]); + rp_glob_screen.fw_color = color.pixel; + update_gc (cur); free (defaults.fwcolor_string); defaults.fwcolor_string = xstrdup (ARG_STRING(0)); @@ -4167,7 +4420,7 @@ /* Update current window. */ if (win != NULL) - XSetWindowBorder (dpy, win->w, win->scr->fw_color); + XSetWindowBorder (dpy, win->w, rp_glob_screen.fw_color); return cmdret_new (RET_SUCCESS, NULL); } @@ -4175,20 +4428,20 @@ static cmdret * set_bwcolor (struct cmdarg **args) { - int i; XColor color, junk; - rp_window *win, *cur = current_window(); + rp_window *win, *cur_win = current_window(); + rp_screen *cur_screen; if (args[0] == NULL) return cmdret_new (RET_SUCCESS, "%s", defaults.bwcolor_string); - for (i=0; idef_cmap, ARG_STRING(0), &color, &junk)) return cmdret_new (RET_FAILURE, "set bwcolor: unknown color"); - screens[i].bw_color = color.pixel; - update_gc (&screens[i]); + rp_glob_screen.bw_color = color.pixel; + update_gc (cur_screen); free (defaults.bwcolor_string); defaults.bwcolor_string = xstrdup (ARG_STRING(0)); @@ -4197,8 +4450,8 @@ /* Update all the visible windows. */ list_for_each_entry (win,&rp_mapped_window,node) { - if (win != cur) - XSetWindowBorder (dpy, win->w, win->scr->bw_color); + if (win != cur_win) + XSetWindowBorder (dpy, win->w, rp_glob_screen.bw_color); } @@ -4458,7 +4711,7 @@ dest_frame = ARG(0, frame); src_frame = args[1] ? ARG (1, frame) : current_frame(); - if (!rp_have_xinerama) + if (!rp_have_xrandr) { s = frames_screen(src_frame); if (screen_find_frame_by_frame(s, dest_frame) == NULL) @@ -4477,9 +4730,25 @@ return cmdret_new (RET_SUCCESS, NULL); } +static cmdret * +set_startupmessage (struct cmdarg **args) +{ + if (args[0] == NULL) + return cmdret_new (RET_SUCCESS, "%d", defaults.startup_message); + + if (ARG(0, number) != 0 && ARG(0, number) != 1) + return cmdret_new (RET_FAILURE, "set startupmessage: invalid argument"); + + defaults.startup_message = ARG(0, number); + return cmdret_new (RET_SUCCESS, NULL); +} + +/* compat */ cmdret * cmd_startup_message (int interactive UNUSED, struct cmdarg **args) { + PRINT_WARNING (("command \"startup_message\" is deprecated, " + "use \"set startupmessage\" instead\n")); if (args[0] == NULL) return cmdret_new (RET_SUCCESS, "%s", defaults.startup_message ? "on":"off"); @@ -4590,17 +4859,18 @@ cmdret * cmd_nextscreen (int interactive UNUSED, struct cmdarg **args UNUSED) { - int new_screen; + rp_screen *new_screen; + rp_frame *new_frame; + + new_screen = screen_next (); /* No need to go through the motions when we don't have to. */ - if (num_screens <= 1) + if (screen_count() <= 1 || new_screen == rp_current_screen) return cmdret_new (RET_FAILURE, "nextscreen: no other screen"); - new_screen = rp_current_screen + 1; - if (new_screen >= num_screens) - new_screen = 0; + new_frame = screen_get_frame (new_screen, new_screen->current_frame); - set_active_frame (screen_get_frame (&screens[new_screen], screens[new_screen].current_frame), 1); + set_active_frame (new_frame, 1); return cmdret_new (RET_SUCCESS, NULL); } @@ -4608,17 +4878,18 @@ cmdret * cmd_prevscreen (int interactive UNUSED, struct cmdarg **args UNUSED) { - int new_screen; + rp_screen *new_screen; + rp_frame *new_frame; + + new_screen = screen_prev (); /* No need to go through the motions when we don't have to. */ - if (num_screens <= 1) + if (screen_count () <= 1 || new_screen == rp_current_screen) return cmdret_new (RET_SUCCESS, "prevscreen: no other screen"); - new_screen = rp_current_screen - 1; - if (new_screen < 0) - new_screen = num_screens - 1; + new_frame = screen_get_frame (new_screen, new_screen->current_frame); - set_active_frame (screen_get_frame (&screens[new_screen], screens[new_screen].current_frame), 1); + set_active_frame (new_frame, 1); return cmdret_new (RET_SUCCESS, NULL); } @@ -4627,22 +4898,43 @@ cmd_sselect(int interactive UNUSED, struct cmdarg **args) { int new_screen; + rp_frame *new_frame; + rp_screen *screen; new_screen = ARG(0,number); if (new_screen < 0) return cmdret_new (RET_FAILURE, "sselect: out of range"); - if (new_screen < num_screens) - set_active_frame (screen_get_frame (&screens[new_screen], screens[new_screen].current_frame), 1); - else - return cmdret_new (RET_FAILURE, "sselect: out of range"); + screen = screen_number (new_screen); + if (!screen) + return cmdret_new (RET_FAILURE, "sselect: screen %d not found", new_screen); + + new_frame = screen_get_frame (screen, screen->current_frame); + set_active_frame (new_frame, 1); return cmdret_new (RET_SUCCESS, NULL); } +static cmdret * +set_warp (struct cmdarg **args) +{ + if (args[0] == NULL) + return cmdret_new (RET_SUCCESS, "%d", defaults.warp); + + if (ARG(0, number) != 0 && ARG(0, number) != 1) + return cmdret_new (RET_FAILURE, "set warp: invalid argument"); + + defaults.warp = ARG(0, number); + return cmdret_new (RET_SUCCESS, NULL); +} + +/* compat */ cmdret * cmd_warp (int interactive UNUSED, struct cmdarg **args) { + PRINT_WARNING (("command \"warp\" is deprecated, " + "use \"set warp\" instead\n")); + if (args[0] == NULL) return cmdret_new (RET_SUCCESS, "%s", defaults.warp ? "on":"off"); @@ -4822,20 +5114,21 @@ { struct list_head *tmp, *iter; rp_window *win = NULL; + rp_screen *cur_screen; int child; int status; int pid; - int i; int (*old_handler)(Display *, XErrorEvent *); - push_frame_undo (current_screen()); /* fdump to stack */ + push_frame_undo (rp_current_screen); /* fdump to stack */ /* Release event selection on the root windows, so the new WM can have it. */ - for (i=0; iscreen_num), 0); + deactivate_screen (cur_screen); } /* Ungrab all our keys. */ @@ -4856,6 +5149,7 @@ /* Disable our SIGCHLD handler */ set_sig_handler (SIGCHLD, SIG_DFL); + /* Launch the new WM and wait for it to terminate. */ pid = spawn (ARG_STRING(0), 0, NULL); PRINT_DEBUG (("spawn pid: %d\n", pid)); @@ -4863,8 +5157,10 @@ { child = waitpid (pid, &status, 0); } while (child != -1 && child != pid); + /* Enable our SIGCHLD handler */ set_sig_handler (SIGCHLD, chld_handler); + /* Some processes may have quit while our sigchld handler was disabled, so check for them. */ check_child_procs(); @@ -4876,26 +5172,33 @@ old_handler = XSetErrorHandler (tmpwm_error_handler); do { tmpwm_error_raised = 0; - for (i=0; iscreen_num), + PropertyChangeMask | ColormapChangeMask + | SubstructureRedirectMask | SubstructureNotifyMask + | StructureNotifyMask); XSync (dpy, False); - } + } + if (tmpwm_error_raised) sleep(1); } while (tmpwm_error_raised); + XSetErrorHandler (old_handler); - for (i=0; ikey_window); + set_window_focus (rp_current_screen->key_window); /* And we're back in ratpoison. */ return cmdret_new (RET_SUCCESS, NULL); @@ -4956,7 +5259,7 @@ char *dump; if (args[0] == NULL) - screen = current_screen (); + screen = rp_current_screen; else { int snum; @@ -4964,10 +5267,12 @@ if (snum < 0) return cmdret_new (RET_FAILURE, "fdump: invalid negative screen number"); - else if (num_screens <= snum) - return cmdret_new (RET_FAILURE, "fdump: unknown screen"); else - screen = &screens[snum]; + { + screen = screen_number (snum); + if (!screen) + return cmdret_new (RET_FAILURE, "fdump: screen %d not found", snum); + } } dump = fdump (screen); @@ -5073,8 +5378,8 @@ cmdret * cmd_frestore (int interactively UNUSED, struct cmdarg **args) { - push_frame_undo (current_screen()); /* fdump to stack */ - return frestore (ARG_STRING(0), current_screen()); + push_frame_undo (rp_current_screen); /* fdump to stack */ + return frestore (ARG_STRING(0), rp_current_screen); } cmdret * @@ -5180,7 +5485,7 @@ group_resort_group (g); /* Update the group list. */ - update_group_names (current_screen()); + update_group_names (rp_current_screen); } return cmdret_new (RET_SUCCESS, NULL); @@ -5194,7 +5499,7 @@ group_rename (rp_current_group, ARG_STRING(0)); /* Update the group list. */ - update_group_names (current_screen()); + update_group_names (rp_current_screen); return cmdret_new (RET_SUCCESS, NULL); } @@ -5224,7 +5529,7 @@ if (interactive) { - s = current_screen (); + s = rp_current_screen; /* This is a yukky hack. If the bar already hidden then show the bar. This handles the case when msgwait is 0 (the bar sticks) and the user uses this command to toggle the bar on and @@ -5539,28 +5844,27 @@ char screen_suffix[16]; cmdret *ret; struct sbuf *dump; - rp_frame *cur; - int i; + rp_frame *cur_frame; + rp_screen *cur_screen; dump = sbuf_new (0); - for (i = 0; i < num_screens; i++) + list_for_each_entry (cur_screen, &rp_screens, node) { snprintf (screen_suffix, sizeof (screen_suffix), " %d,", - rp_have_xinerama ? - screens[i].xine_screen_num : - screens[i].screen_num); + cur_screen->number); - list_for_each_entry (cur, &(screens[i].frames), node) + list_for_each_entry (cur_frame, &(cur_screen->frames), node) { char *frameset; - frameset = frame_dump (cur, &screens[i]); + frameset = frame_dump (cur_frame, cur_screen); sbuf_concat (dump, frameset); sbuf_concat (dump, screen_suffix); free (frameset); } } + sbuf_chop (dump); ret = cmdret_new (RET_SUCCESS, "%s", sbuf_get (dump)); sbuf_free (dump); @@ -5570,15 +5874,15 @@ cmdret * cmd_sfrestore (int interactively UNUSED, struct cmdarg **args) { - struct sbuf *buffer[num_screens]; char *copy, *ptr, *token; - long screen; - int out_of_screen = 0; - int restored = 0; - int i; + rp_screen *screen; + int out_of_screen = 0, restored = 0; - for (i = 0; i < num_screens; i++) - buffer[i] = sbuf_new (0); + list_for_each_entry (screen, &rp_screens, node) + { + sbuf_free (screen->scratch_buffer); + screen->scratch_buffer = sbuf_new (0); + } copy = xstrdup (ARG_STRING (0)); @@ -5591,22 +5895,22 @@ while (token != NULL) { + int snum; + /* search for end of frameset */ ptr = token; while (*ptr != ')') ptr++; ptr++; - screen = string_to_positive_int (ptr); - - /* check that specified screen number is valid */ - if (screen >= 0 && screen < num_screens) + snum = string_to_positive_int (ptr); + screen = screen_number (snum); + if (screen) { /* clobber screen number here, frestore() doesn't need it */ *ptr = '\0'; - sbuf_concat (buffer[screen], token); - sbuf_concat (buffer[screen], ","); - restored++; + sbuf_concat (screen->scratch_buffer, token); + sbuf_concat (screen->scratch_buffer, ","); } else out_of_screen++; @@ -5618,22 +5922,30 @@ free (copy); /* now restore the frames for each screen */ - for (i = 0; i < num_screens; i++) + list_for_each_entry (screen, &rp_screens, node) { - cmdret * ret; - push_frame_undo (&screens[i]); /* fdump to stack */ - /* FIXME: store RET_SUCCESS || RET_FAILURE for each screen and output - it later */ - ret = frestore (sbuf_get (buffer[i]), &screens[i]); + cmdret *ret; + + if (strlen (sbuf_get (screen->scratch_buffer)) == 0) + continue; + + push_frame_undo (screen); /* fdump to stack */ + + /* XXX save the failure of each frestore and display it in case of error */ + ret = frestore (sbuf_get (screen->scratch_buffer), screen); + if (ret->success) + restored++; cmdret_free (ret); - sbuf_free (buffer[i]); + + sbuf_free (screen->scratch_buffer); + screen->scratch_buffer = NULL; } if (!out_of_screen) - return cmdret_new (RET_SUCCESS, "Restored %i Frame(s)", restored); + return cmdret_new (RET_SUCCESS, "screens restored: %d", restored); else return cmdret_new (RET_SUCCESS, - "Restored %i Frame(s), %i Frame(s) out of Screen(s)", + "screens restored: %d, frames out of screen: %d", restored, out_of_screen); } @@ -5643,12 +5955,12 @@ cmdret *ret; struct sbuf *s; char *tmp; - int i; + rp_screen *cur_screen; s = sbuf_new (0); - for (i = 0; i < num_screens; ++i) + list_for_each_entry (cur_screen, &rp_screens, node) { - tmp = screen_dump (&screens[i]); + tmp = screen_dump (cur_screen); sbuf_concat (s, tmp); sbuf_concat (s, ","); free (tmp); @@ -5898,7 +6210,7 @@ query = sbuf_new (prefix - arg_str); sbuf_nconcat (query, arg_str, prefix - arg_str); output = get_more_input (sbuf_get (query), prefix, hist_PROMPT, - trivial_completions); + BASIC, trivial_completions); sbuf_free (query); } else @@ -5965,12 +6277,20 @@ { rp_frame *f; - f = current_frame(); - if (!f) return cmdret_new (RET_SUCCESS, NULL); + f = current_frame (); + if (f == NULL) + return cmdret_new (RET_SUCCESS, NULL); - if (args[0]) - /* Whatever you set it to. */ - f->dedicated = ARG(0,number); + if (args[0] != NULL) + { + int dedicated; + + dedicated = ARG (0, number); + if (dedicated != 0 && dedicated != 1) + return cmdret_new (RET_FAILURE, + "Invalid \"dedicate\" value, use 0 or 1."); + f->dedicated = dedicated; + } else /* Just toggle it, rather than on or off. */ f->dedicated = !(f->dedicated); @@ -6002,30 +6322,21 @@ return cmdret_new (RET_FAILURE, "getsel: no X11 selection"); } -/* This is a command that restores old commands that have been - recently depricated. */ cmdret * -cmd_compat (int interactive UNUSED, struct cmdarg **args UNUSED) +cmd_commands (int interactive UNUSED, struct cmdarg **args UNUSED) { - add_alias ("defresizeunit", "set resizeunit"); - add_alias ("defwingravity", "set wingravity"); - add_alias ("deftransgravity", "set transgravity"); - add_alias ("defmaxsizegravity", "set maxsizegravity"); - add_alias ("defbargravity", "set bargravity"); - add_alias ("deffont", "set font"); - add_alias ("defpadding", "set padding"); - add_alias ("defborder", "set border"); - add_alias ("defbarborder", "set barborder"); - add_alias ("definputwidth", "set inputwidth"); - add_alias ("defwaitcursor", "set waitcursor"); - add_alias ("defwinfmt", "set winfmt"); - add_alias ("defwinname", "set winname"); - add_alias ("deffgcolor", "set fgcolor"); - add_alias ("defbgcolor", "set bgcolor"); - add_alias ("defbarpadding", "set barpadding"); - add_alias ("defwinliststyle", "set winliststyle"); - add_alias ("defframesels", "set framesels"); - add_alias ("defmaxundos", "set maxundos"); + struct sbuf *sb; + struct user_command *cur; + cmdret *ret; - return cmdret_new (RET_SUCCESS, NULL); + sb = sbuf_new (0); + list_for_each_entry (cur, &user_commands, node) + { + sbuf_printf_concat (sb, "%s\n", cur->name); + } + sbuf_chop (sb); + + ret = cmdret_new (RET_SUCCESS, "%s", sbuf_get (sb)); + sbuf_free (sb); + return ret; } diff -Nru ratpoison-1.4.8/src/actions.h ratpoison-1.4.9/src/actions.h --- ratpoison-1.4.8/src/actions.h 2014-04-08 23:22:08.000000000 +0000 +++ ratpoison-1.4.9/src/actions.h 2017-03-09 22:20:26.000000000 +0000 @@ -22,209 +22,20 @@ #ifndef _RATPOISON_ACTIONS_H #define _RATPOISON_ACTIONS_H 1 -#define MAX_COMMAND_LENGTH 100 -#define MAX_ARGS_LENGTH 100 - -#include - -typedef struct user_command user_command; - -/* arg_REST and arg_SHELLCMD eat the rest of the input. */ -enum argtype { arg_REST, - arg_NUMBER, - arg_STRING, - arg_FRAME, - arg_WINDOW, - arg_COMMAND, - arg_SHELLCMD, - arg_KEYMAP, - arg_KEY, - arg_GRAVITY, - arg_GROUP, - arg_HOOK, - arg_VARIABLE, - arg_RAW}; - -union arg_union { - rp_frame *frame; - int number; - float fnumber; - rp_window *win; - rp_keymap *keymap; - rp_group *group; - struct list_head *hook; - struct set_var *variable; - struct rp_key *key; - int gravity; - }; - -struct cmdarg -{ - int type; - char *string; - union arg_union arg; - struct list_head node; -}; - -struct argspec -{ - int type; - char *prompt; -}; +#include "ratpoison.h" /* The structure returned by a command. */ -typedef struct cmdret cmdret; -struct cmdret +typedef struct cmdret { char *output; int success; -}; - -struct -user_command -{ - char *name; - cmdret * (*func)(int, struct cmdarg **); - struct argspec *args; - int num_args; - /* The number of required arguments. Any arguments after that are - optional and won't be filled in when called - interactively. ni_required_args is used when called non-interactively, - i_required_args when called interactively. */ - int ni_required_args, i_required_args; - - struct list_head node; -}; - -int spawn(char *data, int raw, rp_frame *frame); -cmdret *command (int interactive, char *data); - -/* command function prototypes. */ -#define RP_CMD(cmd) cmdret *cmd_ ## cmd (int interactive, struct cmdarg **args) -RP_CMD (abort); -RP_CMD (addhook); -RP_CMD (alias); -RP_CMD (banish); -RP_CMD (banishrel); -RP_CMD (bind); -RP_CMD (compat); -RP_CMD (chdir); -RP_CMD (clrunmanaged); -RP_CMD (colon); -RP_CMD (curframe); -RP_CMD (delete); -RP_CMD (echo); -RP_CMD (escape); -RP_CMD (exec); -RP_CMD (execa); -RP_CMD (execf); -RP_CMD (fdump); -RP_CMD (focusdown); -RP_CMD (focuslast); -RP_CMD (focusleft); -RP_CMD (focusright); -RP_CMD (focusup); -RP_CMD (exchangeup); -RP_CMD (exchangedown); -RP_CMD (exchangeleft); -RP_CMD (exchangeright); -RP_CMD (swap); -RP_CMD (frestore); -RP_CMD (fselect); -RP_CMD (gdelete); -RP_CMD (getenv); -RP_CMD (gmerge); -RP_CMD (gmove); -RP_CMD (gnew); -RP_CMD (gnewbg); -RP_CMD (gnext); -RP_CMD (gnumber); -RP_CMD (gprev); -RP_CMD (gother); -RP_CMD (gravity); -RP_CMD (grename); -RP_CMD (groups); -RP_CMD (gselect); -RP_CMD (h_split); -RP_CMD (help); -RP_CMD (info); -RP_CMD (kill); -RP_CMD (lastmsg); -RP_CMD (license); -RP_CMD (link); -RP_CMD (listhook); -RP_CMD (meta); -RP_CMD (msgwait); -RP_CMD (newwm); -RP_CMD (next); -RP_CMD (next_frame); -RP_CMD (nextscreen); -RP_CMD (number); -RP_CMD (only); -RP_CMD (other); -RP_CMD (prev); -RP_CMD (prev_frame); -RP_CMD (prevscreen); -RP_CMD (quit); -RP_CMD (redisplay); -RP_CMD (remhook); -RP_CMD (remove); -RP_CMD (rename); -RP_CMD (resize); -RP_CMD (restart); -RP_CMD (rudeness); -RP_CMD (select); -RP_CMD (setenv); -RP_CMD (shrink); -RP_CMD (source); -RP_CMD (startup_message); -RP_CMD (time); -RP_CMD (tmpwm); -RP_CMD (unalias); -RP_CMD (unbind); -RP_CMD (unimplemented); -RP_CMD (unmanage); -RP_CMD (unsetenv); -RP_CMD (v_split); -RP_CMD (verbexec); -RP_CMD (version); -RP_CMD (warp); -RP_CMD (windows); -RP_CMD (readkey); -RP_CMD (newkmap); -RP_CMD (delkmap); -RP_CMD (definekey); -RP_CMD (undefinekey); -RP_CMD (set); -RP_CMD (sselect); -RP_CMD (ratwarp); -RP_CMD (ratinfo); -RP_CMD (ratrelinfo); -RP_CMD (ratclick); -RP_CMD (ratrelwarp); -RP_CMD (rathold); -RP_CMD (cnext); -RP_CMD (cother); -RP_CMD (cprev); -RP_CMD (dedicate); -RP_CMD (describekey); -RP_CMD (inext); -RP_CMD (iother); -RP_CMD (iprev); -RP_CMD (prompt); -RP_CMD (sdump); -RP_CMD (sfdump); -RP_CMD (sfrestore); -RP_CMD (undo); -RP_CMD (redo); -RP_CMD (putsel); -RP_CMD (getsel); - -void del_frame_undo (rp_frame_undo *u); +} cmdret; +void clear_frame_undos (void); rp_keymap *find_keymap (char *name); void init_user_commands(void); void initialize_default_keybindings (void); +cmdret *command (int interactive, char *data); cmdret *cmdret_new (int success, char *fmt, ...); void cmdret_free (cmdret *ret); void keymap_free (rp_keymap *map); diff -Nru ratpoison-1.4.8/src/bar.c ratpoison-1.4.9/src/bar.c --- ratpoison-1.4.8/src/bar.c 2014-04-08 23:22:08.000000000 +0000 +++ ratpoison-1.4.9/src/bar.c 2017-03-09 21:28:52.000000000 +0000 @@ -292,7 +292,7 @@ static int max_line_length (char* msg) { - rp_screen *s = current_screen (); + rp_screen *s = rp_current_screen; size_t i; size_t start; int ret = 0; @@ -512,7 +512,7 @@ get_mark_box (char *msg, size_t mark_start, size_t mark_end, int *x, int *y, int *width, int *height) { - rp_screen *s = current_screen (); + rp_screen *s = rp_current_screen; int start, end; int mark_end_is_new_line = 0; int start_line; @@ -578,7 +578,7 @@ GC lgc; unsigned long mask; - lgv.foreground = s->fg_color; + lgv.foreground = rp_glob_screen.fg_color; mask = GCForeground; lgc = XCreateGC(dpy, s->root, mask, &lgv); @@ -621,7 +621,7 @@ static void marked_message_internal (char *msg, int mark_start, int mark_end) { - rp_screen *s = current_screen (); + rp_screen *s = rp_current_screen; int num_lines; int width; int height; diff -Nru ratpoison-1.4.8/src/communications.c ratpoison-1.4.9/src/communications.c --- ratpoison-1.4.8/src/communications.c 2014-09-14 14:46:14.000000000 +0000 +++ ratpoison-1.4.9/src/communications.c 2017-03-09 21:28:52.000000000 +0000 @@ -105,7 +105,7 @@ } int -send_command (unsigned char interactive, unsigned char *cmd, int screen_num) +send_command (unsigned char interactive, unsigned char *cmd) { Window w, root; int done = 0, return_status = RET_FAILURE; @@ -114,14 +114,7 @@ s = sbuf_new(0); sbuf_printf(s, "%c%s", interactive, cmd); - - /* If the user specified a specific screen, then send the event to - that screen. */ - if (screen_num >= 0) - root = RootWindow (dpy, screen_num); - else - root = DefaultRootWindow (dpy); - + root = RootWindow (dpy, DefaultScreen (dpy)); w = XCreateSimpleWindow (dpy, root, 0, 0, 1, 1, 0, 0, 0); /* Select first to avoid race condition */ diff -Nru ratpoison-1.4.8/src/communications.h ratpoison-1.4.9/src/communications.h --- ratpoison-1.4.8/src/communications.h 2014-04-08 23:22:08.000000000 +0000 +++ ratpoison-1.4.9/src/communications.h 2017-03-09 21:28:52.000000000 +0000 @@ -22,6 +22,6 @@ #ifndef _RATPOISON_COMMUNICATIONS_H #define _RATPOISON_COMMUNICATIONS_H 1 -int send_command (unsigned char interactive, unsigned char *cmd, int screen_num); +int send_command (unsigned char interactive, unsigned char *cmd); #endif /* ! _RATPOISON_COMMUNICATIONS_H */ diff -Nru ratpoison-1.4.8/src/completions.c ratpoison-1.4.9/src/completions.c --- ratpoison-1.4.8/src/completions.c 2014-04-08 23:22:08.000000000 +0000 +++ ratpoison-1.4.9/src/completions.c 2017-04-03 15:16:32.000000000 +0000 @@ -18,13 +18,19 @@ * Boston, MA 02111-1307 USA */ +/* + * Per POSIX strcasestr should be declared in strings.h + * glibc declares it in string.h instead and needs _GNU_SOURCE + */ +#define _GNU_SOURCE +#include #include #include "ratpoison.h" #include "completions.h" rp_completions * -completions_new (completion_fn list_fn) +completions_new (completion_fn list_fn, enum completion_styles style) { rp_completions *c; @@ -35,6 +41,7 @@ c->last_match = NULL; c->partial = NULL; c->virgin = 1; + c->style = style; return c; } @@ -96,6 +103,27 @@ free (new_list); } + +/* Return true if completion is an alternative for partial string, + given the style used. */ +static int +completions_match(rp_completions *c, char *completion, char *partial) +{ + int match = 0; + + switch (c->style) + { + case BASIC: + match = str_comp (completion, partial, strlen(partial)); + break; + case SUBSTRING: + match = (strcasestr (completion, partial) != NULL); + break; + } + + return match; +} + static char * completions_prev_match (rp_completions *c) { @@ -107,7 +135,7 @@ cur != c->last_match; cur = list_prev_entry (cur, &c->completion_list, node)) { - if (str_comp (sbuf_get (cur), c->partial, strlen (c->partial))) + if (completions_match (c, sbuf_get (cur), c->partial)) { /* We found a match so update our last_match pointer and return the string. */ @@ -130,7 +158,7 @@ cur != c->last_match; cur = list_next_entry (cur, &c->completion_list, node)) { - if (str_comp (sbuf_get (cur), c->partial, strlen (c->partial))) + if (completions_match (c, sbuf_get (cur), c->partial)) { /* We found a match so update our last_match pointer and return the string. */ @@ -163,7 +191,7 @@ c->last_match = list_prev_entry (c->last_match, &c->completion_list, node); /* Now check if last_match is a match for partial. */ - if (str_comp (sbuf_get (c->last_match), c->partial, strlen (c->partial))) + if (completions_match (c, sbuf_get (c->last_match), c->partial)) return sbuf_get (c->last_match); } diff -Nru ratpoison-1.4.8/src/completions.h ratpoison-1.4.9/src/completions.h --- ratpoison-1.4.8/src/completions.h 2014-04-08 23:22:08.000000000 +0000 +++ ratpoison-1.4.9/src/completions.h 2017-03-09 21:28:52.000000000 +0000 @@ -22,7 +22,7 @@ #define _RATPOISON_COMPLETIONS_H 1 char *completions_complete (rp_completions *c, char *partial, int direction); -rp_completions *completions_new (completion_fn list_fn); +rp_completions *completions_new (completion_fn list_fn, enum completion_styles style); void completions_free (rp_completions *c); #endif /* ! _RATPOISON_COMPLETIONS_H */ diff -Nru ratpoison-1.4.8/src/config.h.in ratpoison-1.4.9/src/config.h.in --- ratpoison-1.4.8/src/config.h.in 2014-09-14 16:34:30.000000000 +0000 +++ ratpoison-1.4.9/src/config.h.in 2017-04-02 23:39:56.000000000 +0000 @@ -24,9 +24,6 @@ /* Define to 1 if you have the `efence' library (-lefence). */ #undef HAVE_LIBEFENCE -/* Xinerama */ -#undef HAVE_LIBXINERAMA - /* Xtst */ #undef HAVE_LIBXTST @@ -84,8 +81,8 @@ /* Define to 1 if you have the `vsnprintf' function. */ #undef HAVE_VSNPRINTF -/* Define to 1 if you have the header file. */ -#undef HAVE_X11_EXTENSIONS_XINERAMA_H +/* Define to 1 if you have the header file. */ +#undef HAVE_X11_EXTENSIONS_XRANDR_H /* Define to 1 if you have the header file. */ #undef HAVE_X11_XKBLIB_H @@ -93,6 +90,9 @@ /* Define to 1 if you have the `XkbKeycodeToKeysym' function. */ #undef HAVE_XKBKEYCODETOKEYSYM +/* Define to 1 if you want Xrandr support. */ +#undef HAVE_XRANDR + /* Define to 1 if your compiler supports the `__builtin_prefetch' function. */ #undef HAVE___BUILTIN_PREFETCH diff -Nru ratpoison-1.4.8/src/data.h ratpoison-1.4.9/src/data.h --- ratpoison-1.4.8/src/data.h 2014-04-08 23:22:08.000000000 +0000 +++ ratpoison-1.4.9/src/data.h 2017-03-09 22:20:26.000000000 +0000 @@ -35,6 +35,7 @@ typedef struct rp_window rp_window; typedef struct rp_screen rp_screen; +typedef struct rp_global_screen rp_global_screen; typedef struct rp_action rp_action; typedef struct rp_keymap rp_keymap; typedef struct rp_frame rp_frame; @@ -149,18 +150,37 @@ struct list_head node; }; +struct rp_global_screen +{ + Window root; + unsigned long fg_color, bg_color, fw_color, bw_color; /* The pixel color. */ + + /* This numset is responsible for giving out numbers for each screen */ + struct numset *numset; +}; + +struct xrandr_info { + int output; + int crtc; + int primary; + struct sbuf* name; +}; + struct rp_screen { GC normal_gc, inverse_gc; Window root, bar_window, key_window, input_window, frame_window, help_window; int bar_is_raised; - int screen_num; /* Our screen number as dictated my X */ - int xine_screen_num; /* Our screen number for the Xinerama extension */ + int screen_num; /* Our screen number as dictated by X */ Colormap def_cmap; Cursor rat; - unsigned long fg_color, bg_color, fw_color, bw_color; /* The pixel color. */ - /* Here to abstract over the Xinerama vs X screens difference */ + /* Screen number, handled by rp_global_screen numset */ + int number; + + struct xrandr_info xrandr; + + /* Here to abstract over the Xrandr vs X screens difference */ int left, top, width, height; char *display_string; @@ -176,6 +196,12 @@ when you switch screens the focus doesn't get frobbed. */ int current_frame; + /* This structure can exist in a list. */ + struct list_head node; + + /* Used by sfrestore */ + struct sbuf *scratch_buffer; + #ifdef USE_XFT_FONT XftFont *xft_font; XftColor xft_fg_color, xft_bg_color; @@ -332,6 +358,19 @@ typedef struct list_head *(*completion_fn)(char *string); +/* + BASIC: The completion shall begin with the same characters as the partial + string. Case is ignored. + + SUBSTRING: The partial string shall be a subpart of the completion. Case + is ignored. +*/ +enum completion_styles +{ + BASIC, + SUBSTRING +}; + struct rp_completions { /* A pointer to the partial string that is being completed. We need @@ -352,6 +391,9 @@ /* virgin = 1 means no completions have been attempted on the input string. */ unsigned short int virgin; + + /* The completion style used to perform string comparisons */ + enum completion_styles style; }; struct rp_input_line @@ -374,14 +416,6 @@ struct list_head *hook; }; -typedef struct rp_frame_undo rp_frame_undo; -struct rp_frame_undo -{ - char *frames; - rp_screen *screen; - struct list_head node; -}; - typedef struct rp_xselection rp_xselection; struct rp_xselection { diff -Nru ratpoison-1.4.8/src/editor.c ratpoison-1.4.9/src/editor.c --- ratpoison-1.4.8/src/editor.c 2014-04-08 23:22:08.000000000 +0000 +++ ratpoison-1.4.9/src/editor.c 2017-03-09 21:28:52.000000000 +0000 @@ -100,14 +100,15 @@ { {0, 0}, 0} }; rp_input_line * -input_line_new (char *prompt, char *preinput, int history_id, completion_fn fn) +input_line_new (char *prompt, char *preinput, int history_id, + enum completion_styles style, completion_fn fn) { rp_input_line *line; size_t length; line = xmalloc (sizeof (rp_input_line)); line->prompt = prompt; - line->compl = completions_new (fn); + line->compl = completions_new (fn, style); line->history_id = history_id; /* Allocate some memory to start with (100 extra bytes) */ diff -Nru ratpoison-1.4.8/src/editor.h ratpoison-1.4.9/src/editor.h --- ratpoison-1.4.8/src/editor.h 2014-04-08 23:22:08.000000000 +0000 +++ ratpoison-1.4.9/src/editor.h 2017-03-09 21:28:52.000000000 +0000 @@ -39,7 +39,7 @@ #define RP_IS_UTF8_CONT(c) (defaults.utf8_locale && ((c) & 0xC0) == 0x80) /* Input line functions */ -rp_input_line *input_line_new (char *prompt, char *preinput, int history_id, completion_fn fn); +rp_input_line *input_line_new (char *prompt, char *preinput, int history_id, enum completion_styles style, completion_fn fn); void input_line_free (rp_input_line *line); edit_status execute_edit_action (rp_input_line *line, KeySym ch, unsigned int modifier, char *keysym_buf); diff -Nru ratpoison-1.4.8/src/events.c ratpoison-1.4.9/src/events.c --- ratpoison-1.4.8/src/events.c 2014-09-14 14:46:23.000000000 +0000 +++ ratpoison-1.4.9/src/events.c 2017-03-09 22:20:26.000000000 +0000 @@ -79,19 +79,10 @@ win = find_window (e->window); - /* In Xinerama mode, all windows have the same root, so check - * all Xinerama screens - */ - if (rp_have_xinerama) - { - /* New windows belong to the current screen */ - s = &screens[rp_current_screen]; - } - else - { - s = find_screen (e->parent); - } - if (is_rp_window_for_screen(e->window, s)) return; + /* New windows belong to the current screen */ + s = rp_current_screen; + + if (is_rp_window (e->window)) return; if (s && win == NULL && e->window != s->key_window @@ -137,7 +128,7 @@ { cleanup_frame (frame); if (frame->number == win->scr->current_frame - && current_screen() == win->scr) + && rp_current_screen == win->scr) set_active_frame (frame, 0); /* Since we may have switched windows, call the hook. */ if (frame->win_number != EMPTY) @@ -234,7 +225,7 @@ { cleanup_frame (frame); if (frame->number == win->scr->current_frame - && current_screen() == win->scr) + && rp_current_screen == win->scr) set_active_frame (frame, 0); /* Since we may have switched windows, call the hook. */ if (frame->win_number != EMPTY) @@ -442,11 +433,7 @@ unsigned int modifier; KeySym ks; - if (rp_have_xinerama) - s = current_screen(); - else - s = find_screen (ev->xkey.root); - + s = rp_current_screen; if (!s) return; #ifdef HIDE_MOUSE @@ -671,7 +658,7 @@ win->colormap = attr.colormap; if (win == current_window() - && !current_screen()->bar_is_raised) + && !rp_current_screen->bar_is_raised) { XInstallColormap (dpy, win->colormap); } @@ -724,10 +711,10 @@ if (s != NULL) /* This is a root window of a screen, * look if its width or height changed: */ - screen_update(s,ev->width,ev->height); + screen_update (s, ev->x, ev->y, ev->width, ev->height); } -/* This is called whan an application has requested the +/* This is called when an application has requested the selection. Copied from rxvt. */ static void selection_request (XSelectionRequestEvent *rq) @@ -797,6 +784,12 @@ static void delegate_event (XEvent *ev) { + +#ifdef HAVE_XRANDR + if (rp_have_xrandr) + xrandr_notify (ev); +#endif + switch (ev->type) { case ConfigureRequest: @@ -868,10 +861,13 @@ break; case ConfigureNotify: - PRINT_DEBUG (("--- Handling ConfigureNotify ---\n")); - configure_notify( &ev->xconfigure ); + if (!rp_have_xrandr) + { + PRINT_DEBUG (("--- Handling ConfigureNotify ---\n")); + configure_notify (&ev->xconfigure); + } break; - + case MapNotify: case Expose: case MotionNotify: @@ -894,14 +890,18 @@ /* An alarm means we need to hide the popup windows. */ if (alarm_signalled > 0) { - int i; + rp_screen *cur; PRINT_DEBUG (("Alarm received.\n")); /* Only hide the bar if it times out. */ if (defaults.bar_timeout > 0) - for (i=0; idisplay_string); + putenv (rp_current_screen->display_string); unhide_all_windows(); XSync(dpy, False); - for (i=0; i 0) diff -Nru ratpoison-1.4.8/src/format.c ratpoison-1.4.9/src/format.c --- ratpoison-1.4.8/src/format.c 2014-04-08 23:22:08.000000000 +0000 +++ ratpoison-1.4.9/src/format.c 2017-03-09 21:28:52.000000000 +0000 @@ -41,7 +41,7 @@ RP_FMT(incwidth); RP_FMT(gravity); RP_FMT(screen); -RP_FMT(xinescreen); +RP_FMT(xrandrscreen); RP_FMT(transient); RP_FMT(maxsize); RP_FMT(pid); @@ -72,7 +72,7 @@ { 'M', fmt_maxsize }, { 'w', fmt_width }, { 'W', fmt_incwidth }, - { 'x', fmt_xinescreen }, + { 'x', fmt_xrandrscreen}, { 0, NULL } }; @@ -218,7 +218,7 @@ { rp_window *other_window; - other_window = find_window_other (current_screen()); + other_window = find_window_other (rp_current_screen); if (win_elem->win == other_window) sbuf_copy (buf, "+"); else if (win_elem->win == current_window()) @@ -282,9 +282,9 @@ } static void -fmt_xinescreen (rp_window_elem *elem, struct sbuf *buf) +fmt_xrandrscreen (rp_window_elem *elem, struct sbuf *buf) { - sbuf_printf_concat (buf, "%d", elem->win->scr->xine_screen_num); + sbuf_printf_concat (buf, "%d", elem->win->scr->xrandr.output); } static void diff -Nru ratpoison-1.4.8/src/frame.c ratpoison-1.4.9/src/frame.c --- ratpoison-1.4.8/src/frame.c 2014-04-08 23:22:08.000000000 +0000 +++ ratpoison-1.4.9/src/frame.c 2017-03-09 22:20:26.000000000 +0000 @@ -47,6 +47,33 @@ return frame->y + frame->height; } + +int +frame_left_abs (rp_frame *frame) +{ + rp_screen *s = frames_screen (frame); + return s->left + frame->x; +} + +int +frame_top_abs (rp_frame *frame) +{ + rp_screen *s = frames_screen (frame); + return s->top + frame->y; +} + +int +frame_right_abs (rp_frame *frame) +{ + return frame_left_abs (frame) + frame->width; +} + +int +frame_bottom_abs (rp_frame *frame) +{ + return frame_top_abs (frame) + frame->height; +} + int frame_width(rp_frame *frame) { diff -Nru ratpoison-1.4.8/src/frame.h ratpoison-1.4.9/src/frame.h --- ratpoison-1.4.8/src/frame.h 2014-04-08 23:22:08.000000000 +0000 +++ ratpoison-1.4.9/src/frame.h 2017-03-09 22:20:26.000000000 +0000 @@ -35,6 +35,10 @@ int frame_right (rp_frame *frame); int frame_top (rp_frame *frame); int frame_left (rp_frame *frame); +int frame_bottom_abs (rp_frame *frame); +int frame_right_abs (rp_frame *frame); +int frame_top_abs (rp_frame *frame); +int frame_left_abs (rp_frame *frame); rp_frame *frame_new (rp_screen *s); void frame_free (rp_screen *s, rp_frame *f); diff -Nru ratpoison-1.4.8/src/globals.c ratpoison-1.4.9/src/globals.c --- ratpoison-1.4.8/src/globals.c 2014-09-14 14:46:31.000000000 +0000 +++ ratpoison-1.4.9/src/globals.c 2017-03-09 22:20:26.000000000 +0000 @@ -59,11 +59,14 @@ Atom _net_wm_window_type_dialog; Atom _net_wm_name; -int rp_current_screen; -rp_screen *screens; -int num_screens; +LIST_HEAD (rp_screens); +rp_screen *rp_current_screen; +rp_global_screen rp_glob_screen; + Display *dpy; +int rp_have_xrandr; + rp_group *rp_current_group; LIST_HEAD (rp_groups); LIST_HEAD (rp_children); @@ -94,11 +97,17 @@ static void x_export_selection (void) { + rp_screen *screen; + + list_first(screen, &rp_screens, node); + if (!screen) + return; + /* Hang the selections off screen 0's key window. */ - XSetSelectionOwner(dpy, XA_PRIMARY, screens[0].key_window, CurrentTime); - if (XGetSelectionOwner(dpy, XA_PRIMARY) != screens[0].key_window) + XSetSelectionOwner (dpy, XA_PRIMARY, screen->key_window, CurrentTime); + if (XGetSelectionOwner (dpy, XA_PRIMARY) != screen->key_window) PRINT_ERROR(("can't get primary selection")); - XChangeProperty(dpy, screens[0].root, XA_CUT_BUFFER0, xa_string, 8, + XChangeProperty(dpy, screen->root, XA_CUT_BUFFER0, xa_string, 8, PropModeReplace, (unsigned char*)selection.text, selection.len); } @@ -162,10 +171,10 @@ struct sbuf *s = sbuf_new(0); for (nread = 0, bytes_after = 1; bytes_after > 0; nread += ct.nitems) { - if ((XGetWindowProperty(dpy, current_screen()->input_window, rp_selection, (nread / 4), 4096, - True, AnyPropertyType, &ct.encoding, - &ct.format, &ct.nitems, &bytes_after, - &ct.value) != Success)) { + if ((XGetWindowProperty (dpy, rp_current_screen->input_window, rp_selection, (nread / 4), 4096, + True, AnyPropertyType, &ct.encoding, + &ct.format, &ct.nitems, &bytes_after, + &ct.value) != Success)) { XFree(ct.value); sbuf_free(s); return NULL; @@ -185,7 +194,7 @@ { Atom property; XEvent ev; - rp_screen *s = current_screen (); + rp_screen *s = rp_current_screen; int loops = 1000; /* Just insert our text, if we own the selection. */ @@ -265,9 +274,6 @@ RevertToPointerRoot, CurrentTime); } -LIST_HEAD (rp_frame_undos); -LIST_HEAD (rp_frame_redos); - /* Wrapper font functions to support Xft */ diff -Nru ratpoison-1.4.8/src/globals.h ratpoison-1.4.9/src/globals.h --- ratpoison-1.4.8/src/globals.h 2014-04-08 23:22:08.000000000 +0000 +++ ratpoison-1.4.9/src/globals.h 2017-03-09 22:20:26.000000000 +0000 @@ -79,6 +79,9 @@ /* The list of groups. */ extern struct list_head rp_groups; +/* Whether or not we support xrandr */ +extern int rp_have_xrandr; + extern rp_group *rp_current_group; /* Each child process is stored in this list. spawn, creates a new @@ -104,9 +107,10 @@ assigned to them and are not visible/active. */ extern struct list_head rp_unmapped_window; -extern int rp_current_screen; -extern rp_screen *screens; -extern int num_screens; +/* The list of screens. */ +extern struct list_head rp_screens; +extern rp_screen *rp_current_screen; +extern rp_global_screen rp_glob_screen; extern XEvent rp_current_event; @@ -193,14 +197,8 @@ void set_rp_window_focus (rp_window *win); void set_window_focus (Window window); -extern int rp_have_xinerama; -extern int xine_screen_count; - extern struct numset *rp_frame_numset; -extern struct list_head rp_frame_undos; -extern struct list_head rp_frame_redos; - /* Selection handling globals */ extern rp_xselection selection; void set_selection (char *txt); diff -Nru ratpoison-1.4.8/src/group.c ratpoison-1.4.9/src/group.c --- ratpoison-1.4.8/src/group.c 2014-04-08 23:22:08.000000000 +0000 +++ ratpoison-1.4.9/src/group.c 2017-03-09 21:28:52.000000000 +0000 @@ -494,7 +494,7 @@ if (cur->win->last_access >= last_access && cur->win != current_window() && !find_windows_frame (cur->win) - && (cur->win->scr == s || rp_have_xinerama)) + && (cur->win->scr == s || rp_have_xrandr)) { most_recent = cur; last_access = cur->win->last_access; @@ -514,7 +514,7 @@ /* If there is no window, then get the last accessed one. */ if (win == NULL) - return group_last_window (g, current_screen()); + return group_last_window (g, rp_current_screen); /* If we can't find the window, then it's in a different group, so get the last accessed one in this group. */ @@ -528,7 +528,7 @@ cur != we; cur = list_next_entry (cur, &g->mapped_windows, node)) { - if (!find_windows_frame (cur->win) && (cur->win->scr == win->scr || rp_have_xinerama)) + if (!find_windows_frame (cur->win) && (cur->win->scr == win->scr || rp_have_xrandr)) { return cur->win; } @@ -544,7 +544,7 @@ /* If there is no window, then get the last accessed one. */ if (win == NULL) - return group_last_window (g, current_screen()); + return group_last_window (g, rp_current_screen); /* If we can't find the window, then it's in a different group, so get the last accessed one in this group. */ @@ -558,7 +558,7 @@ cur != we; cur = list_prev_entry (cur, &g->mapped_windows, node)) { - if (!find_windows_frame (cur->win) && (cur->win->scr == win->scr || rp_have_xinerama)) + if (!find_windows_frame (cur->win) && (cur->win->scr == win->scr || rp_have_xrandr)) { return cur->win; } @@ -676,14 +676,14 @@ int last_access = 0; rp_window_elem *most_recent = NULL; rp_window_elem *cur; - rp_screen *s = current_screen(); + rp_screen *s = rp_current_screen; list_for_each_entry (cur, &g->mapped_windows, node) { if (cur->win->last_access >= last_access && cur->win != current_window() && !find_windows_frame (cur->win) - && (cur->win->scr == s || rp_have_xinerama) + && (cur->win->scr == s || rp_have_xrandr) && strcmp(class, cur->win->res_class)) { most_recent = cur; @@ -704,14 +704,14 @@ int last_access = 0; rp_window_elem *most_recent = NULL; rp_window_elem *cur; - rp_screen *s = current_screen(); + rp_screen *s = rp_current_screen; list_for_each_entry (cur, &g->mapped_windows, node) { if (cur->win->last_access >= last_access && cur->win != current_window() && !find_windows_frame (cur->win) - && (cur->win->scr == s || rp_have_xinerama) + && (cur->win->scr == s || rp_have_xrandr) && !strcmp(class, cur->win->res_class)) { most_recent = cur; diff -Nru ratpoison-1.4.8/src/input.c ratpoison-1.4.9/src/input.c --- ratpoison-1.4.8/src/input.c 2014-09-14 14:46:45.000000000 +0000 +++ ratpoison-1.4.9/src/input.c 2017-03-09 22:20:26.000000000 +0000 @@ -109,6 +109,13 @@ KeySym keycode_to_keysym(Display *dpy, KeyCode kc, int group, int level) { + /* + * XKeycodeToKeysym has been deprecated upstream, however we still use + * it since XKB may not be available at build time or and not + * functional at runtime. The problems in XKeycodeToKeysym don't seem + * to matter in the ratpoison case anyway. + * https://bugs.freedesktop.org/show_bug.cgi?id=5349 + */ #if defined (WANT_XKB) && defined (HAVE_X11_XKBLIB_H) && defined (HAVE_XKBKEYCODETOKEYSYM) if (use_xkb) return XkbKeycodeToKeysym (dpy, kc, group, level); @@ -117,47 +124,6 @@ return XKeycodeToKeysym (dpy, kc, level); } -/* /\* The caller is responsible for freeing the keycodes. *\/ */ -/* KeyCode * */ -/* keysym_to_keycodes (KeySym sym, int *n_returned) */ -/* { */ -/* int min_code, max_code; */ -/* int syms_per_code; */ -/* KeySym *syms; */ -/* KeyCode *codes; */ -/* int code, code_col; */ - -/* XDisplayKeycodes (dpy, &min_code, &max_code); */ -/* syms = XGetKeyboardMapping (dpy, */ -/* min_code, max_code - min_code + 1, */ -/* &syms_per_code); */ - -/* *n_returned = 0; */ -/* codes = xmalloc (sizeof(KeyCode) * n_returned); */ -/* for (code = min_code; code < max_code; code++) */ -/* for (code_col = 0; code_col < syms_per_code; code_col++) */ -/* { */ -/* int s = syms[((code - min_code) * syms_per_code) + code_col]; */ - -/* if (sym == s) */ -/* { */ -/* n_returned++; */ -/* codes = xrealloc (sizeof(KeyCode) * n_returned); */ -/* codes[n_returned-1] = code; */ -/* } */ -/* } */ - -/* XFree ((char *) syms); */ - -/* if (n_returned > 0) */ -/* return codes; */ -/* else */ -/* { */ -/* xfree (codes) */ -/* return NULL; */ -/* } */ -/* } */ - /* Figure out what keysyms are attached to what modifiers */ void update_modifier_map (void) @@ -439,7 +405,7 @@ int nbytes; XGetInputFocus (dpy, &focus, &revert); - set_window_focus (current_screen()->key_window); + set_window_focus (rp_current_screen->key_window); nbytes = read_key (keysym, modifiers, keysym_name, len); set_window_focus (focus); @@ -508,7 +474,7 @@ line->length); gcv.function = GXxor; - gcv.foreground = s->fg_color ^ s->bg_color; + gcv.foreground = rp_glob_screen.fg_color ^ rp_glob_screen.bg_color; lgc = XCreateGC (dpy, s->input_window, GCFunction | GCForeground, &gcv); /* Draw a cheap-o cursor - MkIII */ @@ -530,12 +496,12 @@ GC lgc; XGCValues gcv; XWindowAttributes attr; - rp_screen *s = current_screen (); + rp_screen *s = rp_current_screen; XGetWindowAttributes (dpy, s->input_window, &attr); gcv.function = GXxor; - gcv.foreground = s->fg_color ^ s->bg_color; + gcv.foreground = rp_glob_screen.fg_color ^ rp_glob_screen.bg_color; lgc = XCreateGC (dpy, s->input_window, GCFunction | GCForeground, &gcv); XFillRectangle (dpy, s->input_window, lgc, 0, 0, attr.width, attr.height); @@ -554,16 +520,16 @@ char * get_input (char *prompt, int history_id, completion_fn fn) { - return get_more_input (prompt, "", history_id, fn); + return get_more_input (prompt, "", history_id, BASIC, fn); } char * get_more_input (char *prompt, char *preinput, int history_id, - completion_fn compl_fn) + enum completion_styles style, completion_fn compl_fn) { /* Emacs 21 uses a 513 byte string to store the keysym name. */ char keysym_buf[513]; - rp_screen *s = current_screen (); + rp_screen *s = rp_current_screen; KeySym ch; unsigned int modifier; rp_input_line *line; @@ -575,7 +541,7 @@ history_reset(); /* Create our line structure */ - line = input_line_new (prompt, preinput, history_id, compl_fn); + line = input_line_new (prompt, preinput, history_id, style, compl_fn); /* We don't want to draw overtop of the program bar. */ hide_bar (s); diff -Nru ratpoison-1.4.8/src/input.h ratpoison-1.4.9/src/input.h --- ratpoison-1.4.8/src/input.h 2014-04-08 23:22:08.000000000 +0000 +++ ratpoison-1.4.9/src/input.h 2017-03-09 21:28:52.000000000 +0000 @@ -25,7 +25,7 @@ char *keysym_to_string (KeySym keysym, unsigned int modifier); int cook_keycode (XKeyEvent *ev, KeySym *keysym, unsigned int *mod, char *keysym_name, int len, int ignore_bad_mods); char *get_input (char *prompt, int history_id, completion_fn fn); -char *get_more_input (char *prompt, char *preinput, int history_id, completion_fn fn); +char *get_more_input (char *prompt, char *preinput, int history_id, enum completion_styles style, completion_fn fn); void read_any_key (void); int read_single_key (KeySym *keysym, unsigned int *modifiers, char *keysym_name, int len); int read_key (KeySym *keysym, unsigned int *modifiers, char *keysym_name, int len); diff -Nru ratpoison-1.4.8/src/linkedlist.c ratpoison-1.4.9/src/linkedlist.c --- ratpoison-1.4.8/src/linkedlist.c 2014-04-08 23:22:08.000000000 +0000 +++ ratpoison-1.4.9/src/linkedlist.c 2017-03-09 21:28:52.000000000 +0000 @@ -196,3 +196,142 @@ return i; } + +#define MAX_LIST_LENGTH_BITS 20 +#define ARRAY_SIZE(x) (sizeof(x) / sizeof(*(x))) + +/* + * Returns a list organized in an intermediate format suited + * to chaining of merge() calls: null-terminated, no reserved or + * sentinel head node, "prev" links not maintained. + */ +static struct list_head * +merge(void *priv, + int (*cmp)(void *priv, struct list_head *a, + struct list_head *b), + struct list_head *a, struct list_head *b) +{ + struct list_head head, *tail = &head; + + while (a && b) { + /* if equal, take 'a' -- important for sort stability */ + if ((*cmp) (priv, a, b) <= 0) { + tail->next = a; + a = a->next; + } else { + tail->next = b; + b = b->next; + } + tail = tail->next; + } + tail->next = a?:b; + return head.next; +} + +/* + * Combine final list merge with restoration of standard doubly-linked + * list structure. This approach duplicates code from merge(), but + * runs faster than the tidier alternatives of either a separate final + * prev-link restoration pass, or maintaining the prev links + * throughout. + */ +static void +merge_and_restore_back_links(void *priv, + int (*cmp)(void *priv, struct list_head *a, + struct list_head *b), + struct list_head *head, + struct list_head *a, struct list_head *b) +{ + struct list_head *tail = head; + unsigned int count = 0; + + while (a && b) { + /* if equal, take 'a' -- important for sort stability */ + if ((*cmp) (priv, a, b) <= 0) { + tail->next = a; + a->prev = tail; + a = a->next; + } else { + tail->next = b; + b->prev = tail; + b = b->next; + } + tail = tail->next; + } + tail->next = a ? : b; + + do { + /* + * In worst cases this loop may run many iterations. + * Continue callbacks to the client even though no + * element comparison is needed, so the client's cmp() + * routine can invoke cond_resched() periodically. + */ + if (!(++count)) + (*cmp) (priv, tail->next, tail->next); + + tail->next->prev = tail; + tail = tail->next; + } while (tail->next); + + tail->next = head; + head->prev = tail; +} + +/** + * list_sort - sort a list + * @priv: private data, opaque to list_sort(), passed to @cmp + * @head: the list to sort + * @cmp: the elements comparison function + * + * This function implements "merge sort", which has O(nlog(n)) + * complexity. + * + * The comparison function @cmp must return a negative value if @a + * should sort before @b, and a positive value if @a should sort after + * @b. If @a and @b are equivalent, and their original relative + * ordering is to be preserved, @cmp must return 0. + */ +void +list_sort(void *priv, struct list_head *head, + int (*cmp)(void *priv, struct list_head *a, + struct list_head *b)) +{ + struct list_head *part[MAX_LIST_LENGTH_BITS+1]; /* sorted partial lists + -- last slot is a sentinel */ + int lev; /* index into part[] */ + int max_lev = 0; + struct list_head *list; + + if (list_empty (head)) + return; + + memset(part, 0, sizeof(part)); + + head->prev->next = NULL; + list = head->next; + + while (list) { + struct list_head *cur = list; + list = list->next; + cur->next = NULL; + + for (lev = 0; part[lev]; lev++) { + cur = merge (priv, cmp, part[lev], cur); + part[lev] = NULL; + } + if (lev > max_lev) { + if (lev >= ARRAY_SIZE(part)-1) { + lev--; + } + max_lev = lev; + } + part[lev] = cur; + } + + for (lev = 0; lev < max_lev; lev++) + if (part[lev]) + list = merge (priv, cmp, part[lev], list); + + merge_and_restore_back_links (priv, cmp, head, part[max_lev], list); +} diff -Nru ratpoison-1.4.8/src/linkedlist.h ratpoison-1.4.9/src/linkedlist.h --- ratpoison-1.4.8/src/linkedlist.h 2014-04-08 23:22:08.000000000 +0000 +++ ratpoison-1.4.9/src/linkedlist.h 2017-03-09 21:28:52.000000000 +0000 @@ -25,6 +25,8 @@ #ifndef _RATPOISON_LINKLIST_H #define _RATPOISON_LINKLIST_H +#include + /* * Simple doubly linked list implementation. * @@ -214,3 +216,7 @@ if (&first->member == (head)) \ first = NULL; \ } + +void list_sort(void *priv, struct list_head *head, + int (*cmp)(void *priv, struct list_head *a, + struct list_head *b)); diff -Nru ratpoison-1.4.8/src/main.c ratpoison-1.4.9/src/main.c --- ratpoison-1.4.8/src/main.c 2014-06-14 14:38:35.000000000 +0000 +++ ratpoison-1.4.9/src/main.c 2017-03-09 22:20:26.000000000 +0000 @@ -59,7 +59,6 @@ {"version", no_argument, 0, 'v'}, {"command", required_argument, 0, 'c'}, {"display", required_argument, 0, 'd'}, - {"screen", required_argument, 0, 's'}, {"file", required_argument, 0, 'f'}, {0, 0, 0, 0} }; @@ -310,37 +309,22 @@ void set_sig_handler (int sig, void (*action)(int)) { - /* use sigaction because SVR4 systems do not replace the signal - handler by default which is a tip of the hat to some god-aweful - ancient code. So use the POSIX sigaction call instead. */ struct sigaction act; - /* check setting for sig */ - if (sigaction (sig, NULL, &act)) + memset (&act, 0, sizeof (act)); + act.sa_handler = action; + sigemptyset (&act.sa_mask); + if (sigaction (sig, &act, NULL)) { - PRINT_ERROR (("Error %d fetching SIGALRM handler\n", errno )); - } - else - { - /* if the existing action is to ignore then leave it intact - otherwise add our handler */ - if (act.sa_handler != SIG_IGN) - { - act.sa_handler = action; - sigemptyset(&act.sa_mask); - act.sa_flags = 0; - if (sigaction (sig, &act, NULL)) - { - PRINT_ERROR (("Error %d setting SIGALRM handler\n", errno )); - } - } + PRINT_ERROR (("Error setting signal handler: %s\n", + strerror (errno))); } } static void print_version (void) { - printf ("%s %s (built %s %s)\n", PACKAGE, VERSION, __DATE__, __TIME__); + printf ("%s %s\n", PACKAGE, VERSION); printf ("Copyright (C) 2000-2008 Shawn Betts\n\n"); exit (EXIT_SUCCESS); @@ -353,7 +337,6 @@ printf ("-h, --help Display this help screen\n"); printf ("-v, --version Display the version\n"); printf ("-d, --display Set the X display to use\n"); - printf ("-s, --screen Only use the specified screen\n"); printf ("-c, --command Send ratpoison a colon-command\n"); printf ("-i, --interactive Execute commands in interactive mode\n"); printf ("-f, --file Specify an alternative configuration file\n\n"); @@ -446,38 +429,37 @@ } else { - /* first check $HOME/.ratpoisonrc and if that does not exist then try - $sysconfdir/ratpoisonrc */ const char *homedir; + char *filename; + /* first check $HOME/.ratpoisonrc */ homedir = get_homedir (); - if (!homedir) PRINT_ERROR (("ratpoison: no home directory!?\n")); else { - char *filename; filename = xsprintf ("%s/.ratpoisonrc", homedir); + fileptr = fopen (filename, "r"); + if (fileptr == NULL && errno != ENOENT) + PRINT_ERROR (("ratpoison: could not open %s (%s)\n", + filename, strerror (errno))); + free (filename); + } - if ((fileptr = fopen (filename, "r")) == NULL) - { - if (errno != ENOENT) - PRINT_ERROR (("ratpoison: could not open %s (%s)\n", - filename, strerror (errno))); - - free (filename); - filename = xsprintf ("%s/ratpoisonrc", SYSCONFDIR); - - if ((fileptr = fopen (filename, "r")) == NULL) - if (errno != ENOENT) - PRINT_ERROR (("ratpoison: could not open %s (%s)\n", - filename, strerror (errno))); - } + if (fileptr == NULL) + { + /* couldn't open $HOME/.ratpoisonrc, fall back on system config */ + filename = xsprintf ("%s/ratpoisonrc", SYSCONFDIR); + + fileptr = fopen (filename, "r"); + if (fileptr == NULL && errno != ENOENT) + PRINT_ERROR (("ratpoison: could not open %s (%s)\n", + filename, strerror (errno))); free (filename); } } - if (fileptr) + if (fileptr != NULL) { set_close_on_exec (fileno (fileptr)); read_rc_file (fileptr); @@ -604,12 +586,9 @@ int main (int argc, char *argv[]) { - int i; int c; char **cmd = NULL; int cmd_count = 0; - int screen_arg = 0; - int screen_num = 0; char *display = NULL; unsigned char interactive = 0; char *alt_rcfile = NULL; @@ -627,9 +606,7 @@ myargv = argv; while (1) { - int option_index = 0; - - c = getopt_long (argc, argv, ratpoison_opts, ratpoison_longopts, &option_index); + c = getopt_long (argc, argv, ratpoison_opts, ratpoison_longopts, NULL); if (c == -1) break; switch (c) @@ -657,10 +634,6 @@ case 'd': display = optarg; break; - case 's': - screen_arg = 1; - screen_num = strtol (optarg, NULL, 10); - break; case 'i': interactive = 1; break; @@ -704,13 +677,11 @@ if (cmd_count > 0) { - int j, screen, exit_status = EXIT_SUCCESS; - - screen = screen_arg ? screen_num : -1; + int j, exit_status = EXIT_SUCCESS; for (j = 0; j < cmd_count; j++) { - if (!send_command (interactive, (unsigned char *)cmd[j], screen)) + if (!send_command (interactive, (unsigned char *)cmd[j])) exit_status = EXIT_FAILURE; free (cmd[j]); } @@ -754,8 +725,12 @@ init_xkb (); init_groups (); init_window_stuff (); - init_xinerama (); - init_screens (screen_arg, screen_num); + +#ifdef HAVE_XRANDR + init_xrandr (); +#endif + + init_screens (); init_frame_lists (); update_modifier_map (); @@ -763,20 +738,7 @@ initialize_default_keybindings (); history_load (); - /* Scan for windows */ - if (screen_arg) - { - rp_current_screen = screen_num; - scanwins (&screens[0]); - } - else - { - rp_current_screen = 0; - for (i=0; ikey_window); + set_window_focus (rp_current_screen->key_window); listen_for_events (); return EXIT_SUCCESS; } -static void -free_screen (rp_screen *s) -{ - rp_frame *frame; - struct list_head *iter, *tmp; - - /* Relinquish our hold on the root window. */ - XSelectInput(dpy, RootWindow (dpy, s->screen_num), 0); - - list_for_each_safe_entry (frame, iter, tmp, &s->frames, node) - { - frame_free (s, frame); - } - - deactivate_screen(s); - - XDestroyWindow (dpy, s->bar_window); - XDestroyWindow (dpy, s->key_window); - XDestroyWindow (dpy, s->input_window); - XDestroyWindow (dpy, s->frame_window); - XDestroyWindow (dpy, s->help_window); - -#ifdef USE_XFT_FONT - if (s->xft_font) - { - XftColorFree (dpy, DefaultVisual (dpy, s->screen_num), - DefaultColormap (dpy, s->screen_num), &s->xft_fg_color); - XftColorFree (dpy, DefaultVisual (dpy, s->screen_num), - DefaultColormap (dpy, s->screen_num), &s->xft_bg_color); - XftFontClose (dpy, s->xft_font); - } -#endif - - XFreeCursor (dpy, s->rat); - XFreeColormap (dpy, s->def_cmap); - XFreeGC (dpy, s->normal_gc); - XFreeGC (dpy, s->inverse_gc); - - free (s->display_string); -} - void clean_up (void) { - int i; + rp_screen *cur; + struct list_head *iter, *tmp; history_save (); @@ -849,26 +771,21 @@ free_window_stuff (); free_groups (); - for (i=0; inode); + screen_free (cur); + free (cur); } - free (screens); + + screen_free_final (); /* Delete the undo histories */ - while (list_size (&rp_frame_undos) > 0) - { - /* Delete the oldest node */ - rp_frame_undo *cur; - list_last (cur, &rp_frame_undos, node); - del_frame_undo (cur); - } + clear_frame_undos (); /* Free the global frame numset shared by all screens. */ numset_free (rp_frame_numset); - free_xinerama(); - #ifndef USE_XFT_FONT XFreeFontSet (dpy, defaults.font); #endif diff -Nru ratpoison-1.4.8/src/Makefile.am ratpoison-1.4.9/src/Makefile.am --- ratpoison-1.4.8/src/Makefile.am 2014-06-14 14:43:29.000000000 +0000 +++ ratpoison-1.4.9/src/Makefile.am 2017-03-10 07:09:14.000000000 +0000 @@ -70,6 +70,8 @@ split.c \ split.h \ window.c \ - window.h \ - xinerama.c \ - xinerama.h + window.h + +if HAVE_XRANDR +ratpoison_SOURCES += xrandr.c xrandr.h +endif diff -Nru ratpoison-1.4.8/src/Makefile.in ratpoison-1.4.9/src/Makefile.in --- ratpoison-1.4.8/src/Makefile.in 2014-09-14 16:34:31.000000000 +0000 +++ ratpoison-1.4.9/src/Makefile.in 2017-04-02 23:39:57.000000000 +0000 @@ -1,9 +1,8 @@ -# Makefile.in generated by automake 1.11.6 from Makefile.am. +# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software -# Foundation, Inc. +# Copyright (C) 1994-2014 Free Software Foundation, Inc. + # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. @@ -16,23 +15,61 @@ @SET_MAKE@ VPATH = @srcdir@ -am__make_dryrun = \ - { \ - am__dry=no; \ +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ - echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ - | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ - *) \ - for am__flg in $$MAKEFLAGS; do \ - case $$am__flg in \ - *=*|--*) ;; \ - *n*) am__dry=yes; break;; \ - esac; \ - done;; \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ esac; \ - test $$am__dry = yes; \ - } + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ @@ -50,20 +87,31 @@ PRE_UNINSTALL = : POST_UNINSTALL = : bin_PROGRAMS = ratpoison$(EXEEXT) +@HAVE_XRANDR_TRUE@am__append_1 = xrandr.c xrandr.h subdir = src -DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ - $(srcdir)/config.h.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/m4/codeset.m4 \ - $(top_srcdir)/m4/pkg.m4 $(top_srcdir)/configure.ac +am__aclocal_m4_deps = $(top_srcdir)/m4/ax_check_compile_flag.m4 \ + $(top_srcdir)/m4/codeset.m4 $(top_srcdir)/m4/pkg.m4 \ + $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__installdirs = "$(DESTDIR)$(bindir)" PROGRAMS = $(bin_PROGRAMS) +am__ratpoison_SOURCES_DIST = actions.c actions.h bar.c bar.h \ + completions.c completions.h communications.c communications.h \ + conf.h data.h editor.c editor.h events.c events.h format.c \ + format.h frame.c frame.h getopt.c getopt.h getopt1.c globals.h \ + globals.c group.h group.c history.h history.c hook.c hook.h \ + input.c input.h linkedlist.h linkedlist.c main.c manage.c \ + manage.h messages.h number.c number.h ratpoison.h sbuf.c \ + sbuf.h screen.h screen.c split.c split.h window.c window.h \ + xrandr.c xrandr.h +@HAVE_XRANDR_TRUE@am__objects_1 = xrandr.$(OBJEXT) am_ratpoison_OBJECTS = actions.$(OBJEXT) bar.$(OBJEXT) \ completions.$(OBJEXT) communications.$(OBJEXT) \ editor.$(OBJEXT) events.$(OBJEXT) format.$(OBJEXT) \ @@ -72,31 +120,72 @@ hook.$(OBJEXT) input.$(OBJEXT) linkedlist.$(OBJEXT) \ main.$(OBJEXT) manage.$(OBJEXT) number.$(OBJEXT) \ sbuf.$(OBJEXT) screen.$(OBJEXT) split.$(OBJEXT) \ - window.$(OBJEXT) xinerama.$(OBJEXT) + window.$(OBJEXT) $(am__objects_1) ratpoison_OBJECTS = $(am_ratpoison_OBJECTS) am__DEPENDENCIES_1 = ratpoison_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ depcomp = $(SHELL) $(top_srcdir)/build-aux/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_@AM_V@) +am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = CCLD = $(CC) LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = SOURCES = $(ratpoison_SOURCES) -DIST_SOURCES = $(ratpoison_SOURCES) +DIST_SOURCES = $(am__ratpoison_SOURCES_DIST) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) \ + $(LISP)config.h.in +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags +am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/config.h.in \ + $(top_srcdir)/build-aux/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ @@ -199,57 +288,15 @@ MAINTAINERCLEANFILES = Makefile.in config.h.in AM_CPPFLAGS = -DSYSCONFDIR='"$(sysconfdir)"' ${X_CFLAGS} ${XFT_CFLAGS} ratpoison_LDADD = ${XFT_LIBS} ${X_LIBS} ${X_EXTRA_LIBS} ${HISTORY_LIBS} -ratpoison_SOURCES = actions.c \ - actions.h \ - bar.c \ - bar.h \ - completions.c \ - completions.h \ - communications.c \ - communications.h \ - conf.h \ - data.h \ - editor.c \ - editor.h \ - events.c \ - events.h \ - format.c \ - format.h \ - frame.c \ - frame.h \ - getopt.c \ - getopt.h \ - getopt1.c \ - globals.h \ - globals.c \ - group.h \ - group.c \ - history.h \ - history.c \ - hook.c \ - hook.h \ - input.c \ - input.h \ - linkedlist.h \ - linkedlist.c \ - main.c \ - manage.c \ - manage.h \ - messages.h \ - number.c \ - number.h \ - ratpoison.h \ - sbuf.c \ - sbuf.h \ - screen.h \ - screen.c \ - split.c \ - split.h \ - window.c \ - window.h \ - xinerama.c \ - xinerama.h - +ratpoison_SOURCES = actions.c actions.h bar.c bar.h completions.c \ + completions.h communications.c communications.h conf.h data.h \ + editor.c editor.h events.c events.h format.c format.h frame.c \ + frame.h getopt.c getopt.h getopt1.c globals.h globals.c \ + group.h group.c history.h history.c hook.c hook.h input.c \ + input.h linkedlist.h linkedlist.c main.c manage.c manage.h \ + messages.h number.c number.h ratpoison.h sbuf.c sbuf.h \ + screen.h screen.c split.c split.h window.c window.h \ + $(am__append_1) all: config.h $(MAKE) $(AM_MAKEFLAGS) all-am @@ -267,7 +314,6 @@ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu src/Makefile -.PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ @@ -287,8 +333,8 @@ $(am__aclocal_m4_deps): config.h: stamp-h1 - @if test ! -f $@; then rm -f stamp-h1; else :; fi - @if test ! -f $@; then $(MAKE) $(AM_MAKEFLAGS) stamp-h1; else :; fi + @test -f $@ || rm -f stamp-h1 + @test -f $@ || $(MAKE) $(AM_MAKEFLAGS) stamp-h1 stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status @rm -f stamp-h1 @@ -309,10 +355,11 @@ fi; \ for p in $$list; do echo "$$p $$p"; done | \ sed 's/$(EXEEXT)$$//' | \ - while read p p1; do if test -f $$p; \ - then echo "$$p"; echo "$$p"; else :; fi; \ + while read p p1; do if test -f $$p \ + ; then echo "$$p"; echo "$$p"; else :; fi; \ done | \ - sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \ + sed -e 'p;s,.*/,,;n;h' \ + -e 's|.*|.|' \ -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ @@ -333,16 +380,18 @@ @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ - -e 's/$$/$(EXEEXT)/' `; \ + -e 's/$$/$(EXEEXT)/' \ + `; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(bindir)" && rm -f $$files clean-binPROGRAMS: -test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS) + ratpoison$(EXEEXT): $(ratpoison_OBJECTS) $(ratpoison_DEPENDENCIES) $(EXTRA_ratpoison_DEPENDENCIES) @rm -f ratpoison$(EXEEXT) - $(LINK) $(ratpoison_OBJECTS) $(ratpoison_LDADD) $(LIBS) + $(AM_V_CCLD)$(LINK) $(ratpoison_OBJECTS) $(ratpoison_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) @@ -373,42 +422,31 @@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/screen.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/split.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/window.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xinerama.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xrandr.Po@am__quote@ .c.o: -@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(COMPILE) -c $< +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: -@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags -TAGS: $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ - list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ + $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ @@ -420,15 +458,11 @@ $$unique; \ fi; \ fi -ctags: CTAGS -CTAGS: $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique @@ -437,6 +471,21 @@ here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags @@ -580,18 +629,21 @@ .MAKE: all install-am install-strip -.PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \ - clean-generic ctags distclean distclean-compile \ - distclean-generic distclean-hdr distclean-tags distdir dvi \ - dvi-am html html-am info info-am install install-am \ - install-binPROGRAMS install-data install-data-am install-dvi \ - install-dvi-am install-exec install-exec-am install-html \ - install-html-am install-info install-info-am install-man \ - install-pdf install-pdf-am install-ps install-ps-am \ - install-strip installcheck installcheck-am installdirs \ - maintainer-clean maintainer-clean-generic mostlyclean \ - mostlyclean-compile mostlyclean-generic pdf pdf-am ps ps-am \ - tags uninstall uninstall-am uninstall-binPROGRAMS +.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean \ + clean-binPROGRAMS clean-generic cscopelist-am ctags ctags-am \ + distclean distclean-compile distclean-generic distclean-hdr \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-binPROGRAMS install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-pdf install-pdf-am \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic pdf pdf-am ps ps-am tags tags-am uninstall \ + uninstall-am uninstall-binPROGRAMS + +.PRECIOUS: Makefile # Tell versions [3.59,3.63) of GNU make to not export all variables. diff -Nru ratpoison-1.4.8/src/manage.c ratpoison-1.4.9/src/manage.c --- ratpoison-1.4.8/src/manage.c 2014-09-14 14:46:49.000000000 +0000 +++ ratpoison-1.4.9/src/manage.c 2017-03-10 02:03:20.000000000 +0000 @@ -97,8 +97,6 @@ unmanaged_window_list = tmp; } -extern Atom wm_state; - void grab_top_level_keys (Window w) { @@ -154,21 +152,6 @@ } } -rp_screen* -current_screen (void) -{ - int i; - - for (i=0; iroot, &dw1, &dw2, &wins, &nwins); + XQueryTree(dpy, rp_glob_screen.root, &dw1, &dw2, &wins, &nwins); PRINT_DEBUG (("windows: %d\n", nwins)); for (i = 0; i < nwins; i++) { + rp_screen *screen; + XGetWindowAttributes(dpy, wins[i], &attr); - if (is_rp_window_for_screen(wins[i], s) + if (is_rp_window (wins[i]) || attr.override_redirect == True || unmanaged_window (wins[i])) continue; - /* FIXME - with this code, windows which are entirely off-screen - * when RP starts won't ever be managed when Xinerama is enabled. - */ - { - XWindowAttributes root_attr; - - XGetWindowAttributes (dpy, s->root, &root_attr); - PRINT_DEBUG (("attrs: %d %d %d %d %d %d\n", root_attr.x, root_attr.y, - s->left, s->top, s->left + s->width, s->top + s->height));} - - if (rp_have_xinerama - && ((attr.x > s->left + s->width) - || (attr.x < s->left) - || (attr.y > s->top + s->height) - || (attr.y < s->top))) continue; - win = add_to_window_list (s, wins[i]); + screen = find_screen_by_attr (attr); + if (!screen) + list_first (screen, &rp_screens, node); + + win = add_to_window_list (screen, wins[i]); PRINT_DEBUG (("map_state: %s\n", attr.map_state == IsViewable ? "IsViewable": @@ -901,7 +875,7 @@ XSelectInput (dpy, win->w, WIN_EVENTS); /* Ensure that the window doesn't have the focused border color. This is needed by remove_frame and possibly others. */ - XSetWindowBorder (dpy, win->w, win->scr->bw_color); + XSetWindowBorder (dpy, win->w, rp_glob_screen.bw_color); set_state (win, IconicState); } @@ -999,3 +973,17 @@ hide_window (cur); } } + +/* Hide any window displayed on the given screen */ +void +hide_screen_windows (rp_screen *s) +{ + rp_frame *cur_frame; + rp_window *cur_win; + + list_for_each_entry (cur_frame, &s->frames, node) + { + cur_win = find_window_number (cur_frame->win_number); + hide_window (cur_win); + } +} diff -Nru ratpoison-1.4.8/src/manage.h ratpoison-1.4.9/src/manage.h --- ratpoison-1.4.8/src/manage.h 2014-04-08 23:22:08.000000000 +0000 +++ ratpoison-1.4.9/src/manage.h 2017-03-09 22:20:26.000000000 +0000 @@ -28,8 +28,7 @@ char *list_unmanaged_windows (void); void add_unmanaged_window (char *name); int unmanaged_window (Window w); -rp_screen* current_screen (void); -void scanwins(rp_screen *s); +void scanwins (void); void unmanage (rp_window *w); int update_window_name (rp_window *win); void update_normal_hints (rp_window *win); @@ -56,5 +55,6 @@ void unhide_window_below (rp_window *win); void withdraw_window (rp_window *win); void hide_others (rp_window *win); +void hide_screen_windows (rp_screen *s); #endif /* ! _RATPOISION_MANAGE_H */ diff -Nru ratpoison-1.4.8/src/messages.h ratpoison-1.4.9/src/messages.h --- ratpoison-1.4.8/src/messages.h 2014-04-08 23:22:08.000000000 +0000 +++ ratpoison-1.4.9/src/messages.h 2017-03-10 03:18:00.000000000 +0000 @@ -25,7 +25,7 @@ #define MESSAGE_NO_OTHER_WINDOW "No other window" #define MESSAGE_NO_OTHER_FRAME "No other frame" #define MESSAGE_NO_MANAGED_WINDOWS "No managed windows" -#define MESSAGE_UNKNOWN_COMMAND ": unknown command '%s'" +#define MESSAGE_UNKNOWN_COMMAND "unknown command '%s'" #define MESSAGE_WINDOW_INFORMATION "This is window %d (%s)" #define MESSAGE_RAISE_TRANSIENT "Raise request from transient window %d (%s)" diff -Nru ratpoison-1.4.8/src/ratpoison.h ratpoison-1.4.9/src/ratpoison.h --- ratpoison-1.4.8/src/ratpoison.h 2014-04-08 23:22:08.000000000 +0000 +++ ratpoison-1.4.9/src/ratpoison.h 2017-03-10 08:40:38.000000000 +0000 @@ -33,8 +33,14 @@ #include #include +#if defined(__BASE_FILE__) +#define RP_FILE_NAME __BASE_FILE__ +#else +#define RP_FILE_NAME __FILE__ +#endif + /* Helper macro for error and debug reporting. */ -#define PRINT_LINE(type) printf (PACKAGE ":%s:%d: %s: ",__FILE__, __LINE__, #type) +#define PRINT_LINE(type) printf (PACKAGE ":%s:%d: %s: ",RP_FILE_NAME, __LINE__, #type) /* Error and debug reporting macros. */ #define PRINT_ERROR(fmt) \ @@ -44,6 +50,13 @@ fflush (stdout); \ } while (0) +#define PRINT_WARNING(fmt) \ +do { \ + PRINT_LINE (warning); \ + printf fmt; \ + fflush (stdout); \ +} while (0) + #ifdef DEBUG #define PRINT_DEBUG(fmt) \ do { \ @@ -55,8 +68,6 @@ #define PRINT_DEBUG(fmt) do {} while (0) #endif /* DEBUG */ -extern XGCValues gv; - #include "conf.h" #include "data.h" @@ -78,11 +89,10 @@ #include "history.h" #include "completions.h" #include "hook.h" -#include "xinerama.h" +#include "xrandr.h" #include "format.h" void clean_up (void); -rp_screen *find_screen (Window w); void set_close_on_exec (int fd); const char *get_homedir (void); diff -Nru ratpoison-1.4.8/src/screen.c ratpoison-1.4.9/src/screen.c --- ratpoison-1.4.8/src/screen.c 2014-09-14 14:47:05.000000000 +0000 +++ ratpoison-1.4.9/src/screen.c 2017-03-10 02:03:05.000000000 +0000 @@ -1,4 +1,5 @@ /* Copyright (C) 2000, 2001, 2002, 2003, 2004 Shawn Betts + * Copyright (C) 2016 Mathieu OTHACEHE * * This file is part of ratpoison. * @@ -22,7 +23,7 @@ #include #include -static void init_screen (rp_screen *s, int screen_num); +static void init_screen (rp_screen *s); int screen_width (rp_screen *s) @@ -153,128 +154,220 @@ rp_screen * find_screen (Window w) { - int i; + rp_screen *cur; + + list_for_each_entry (cur, &rp_screens, node) + { + if (cur->root == w) + return cur; + } + + return NULL; +} + +/* Given a window attr, return the rp_screen struct */ +rp_screen * +find_screen_by_attr (XWindowAttributes attr) +{ + rp_screen *cur; - for (i=0; i= cur->left && + attr.x <= cur->left + cur->width && + attr.y >= cur->top && + attr.y <= cur->top + cur->height) + return cur; + } - return NULL; - } + return NULL; +} /* Return 1 if w is a root window of any of the screens. */ int is_a_root_window (unsigned int w) { - int i; - for (i=0; iroot == w) + return 1; + } + + return 0; +} + +rp_screen * +screen_number (int number) +{ + rp_screen *cur; + + list_for_each_entry (cur, &rp_screens, node) + { + if (cur->number == number) + return cur; + } + + return NULL; +} + +static int +screen_cmp (void *priv UNUSED, struct list_head *a, struct list_head *b) +{ + rp_screen *sc_a = container_of (a, typeof(*sc_a), node); + rp_screen *sc_b = container_of (b, typeof(*sc_b), node); + + if (sc_a->left < sc_b->left) + return -1; + if (sc_a->left > sc_b->left) + return 1; + + if (sc_a->top > sc_b->top) + return -1; + if (sc_a->top < sc_b->top) + return 1; return 0; } void -init_screens (int screen_arg, int screen_num) +screen_sort (void) { - int i; + return list_sort (NULL, &rp_screens, screen_cmp); +} - /* Get the number of screens */ - if (rp_have_xinerama) - num_screens = xine_screen_count; - else - num_screens = ScreenCount (dpy); +static void +screen_set_numbers (void) +{ + rp_screen *cur; - /* make sure the screen specified is valid. */ - if (screen_arg) + list_for_each_entry (cur, &rp_screens, node) { - /* Using just a single Xinerama screen doesn't really make sense. So we - * disable Xinerama in this case. - */ - if (rp_have_xinerama) - { - fprintf (stderr, "Warning: selecting a specific Xinerama screen is not implemented.\n"); - rp_have_xinerama = 0; - screen_num = 0; - num_screens = ScreenCount(dpy); - } + cur->number = numset_request (rp_glob_screen.numset); + } +} - if (screen_num < 0 || screen_num >= num_screens) - { - fprintf (stderr, "%d is an invalid screen for the display\n", screen_num); - exit (EXIT_FAILURE); - } +static void +screen_select_primary (void) +{ + rp_screen *cur; + + /* By default, take the first screen as current screen */ + list_first(cur, &rp_screens, node); + if (!rp_current_screen) + rp_current_screen = cur; + +#ifdef HAVE_XRANDR + if (!rp_have_xrandr) + return; - /* we're only going to use one screen. */ - num_screens = 1; + list_for_each_entry (cur, &rp_screens, node) + { + if (xrandr_is_primary(cur)) { + rp_current_screen = cur; + PRINT_DEBUG(("Xrandr primary screen %d detected\n", + rp_current_screen->number)); + break; + } } +#endif +} + +static void +init_global_screen (rp_global_screen *s) +{ + int screen_num; + + screen_num = DefaultScreen (dpy); + s->root = RootWindow (dpy, screen_num); + + s->numset = numset_new (); + s->fg_color = BlackPixel (dpy, screen_num); + s->bg_color = WhitePixel (dpy, screen_num); + s->fw_color = BlackPixel (dpy, screen_num); + s->bw_color = BlackPixel (dpy, screen_num); +} + +void +init_screens (void) +{ + int i; + int screen_count = 0; + int *rr_outputs = NULL; + rp_screen *screen; + + /* Get the number of screens */ + if (rp_have_xrandr) { +#ifdef HAVE_XRANDR + rr_outputs = xrandr_query_screen (&screen_count); +#endif + } else { + screen_count = ScreenCount (dpy); + } /* Create our global frame numset */ rp_frame_numset = numset_new(); - /* Initialize the screens */ - screens = xmalloc (sizeof (rp_screen) * num_screens); - PRINT_DEBUG (("%d screens.\n", num_screens)); + init_global_screen (&rp_glob_screen); - if (screen_arg) - { - init_screen (&screens[0], screen_num); - } - else + for (i = 0; i < screen_count; i++) { - for (i=0; inode, &rp_screens); + +#ifdef HAVE_XRANDR + if (rp_have_xrandr) + xrandr_fill_screen (rr_outputs[i], screen); +#endif + init_screen (screen); } + screen_sort (); + screen_set_numbers (); + screen_select_primary (); + + free (rr_outputs); } static void init_rat_cursor (rp_screen *s) { - s->rat = XCreateFontCursor( dpy, XC_icon ); + s->rat = XCreateFontCursor (dpy, XC_icon); } static void -init_screen (rp_screen *s, int screen_num) +init_screen (rp_screen *s) { XGCValues gcv; struct sbuf *buf; - int xine_screen_num; char *colon; + int screen_num; - /* We use screen_num below to refer to the real X screen number, but - * if we're using Xinerama, it will only be the Xinerama logical screen - * number. So we shuffle it away and replace it with the real one now, - * to cause confusion. -- CP - */ - if (rp_have_xinerama) - { - xine_screen_num = screen_num; - screen_num = DefaultScreen(dpy); - xinerama_get_screen_info(xine_screen_num, - &s->left, &s->top, &s->width, &s->height); - } - else + screen_num = DefaultScreen (dpy); + + if (!rp_have_xrandr) { - xine_screen_num = screen_num; s->left = 0; s->top = 0; - s->width = DisplayWidth(dpy, screen_num); - s->height = DisplayHeight(dpy, screen_num); + s->width = DisplayWidth (dpy, screen_num); + s->height = DisplayHeight (dpy, screen_num); } /* Select on some events on the root window, if this fails, then there is already a WM running and the X Error handler will catch it, terminating ratpoison. */ - XSelectInput(dpy, RootWindow (dpy, screen_num), - PropertyChangeMask | ColormapChangeMask - | SubstructureRedirectMask | SubstructureNotifyMask - | StructureNotifyMask); + XSelectInput (dpy, RootWindow (dpy, screen_num), + PropertyChangeMask | ColormapChangeMask + | SubstructureRedirectMask | SubstructureNotifyMask + | StructureNotifyMask); XSync (dpy, False); /* Set the numset for the frames to our global numset. */ s->frames_numset = rp_frame_numset; + s->scratch_buffer = NULL; + /* Build the display string for each screen */ buf = sbuf_new (0); sbuf_printf (buf, "DISPLAY=%s", DisplayString (dpy)); @@ -295,21 +388,15 @@ PRINT_DEBUG (("display string: %s\n", s->display_string)); - s->screen_num = screen_num; - s->xine_screen_num = xine_screen_num; s->root = RootWindow (dpy, screen_num); + s->screen_num = screen_num; s->def_cmap = DefaultColormap (dpy, screen_num); init_rat_cursor (s); - s->fg_color = BlackPixel (dpy, s->screen_num); - s->bg_color = WhitePixel (dpy, s->screen_num); - s->fw_color = BlackPixel (dpy, s->screen_num); - s->bw_color = BlackPixel (dpy, s->screen_num); - /* Setup the GC for drawing the font. */ - gcv.foreground = s->fg_color; - gcv.background = s->bg_color; + gcv.foreground = rp_glob_screen.fg_color; + gcv.background = rp_glob_screen.bg_color; gcv.function = GXcopy; gcv.line_width = 1; gcv.subwindow_mode = IncludeInferiors; @@ -317,8 +404,8 @@ GCForeground | GCBackground | GCFunction | GCLineWidth | GCSubwindowMode, &gcv); - gcv.foreground = s->bg_color; - gcv.background = s->fg_color; + gcv.foreground = rp_glob_screen.bg_color; + gcv.background = rp_glob_screen.fg_color; s->inverse_gc = XCreateGC(dpy, s->root, GCForeground | GCBackground | GCFunction | GCLineWidth | GCSubwindowMode, @@ -328,28 +415,28 @@ s->bar_is_raised = 0; s->bar_window = XCreateSimpleWindow (dpy, s->root, 0, 0, 1, 1, defaults.bar_border_width, - s->fg_color, s->bg_color); + rp_glob_screen.fg_color, rp_glob_screen.bg_color); /* Setup the window that will receive all keystrokes once the prefix key has been pressed. */ s->key_window = XCreateSimpleWindow (dpy, s->root, 0, 0, 1, 1, 0, - WhitePixel (dpy, s->screen_num), - BlackPixel (dpy, s->screen_num)); + WhitePixel (dpy, screen_num), + BlackPixel (dpy, screen_num)); XSelectInput (dpy, s->key_window, KeyPressMask | KeyReleaseMask); /* Create the input window. */ s->input_window = XCreateSimpleWindow (dpy, s->root, 0, 0, 1, 1, defaults.bar_border_width, - s->fg_color, s->bg_color); + rp_glob_screen.fg_color, rp_glob_screen.bg_color); XSelectInput (dpy, s->input_window, KeyPressMask | KeyReleaseMask); /* Create the frame indicator window */ s->frame_window = XCreateSimpleWindow (dpy, s->root, 1, 1, 1, 1, defaults.bar_border_width, - s->fg_color, s->bg_color); + rp_glob_screen.fg_color, rp_glob_screen.bg_color); /* Create the help window */ s->help_window = XCreateSimpleWindow (dpy, s->root, s->left, s->top, s->width, - s->height, 0, s->fg_color, s->bg_color); + s->height, 0, rp_glob_screen.fg_color, rp_glob_screen.bg_color); XSelectInput (dpy, s->help_window, KeyPressMask); activate_screen(s); @@ -391,13 +478,13 @@ { /* Add netwm support. FIXME: I think this is busted. */ XChangeProperty (dpy, RootWindow (dpy, s->screen_num), - _net_supported, XA_ATOM, 32, PropModeReplace, - (unsigned char*)&_net_wm_pid, 1); + _net_supported, XA_ATOM, 32, PropModeReplace, + (unsigned char*)&_net_wm_pid, 1); /* set window manager name */ XChangeProperty (dpy, RootWindow (dpy, s->screen_num), - _net_wm_name, xa_utf8_string, 8, PropModeReplace, - (unsigned char*)"ratpoison", 9); + _net_wm_name, xa_utf8_string, 8, PropModeReplace, + (unsigned char*)"ratpoison", 9); XMapWindow (dpy, s->key_window); } @@ -409,9 +496,9 @@ /* delete everything so noone sees them while we are not there */ XDeleteProperty (dpy, RootWindow (dpy, s->screen_num), - _net_supported); + _net_supported); XDeleteProperty (dpy, RootWindow (dpy, s->screen_num), - _net_wm_name); + _net_wm_name); } static int @@ -427,20 +514,17 @@ } int -is_rp_window_for_screen(Window w, rp_screen *s) +is_rp_window (Window w) { - int i; + rp_screen *cur; - if (rp_have_xinerama) - { - for (i=0; ixine_screen_num:screen->screen_num, - screen->left, - screen->top, - screen->width, - screen->height, - (current_screen() == screen)?1:0 /* is current? */ - ); + if (rp_have_xrandr) + sbuf_printf(s, "%s ", sbuf_get (screen->xrandr.name)); + + sbuf_printf_concat (s, "%d %d %d %d %d %d", + screen->number, + screen->left, + screen->top, + screen->width, + screen->height, + (rp_current_screen == screen)?1:0 /* is current? */ + ); /* Extract the string and return it, and don't forget to free s. */ tmp = sbuf_get (s); @@ -465,27 +552,68 @@ return tmp; } +int +screen_count (void) +{ + return list_size (&rp_screens); +} + +rp_screen * +screen_next (void) +{ + return list_next_entry (rp_current_screen, &rp_screens, node); +} + +rp_screen * +screen_prev (void) +{ + return list_prev_entry (rp_current_screen, &rp_screens, node); +} + +static void +screen_remove_current (void) +{ + rp_screen *new_screen; + rp_frame *new_frame; + rp_window *cur_win; + int cur_frame; + + cur_win = current_window (); + new_screen = screen_next (); + + cur_frame = new_screen->current_frame; + new_frame = screen_get_frame (new_screen, cur_frame); + + set_active_frame (new_frame, 1); + + hide_window (cur_win); +} + void -screen_update (rp_screen *s, int width, int height) +screen_update (rp_screen *s, int left, int top, int width, int height) { rp_frame *f; - int oldwidth,oldheight; + int oldwidth, oldheight; - PRINT_DEBUG (("screen_update(%d,%d)\n", width, height)); - if (rp_have_xinerama) - { - /* TODO: how to do this with xinerama? */ - return; - } + PRINT_DEBUG (("screen_update (left=%d, top=%d, width=%d, height=%d)\n", + left, top, width, height)); - if (s->width == width && s->height == height) + if (s->width == width && + s->height == height && + s->left == left && + s->top == top) /* nothing to do */ return; - oldwidth = s->width; oldheight = s->height; - s->width = width; s->height = height; + oldwidth = s->width; + oldheight = s->height; - XResizeWindow (dpy, s->help_window, width, height); + s->left = left; + s->top = top; + s->width = width; + s->height = height; + + XMoveResizeWindow (dpy, s->help_window, s->left, s->top, s->width, s->height); list_for_each_entry (f, &s->frames, node) { @@ -496,3 +624,115 @@ maximize_all_windows_in_frame (f); } } + +rp_screen * +screen_add (int rr_output) +{ + rp_screen *screen; + + screen = xmalloc (sizeof(*screen)); + list_add (&screen->node, &rp_screens); + + screen->number = numset_request (rp_glob_screen.numset); + +#ifdef HAVE_XRANDR + if (rp_have_xrandr) + xrandr_fill_screen (rr_output, screen); +#endif + init_screen (screen); + init_frame_list (screen); + + if (screen_count () == 1) + { + rp_current_screen = screen; + change_windows_screen (NULL, rp_current_screen); + set_window_focus (rp_current_screen->key_window); + } + + return screen; +} + +void +screen_del (rp_screen *s) +{ + if (s == rp_current_screen) + { + if (screen_count () == 1) + { + hide_screen_windows (s); + rp_current_screen = NULL; + } + else + { + /* + * The deleted screen cannot be the current screen anymore, + * focus the next one. + */ + screen_remove_current (); + } + } + else + { + hide_screen_windows (s); + } + + /* Affect window's screen backpointer to the new current screen */ + change_windows_screen (s, rp_current_screen); + + numset_release (rp_glob_screen.numset, s->number); + + screen_free (s); + + list_del (&s->node); + free (s); +} + +void +screen_free (rp_screen *s) +{ + rp_frame *frame; + struct list_head *iter, *tmp; + + list_for_each_safe_entry (frame, iter, tmp, &s->frames, node) + { + frame_free (s, frame); + } + + deactivate_screen(s); + + XDestroyWindow (dpy, s->bar_window); + XDestroyWindow (dpy, s->key_window); + XDestroyWindow (dpy, s->input_window); + XDestroyWindow (dpy, s->frame_window); + XDestroyWindow (dpy, s->help_window); + +#ifdef USE_XFT_FONT + if (s->xft_font) + { + XftColorFree (dpy, DefaultVisual (dpy, s->screen_num), + DefaultColormap (dpy, s->screen_num), &s->xft_fg_color); + XftColorFree (dpy, DefaultVisual (dpy, s->screen_num), + DefaultColormap (dpy, s->screen_num), &s->xft_bg_color); + XftFontClose (dpy, s->xft_font); + } +#endif + + XFreeCursor (dpy, s->rat); + XFreeColormap (dpy, s->def_cmap); + XFreeGC (dpy, s->normal_gc); + XFreeGC (dpy, s->inverse_gc); + + free (s->display_string); + + if (rp_have_xrandr) + free (s->xrandr.name); +} + +void +screen_free_final (void) +{ + /* Relinquish our hold on the root window. */ + XSelectInput(dpy, RootWindow (dpy, DefaultScreen (dpy)), 0); + + numset_free (rp_glob_screen.numset); +} diff -Nru ratpoison-1.4.8/src/screen.h ratpoison-1.4.9/src/screen.h --- ratpoison-1.4.8/src/screen.h 2014-04-08 23:22:08.000000000 +0000 +++ ratpoison-1.4.9/src/screen.h 2017-03-09 22:20:26.000000000 +0000 @@ -35,14 +35,32 @@ rp_frame *screen_get_frame (rp_screen *s, int frame_num); rp_frame *screen_find_frame_by_frame (rp_screen *s, rp_frame *f); -void init_screens (int screen_arg, int screen_num); +rp_screen *find_screen (Window w); +rp_screen *find_screen_by_attr (XWindowAttributes w); + +void init_screens (void); void activate_screen (rp_screen *s); void deactivate_screen (rp_screen *s); -int is_rp_window_for_screen (Window w, rp_screen *s); +int is_rp_window (Window w); int is_a_root_window (unsigned int w); char *screen_dump (rp_screen *screen); -void screen_update (rp_screen *s, int width, int height); +void screen_update (rp_screen *s, int left, int top, int width, int height); + +int screen_count (void); + +rp_screen *screen_next(void); +rp_screen *screen_prev(void); + +rp_screen *screen_number (int number); + +void screen_sort(void); + +rp_screen *screen_add(int rr_output); +void screen_del(rp_screen *s); +void screen_free (rp_screen *s); +void screen_free_final(void); + #endif diff -Nru ratpoison-1.4.8/src/split.c ratpoison-1.4.9/src/split.c --- ratpoison-1.4.8/src/split.c 2014-04-08 23:22:08.000000000 +0000 +++ ratpoison-1.4.9/src/split.c 2017-03-09 22:20:26.000000000 +0000 @@ -41,24 +41,10 @@ rp_frame * current_frame (void) { - rp_screen *s = current_screen(); + rp_screen *s = rp_current_screen; return screen_get_frame (s, s->current_frame); } -int -num_frames (rp_screen *s) -{ - int count = 0; - rp_frame *cur; - - list_for_each_entry (cur, &s->frames, node) - { - count++; - } - - return count; -} - void cleanup_frame (rp_frame *frame) { @@ -95,7 +81,7 @@ win->frame_number = frame->number; /* We need to make sure that win and frame are on the same screen, - * since with Xinerama, windows can move from one screen to another. + * since with Xrandr, windows can move from one screen to another. */ win->scr = frames_screen(frame); } @@ -110,15 +96,17 @@ rp_screen * frames_screen (rp_frame *frame) { - int i; - rp_frame *cur; + rp_frame *cur_frame; + rp_screen *cur_screen; - for (i=0; iframes, node) + { + if (frame == cur_frame) + return cur_screen; + } + } /* This SHOULD be impossible to get to. FIXME: It'll crash higher up if we return NULL. */ @@ -171,10 +159,12 @@ void init_frame_lists (void) { - int i; + rp_screen *cur; - for (i=0; iframes, node) + list_for_each_entry (cur_frame, &cur_screen->frames, node) { - if (cur->number != current_screen()->current_frame - && cur->last_access > last_access) + if (cur_frame->number != rp_current_screen->current_frame && + cur_frame->last_access > last_access) { - last_access = cur->last_access; - last = cur; + last_access = cur_frame->last_access; + last = cur_frame; } } } @@ -227,6 +215,12 @@ return NULL; } +int +num_frames (rp_screen *s) +{ + return list_size (&s->frames); +} + rp_frame * find_frame_next (rp_frame *frame) { @@ -277,7 +271,7 @@ list_for_each_entry (cur, &rp_current_group->mapped_windows, node) { - if ((cur->win->scr == s || rp_have_xinerama) + if ((cur->win->scr == s || rp_have_xrandr) && cur->win != current_window() && !find_windows_frame (cur->win) && cur->win->last_access >= last_access @@ -382,7 +376,7 @@ remove_all_splits (void) { struct list_head *tmp, *iter; - rp_screen *s = current_screen(); + rp_screen *s = rp_current_screen; rp_frame *frame; rp_window *win; @@ -822,9 +816,9 @@ void set_active_frame (rp_frame *frame, int force_indicator) { - rp_screen *old_s = current_screen(); + rp_screen *old_s = rp_current_screen; rp_screen *s = frames_screen (frame); - int old = current_screen()->current_frame; + int old = rp_current_screen->current_frame; rp_window *win, *old_win; rp_frame *old_frame; @@ -845,7 +839,7 @@ s->current_frame = frame->number; /* If frame->win == NULL, then rp_current_screen is not updated. */ - rp_current_screen = s->xine_screen_num; + rp_current_screen = s; update_bar (s); @@ -926,26 +920,32 @@ void hide_frame_indicator (void) { - int i; - for (i=0; iframe_window); + } } void show_frame_indicator (int force) { - if (num_frames (current_screen()) > 1 || force) + if (num_frames (rp_current_screen) > 1 || force) { hide_frame_indicator (); - show_frame_message (defaults.frame_fmt); - alarm (defaults.frame_indicator_timeout); + if (defaults.frame_indicator_timeout != -1) + { + show_frame_message (defaults.frame_fmt); + alarm (defaults.frame_indicator_timeout); + } } } void show_frame_message (char *msg) { - rp_screen *s = current_screen (); + rp_screen *s = rp_current_screen; int width, height; rp_frame *frame; rp_window *win; @@ -1000,15 +1000,16 @@ rp_frame * find_frame_up (rp_frame *frame) { - rp_screen *s = frames_screen (frame); + rp_screen *s; rp_frame *cur; - list_for_each_entry (cur, &s->frames, node) + list_for_each_entry (s, &rp_screens, node) { - if (frame->y == cur->y + cur->height) + list_for_each_entry (cur, &s->frames, node) { - if (frame->x >= cur->x && frame->x < cur->x + cur->width) - return cur; + if (frame_top_abs (frame) == frame_bottom_abs (cur)) + if (frame_right_abs (frame) >= frame_left_abs (cur) && frame_left_abs (frame) <= frame_right_abs (cur)) + return cur; } } @@ -1018,15 +1019,16 @@ rp_frame * find_frame_down (rp_frame *frame) { - rp_screen *s = frames_screen (frame); + rp_screen *s; rp_frame *cur; - list_for_each_entry (cur, &s->frames, node) + list_for_each_entry (s, &rp_screens, node) { - if (frame->y + frame->height == cur->y) + list_for_each_entry (cur, &s->frames, node) { - if (frame->x >= cur->x && frame->x < cur->x + cur->width) - return cur; + if (frame_bottom_abs (frame) == frame_top_abs (cur)) + if (frame_right_abs (frame) >= frame_left_abs (cur) && frame_left_abs (frame) <= frame_right_abs (cur)) + return cur; } } @@ -1036,15 +1038,16 @@ rp_frame * find_frame_left (rp_frame *frame) { - rp_screen *s = frames_screen (frame); + rp_screen *s; rp_frame *cur; - list_for_each_entry (cur, &s->frames, node) + list_for_each_entry (s, &rp_screens, node) { - if (frame->x == cur->x + cur->width) + list_for_each_entry (cur, &s->frames, node) { - if (frame->y >= cur->y && frame->y < cur->y + cur->height) - return cur; + if (frame_left_abs (frame) == frame_right_abs (cur)) + if (frame_top_abs (frame) >= frame_top_abs (cur) && frame_top_abs (frame) < frame_bottom_abs (cur)) + return cur; } } @@ -1054,15 +1057,16 @@ rp_frame * find_frame_right (rp_frame *frame) { - rp_screen *s = frames_screen (frame); + rp_screen *s; rp_frame *cur; - list_for_each_entry (cur, &s->frames, node) + list_for_each_entry (s, &rp_screens, node) { - if (frame->x + frame->width == cur->x) + list_for_each_entry (cur, &s->frames, node) { - if (frame->y >= cur->y && frame->y < cur->y + cur->height) - return cur; + if (frame_right_abs (frame) == frame_left_abs (cur)) + if (frame_top_abs (frame) >= frame_top_abs (cur) && frame_top_abs (frame) < frame_bottom_abs (cur)) + return cur; } } @@ -1072,17 +1076,15 @@ rp_frame * find_frame_number (int num) { - int i; - rp_frame *cur; + rp_frame *cur_frame; + rp_screen *cur_screen; - for (i=0; iframes, node) + list_for_each_entry (cur_frame, &cur_screen->frames, node) { - if (cur->number == num) - return cur; + if (cur_frame->number == num) + return cur_frame; } } diff -Nru ratpoison-1.4.8/src/split.h ratpoison-1.4.9/src/split.h --- ratpoison-1.4.8/src/split.h 2014-04-08 23:22:08.000000000 +0000 +++ ratpoison-1.4.9/src/split.h 2017-03-09 21:28:52.000000000 +0000 @@ -22,7 +22,6 @@ #ifndef SPLIT_H #define SPLIT_H -int num_frames (rp_screen *s); rp_window *set_frames_window (rp_frame *frame, rp_window *win); void cleanup_frame (rp_frame *frame); void maximize_all_windows_in_frame (rp_frame *frame); @@ -35,6 +34,7 @@ void remove_frame (rp_frame *frame); rp_window *find_window_for_frame (rp_frame *frame); rp_frame *find_windows_frame (rp_window *win); +int num_frames (rp_screen *s); rp_frame *find_frame_next (rp_frame *frame); rp_frame *find_frame_prev (rp_frame *frame); rp_window *current_window (void); diff -Nru ratpoison-1.4.8/src/window.c ratpoison-1.4.9/src/window.c --- ratpoison-1.4.8/src/window.c 2014-09-14 14:47:10.000000000 +0000 +++ ratpoison-1.4.9/src/window.c 2017-03-09 21:28:52.000000000 +0000 @@ -412,7 +412,7 @@ if (last_win != NULL && win != last_win) { save_mouse_position (last_win); - XSetWindowBorder (dpy, last_win->w, last_win->scr->bw_color); + XSetWindowBorder (dpy, last_win->w, rp_glob_screen.bw_color); } if (win == NULL) return; @@ -432,10 +432,10 @@ if (last_win != NULL) XUninstallColormap (dpy, last_win->colormap); XInstallColormap (dpy, win->colormap); - XSetWindowBorder (dpy, win->w, win->scr->fw_color); + XSetWindowBorder (dpy, win->w, rp_glob_screen.fw_color); /* Finally, give the window focus */ - rp_current_screen = win->scr->xine_screen_num; + rp_current_screen = win->scr; set_rp_window_focus (win); XSync (dpy, False); @@ -452,100 +452,68 @@ set_active_window_body(win, 1); } -/* FIXME: This function is probably a mess. I can't remember a time - when I didn't think this. It probably needs to be fixed up. */ +static rp_frame * +find_frame_non_dedicated(rp_screen *current_screen, rp_frame *current_frame) +{ + rp_frame *cur; + rp_screen *screen; + + list_for_each_entry (screen, &rp_screens, node) + { + if (current_screen == screen) + continue; + + list_for_each_entry (cur, &screen->frames, node) + { + if (!cur->dedicated) + return cur; + } + } + + return NULL; +} + void set_active_window_body (rp_window *win, int force) { rp_window *last_win; rp_frame *frame = NULL, *last_frame = NULL; - if (win == NULL) return; + if (win == NULL) + return; PRINT_DEBUG (("intended_frame_number: %d\n", win->intended_frame_number)); - /* With Xinerama, we can move a window over to the current screen; otherwise - * we have to switch to the screen that the window belongs to. - */ - if (rp_have_xinerama) + /* use the intended frame if we can. */ + if (win->intended_frame_number >= 0) { - /* use the intended frame if we can. */ - if (win->intended_frame_number >= 0) - { - frame = screen_get_frame (current_screen(), win->intended_frame_number); - win->intended_frame_number = -1; - if (frame != current_frame()) - last_frame = current_frame(); - } - - if (!frame) - frame = screen_get_frame (current_screen(), current_screen()->current_frame); + frame = screen_get_frame (rp_current_screen, win->intended_frame_number); + win->intended_frame_number = -1; + if (frame != current_frame ()) + last_frame = current_frame (); } - else - { - /* use the intended frame if we can. */ - if (win->intended_frame_number >= 0) - { - frame = screen_get_frame (win->scr, win->intended_frame_number); - win->intended_frame_number = -1; - if (frame != current_frame()) - last_frame = current_frame(); - } - if (!frame) - frame = screen_get_frame (win->scr, win->scr->current_frame); - } + if (frame == NULL) + frame = screen_get_frame (rp_current_screen, rp_current_screen->current_frame); if (frame->dedicated && !force) { - /* Try to find a non-dedicated frame. */ - rp_frame *cur; - rp_screen *scr; - int done; - - scr = (rp_have_xinerama)?&screens[rp_current_screen]:win->scr; - done = 0; - - /* Try the only / current screen... */ - for (cur = list_next_entry (frame, &scr->frames, node); - cur != frame && !done; - cur = list_next_entry (cur, &scr->frames, node)) - { - if (!cur->dedicated) - { - set_active_frame (cur, 0); - last_frame = frame; - frame = cur; - done = 1; - } - } + /* Try to find a non-dedicated frame. */ + rp_frame *non_dedicated; - /* If we have Xinerama, we can check *all* screens... */ - if (rp_have_xinerama && !done) + non_dedicated = find_frame_non_dedicated (rp_current_screen, frame); + if (non_dedicated != NULL) { - int i; - - for (i=0; idedicated) - { - set_active_frame (cur, 0); - last_frame = frame; - frame = cur; - done = 1; /* Break outer loop. */ - break; /* Break inner loop. */ - } - } - } + last_frame = frame; + frame = non_dedicated; + set_active_frame (frame, 0); } } last_win = set_frames_window (frame, win); - if (last_win) PRINT_DEBUG (("last window: %s\n", window_name (last_win))); + if (last_win != NULL) + PRINT_DEBUG (("last window: %s\n", window_name (last_win))); PRINT_DEBUG (("new window: %s\n", window_name (win))); /* Make sure the window comes up full screen */ @@ -565,7 +533,7 @@ XSync (dpy, False); /* If we switched frame, go back to the old one. */ - if (last_frame) + if (last_frame != NULL) set_active_frame (last_frame, 0); /* Call the switch window hook */ @@ -606,7 +574,7 @@ if (buffer == NULL) return; sbuf_clear (buffer); - find_window_other (current_screen()); + find_window_other (rp_current_screen); /* We only loop through the current group to look for windows. */ list_for_each_entry (we,&rp_current_group->mapped_windows,node) @@ -683,3 +651,15 @@ else return NULL; } + +void +change_windows_screen (rp_screen *old_screen, rp_screen *new_screen) +{ + rp_window *win; + + list_for_each_entry (win, &rp_mapped_window, node) + { + if (win->scr == old_screen) + win->scr = new_screen; + } +} diff -Nru ratpoison-1.4.8/src/window.h ratpoison-1.4.9/src/window.h --- ratpoison-1.4.8/src/window.h 2014-04-08 23:22:08.000000000 +0000 +++ ratpoison-1.4.9/src/window.h 2017-03-09 21:28:52.000000000 +0000 @@ -61,5 +61,6 @@ void set_active_window_body (rp_window *win, int force); struct rp_child_info *get_child_info (Window w); +void change_windows_screen (rp_screen *s, rp_screen *new_screen); #endif /* ! _RATPOISON_LIST_H */ diff -Nru ratpoison-1.4.8/src/xinerama.c ratpoison-1.4.9/src/xinerama.c --- ratpoison-1.4.8/src/xinerama.c 2014-09-14 15:24:41.000000000 +0000 +++ ratpoison-1.4.9/src/xinerama.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,99 +0,0 @@ -/* functions for grabbing information about Xinerama screens - * Copyright (C) 2003 Cameron Patrick - * - * This file is part of ratpoison. - * - * ratpoison is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * ratpoison is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this software; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 59 Temple Place, Suite 330, - * Boston, MA 02111-1307 USA - */ - -#include "ratpoison.h" - -#ifdef HAVE_X11_EXTENSIONS_XINERAMA_H -# include -# define XINERAMA -#endif - -int rp_have_xinerama = 0; -int xine_screen_count; - -#ifdef XINERAMA -static XineramaScreenInfo *xine_screens = NULL; -#endif - -void -init_xinerama(void) -{ -#ifdef XINERAMA - int evbase, errbase, major, minor; - - rp_have_xinerama = 0; - - if (xine_screens) XFree(xine_screens); - - if (!XineramaQueryExtension(dpy, &evbase, &errbase)) { - return; - } - - if (!XineramaQueryVersion(dpy, &major, &minor) != Success) { - return; - } - - if (major != 1) { - fprintf (stderr, "Warning: Xinerama version %d.%d not supported\n", major, minor); - return; - } - - if (!XineramaIsActive(dpy)) { - return; - } - - xine_screens = XineramaQueryScreens(dpy, &xine_screen_count); - if ((xine_screens == NULL) || (xine_screen_count < 2)) { - return; - } - - rp_have_xinerama = 1; -#else - rp_have_xinerama = 0; -#endif -} - -#ifdef XINERAMA -void xinerama_get_screen_info(int sc, int *x, int *y, int *w, int *h) -{ - if ((sc < xine_screen_count) && (sc >= 0)) { - *x = xine_screens[sc].x_org; - *y = xine_screens[sc].y_org; - *w = xine_screens[sc].width; - *h = xine_screens[sc].height; - } -} -#else -void xinerama_get_screen_info(int sc UNUSED, int *x UNUSED, int *y UNUSED, int *w UNUSED, int *h UNUSED) -{ -} -#endif - -void -free_xinerama(void) -{ -#ifdef XINERAMA - if (xine_screens) { - XFree(xine_screens); - } - rp_have_xinerama = 0; -#endif -} diff -Nru ratpoison-1.4.8/src/xinerama.h ratpoison-1.4.9/src/xinerama.h --- ratpoison-1.4.8/src/xinerama.h 2014-04-08 23:22:08.000000000 +0000 +++ ratpoison-1.4.9/src/xinerama.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,28 +0,0 @@ -/* Copyright (C) 2003 Cameron Patrick - * - * This file is part of ratpoison. - * - * ratpoison is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * ratpoison is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this software; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 59 Temple Place, Suite 330, - * Boston, MA 02111-1307 USA - */ - -#ifndef XINERAMA_H -#define XINERAMA_H - -void init_xinerama(void); -void free_xinerama(void); -void xinerama_get_screen_info(int sc, int *x, int *y, int *w, int *h); - -#endif diff -Nru ratpoison-1.4.8/src/xrandr.c ratpoison-1.4.9/src/xrandr.c --- ratpoison-1.4.8/src/xrandr.c 1970-01-01 00:00:00.000000000 +0000 +++ ratpoison-1.4.9/src/xrandr.c 2017-03-09 21:38:31.000000000 +0000 @@ -0,0 +1,265 @@ +/* functions for grabbing information about xrandr screens + * Copyright (C) 2016 Mathieu OTHACEHE + * + * This file is part of ratpoison. + * + * ratpoison is free software; you can redistribute it and/or moify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * ratpoison is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this software; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 59 Temple Place, Suite 330, + * Boston, MA 02111-1307 USA + */ + +#include "ratpoison.h" + +#include + +static int xrandr_evbase; + +#define XRANDR_MAJOR 1 +#define XRANDR_MINOR 3 + +void +init_xrandr (void) +{ + int errbase, major, minor; + + if (!XRRQueryExtension (dpy, &xrandr_evbase, &errbase)) { + return; + } + + if (XRRQueryVersion (dpy, &major, &minor) == 0) { + return; + } + + if (major != XRANDR_MAJOR || + (major == XRANDR_MAJOR && minor < XRANDR_MINOR)) { + PRINT_ERROR (("Xrandr version %d.%d is not supported\n", major, minor)); + return; + } + + XRRSelectInput (dpy, RootWindow (dpy, DefaultScreen(dpy)), + RRCrtcChangeNotifyMask | RROutputChangeNotifyMask); + + rp_have_xrandr = 1; +} + +int * +xrandr_query_screen (int *screen_count) +{ + XRRScreenResources *res; + XRROutputInfo *outinfo; + int *output_array; + int count = 0; + int i; + + res = XRRGetScreenResources (dpy, RootWindow (dpy, DefaultScreen (dpy))); + output_array = xmalloc (res->noutput * sizeof(int)); + + for (i = 0; i < res->noutput; i++) { + outinfo = XRRGetOutputInfo (dpy, res, res->outputs[i]); + if (!outinfo->crtc) + continue; + + output_array[count] = res->outputs[i]; + count++; + + XRRFreeOutputInfo (outinfo); + } + + *screen_count = count; + XRRFreeScreenResources (res); + + return output_array; +} + +static rp_screen * +xrandr_screen_output (int rr_output) +{ + rp_screen *cur; + + list_for_each_entry (cur, &rp_screens, node) + { + if (cur->xrandr.output == rr_output) + return cur; + } + + return NULL; +} + +static rp_screen * +xrandr_screen_crtc (int rr_crtc) +{ + rp_screen *cur; + + list_for_each_entry (cur, &rp_screens, node) + { + if (cur->xrandr.crtc == rr_crtc) + return cur; + } + + return NULL; +} + +int +xrandr_is_primary (rp_screen *screen) +{ + return screen->xrandr.primary; +} + +void +xrandr_fill_screen (int rr_output, rp_screen *screen) +{ + XRRScreenResources *res; + XRROutputInfo *outinfo; + XRRCrtcInfo *crtinfo; + RROutput primary; + + res = XRRGetScreenResourcesCurrent (dpy, RootWindow (dpy, DefaultScreen (dpy))); + outinfo = XRRGetOutputInfo (dpy, res, rr_output); + if (!outinfo->crtc) + goto free_res; + + crtinfo = XRRGetCrtcInfo (dpy, res, outinfo->crtc); + if (!crtinfo) + goto free_out; + + primary = XRRGetOutputPrimary (dpy, RootWindow (dpy, DefaultScreen (dpy))); + if (rr_output == primary) + screen->xrandr.primary = 1; + else + screen->xrandr.primary = 0; + + screen->xrandr.name = sbuf_new (0); + sbuf_concat (screen->xrandr.name, outinfo->name); + + screen->xrandr.output = rr_output; + screen->xrandr.crtc = outinfo->crtc; + + screen->left = crtinfo->x; + screen->top = crtinfo->y; + screen->width = crtinfo->width; + screen->height = crtinfo->height; + + XRRFreeCrtcInfo (crtinfo); + free_out: + XRRFreeOutputInfo (outinfo); + free_res: + XRRFreeScreenResources (res); +} + +static void +xrandr_output_change (XRROutputChangeNotifyEvent *ev) +{ + XRRScreenResources *res; + XRROutputInfo *outinfo; + rp_screen *screen; + + res = XRRGetScreenResourcesCurrent (dpy, RootWindow (dpy, DefaultScreen (dpy))); + outinfo = XRRGetOutputInfo (dpy, res, ev->output); + + screen = xrandr_screen_output (ev->output); + + if (!screen && outinfo->crtc) { + screen = screen_add (ev->output); + screen_sort (); + PRINT_DEBUG (("%s: Added screen %s with crtc %lu\n", __func__, + sbuf_get (screen->xrandr.name), + (unsigned long)outinfo->crtc)); + } else if (screen && !outinfo->crtc) { + PRINT_DEBUG (("%s: Removing screen %s\n", __func__, + sbuf_get (screen->xrandr.name))); + screen_del (screen); + } + + XRRFreeOutputInfo (outinfo); + XRRFreeScreenResources (res); +} + +#ifdef DEBUG +static const char * +xrandr_rotation_string (Rotation r) +{ + static char buf[64]; + +#define CASE(c) case c : return #c + switch (r) + { + CASE(RR_Rotate_0); + CASE(RR_Rotate_90); + CASE(RR_Rotate_180); + CASE(RR_Rotate_270); +#undef CASE + default: + snprintf(buf, sizeof buf, "Unknown rotation %hu", (unsigned short)r); + return buf; + } +} +#endif + +static void +xrandr_crtc_change (XRRCrtcChangeNotifyEvent *ev) +{ + rp_screen *screen; + + if (!ev->crtc || !ev->width || !ev->height) + return; + + screen = xrandr_screen_crtc (ev->crtc); + + PRINT_DEBUG (("%s: crtc %s, rotation %s " + "ev->x %d, ev->y %d, ev->width %d, ev->height %d\n", + __func__, screen ? "found" : "not found", + xrandr_rotation_string (ev->rotation), + ev->x, ev->y, ev->width, ev->height)); + + if (!screen) + return; + + if (ev->rotation == RR_Rotate_90 || ev->rotation == RR_Rotate_270) + screen_update (screen, ev->x, ev->y, ev->height, ev->width); + else + screen_update (screen, ev->x, ev->y, ev->width, ev->height); +} + +void +xrandr_notify (XEvent *ev) +{ + XRRNotifyEvent *n_event; + XRROutputChangeNotifyEvent *o_event; + XRRCrtcChangeNotifyEvent *c_event; + + if (ev->type != xrandr_evbase + RRNotify) + return; + + PRINT_DEBUG (("--- Handling RRNotify ---\n")); + + n_event = (XRRNotifyEvent *)ev; + switch (n_event->subtype) { + case RRNotify_OutputChange: + PRINT_DEBUG (("--- XRROutputChangeNotifyEvent ---\n")); + o_event = (XRROutputChangeNotifyEvent *)ev; + xrandr_output_change (o_event); + break; + case RRNotify_CrtcChange: + PRINT_DEBUG (("--- XRRCrtcChangeNotifyEvent ---\n")); + c_event = (XRRCrtcChangeNotifyEvent *)ev; + xrandr_crtc_change (c_event); + break; + case RRNotify_OutputProperty: + PRINT_DEBUG (("--- RRNotify_OutputProperty ---\n")); + break; + default: + PRINT_DEBUG (("--- Unknown subtype %d ---\n", n_event->subtype)); + break; + } +} diff -Nru ratpoison-1.4.8/src/xrandr.h ratpoison-1.4.9/src/xrandr.h --- ratpoison-1.4.8/src/xrandr.h 1970-01-01 00:00:00.000000000 +0000 +++ ratpoison-1.4.9/src/xrandr.h 2017-03-09 21:38:31.000000000 +0000 @@ -0,0 +1,33 @@ +/* + * Copyright (C) 2016 Mathieu OTHACEHE + * + * This file is part of ratpoison. + * + * ratpoison is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * ratpoison is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this software; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 59 Temple Place, Suite 330, + * Boston, MA 02111-1307 USA + */ + +#ifndef XRANDR_H +#define XRANDR_H + +#include "ratpoison.h" + +void init_xrandr(void); +int *xrandr_query_screen(int *screen_count); +int xrandr_is_primary (rp_screen *screen); +void xrandr_fill_screen(int rr_output, rp_screen *screen); +void xrandr_notify(XEvent *ev); + +#endif diff -Nru ratpoison-1.4.8/TODO ratpoison-1.4.9/TODO --- ratpoison-1.4.8/TODO 2014-09-14 14:47:18.000000000 +0000 +++ ratpoison-1.4.9/TODO 2017-04-02 22:54:36.000000000 +0000 @@ -1,35 +1,5 @@ -*- outline -*- -* command stuff -** general argument parsing strategy -Its a free for all right now. - -** The non-interactive functionality of help - -It should dump all the bindings in an easy to parse format. - -* implement these screen commands (see the screen info for documentation): -command ??? -hardcopy (screenshot) -lockscreen -msgminwait -nethack -redisplay -screen (ratpoison) -shell -shelltitle -sleep -sorendition -stuff ??? - * Pasting into input buffer Fix it. -* window name substring matching. -Do it. - -* allow letters and numbers to be used for frames (in fselect) - -* dump all all def* settings - -* get a set ... command going and create aliases for the def* stuff