T-SQL에 대한 GeSHI 구문 강조 표시 개선
WP-GeSHI를 WordPress로 사용하고 있는데 대체로 만족하고 있습니다.단, 키워드가 다음과 같은 경우 색상 강조 표시가 너무 심한 몇 가지 사소한 시나리오가 있습니다.
- 변수 이름(선두에 의해 표시됨)
@
) - 다른 단어의 일부(예:
IN
에INSERTED
) - 조합(예: 변수 이름의 일부).
JOIN
그리고.IN
에@JOINBING
) - 대괄호 안쪽(예:
[status]
)
대소문자를 구분하는 키워드와 대소문자를 구분하지 않는 키워드가 있습니다.다음 스크린샷은 이 문제가 발생하는 다양한 사례를 요약한 것입니다.
이제, 코드는GeSHi.php
꽤 장황하고, 저는 결코 PHP 전문가가 아닙니다.저는 제 손을 더럽히는 것이 두렵지 않지만, 다른 누군가가 이 코드를 수정하고 몇 가지 힌트를 줄 수 있기를 바랍니다.이미 회피책을 실장하고 있습니다.@@ROWCOUNT
잘못 강조되지 않도록 했지만, 이것은 쉬웠다. 왜냐하면 왜냐하면@@ROWCOUNT
정의되어 있습니다.- 어레이를 이리저리 섞은 것만으로, 이전에 검출된 어레이는ROWCOUNT
.
GeSHI는 전체 단어가 아닌 키워드를 완전히 무시해야 합니다(이 키워드의 접두사 여부에 관계없이).@
또는 바로 다른 문자/문자로 둘러싸여 있습니다.) JOIN
회색이어야 하는데@JOIN
그리고.JOINS
안 돼요.또한 각 괄호 안에 있는 키워드는 무시해 주셨으면 합니다(Management Studio는 이를 컬러 하이라이트하지 않도록 지시하고 SQL 엔진에 예약된 단어, 키워드 및 잘못된 식별자를 무시하도록 지시합니다).
이 작업을 수행하려면 다음 명령을PARSER_CONTROL
어레이의 마지막까지 제어:
'PARSER_CONTROL' => array(
'KEYWORDS' => array(
1 => array( // "1" maps to the main keywords near the start of the array
'DISALLOWED_BEFORE' => '(?![\(\w])',
'DISALLOWED_AFTER' => '(?![\(\w])'
),
5 => array( // "5" maps to the shorter keywords like "IN" that are further down
'DISALLOWED_BEFORE' => '(?![\(\w])',
'DISALLOWED_AFTER' => '(?![\(\w])'
),
)
)
편집
당신이 추가한 키워드 중 일부를 이동하도록 당신의 요지를 수정했습니다.SYMBOLS
로 되돌아가다.KEYWORDS
(그들만의 그룹과 당신의 커스텀 스타일에 따라) 그리고 저는 업데이트했습니다.PARSER_CONTROL
array는 새로운 키워드 배열 인덱스와 일치하며 기본값도 포함합니다.regex
게시가 만들어 내는 거죠다음은 링크입니다.
https://gist.github.com/jamend/07e60bf0b9acdfdeee7a
제 말에 의하면, 당신이 하고 있는 일은 시간이 많이 걸릴 것 같습니다.따라서 다른 플러그인을 설치하는 것이 좋습니다.
더 나은 기능을 갖추고 더 많은 언어를 지원하며 더 나은 방식으로 지원합니다.이 모든 문제를 제거할 수 있습니다.
편집:
최신 버전으로 같은 코드를 시도해보니 다음과 같은 결과가 나왔는데...
편집:
다른 플러그인을 사용하고 싶지 않다면 코딩에 대해 알려드리겠습니다.
먼저 텍스트 에디터에서 \wp-content\plugins\wp-geshi-highlight\geshi\tsql.php를 엽니다.
다음 .'KEYWORDS'
검색해 주세요.
6
5
이치노예를 들어 다음과 같습니다.
5 => array(
'ALL', 'AND', 'ANY', 'BETWEEN', 'CROSS', 'EXISTS', 'IN', 'JOIN', 'LIKE', 'NOT', 'NULL',
'OR', 'OUTER', 'SOME',
),
6 => array( //This line has been added by me
'status' //This line has been added by me
) //This line has been added by me
메모: 지금까지 어레이 요소 5(이미 존재)와 어레이 요소 6(작성 완료)을 보여드렸습니다.
그런 다음 대소문자를 구분하기 위해 아래 코드를 다음 중 마지막 코드에 추가합니다.'CASE_SENSITIVE'
스위칭:
6 => true
'CASE_SENSITIVE'
츠키다
'CASE_SENSITIVE' => array(
GESHI_COMMENTS => false,
1 => false,
2 => false,
3 => false,
4 => false,
5 => false,
6 => true //This line has been added by me
),
이제 커스텀 키워드에 스타일을 추가해야 합니다. , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 를 합니다.'KEYWORDS'
의 'STYLES'
array. 시작'STYLES'
츠키다
'STYLES' => array(
'KEYWORDS' => array(
1 => 'color: #0000FF;',
2 => 'color: #FF00FF;',
3 => 'color: #AF0000;',
4 => 'color: #AF0000;',
5 => 'color: #808080;',
6 => 'color: #0000FF;' //This line has been added by me
),
위의 가이드라인에 따라 문제를 해결할 수 있지만, 플러그인이 불완전한 단어를 강조 표시하는 부분은 이 문제를 해결하기 위해 플러그인을 최신 버전으로 업데이트해야 하는 솔루션을 하나 찾았습니다.
언급URL : https://stackoverflow.com/questions/23544380/improve-geshi-syntax-highlighting-for-t-sql
'source' 카테고리의 다른 글
node_modules/rxjs/internal/types.d.ts(81,44): Angular 6 설치 후 오류 TS1005: ';' 예상 오류 (0) | 2023.03.23 |
---|---|
!react에서 중요한 인라인 스타일 (0) | 2023.03.23 |
Angularjs는 상위 범위의 변화를 감시합니다. (0) | 2023.03.23 |
동적 python 개체를 json으로 변환 (0) | 2023.03.18 |
스프링 부트에서의 스프링 관리 휴지 상태 인터셉터 사용 방법 (0) | 2023.03.18 |