diff --git a/src/languages/fortran.js b/src/languages/fortran.js index cbe33fe642..e2ddbe8492 100644 --- a/src/languages/fortran.js +++ b/src/languages/fortran.js @@ -11,6 +11,14 @@ export default function(hljs) { begin: '\\(', end: '\\)' }; + var COMMENT = { + variants: [ + hljs.COMMENT('!', '$', {relevance: 0}), + // allow Fortran 77 style comments + hljs.COMMENT('^C', '$', {relevance: 0}) + ] + } + var F_KEYWORDS = { literal: '.False. .True.', keyword: 'kind do concurrent local shared while private call intrinsic where elsewhere ' + @@ -66,7 +74,13 @@ export default function(hljs) { illegal: '[${=\\n]', contains: [hljs.UNDERSCORE_TITLE_MODE, PARAMS] }, - hljs.COMMENT('!', '$', {relevance: 0}), + // allow C = value for assignments so they aren't misdetected + // as Fortran 77 style comments + { + begin: /^C\s*=(?!=)/, + relevance:0, + }, + COMMENT, { className: 'number', // regex in both fortran and irpf90 should match diff --git a/test/markup/fortran/comments.expect.txt b/test/markup/fortran/comments.expect.txt new file mode 100644 index 0000000000..ba78a37f63 --- /dev/null +++ b/test/markup/fortran/comments.expect.txt @@ -0,0 +1,13 @@ +C +C This program in FORTRAN 77 outputs "Hello, World!". +C ==================================================== + + !=============================== + ! This is a test subroutine + !=============================== + +! another comment + +C=2 +C = 2 !correct +C ='boo' diff --git a/test/markup/fortran/comments.txt b/test/markup/fortran/comments.txt new file mode 100644 index 0000000000..6127dbc32e --- /dev/null +++ b/test/markup/fortran/comments.txt @@ -0,0 +1,13 @@ +C +C This program in FORTRAN 77 outputs "Hello, World!". +C ==================================================== + + !=============================== + ! This is a test subroutine + !=============================== + +! another comment + +C=2 +C = 2 !correct +C ='boo'