From 0af9a35ff166681f333db5dbe2ec0033fa7fea4e Mon Sep 17 00:00:00 2001 From: Maickel Hubner Date: Sat, 14 Oct 2017 14:12:16 -0300 Subject: [PATCH] Create association with OpenEdge .w files (#3648) * Update heuristics.rb * Update languages.yml * Create consmov.w * Create menu.w * Switch out large samples for smaller ones * Relax regex --- lib/linguist/heuristics.rb | 9 ++ lib/linguist/languages.yml | 1 + samples/OpenEdge ABL/test-win.w | 230 ++++++++++++++++++++++++++++++++ 3 files changed, 240 insertions(+) create mode 100644 samples/OpenEdge ABL/test-win.w diff --git a/lib/linguist/heuristics.rb b/lib/linguist/heuristics.rb index 441a8dc6..30c5939c 100644 --- a/lib/linguist/heuristics.rb +++ b/lib/linguist/heuristics.rb @@ -499,5 +499,14 @@ module Linguist Language["XML"] end end + + disambiguate ".w" do |data| + if (data.include?("&ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _DEFINITIONS")) + Language["OpenEdge ABL"] + elsif /^@(<|\w+\.)/.match(data) + Language["CWeb"] + end + end + end end diff --git a/lib/linguist/languages.yml b/lib/linguist/languages.yml index 420fe576..3945e1df 100755 --- a/lib/linguist/languages.yml +++ b/lib/linguist/languages.yml @@ -3069,6 +3069,7 @@ OpenEdge ABL: extensions: - ".p" - ".cls" + - ".w" tm_scope: source.abl ace_mode: text language_id: 264 diff --git a/samples/OpenEdge ABL/test-win.w b/samples/OpenEdge ABL/test-win.w new file mode 100644 index 00000000..ef15b898 --- /dev/null +++ b/samples/OpenEdge ABL/test-win.w @@ -0,0 +1,230 @@ +&ANALYZE-SUSPEND _VERSION-NUMBER AB_v10r12 GUI +&ANALYZE-RESUME +&Scoped-define WINDOW-NAME C-Win +&ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _DEFINITIONS C-Win +/*------------------------------------------------------------------------ + + File: + + Description: + + Input Parameters: + + + Output Parameters: + + + Author: + + Created: + +------------------------------------------------------------------------*/ +/* This .W file was created with the Progress AppBuilder. */ +/*----------------------------------------------------------------------*/ + +/* Create an unnamed pool to store all the widgets created + by this procedure. This is a good default which assures + that this procedure's triggers and internal procedures + will execute in this procedure's storage, and that proper + cleanup will occur on deletion of the procedure. */ + +CREATE WIDGET-POOL. + +/* *************************** Definitions ************************** */ + +/* Parameters Definitions --- */ + +/* Local Variable Definitions --- */ + +/* _UIB-CODE-BLOCK-END */ +&ANALYZE-RESUME + + +&ANALYZE-SUSPEND _UIB-PREPROCESSOR-BLOCK + +/* ******************** Preprocessor Definitions ******************** */ + +&Scoped-define PROCEDURE-TYPE Window +&Scoped-define DB-AWARE no + +/* Name of designated FRAME-NAME and/or first browse and/or first query */ +&Scoped-define FRAME-NAME DEFAULT-FRAME + +/* Custom List Definitions */ +/* List-1,List-2,List-3,List-4,List-5,List-6 */ + +/* _UIB-PREPROCESSOR-BLOCK-END */ +&ANALYZE-RESUME + + + +/* *********************** Control Definitions ********************** */ + +/* Define the widget handle for the window */ +DEFINE VAR C-Win AS WIDGET-HANDLE NO-UNDO. + +/* ************************ Frame Definitions *********************** */ + +DEFINE FRAME DEFAULT-FRAME + WITH 1 DOWN NO-BOX KEEP-TAB-ORDER OVERLAY + SIDE-LABELS NO-UNDERLINE THREE-D + AT COL 1 ROW 1 + SIZE 80 BY 16 WIDGET-ID 100. + + +/* *********************** Procedure Settings ************************ */ + +&ANALYZE-SUSPEND _PROCEDURE-SETTINGS +/* Settings for THIS-PROCEDURE + Type: Window + Allow: Basic,Browse,DB-Fields,Window,Query + Other Settings: COMPILE + */ +&ANALYZE-RESUME _END-PROCEDURE-SETTINGS + +/* ************************* Create Window ************************** */ + +&ANALYZE-SUSPEND _CREATE-WINDOW +IF SESSION:DISPLAY-TYPE = "GUI":U THEN + CREATE WINDOW C-Win ASSIGN + HIDDEN = YES + TITLE = "" + HEIGHT = 16 + WIDTH = 80 + MAX-HEIGHT = 16 + MAX-WIDTH = 80 + VIRTUAL-HEIGHT = 16 + VIRTUAL-WIDTH = 80 + RESIZE = yes + SCROLL-BARS = no + STATUS-AREA = no + BGCOLOR = ? + FGCOLOR = ? + KEEP-FRAME-Z-ORDER = yes + THREE-D = yes + MESSAGE-AREA = no + SENSITIVE = yes. +ELSE {&WINDOW-NAME} = CURRENT-WINDOW. +/* END WINDOW DEFINITION */ +&ANALYZE-RESUME + + + +/* *********** Runtime Attributes and AppBuilder Settings *********** */ + +&ANALYZE-SUSPEND _RUN-TIME-ATTRIBUTES +/* SETTINGS FOR WINDOW C-Win + VISIBLE,,RUN-PERSISTENT */ +/* SETTINGS FOR FRAME DEFAULT-FRAME + FRAME-NAME */ +IF SESSION:DISPLAY-TYPE = "GUI":U AND VALID-HANDLE(C-Win) +THEN C-Win:HIDDEN = no. + +/* _RUN-TIME-ATTRIBUTES-END */ +&ANALYZE-RESUME + + + + + +/* ************************ Control Triggers ************************ */ + +&Scoped-define SELF-NAME C-Win +&ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL C-Win C-Win +ON END-ERROR OF C-Win /* */ +OR ENDKEY OF {&WINDOW-NAME} ANYWHERE DO: + /* This case occurs when the user presses the "Esc" key. + In a persistently run window, just ignore this. If we did not, the + application would exit. */ + IF THIS-PROCEDURE:PERSISTENT THEN RETURN NO-APPLY. +END. + +/* _UIB-CODE-BLOCK-END */ +&ANALYZE-RESUME + + +&ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL C-Win C-Win +ON WINDOW-CLOSE OF C-Win /* */ +DO: + /* This event will close the window and terminate the procedure. */ + APPLY "CLOSE":U TO THIS-PROCEDURE. + RETURN NO-APPLY. +END. + +/* _UIB-CODE-BLOCK-END */ +&ANALYZE-RESUME + + +&UNDEFINE SELF-NAME + +&ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _MAIN-BLOCK C-Win + + +/* *************************** Main Block *************************** */ + +/* Set CURRENT-WINDOW: this will parent dialog-boxes and frames. */ +ASSIGN CURRENT-WINDOW = {&WINDOW-NAME} + THIS-PROCEDURE:CURRENT-WINDOW = {&WINDOW-NAME}. + +/* The CLOSE event can be used from inside or outside the procedure to */ +/* terminate it. */ +ON CLOSE OF THIS-PROCEDURE + RUN disable_UI. + +/* Best default for GUI applications is... */ +PAUSE 0 BEFORE-HIDE. + +/* Now enable the interface and wait for the exit condition. */ +/* (NOTE: handle ERROR and END-KEY so cleanup code will always fire. */ +MAIN-BLOCK: +DO ON ERROR UNDO MAIN-BLOCK, LEAVE MAIN-BLOCK + ON END-KEY UNDO MAIN-BLOCK, LEAVE MAIN-BLOCK: + RUN enable_UI. + IF NOT THIS-PROCEDURE:PERSISTENT THEN + WAIT-FOR CLOSE OF THIS-PROCEDURE. +END. + +/* _UIB-CODE-BLOCK-END */ +&ANALYZE-RESUME + + +/* ********************** Internal Procedures *********************** */ + +&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE disable_UI C-Win _DEFAULT-DISABLE +PROCEDURE disable_UI : +/*------------------------------------------------------------------------------ + Purpose: DISABLE the User Interface + Parameters: + Notes: Here we clean-up the user-interface by deleting + dynamic widgets we have created and/or hide + frames. This procedure is usually called when + we are ready to "clean-up" after running. +------------------------------------------------------------------------------*/ + /* Delete the WINDOW we created */ + IF SESSION:DISPLAY-TYPE = "GUI":U AND VALID-HANDLE(C-Win) + THEN DELETE WIDGET C-Win. + IF THIS-PROCEDURE:PERSISTENT THEN DELETE PROCEDURE THIS-PROCEDURE. +END PROCEDURE. + +/* _UIB-CODE-BLOCK-END */ +&ANALYZE-RESUME + +&ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE enable_UI C-Win _DEFAULT-ENABLE +PROCEDURE enable_UI : +/*------------------------------------------------------------------------------ + Purpose: ENABLE the User Interface + Parameters: + Notes: Here we display/view/enable the widgets in the + user-interface. In addition, OPEN all queries + associated with each FRAME and BROWSE. + These statements here are based on the "Other + Settings" section of the widget Property Sheets. +------------------------------------------------------------------------------*/ + VIEW FRAME DEFAULT-FRAME IN WINDOW C-Win. + {&OPEN-BROWSERS-IN-QUERY-DEFAULT-FRAME} + VIEW C-Win. +END PROCEDURE. + +/* _UIB-CODE-BLOCK-END */ +&ANALYZE-RESUME +