summaryrefslogtreecommitdiff
path: root/Compose
diff options
context:
space:
mode:
Diffstat (limited to 'Compose')
-rw-r--r--Compose/Makefile113
-rw-r--r--Compose/configure.sh93
-rw-r--r--Compose/src/base.module1
-rw-r--r--Compose/src/greek.module1
-rw-r--r--Compose/src/klingon.module3
-rw-r--r--Compose/src/lang.module1
-rw-r--r--Compose/src/math.module1
-rw-r--r--Compose/src/roman.module1
8 files changed, 177 insertions, 37 deletions
diff --git a/Compose/Makefile b/Compose/Makefile
index ee4d024..cc1f7d5 100644
--- a/Compose/Makefile
+++ b/Compose/Makefile
@@ -1,60 +1,101 @@
-SRC = ./src
+#
+# Neo/Compose/Makefile
+# Autor: hcw@gmx.de
-DEFAULTS = \
- base \
- base_math \
- base_greek \
- base_math_greek_lang \
- base_greek_lang \
- base_roman
+# Ort der Modul-Dateien
+#
+SRC = ./src
+MODULES_FILES = $(wildcard $(SRC)/*.module)
+MODULES = $(notdir $(basename $(MODULES_FILES)))
-MODULES_SRC = $(wildcard $(SRC)/*.module)
-MODULES = $(notdir $(basename $(MODULES_SRC)))
+# Liste von Demofiles, werden bei 'make all' erzeugt.
+# Im Grunde ist dies seit 'make config' überflüssig.
+#
+DEMOFILES = \
+ XCompose_base \
+ XCompose_base_math \
+ XCompose_base_math_greek_lang \
+ XCompose_base_greek_lang \
+ XCompose_base_roman
+# Hilfsprogramme
+#
CHECKCOMPOSE = ./check-compose.pl
+CONFIGURE = /bin/bash ./configure.sh
+
+# Nutzerkonfiguration für Zusammenstellung der Datei XCompose.
+# Datei .config wird von 'make config' interaktiv geschrieben.
+# Defaultwert, falls .config noch nicht existiert.
+#
+-include ./.config
+USER_XCOMPOSE ?= XCompose_base_math
+
+#
+# 'make' bzw. 'make all' erzeugt die Datei XCompose ohne Installation
+#
+
+all : XCompose $(DEMOFILES)
+
+#
+# 'make config' führt interaktive Abfrage der Konfiguration durch
+# und legt Ergebnis in .config ab
+#
+
+config :
+ $(CONFIGURE) $(MODULES)
-help :
- @echo Available modules: $(MODULES).
- @echo Type \`make XCompose_mod1_mod2_mod3\' to create
- @echo " " compose file from modules \`mod1\', \`mod2\', and \`mod3\'.
- @echo Type \`make all\' to create default file set.
- @echo Type \`make clean\' to cleanup directory.
- @echo Copy the file XCompose_mod1_mod2_mod3 to \~/.XCompose afterwards.
-
-all : $(addprefix XCompose_, $(DEFAULTS))
-
-XCompose%: $(MODULES_SRC)
- @echo Creating file $@
- echo "#" >$@
- echo "# Automatically generated file. Do not edit." >>$@
- echo "#" >>$@
- for i in \
- `echo $@ | sed -e 's/XCompose//;s/_/ /g'`;\
+#
+# 'make XCompose_foo_bar_baz' erzeugt Datei aus Modulen foo bar baz
+#
+
+XCompose_% : $(MODULES_FILES)
+ @echo "Erzeuge $@."
+ @echo "#" >$@
+ @echo "# Automatically generated file $@. Do not edit." >>$@
+ @echo "#" >>$@
+ @for i in \
+ `echo $@ | sed -e 's/XCompose//;s/_/ /g'` ;\
do \
- fn=$(SRC)/$$i.module;\
+ fn=$(SRC)/$$i.module ;\
if [ -e $$fn ]; then \
echo "# begin include module $$i" >>$@ ;\
cat $$fn >>$@ ;\
echo "# end include module $$i" >>$@ ;\
else \
- echo "*** Warning: file $$fn not found";\
+ echo "*** Warnung: Datei $$fn kann nicht eingebunden werden" ;\
fi \
done
-XCompose : XCompose_base
+XCompose : $(USER_XCOMPOSE) $(wildcard .config)
cp $< $@
-check :
- @for i in XCompose*; do \
+#
+# Installiere ins Homeverzeichnis
+#
+
+install : XCompose
+ cp XCompose $${HOME}/.XCompose
+
+#
+# Test der XCompose-Dateien auf Korrektheit
+#
+
+check :
+ @for i in $(wildcard XCompose*) ; do \
$(CHECKCOMPOSE) -q $$i || (\
- echo Problem in file $$i. ;\
- echo Run \`$(CHECKCOMPOSE) $$i\' for more details. ); done
+ echo Problem in Datei $$i. ;\
+ echo Mehr Informationen mit \`$(CHECKCOMPOSE) $$i\'. ); done
+
+#
+# weitere Standard-Targets
+#
clean :
-rm -f XCompose_*
-rm -f XCompose
+distclean : clean
+ -rm -f .config
-
-.PHONY : clean help check
+.PHONY : all config check clean distclean install
diff --git a/Compose/configure.sh b/Compose/configure.sh
new file mode 100644
index 0000000..a0eb5e0
--- /dev/null
+++ b/Compose/configure.sh
@@ -0,0 +1,93 @@
+# Erzeuge Konfiguration in .config
+#
+# Aufruf erfolgt über Makefile mittels 'make config'
+#
+# Autor: hcw@gmx.de
+
+#
+# Kommandozeilenparameter: Liste der verfügbaren Module
+MODULES=$*
+
+# Pfade und Dateinamen
+CONFFILE=.config
+MODPATH=./src
+MODSUFFIX=.module
+
+if [ ! -e $CONFFILE ] ; then
+ # leere Konfiguration erzeugen
+ echo "USER_XCOMPOSE = base " > $CONFFILE
+fi
+
+#
+# verfügbare Module auslesen und Kurzbeschreibung anzeigen
+#
+
+selprompt=
+PS3="Gewählte Module sind mit '+' gekennzeichnet.
+Auswahl (angegebene Ziffer oder 0 für Ende) > "
+
+echo Verfügbare Module für XCompose:
+for i in ${MODULES}; do
+ sed -n "
+/^#configinfo[ \t]*/{
+ s//$i /
+ s/^\(.\{10\}\) */\1/
+ p;q
+}
+
+\${
+ s/.*/$i - ohne Beschreibung/
+ s/^\(.\{10\}\) */\1/
+ p
+}" ${MODPATH}/${i}${MODSUFFIX}
+
+ if grep -q $i $CONFFILE; then
+ selprompt="${selprompt} ${i}+ ";
+ else
+ selprompt="${selprompt} ${i} ";
+ fi
+done
+echo
+
+#
+# Nutzereingabe
+#
+
+again=true
+
+while ${again} ; do
+ again=false
+ select MOD in ${selprompt}; do
+ case "X$MOD" in
+ X)
+ if [ "X$REPLY" != "X0" ]; then again=true; fi ;;
+ *)
+ again=true
+ selprompt=`echo $selprompt | sed "s/$MOD/$MOD+/;s/++//"` ;;
+ esac
+ break
+ done
+done
+
+#
+# Configfile erzeugen
+#
+
+echo $selprompt | sed '
+s/$/ / # letztes Wort mit Leerzeichen abschließen
+s/[^ +]\+ / /g # Wörter ohne plus am Ende löschen
+s/+//g # alle Pluszeichen löschen
+s/^ *// # Leerzeichen am Anfang und Ende löschen
+s/ *$// # Leerzeichen am Anfang und Ende löschen
+s/ \+/_/g # Leerzeichen normalisieren
+s/^/USER_XCOMPOSE = XCompose_/
+' > $CONFFILE
+
+echo
+echo Gewählte Module:
+cat $CONFFILE
+
+grep -q base $CONFFILE || echo "*** Warnung: Modul 'base' wurde nicht gewählt."
+
+echo
+echo "Weiter mit 'make' bzw. 'make install'"
diff --git a/Compose/src/base.module b/Compose/src/base.module
index 9ec661a..706b8dc 100644
--- a/Compose/src/base.module
+++ b/Compose/src/base.module
@@ -1,3 +1,4 @@
+#configinfo Standard-Definitionen (weitgehend auch außerhalb Neo verwendet)
# standard Definitions by Neo keyboard layout
# diacritical marks
diff --git a/Compose/src/greek.module b/Compose/src/greek.module
index ce64cb9..b7c0f00 100644
--- a/Compose/src/greek.module
+++ b/Compose/src/greek.module
@@ -1,3 +1,4 @@
+#configinfo Griechische Buchstaben mit Akzenten
# additional Definitions by Neo keyboard layout - greek letters
diff --git a/Compose/src/klingon.module b/Compose/src/klingon.module
index 5596d75..2f7f1a8 100644
--- a/Compose/src/klingon.module
+++ b/Compose/src/klingon.module
@@ -1,4 +1,4 @@
-# Autogenerated list of Klingon Numericals (k0-k3999, K0-K3999)
+# Autogenerated list of Klingon Numericals (k0-k3999, K0-K3999)
#
# File encoding: UTF-8
# File format: Linux-Compose-Definitions
@@ -6,6 +6,7 @@
# Licence (short name): CC-BY-SA 3.0 DE
# Licence (full name): Creative Commons Namensnennung-Weitergabe unter gleichen Bedingungen 3.0 Deutschland
# Licence-URL: http://creativecommons.org/licenses/by-sa/3.0/de/
+#configinfo Klingonische Zahlen 0 bis 3999
<Multi_key> <k> <0> <space> : "pagh" # KLINGON NUMERAL 0
diff --git a/Compose/src/lang.module b/Compose/src/lang.module
index 8789511..104bd46 100644
--- a/Compose/src/lang.module
+++ b/Compose/src/lang.module
@@ -1,3 +1,4 @@
+#configinfo IPA (international phonetic alphabet)
# IPA-Compose by aleχ, 2009, CC-BY-SA DE 3.
<Multi_key> <B> <B> : "ʙ" U0299 # LATIN LETTER SMALL CAPITAL B
diff --git a/Compose/src/math.module b/Compose/src/math.module
index 48cfbad..f0538df 100644
--- a/Compose/src/math.module
+++ b/Compose/src/math.module
@@ -1,3 +1,4 @@
+#configinfo mathematische Sonderzeichen
# additional Definitions by Neo keyboard layout - mathematical symbols
diff --git a/Compose/src/roman.module b/Compose/src/roman.module
index 9f04bd0..b5aca2b 100644
--- a/Compose/src/roman.module
+++ b/Compose/src/roman.module
@@ -6,6 +6,7 @@
# Licence (short name): CC-BY-SA 3.0 DE
# Licence (full name): Creative Commons Namensnennung-Weitergabe unter gleichen Bedingungen 3.0 Deutschland
# Licence-URL: http://creativecommons.org/licenses/by-sa/3.0/de/
+#configinfo römische Zahlen 1 bis 3999
<Multi_key> <r> <1> <space> : "ⅰ" # SMALL ROMAN NUMERAL 1