import string
import sys
import time
+import subprocess
COMMENT = 'COMMENT'
STRING = 'STRING'
CXX = 'C++'
verbose_p = 0
indent_p = 1
+PREFERRED_ASTYLE_VERSION = "Artistic Style Version 2.04"
+
rules = {
GLOBAL_CXX:
],
CXX:
[
- # space before parenthesis open
+ # space before parenthesis open; astyle -xd does this except for foo().
('([\w\)\]])\(', '\\1 ('),
# delete inline double spaces
('(\S) +', '\\1 '),
('([\w\(\)\]]) +(&&|\|\||<=|>=|!=|\|=|==|\+=|-=|\*=|/=|\?|<|>|\+|-|=|/|:|&|\||\*) +([\w\(\)])', '\\1 \\2 \\3'),
# trailing operator, but don't un-trail close angle-braces > nor pointer *, and not before a preprocessor line
- (' (::|&&|\|\||<=|>=|!=|\|=|==|\+=|-=|\*=|/=|\?|<|\+|-|=|/|:|&XXX|\||\*XXX) *\n( *)([^\s#])', '\n\\2\\1 \\3'),
+ ('(?<!\s) (::|&&|\|\||<=|>=|!=|\|=|==|\+=|-=|\*=|/=|\?|<|\+|-|=|/|:|&XXX|\||\*XXX) *\n( *)([^\s#])', '\n\\2\\1 \\3'),
# space after `operator'
('(\Woperator) *([^\w\s])', '\\1 \\2'),
# trailing parenthesis open
'string':
r'''(?x)
+ " # leave the leading " character visible to CXX rules
(?P<match>
(?P<code>
- "([^"\n]|\\")*"))''',
+ ([^"\n]|\\")*"))''',
'char':
r'''(?x)
indent_file (fixt)
def indent_file (file):
+ # Astyle aborts on unrecognized options,
+ # so wait until everyone has 2.04 before considering:
+ # --attach-namespaces --indent-namespaces \
+ # --max-code-length=80 --pad-first-paren-out \
astyle = '''astyle\
--options=none --quiet -n \
--style=gnu --indent=spaces=2 \
Options:
--help
--lazy skip astyle, if no changes
+ --sloppy accept any astyle version
--verbose
--test
indent_p = 0
elif o == '--outdir':
outdir = a
+ elif o == '--sloppy':
+ PREFERRED_ASTYLE_VERSION = "Artistic Style"
elif o == '--verbose':
verbose_p = 1
elif o == '--test':
sys.exit (2)
return files
+def check_astyle_version():
+ cmd = "astyle --version"
+ process = subprocess.Popen(cmd, shell=True, stderr=subprocess.PIPE)
+ stdout, stderr = process.communicate()
+ if PREFERRED_ASTYLE_VERSION in stderr:
+ return True
+ return False
+
outdir = 0
format = CXX
def main ():
files = do_options ()
+ if not check_astyle_version():
+ print "Warning: try to use %s." % PREFERRED_ASTYLE_VERSION
+ print "Please limit use of this version to files with changed code."
+ if len(files) > 4:
+ print "Too many files with this version. See `astyle --help`"
+ sys.exit(1)
if outdir and not os.path.isdir (outdir):
os.makedirs (outdir)
for i in files:
typedef std::map < AFM_Ligature const *, int > Bar;
/**
- Copyright (C) 1997--2011 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+ Copyright (C) 1997--2015 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
/* ||
while (foe);
squiggle. extent;
- 1 && * unsmob_moment (lf);
+ 1 && * Moment::unsmob (lf);
line_spanner_ = make_spanner ("DynamicLineSpanner", rq ? rq->*self_scm
(): SCM_EOL);
case foo: k;