34CLANG_OFF=
'// clang-format off\n'
35NOTIFICATION_LINE=
'// modelines: These editor modelines have been set for all relevant files by tools/update_modelines.py\n'
36VIM_MODELINE=
'// vim: shiftwidth=2 expandtab tabstop=2 cindent\n'
37KATE_MODELINE=
'// kate: tab-indents: off; indent-width 2; replace-tabs on; indent-mode cstyle; remove-trailing-spaces modified;\n'
38CLANG_ON=
'// clang-format on\n'
55 with open(self.
filename,
'r')
as file:
56 self.
lines = file.readlines()
60 if(line.startswith(CLANG_OFF)):
61 self.
state=estate.start
63 elif(self.
state == estate.start):
64 if(line.startswith(
'// modelines:')):
65 self.
state=estate.inside
68 self.
state=estate.none
70 elif(self.
state == estate.inside):
71 if(line.startswith(CLANG_ON)):
75 elif(self.
state == estate.end):
79 self.
state=estate.none
83 with open(self.
filename,
'w')
as file:
84 for lineno,line
in enumerate(self.
lines):
85 if((lineno >= self.
begin)
and (lineno <= self.
end)):
87 if(line.startswith(
'// modelines')):
89 if(line.startswith(
'// vim')):
91 if(line.startswith(
'// kate')):
96 with open(self.
filename,
'a')
as file:
98 file.write(NOTIFICATION_LINE)
99 file.write(VIM_MODELINE)
100 file.write(KATE_MODELINE)
104 print(
'parsing {}'.format(self.
filename));
106 for lineno,line
in enumerate(self.
lines):
109 raise RuntimeError(
"parsing error")
110 print(
'removing old modelines')
112 print(
'writing file')
117if __name__ ==
"__main__":
119 args = shlex.split(
'sh -c \'find src/ -name "*.c" -or -name "*.cc" -or -name "*.h" | grep -v src/external\'')
120 ret = subprocess.run(args,capture_output=
True)
121 if ret.returncode != 0:
122 print(ret.stderr.decode(sys.stderr.encoding))
123 raise RuntimeError(
"error listing files")
124 files = ret.stdout.decode(sys.stdout.encoding).split(
'\n')
126 if (
not file.strip()):
process_line(self, line, lineno)