good progress
This commit is contained in:
parent
461faa9184
commit
6b62974118
4 changed files with 78 additions and 18 deletions
|
|
@ -8,17 +8,29 @@
|
|||
CREATE PROCEDURE dbo.TestProcedure
|
||||
|
||||
--#region parameters
|
||||
@vint INT = 1;
|
||||
@Vint INT = 1
|
||||
,@vdate DATE = NULL
|
||||
,@vdatetime DATETIME = DATEADD(dd,1,GETDATE())
|
||||
--#endregion
|
||||
|
||||
AS
|
||||
BEGIN
|
||||
-- SET NOCOUNT ON added to prevent extra result sets from
|
||||
-- interfering with SELECT statements.
|
||||
SET NOCOUNT ON;
|
||||
|
||||
SELECT Orders.OrderID, Customers.CompanyName, DATEFROMPARTS(YEAR(GETDATE()), 1, 1) AS FirstDayOfYear
|
||||
/*#region set statements */
|
||||
SET NOCOUNT ON;
|
||||
SET XACT_ABORT ON;
|
||||
SET QUOTED_IDENTIFIER ON;
|
||||
/*#endregion*/
|
||||
|
||||
|
||||
SELECT Orders.OrderID
|
||||
,Customers.CompanyName
|
||||
,DATEFROMPARTS(YEAR(GETDATE()), 1, 1) AS FirstDayOfYear
|
||||
FROM Orders
|
||||
INNER JOIN Customers
|
||||
ON Orders.CustomerID = Customers.CustomerID
|
||||
WHERE CompanyName NOT LIKE '%something'
|
||||
OR CompanyName IS NULL
|
||||
OR CompanyName IN ('bla','nothing')
|
||||
|
||||
END
|
||||
|
|
@ -37,10 +37,14 @@ var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;
|
|||
var SqlServerHighlightRules = function() {
|
||||
/**
|
||||
* each section has a link and some javacript code.
|
||||
* go to the link, open dev tools, run code to get the string
|
||||
* go to the link, open dev tools, run code to get the string.
|
||||
*
|
||||
* Right now this code is optimized to make it easy for a developer to modify.
|
||||
* Once I'm certain that this is not missing anything it can be 'compiled' into a cleaner/faster format that is not executing stuff on the fly for no reason.
|
||||
*/
|
||||
|
||||
var builtinConstants = "TRUE|FALSE";
|
||||
|
||||
// some of these are other types but I want sytanx highlighting to match SSMS
|
||||
var builtinConstants = "TRUE|FALSE|NULL|IS|IN";
|
||||
|
||||
|
||||
// multiple pages for built in functions, the following code works for all
|
||||
|
|
@ -86,20 +90,39 @@ var SqlServerHighlightRules = function() {
|
|||
);
|
||||
|
||||
|
||||
//https://msdn.microsoft.com/en-us/library/ms190356.aspx
|
||||
// var r = []; $('.tableSection').find('td').find('a').each(function() { var t = $(this).text().trim().toUpperCase(); r.push($(this).text().trim().toUpperCase()); }); r = r.filter(function(value, index, self) { return self.indexOf(value) === index; }); r.sort(); console.log(r.join('|'));
|
||||
var setStatements = "SET ANSI_DEFAULTS|SET ANSI_NULLS|SET ANSI_NULL_DFLT_OFF|SET ANSI_NULL_DFLT_ON|SET ANSI_PADDING|SET ANSI_WARNINGS|SET ARITHABORT|SET ARITHIGNORE|SET CONCAT_NULL_YIELDS_NULL|SET CURSOR_CLOSE_ON_COMMIT|SET DATEFIRST|SET DATEFORMAT|SET DEADLOCK_PRIORITY|SET FIPS_FLAGGER|SET FMTONLY|SET FORCEPLAN|SET IDENTITY_INSERT|SET IMPLICIT_TRANSACTIONS|SET LANGUAGE|SET LOCK_TIMEOUT|SET NOCOUNT|SET NOEXEC|SET NUMERIC_ROUNDABORT|SET OFFSETS|SET PARSEONLY|SET QUERY_GOVERNOR_COST_LIMIT|SET QUOTED_IDENTIFIER|SET REMOTE_PROC_TRANSACTIONS|SET ROWCOUNT|SET SHOWPLAN_ALL|SET SHOWPLAN_TEXT|SET SHOWPLAN_XML|SET STATISTICS IO|SET STATISTICS PROFILE|SET STATISTICS TIME|SET STATISTICS XML|SET TEXTSIZE|SET TRANSACTION ISOLATION LEVEL|SET XACT_ABORT";
|
||||
|
||||
|
||||
// https://msdn.microsoft.com/en-us/library/ms189822.aspx
|
||||
// var r = []; $('.tableSection').find('td').each(function() { r.push($(this).text().trim()); }); r = r.filter(function(value, index, self) { return self.indexOf(value) === index; }); r.sort(); console.log(r.join('|'));
|
||||
var keywords = "ABSOLUTE|ACTION|ADA|ADD|ADMIN|AFTER|AGGREGATE|ALIAS|ALL|ALLOCATE|ALTER|AND|ANY|ARE|ARRAY|AS|ASC|ASENSITIVE|ASSERTION|ASYMMETRIC|AT|ATOMIC|AUTHORIZATION|BACKUP|BEFORE|BEGIN|BETWEEN|BIT_LENGTH|BLOB|BOOLEAN|BOTH|BREADTH|BREAK|BROWSE|BULK|BY|CALL|CALLED|CARDINALITY|CASCADE|CASCADED|CASE|CATALOG|CHARACTER|CHARACTER_LENGTH|CHAR_LENGTH|CHECK|CHECKPOINT|CLASS|CLOB|CLOSE|CLUSTERED|COALESCE|COLLATE|COLLATION|COLLECT|COLUMN|COMMIT|COMPLETION|COMPUTE|CONDITION|CONNECT|CONNECTION|CONSTRAINT|CONSTRAINTS|CONSTRUCTOR|CONTAINS|CONTAINSTABLE|CONTINUE|CORR|CORRESPONDING|COVAR_POP|COVAR_SAMP|CREATE|CROSS|CUBE|CUME_DIST|CURRENT|CURRENT_CATALOG|CURRENT_DATE|CURRENT_DEFAULT_TRANSFORM_GROUP|CURRENT_PATH|CURRENT_ROLE|CURRENT_SCHEMA|CURRENT_TIME|CURRENT_TRANSFORM_GROUP_FOR_TYPE|CYCLE|DATA|DATABASE|DBCC|DEALLOCATE|DEC|DECLARE|DEFAULT|DEFERRABLE|DEFERRED|DELETE|DENY|DEPTH|DEREF|DESC|DESCRIBE|DESCRIPTOR|DESTROY|DESTRUCTOR|DETERMINISTIC|DIAGNOSTICS|DICTIONARY|DISCONNECT|DISK|DISTINCT|DISTRIBUTED|DOMAIN|DOUBLE|DROP|DUMP|DYNAMIC|EACH|ELEMENT|ELSE|END|END-EXEC|EQUALS|ERRLVL|ESCAPE|EVERY|EXCEPT|EXCEPTION|EXEC|EXECUTE|EXISTS|EXIT|EXTERNAL|EXTRACT|FETCH|FILE|FILLFACTOR|FILTER|FIRST|FOR|FOREIGN|FORTRAN|FOUND|FREE|FREETEXT|FREETEXTTABLE|FROM|FULL|FULLTEXTTABLE|FUNCTION|FUSION|GENERAL|GET|GLOBAL|GO|GOTO|GRANT|GROUP|HAVING|HOLD|HOLDLOCK|HOST|HOUR|IDENTITY|IDENTITYCOL|IDENTITY_INSERT|IF|IGNORE|IMMEDIATE|IN|INCLUDE|INDEX|INDICATOR|INITIALIZE|INITIALLY|INNER|INOUT|INPUT|INSENSITIVE|INSERT|INTEGER|INTERSECT|INTERSECTION|INTERVAL|INTO|IS|ISOLATION|ITERATE|JOIN|KEY|KILL|LANGUAGE|LARGE|LAST|LATERAL|LEADING|LESS|LEVEL|LIKE|LIKE_REGEX|LIMIT|LINENO|LN|LOAD|LOCAL|LOCALTIME|LOCALTIMESTAMP|LOCATOR|MAP|MATCH|MEMBER|MERGE|METHOD|MINUTE|MOD|MODIFIES|MODIFY|MODULE|MULTISET|NAMES|NATIONAL|NATURAL|NCLOB|NEW|NEXT|NO|NOCHECK|NONCLUSTERED|NONE|NORMALIZE|NOT|NULL|NULLIF|OBJECT|OCCURRENCES_REGEX|OCTET_LENGTH|OF|OFF|OFFSETS|OLD|ON|ONLY|OPEN|OPERATION|OPTION|OR|ORDER|ORDINALITY|OUT|OUTER|OUTPUT|OVER|OVERLAPS|OVERLAY|PAD|PARAMETER|PARAMETERS|PARTIAL|PARTITION|PASCAL|PATH|PERCENT|PERCENTILE_CONT|PERCENTILE_DISC|PERCENT_RANK|PIVOT|PLAN|POSITION|POSITION_REGEX|POSTFIX|PRECISION|PREFIX|PREORDER|PREPARE|PRESERVE|PRIMARY|PRINT|PRIOR|PRIVILEGES|PROC|PROCEDURE|PUBLIC|RAISERROR|RANGE|READ|READS|READTEXT|RECONFIGURE|RECURSIVE|REF|REFERENCES|REFERENCING|REGR_AVGX|REGR_AVGY|REGR_COUNT|REGR_INTERCEPT|REGR_R2|REGR_SLOPE|REGR_SXX|REGR_SXY|REGR_SYY|RELATIVE|RELEASE|REPLICATION|RESTORE|RESTRICT|RESULT|RETURN|RETURNS|REVERT|REVOKE|ROLE|ROLLBACK|ROLLUP|ROUTINE|ROW|ROWCOUNT|ROWGUIDCOL|ROWS|RULE|SAVE|SAVEPOINT|SCHEMA|SCOPE|SCROLL|SEARCH|SECOND|SECTION|SECURITYAUDIT|SELECT|SEMANTICKEYPHRASETABLE|SEMANTICSIMILARITYDETAILSTABLE|SEMANTICSIMILARITYTABLE|SENSITIVE|SEQUENCE|SESSION|SET|SETS|SETUSER|SHUTDOWN|SIMILAR|SIZE|SOME|SPECIFIC|SPECIFICTYPE|SQL|SQLCA|SQLCODE|SQLERROR|SQLEXCEPTION|SQLSTATE|SQLWARNING|START|STATE|STATEMENT|STATIC|STATISTICS|STDDEV_POP|STDDEV_SAMP|STRUCTURE|SUBMULTISET|SUBSTRING_REGEX|SYMMETRIC|SYSTEM|TABLESAMPLE|TEMPORARY|TERMINATE|TEXTSIZE|THAN|THEN|TIMEZONE_HOUR|TIMEZONE_MINUTE|TO|TOP|TRAILING|TRAN|TRANSACTION|TRANSLATE|TRANSLATE_REGEX|TRANSLATION|TREAT|TRIGGER|TRIM|TRUNCATE|TSEQUAL|UESCAPE|UNDER|UNION|UNIQUE|UNKNOWN|UNNEST|UNPIVOT|UPDATE|UPDATETEXT|USAGE|USE|USER|USING|VALUE|VALUES|VARIABLE|VARYING|VAR_POP|VAR_SAMP|VIEW|WAITFOR|WHEN|WHENEVER|WHERE|WHILE|WIDTH_BUCKET|WINDOW|WITH|WITHIN|WITHIN GROUP|WITHOUT|WORK|WRITE|WRITETEXT|XMLAGG|XMLATTRIBUTES|XMLBINARY|XMLCAST|XMLCOMMENT|XMLCONCAT|XMLDOCUMENT|XMLELEMENT|XMLEXISTS|XMLFOREST|XMLITERATE|XMLNAMESPACES|XMLPARSE|XMLPI|XMLQUERY|XMLSERIALIZE|XMLTABLE|XMLTEXT|XMLVALIDATE|ZONE";
|
||||
|
||||
//after modifying above data sets, copy above code and run this to remove data types, functions, and constants from keywords
|
||||
// keywords = keywords.split('|');
|
||||
// keywords = keywords.filter(function(value,index,self){
|
||||
// return builtinConstants.split('|').indexOf(value) === -1 && builtinFunctions.split('|').indexOf(value) === -1 && dataTypes.split('|').indexOf(value) === -1;
|
||||
// });
|
||||
// console.log(keywords.sort().join('|'));
|
||||
//add isolation levels https://msdn.microsoft.com/en-us/library/ms173763.aspx
|
||||
keywords += "|UNCOMMITTED|COMMITTED|REPEATABLE|SNAPSHOP|SERIALIZABLE";
|
||||
|
||||
//add each part of set statement to keywords for highlighting, yet keep set statements as is for code completion
|
||||
//NOTE: there is likely a better way to do this but I don't fully understand the syntax highlighting part yet
|
||||
var eachSet = setStatements.split('|');
|
||||
eachSet.forEach(function(v) {
|
||||
v.split(' ').forEach(function(v) {
|
||||
keywords += '|' + v;
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
//remove any other built in things from key word list
|
||||
keywords = keywords.split('|');
|
||||
keywords = keywords.filter(function(value, index, self) {
|
||||
return builtinConstants.split('|').indexOf(value) === -1 && builtinFunctions.split('|').indexOf(value) === -1 && dataTypes.split('|').indexOf(value) === -1;
|
||||
});
|
||||
keywords = keywords.sort().join('|');
|
||||
|
||||
var keywordMapper = this.createKeywordMapper({
|
||||
"support.function": builtinFunctions,
|
||||
"keyword": keywords,
|
||||
"keyword.set": setStatements,
|
||||
"constant.language": builtinConstants,
|
||||
"storage.type": dataTypes
|
||||
}, "identifier", true);
|
||||
|
|
|
|||
|
|
@ -1,3 +1,27 @@
|
|||
# ISNULL
|
||||
snippet isnull
|
||||
ISNULL(${1:check_expression}, ${2:replacement_value})
|
||||
# FORMAT
|
||||
snippet format
|
||||
FORMAT(${1:value}, ${2:format})
|
||||
# CAST
|
||||
snippet cast
|
||||
CAST(${1:expression} AS ${2:data_type})
|
||||
# CONVERT
|
||||
snippet convert
|
||||
CONVERT(${1:data_type}, ${2:expression})
|
||||
# DATEPART
|
||||
snippet datepart
|
||||
DATEPART(${1:datepart}, ${2:date})
|
||||
# DATEDIFF
|
||||
snippet datediff
|
||||
DATEDIFFT(${1:datepart}, ${2:startdate}, ${3:enddate})
|
||||
# DATEADD
|
||||
snippet dateadd
|
||||
DATEADD(${1:datepart}, ${2:number}, ${3:date})
|
||||
# DATEFROMPARTS
|
||||
snippet datefromparts
|
||||
DATEFROMPARTS(${1:year}, ${2:month}, ${3:day})
|
||||
# Create Procedure
|
||||
snippet createproc
|
||||
-- =============================================
|
||||
|
|
|
|||
|
|
@ -21,7 +21,7 @@
|
|||
|
||||
.ace-sqlserver .ace_keyword{
|
||||
color: #0000FF;
|
||||
text-transform: uppercase;
|
||||
/*text-transform: uppercase;*/
|
||||
}
|
||||
|
||||
.ace-sqlserver .ace_comment{
|
||||
|
|
@ -35,7 +35,7 @@
|
|||
.ace-sqlserver .ace_storage{
|
||||
color: #979797;
|
||||
font-style: italic;
|
||||
text-transform: uppercase;
|
||||
/*text-transform: uppercase;*/
|
||||
}
|
||||
|
||||
.ace-sqlserver .ace_bracket {
|
||||
|
|
@ -60,7 +60,8 @@
|
|||
}
|
||||
|
||||
.ace-sqlserver .ace_constant.ace_language {
|
||||
color: rgb(88, 92, 246);
|
||||
color: #979797;
|
||||
/*font-style: italic;*/
|
||||
}
|
||||
|
||||
.ace-sqlserver .ace_constant.ace_library {
|
||||
|
|
@ -77,7 +78,7 @@
|
|||
|
||||
.ace-sqlserver .ace_support.ace_function {
|
||||
color: #FF00FF;
|
||||
text-transform: uppercase;
|
||||
/*text-transform: uppercase;*/
|
||||
}
|
||||
|
||||
.ace-sqlserver .ace_support.ace_constant {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue