From ab393a02816e7e76b763abd53a55cdf8a418c563 Mon Sep 17 00:00:00 2001 From: Alex Dukhan Date: Thu, 12 Feb 2026 21:06:03 +0000 Subject: [PATCH 1/5] Add COBOL syntax highlighting --- .gitmodules | 3 + assets/syntaxes/02_Extra/COBOL | 1 + tests/syntax-tests/highlighted/COBOL/test.cbl | 61 +++++++++++++++++++ tests/syntax-tests/source/COBOL/test.cbl | 61 +++++++++++++++++++ 4 files changed, 126 insertions(+) create mode 160000 assets/syntaxes/02_Extra/COBOL create mode 100644 tests/syntax-tests/highlighted/COBOL/test.cbl create mode 100644 tests/syntax-tests/source/COBOL/test.cbl diff --git a/.gitmodules b/.gitmodules index ee84fe05..b64280c6 100644 --- a/.gitmodules +++ b/.gitmodules @@ -278,3 +278,6 @@ [submodule "assets/syntaxes/02_Extra/Gomod"] path = assets/syntaxes/02_Extra/Gomod url = https://github.com/mitranim/sublime-gomod +[submodule "assets/syntaxes/02_Extra/COBOL"] + path = assets/syntaxes/02_Extra/COBOL + url = https://github.com/adukhan99/sublime_cobol.git diff --git a/assets/syntaxes/02_Extra/COBOL b/assets/syntaxes/02_Extra/COBOL new file mode 160000 index 00000000..90f88bf6 --- /dev/null +++ b/assets/syntaxes/02_Extra/COBOL @@ -0,0 +1 @@ +Subproject commit 90f88bf65f339be3b42d6c490bca0a4a85cefad0 diff --git a/tests/syntax-tests/highlighted/COBOL/test.cbl b/tests/syntax-tests/highlighted/COBOL/test.cbl new file mode 100644 index 00000000..11e19fe9 --- /dev/null +++ b/tests/syntax-tests/highlighted/COBOL/test.cbl @@ -0,0 +1,61 @@ +IDENTIFICATION DIVISION. +PROGRAM-ID. PAYROLL-CALC. + +DATA DIVISION. +WORKING-STORAGE SECTION. + 01 EMPLOYEE-DETAILS. + 05 EMPLOYEE-NAME PIC X(30). + 05 HOURS-WORKED PIC 99V9. + 05 HOURLY-RATE PIC 99V99. + 01 PAY-CALCULATIONS. + 05 GROSS-PAY PIC 9(5)V99. + 05 OVERTIME-HOURS PIC 99V9. + 05 OVERTIME-PAY PIC 9(5)V99. + 05 TAX-RATE PIC V99 VALUE 0.10. + 05 TAX-AMOUNT PIC 9(5)V99. + 05 NET-PAY PIC 9(5)V99. + +PROCEDURE DIVISION. +MAIN-LOGIC. + DISPLAY "--- COBOL Payroll Calculator ---". + + DISPLAY "Enter Employee Name: ". + ACCEPT EMPLOYEE-NAME. + + DISPLAY "Enter Hours Worked (e.g., 40.5): ". + ACCEPT HOURS-WORKED. + + DISPLAY "Enter Hourly Rate (e.g., 15.75): ". + ACCEPT HOURLY-RATE. + + PERFORM CALCULATE-GROSS-PAY. + PERFORM CALCULATE-TAX. + PERFORM CALCULATE-NET-PAY. + PERFORM DISPLAY-RESULTS. + + STOP RUN. + +CALCULATE-GROSS-PAY. + IF HOURS-WORKED > 40 THEN + COMPUTE OVERTIME-HOURS = HOURS-WORKED - 40 + COMPUTE OVERTIME-PAY = OVERTIME-HOURS * HOURLY-RATE * 1.5 + COMPUTE GROSS-PAY = (40 * HOURLY-RATE) + OVERTIME-PAY + ELSE + COMPUTE GROSS-PAY = HOURS-WORKED * HOURLY-RATE + END-IF. + +CALCULATE-TAX. + COMPUTE TAX-AMOUNT = GROSS-PAY * TAX-RATE. + +CALCULATE-NET-PAY. + COMPUTE NET-PAY = GROSS-PAY - TAX-AMOUNT. + +DISPLAY-RESULTS. + DISPLAY "----------------------------------". + DISPLAY "Employee Name: " EMPLOYEE-NAME. + DISPLAY "Hours Worked: " HOURS-WORKED. + DISPLAY "Hourly Rate: " HOURLY-RATE. + DISPLAY "Gross Pay: " GROSS-PAY. + DISPLAY "Tax (10%): " TAX-AMOUNT. + DISPLAY "Net Pay: " NET-PAY. + DISPLAY "----------------------------------". \ No newline at end of file diff --git a/tests/syntax-tests/source/COBOL/test.cbl b/tests/syntax-tests/source/COBOL/test.cbl new file mode 100644 index 00000000..ab552167 --- /dev/null +++ b/tests/syntax-tests/source/COBOL/test.cbl @@ -0,0 +1,61 @@ +IDENTIFICATION DIVISION. +PROGRAM-ID. PAYROLL-CALC. + +DATA DIVISION. +WORKING-STORAGE SECTION. + 01 EMPLOYEE-DETAILS. + 05 EMPLOYEE-NAME PIC X(30). + 05 HOURS-WORKED PIC 99V9. + 05 HOURLY-RATE PIC 99V99. + 01 PAY-CALCULATIONS. + 05 GROSS-PAY PIC 9(5)V99. + 05 OVERTIME-HOURS PIC 99V9. + 05 OVERTIME-PAY PIC 9(5)V99. + 05 TAX-RATE PIC V99 VALUE 0.10. + 05 TAX-AMOUNT PIC 9(5)V99. + 05 NET-PAY PIC 9(5)V99. + +PROCEDURE DIVISION. +MAIN-LOGIC. + DISPLAY "--- COBOL Payroll Calculator ---". + + DISPLAY "Enter Employee Name: ". + ACCEPT EMPLOYEE-NAME. + + DISPLAY "Enter Hours Worked (e.g., 40.5): ". + ACCEPT HOURS-WORKED. + + DISPLAY "Enter Hourly Rate (e.g., 15.75): ". + ACCEPT HOURLY-RATE. + + PERFORM CALCULATE-GROSS-PAY. + PERFORM CALCULATE-TAX. + PERFORM CALCULATE-NET-PAY. + PERFORM DISPLAY-RESULTS. + + STOP RUN. + +CALCULATE-GROSS-PAY. + IF HOURS-WORKED > 40 THEN + COMPUTE OVERTIME-HOURS = HOURS-WORKED - 40 + COMPUTE OVERTIME-PAY = OVERTIME-HOURS * HOURLY-RATE * 1.5 + COMPUTE GROSS-PAY = (40 * HOURLY-RATE) + OVERTIME-PAY + ELSE + COMPUTE GROSS-PAY = HOURS-WORKED * HOURLY-RATE + END-IF. + +CALCULATE-TAX. + COMPUTE TAX-AMOUNT = GROSS-PAY * TAX-RATE. + +CALCULATE-NET-PAY. + COMPUTE NET-PAY = GROSS-PAY - TAX-AMOUNT. + +DISPLAY-RESULTS. + DISPLAY "----------------------------------". + DISPLAY "Employee Name: " EMPLOYEE-NAME. + DISPLAY "Hours Worked: " HOURS-WORKED. + DISPLAY "Hourly Rate: " HOURLY-RATE. + DISPLAY "Gross Pay: " GROSS-PAY. + DISPLAY "Tax (10%): " TAX-AMOUNT. + DISPLAY "Net Pay: " NET-PAY. + DISPLAY "----------------------------------". \ No newline at end of file From 9f8ac934abbdbb3a71270356aa51f18e635df79f Mon Sep 17 00:00:00 2001 From: Alex Dukhan Date: Thu, 12 Feb 2026 21:43:34 +0000 Subject: [PATCH 2/5] Updated CHANGELOG.md --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index a628e329..0ef08a67 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -24,6 +24,7 @@ - Change the URL of Zig submodule from GitHub to Codeberg, see #3519 (@sorairolake) - Don't color strings inside CSV files, to make it easier to tell which column they belong to, see #3521 (@keith-hall) +- Add syntax highlighting support for COBOL, see #3479 (@adukhan99) ## Themes From 2b47f3c5eb314cdccc66319a8204304f75d22d5a Mon Sep 17 00:00:00 2001 From: Alex Dukhan Date: Thu, 12 Feb 2026 22:10:08 +0000 Subject: [PATCH 3/5] Updated CHANGELOG.md --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0ef08a67..181e1bc5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -24,7 +24,7 @@ - Change the URL of Zig submodule from GitHub to Codeberg, see #3519 (@sorairolake) - Don't color strings inside CSV files, to make it easier to tell which column they belong to, see #3521 (@keith-hall) -- Add syntax highlighting support for COBOL, see #3479 (@adukhan99) +- Add syntax highlighting support for COBOL, see #3584 (@adukhan99) ## Themes From 91965d28a6cebd6ed7aebc27f7c5b3d0b73d9261 Mon Sep 17 00:00:00 2001 From: Alex Dukhan Date: Wed, 11 Mar 2026 14:36:20 +0000 Subject: [PATCH 4/5] Add COBOL sans CPY ext --- assets/syntaxes/02_Extra/COBOL | 2 +- .../highlighted/COBOL/payroll.cbl | 61 +++++++++++++++++++ tests/syntax-tests/source/COBOL/payroll.cbl | 61 +++++++++++++++++++ 3 files changed, 123 insertions(+), 1 deletion(-) create mode 100644 tests/syntax-tests/highlighted/COBOL/payroll.cbl create mode 100644 tests/syntax-tests/source/COBOL/payroll.cbl diff --git a/assets/syntaxes/02_Extra/COBOL b/assets/syntaxes/02_Extra/COBOL index 90f88bf6..00a12937 160000 --- a/assets/syntaxes/02_Extra/COBOL +++ b/assets/syntaxes/02_Extra/COBOL @@ -1 +1 @@ -Subproject commit 90f88bf65f339be3b42d6c490bca0a4a85cefad0 +Subproject commit 00a12937cfff328f24db55ce7955682542cc872d diff --git a/tests/syntax-tests/highlighted/COBOL/payroll.cbl b/tests/syntax-tests/highlighted/COBOL/payroll.cbl new file mode 100644 index 00000000..11e19fe9 --- /dev/null +++ b/tests/syntax-tests/highlighted/COBOL/payroll.cbl @@ -0,0 +1,61 @@ +IDENTIFICATION DIVISION. +PROGRAM-ID. PAYROLL-CALC. + +DATA DIVISION. +WORKING-STORAGE SECTION. + 01 EMPLOYEE-DETAILS. + 05 EMPLOYEE-NAME PIC X(30). + 05 HOURS-WORKED PIC 99V9. + 05 HOURLY-RATE PIC 99V99. + 01 PAY-CALCULATIONS. + 05 GROSS-PAY PIC 9(5)V99. + 05 OVERTIME-HOURS PIC 99V9. + 05 OVERTIME-PAY PIC 9(5)V99. + 05 TAX-RATE PIC V99 VALUE 0.10. + 05 TAX-AMOUNT PIC 9(5)V99. + 05 NET-PAY PIC 9(5)V99. + +PROCEDURE DIVISION. +MAIN-LOGIC. + DISPLAY "--- COBOL Payroll Calculator ---". + + DISPLAY "Enter Employee Name: ". + ACCEPT EMPLOYEE-NAME. + + DISPLAY "Enter Hours Worked (e.g., 40.5): ". + ACCEPT HOURS-WORKED. + + DISPLAY "Enter Hourly Rate (e.g., 15.75): ". + ACCEPT HOURLY-RATE. + + PERFORM CALCULATE-GROSS-PAY. + PERFORM CALCULATE-TAX. + PERFORM CALCULATE-NET-PAY. + PERFORM DISPLAY-RESULTS. + + STOP RUN. + +CALCULATE-GROSS-PAY. + IF HOURS-WORKED > 40 THEN + COMPUTE OVERTIME-HOURS = HOURS-WORKED - 40 + COMPUTE OVERTIME-PAY = OVERTIME-HOURS * HOURLY-RATE * 1.5 + COMPUTE GROSS-PAY = (40 * HOURLY-RATE) + OVERTIME-PAY + ELSE + COMPUTE GROSS-PAY = HOURS-WORKED * HOURLY-RATE + END-IF. + +CALCULATE-TAX. + COMPUTE TAX-AMOUNT = GROSS-PAY * TAX-RATE. + +CALCULATE-NET-PAY. + COMPUTE NET-PAY = GROSS-PAY - TAX-AMOUNT. + +DISPLAY-RESULTS. + DISPLAY "----------------------------------". + DISPLAY "Employee Name: " EMPLOYEE-NAME. + DISPLAY "Hours Worked: " HOURS-WORKED. + DISPLAY "Hourly Rate: " HOURLY-RATE. + DISPLAY "Gross Pay: " GROSS-PAY. + DISPLAY "Tax (10%): " TAX-AMOUNT. + DISPLAY "Net Pay: " NET-PAY. + DISPLAY "----------------------------------". \ No newline at end of file diff --git a/tests/syntax-tests/source/COBOL/payroll.cbl b/tests/syntax-tests/source/COBOL/payroll.cbl new file mode 100644 index 00000000..ab552167 --- /dev/null +++ b/tests/syntax-tests/source/COBOL/payroll.cbl @@ -0,0 +1,61 @@ +IDENTIFICATION DIVISION. +PROGRAM-ID. PAYROLL-CALC. + +DATA DIVISION. +WORKING-STORAGE SECTION. + 01 EMPLOYEE-DETAILS. + 05 EMPLOYEE-NAME PIC X(30). + 05 HOURS-WORKED PIC 99V9. + 05 HOURLY-RATE PIC 99V99. + 01 PAY-CALCULATIONS. + 05 GROSS-PAY PIC 9(5)V99. + 05 OVERTIME-HOURS PIC 99V9. + 05 OVERTIME-PAY PIC 9(5)V99. + 05 TAX-RATE PIC V99 VALUE 0.10. + 05 TAX-AMOUNT PIC 9(5)V99. + 05 NET-PAY PIC 9(5)V99. + +PROCEDURE DIVISION. +MAIN-LOGIC. + DISPLAY "--- COBOL Payroll Calculator ---". + + DISPLAY "Enter Employee Name: ". + ACCEPT EMPLOYEE-NAME. + + DISPLAY "Enter Hours Worked (e.g., 40.5): ". + ACCEPT HOURS-WORKED. + + DISPLAY "Enter Hourly Rate (e.g., 15.75): ". + ACCEPT HOURLY-RATE. + + PERFORM CALCULATE-GROSS-PAY. + PERFORM CALCULATE-TAX. + PERFORM CALCULATE-NET-PAY. + PERFORM DISPLAY-RESULTS. + + STOP RUN. + +CALCULATE-GROSS-PAY. + IF HOURS-WORKED > 40 THEN + COMPUTE OVERTIME-HOURS = HOURS-WORKED - 40 + COMPUTE OVERTIME-PAY = OVERTIME-HOURS * HOURLY-RATE * 1.5 + COMPUTE GROSS-PAY = (40 * HOURLY-RATE) + OVERTIME-PAY + ELSE + COMPUTE GROSS-PAY = HOURS-WORKED * HOURLY-RATE + END-IF. + +CALCULATE-TAX. + COMPUTE TAX-AMOUNT = GROSS-PAY * TAX-RATE. + +CALCULATE-NET-PAY. + COMPUTE NET-PAY = GROSS-PAY - TAX-AMOUNT. + +DISPLAY-RESULTS. + DISPLAY "----------------------------------". + DISPLAY "Employee Name: " EMPLOYEE-NAME. + DISPLAY "Hours Worked: " HOURS-WORKED. + DISPLAY "Hourly Rate: " HOURLY-RATE. + DISPLAY "Gross Pay: " GROSS-PAY. + DISPLAY "Tax (10%): " TAX-AMOUNT. + DISPLAY "Net Pay: " NET-PAY. + DISPLAY "----------------------------------". \ No newline at end of file From 927873392b87e50b349c2ec11a0d07d5f400d3de Mon Sep 17 00:00:00 2001 From: Alex Dukhan Date: Wed, 11 Mar 2026 15:06:47 +0000 Subject: [PATCH 5/5] Drop .ss extension from COBOL --- assets/syntaxes/02_Extra/COBOL | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/assets/syntaxes/02_Extra/COBOL b/assets/syntaxes/02_Extra/COBOL index 00a12937..27825ee0 160000 --- a/assets/syntaxes/02_Extra/COBOL +++ b/assets/syntaxes/02_Extra/COBOL @@ -1 +1 @@ -Subproject commit 00a12937cfff328f24db55ce7955682542cc872d +Subproject commit 27825ee0220fb7fee73617f7404d4d214dc71b8f