Package: enscript Version: 1.6.4-10 Severity: wishlist Tags: patch GNU Octave is a clone of Matlab and, being free software, should be given the preference in Debian. The Octave language has some extensions as regards Matlab and a new states file for enscript is then justified.
Please consider applying the patch attached below for replacing the Matlab rules by the Octave ones. The patch inlcudes an octave.st file written by by Yours Truly. It also patches enscript.st such that *.m files will be highlighted with octave.st, instead of matlab.st. The octave.st file is currently included in the octave2.9 package, but we agreed that it would be better if it is integrated into enscript (cf Bug#457191) Thanks, Rafael Laboissiere -- System Information: Debian Release: testing/unstable APT prefers gutsy APT policy: (500, 'gutsy'), (500, 'unstable') Architecture: i386 (i686) Shell: /bin/sh linked to /bin/dash Kernel: Linux 2.6.18-3-686 Locale: LANG=en_US, LC_CTYPE=en_US (charmap=ISO-8859-1) Versions of packages enscript depends on: ii libc6 2.7-3 GNU C Library: Shared libraries ii libpaper1 1.1.23 library for handling paper charact enscript recommends no packages. -- no debconf information
--- enscript-1.6.4.orig/states/hl/Makefile.in 2007-12-20 23:36:07.000000000 +0100 +++ enscript-1.6.4/states/hl/Makefile.in 2007-12-20 23:36:24.000000000 +0100 @@ -189,7 +189,8 @@ postscript.st python.st pyrex.st rfc.st scheme.st sh.st skill.st \ sql.st states.st synopsys.st tcl.st tcsh.st tex.st vba.st verilog.st \ vhdl.st vrml.st wmlscript.st zsh.st eiffel.st erlang.st dylan.st oz.st \ -lua.st oberon2.st icon.st smalltalk.st forth.st sml.st ruby.st +lua.st oberon2.st icon.st smalltalk.st forth.st sml.st ruby.st \ +octave.st states = $(misc) $(styles) $(languages) $(highlightings) --- enscript-1.6.4.orig/states/hl/enscript.st 2007-12-20 23:40:39.000000000 +0100 +++ enscript-1.6.4/states/hl/enscript.st 2007-12-20 23:41:04.000000000 +0100 @@ -471,7 +471,7 @@ { /\.(c|h)$/ c; /\.(c++|C|H|cpp|cc|cxx)$/ cpp; - /\.m$/ matlab; + /\.m$/ octave; /\.(mpl|mp|maple)$/ maple; /\.(scm|scheme)$/ scheme; /\.e$/ eiffel; --- enscript-1.6.4.orig/states/hl/octave.st +++ enscript-1.6.4/states/hl/octave.st @@ -0,0 +1,178 @@ +/** + * Name: octave + * Description: Octave programming language. + * Author: Rafael Laboissiere <[EMAIL PROTECTED]> + * (based on the Matlab version by Jack Dunn <[EMAIL PROTECTED]>) + */ + +octave_keyword_re = +/\b(break|cl(ear|ose)|e(nd|lse|lseif|rror)|end(if|f(or|unction)|switch|while)|f(or|unction)|if|keyboard|otherwise \ +|quit|return|switch|while)\b/; + +/* Taken fron the Matlab Function Reference, version 5.2 */ +octave_type_re = +/\b(abs|acopy|acos|acosh|acot|acoth|acsc|acsch|addpath|airy|all|and|angle|ans|any\ +|arc(cosecant|cosine|cotangent|secant|sine|tangent)|area\ +|arename|asech|asin|asinh|atan(|2)|atanh|axes|axis|balance|bar(|3|3h|h)\ +|base2dec|bessel(h|i|j|k|y)|beta(|inc|ln)\ +|bicgstab|bin2dec|bit(and|cmp|get|max|or|set|shift|xor)|blanks\ +|box|brighten|builtin|calendar|cam(dolly|light|lookat|orbit|pan|pos|proj\ +|roll|target|up|va|zoom)|capture|case|cat(|ch)|caxis|cd|cdf2rdf\ +|cell(|2struct|plot)|cgs|char|chol(|inc|update)|cla(|bel|ss)\ +|clc|clf|clock|col(mmd|or(bar|map)|perm)|com(bs|et|et3|pa(n|ss))|computer\ +|cond(|eig|est)|conj|con(tour(|3|c|f))|contrast|conv(|2)|convhull|conv\ +|copy(file|obj)|corrcoef|cos|cosh|cot|coth|cov|cplxpair|cputime|cross\ +|csc|csch|cum(prod|trapz)|cylinder|daspect|date|date(num|str|vec)\ +|db(clear|cont|down|mex|quit|stack|status|step|stop|type|up)\ +|dd(eadv|eexec|einit|epoke|ereq|eterm|eunadv)|de(al|blank|(c2(base|bin|hex))\ +|conv)|default4|del2|delaunay|de(lete|t)|diag|diary|diff|dir|disp\ +|dlm(read|writ)|dmperm|double|dragrect|drawnow|dsearch|echo|eig|eigs|ellipj\ +|ellipke|eomday|eps|erf(|c|cx)|etime|eval|evalin|exist|exp|expint|expm|eye\ +|ezplot|factor|fclose|feather|feof|ferror|feval|fft(|2|n|shift)\ +|fget(l|s)|fid|figflag|figure|fileparts|fill|fill3|filter(|2)|find(|obj|str)\ +|fix|flip(dim|lr|ud)|floor|flops|fmin(|s)|fopen|format|fplot|fprintf\ +|frame(2im|edit)|fread|freqspace|frewind|fscanf|fseek|ftell|full|funm|fwrite\ +|fzero|gallery|gamma(|inc|ln)|g(ca|cd|cf|co)|gestalt|get(|field|frame)\ +|ginput|global|gmres|gplot|gradient|graymon|grid(|data)|gsvd|gtext|hadamard\ +|hankel|hdf|help|hess|hex2(dec|num)|hidden|hilb|hist|hold|home|horzcat\ +|hsv2rgb|i|ifft(|2|n|shift)|im2frame|imag|image|imagesc|im(finfo|read|write)\ +|ind2sub|Inf|inferiorto|inline|inpolygon|input|int2str|interp(1|2|3|ft|n)\ +|intersect|inv|invhilb|ipermute|is(a|cell(|str)|char|empty|equal|field\ +|finite|global|handle|hold|ieee|inf|letter|logical|member|nan|numeric\ +|object|ppc|prime|real|space|sparse|str|struct|student|unix|vms)\ +|j|kron|last(err|warn)|lcm|ldivide|legend(|re)|length|light(|angle|ing)\ +|lin2mu|line|linspace|load|log(|10|2|ical)|loglog(|m|space)|lookfor\ +|lower|lscov|lu|luinc|magic|mat2str|material|max|mean|median|menu\ +|mesh(|c|grid|z)|min|minus|mislocked|mkdir|ml(divide|ock)|mod|more|movie(|in)\ +|mpower|mrdivide|mtimes|mu2lin|munlock|NaN|narg(chk|in|out)|nd(grid|ims)\ +|newplot|nextpow2|nnls|nnz|nonzeros|norm|normest|not|now|null|num2(cell|str)\ +|nzmax|ode(45|file|get|set)|ones|or|orient|orth|pack|pagedlg|pareto|pascal\ +|patch|path|pause|pbaspect|pcg|pcode|pcolor|perms|permute|persistent\ +|pi|pie(|,3)|pinv|plot(|3|matrix|yy)|plus|pol2cart|polar|poly(|area|der\ +|eig|fit|val|valm)|pow2|power|primes|print(|dlg|frame|opt)|prod\ +|profile|qmr|qr(|delete|insert)|qtwrite|quad|quad8|quiver(|3)|qz\ +|rand(|n|perm)|rank|rat(|s)|rbbox|rcond|rdivide|readsnd|real(|max|min)\ +|recordsound|refresh|rem|repmat|reset|reshape|residue|rgb(2hsv|plot)\ +|ribbon|rmfield|rmpath|roots|rose|rot90|rotate(|3d)|round|rref(|movie)\ +|rsf2csf|save|scatter(|3)|schur|script|sech|semilog(x|y)|set(|diff|feild|xor)\ +|shading|shiftdim|sign|sin|sinh|size|slice|sliders|sort|sortrows|sound(|cap)\ +|sp(alloc|arse|convert|diags|eak|eye|fun|h2cart|here|inmap|line\ +|ones|parms|rand|randn|randsym|rintf|y)|sqrt(|m)|squeeze|sscanf|stairs\ +|startup|std|stem(|3)|str(2(cell|num)|cat|cmp|cmpi|ings|just|match|ncmp\ +|ncmpi|rep|tok|uct2cell,vcat)|sub(2ind|plot|s(asgn|pace|ref))|sum|superiorto\ +|surf(|ace|c|l|norm)|svd(|s)|sym(mmd|rcm)|tan|tanh|tempdir|tempname\ +|terminal|text|tic|times|title|toc|toeplitz|trace|transpose|trapz\ +|tri(l|mesh|surf|u)|try|tsearch|type|ui(control|getfile|menu|nt8|putfile\ +|resume|setcolor|setfont)|uminus|union|unique|unwrap|uplus|upper|varargout\ +|vectorize|ver(|sion|tcat)|view|viewmtx|voronoi|wait(bar|for(|buttonpress))\ +|warndlg|warning|waterfall|wav(read|write)|weekday|what(|snew)|which|who(|s)\ +|wilkinson|wk1(read|write)|writesnd|xlabel|xlgetrange|xlim|xlsetrange|xor\ +|ylabel|ylim|zeros|zlabel|zlim|zoom\ +)\b/; + +state octave_string_single_quotes extends Highlight +{ + /\\\\./ { + language_print ($0); + } + /[\']/ { + language_print ($0); + return; + } +} + +state octave_string_double_quotes extends Highlight +{ + /\\\\./ { + language_print ($0); + } + /"/ { + language_print ($0); + return; + } +} + +state octave extends HighlightEntry +{ + /* Comments. */ + /(%|#)/ { + comment_face (true); + language_print ($0); + call (eat_one_line); + comment_face (false); + } + + /* Continuation. */ + /\.\.\./ { + keyword_face (true); + language_print ($0); + keyword_face (false); + } + + /* Matrix start. */ + /\[/ { + type_face (true); + language_print ($0); + type_face (false); + } + + /* Matrix end. */ + /\]/ { + type_face (true); + language_print ($0); + type_face (false); + } + + octave_type_re { + type_face (true); + language_print ($0); + type_face (false); + } + + octave_keyword_re { + keyword_face (true); + language_print($0); + keyword_face (false); + } + + /* Transpose. */ + /* variable' or )' */ + /([a-zA-Z][a-zA-Z_0-9]*|\))([\'])/ { + language_print ($1); + keyword_face (true); + language_print ($2); + keyword_face (false); + } + /* ]' */ + /([a-zA-Z][a-zA-Z_0-9]*|])([\'])/ { + type_face (true); + language_print ($1); + type_face (false); + keyword_face (true); + language_print ($2); + keyword_face (false); + } + + /* Strings. */ + /* 'any number of characters' */ + /[\']/ { + string_face (true); + language_print ($0); + call (octave_string_single_quotes); + string_face (false); + } + /* "any number of characters" */ + /["]/ { + string_face (true); + language_print ($0); + call (octave_string_double_quotes); + string_face (false); + } +} + + +/* +Local variables: +mode: c +End: +*/