Skip to content
This repository has been archived by the owner on Sep 6, 2021. It is now read-only.

Commit

Permalink
Allow CSS Code Hints in PHP
Browse files Browse the repository at this point in the history
  • Loading branch information
sprintr committed Sep 27, 2015
1 parent 6ac4568 commit e67e1e3
Showing 1 changed file with 24 additions and 15 deletions.
39 changes: 24 additions & 15 deletions src/language/CSSUtils.js
Original file line number Diff line number Diff line change
Expand Up @@ -81,21 +81,33 @@ define(function (require, exports, module) {
return (/\S/.test(text));
}

/**
* @private
* Returns state of a token
* @param {{editor:{CodeMirror}, pos:{ch:{string}, line:{number}}, token:{object}}} ctx
* @return {{tokenize:function, state:string, stateArg:string, context:Object}}
*/
function _getState(ctx) {
var state = ctx.token.state.localState || ctx.token.state;
if (!state.context && ctx.token.state.html.localState) {
state = ctx.token.state.html.localState;
}
return state;
}

/**
* @private
* Checks if the current cursor position is inside the property name context
* @param {editor:{CodeMirror}, pos:{ch:{string}, line:{number}}, token:{object}} context
* @return {boolean} true if the context is in property name
*/
function _isInPropName(ctx) {
var state,
var state = _getState(ctx),
lastToken;
if (!ctx || !ctx.token || !ctx.token.state || ctx.token.type === "comment") {
if (!state || !ctx || !ctx.token || ctx.token.type === "comment") {
return false;
}

state = ctx.token.state.localState || ctx.token.state;

if (!state.context) {
return false;
}
Expand Down Expand Up @@ -124,13 +136,11 @@ define(function (require, exports, module) {
return isInsideParens(context.prev);
}

var state;
if (!ctx || !ctx.token || !ctx.token.state || ctx.token.type === "comment") {
var state = _getState(ctx);
if (!state || !ctx || !ctx.token || ctx.token.type === "comment") {
return false;
}

state = ctx.token.state.localState || ctx.token.state;

if (!state.context || !state.context.prev) {
return false;
}
Expand All @@ -146,13 +156,11 @@ define(function (require, exports, module) {
* @return {boolean} true if the context is in property value
*/
function _isInAtRule(ctx) {
var state;
if (!ctx || !ctx.token || !ctx.token.state) {
var state = _getState(ctx);
if (!state || !ctx || !ctx.token) {
return false;
}

state = ctx.token.state.localState || ctx.token.state;

if (!state.context) {
return false;
}
Expand Down Expand Up @@ -1566,12 +1574,13 @@ define(function (require, exports, module) {
return selector;
}

var skipPrevSibling = false;
var skipPrevSibling = false,
state = _getState(ctx);

// If the cursor is inside a non-whitespace token with "block" or "top" state, then it is inside a
// selector. The only exception is when it is immediately after the '{'.
if (isPreprocessorDoc && _hasNonWhitespace(ctx.token.string) && ctx.token.string !== "{" &&
(ctx.token.state.state === "block" || ctx.token.state.state === "top")) {
(state.state === "block" || state.state === "top")) {
foundChars = true;
}

Expand All @@ -1580,7 +1589,7 @@ define(function (require, exports, module) {
if (ctx.token.type !== "comment") {
if (ctx.token.string === "}") {
if (isPreprocessorDoc) {
if (ctx.token.state.state === "top") {
if (state.state === "top") {
break;
}
skipPrevSibling = true;
Expand Down

0 comments on commit e67e1e3

Please sign in to comment.