Example #1
0
void GoCodeFormatter::saveCurrentState(const QTextBlock &block)
{
    if (!block.isValid())
        return;

    BlockData blockData;
    blockData.revision = block.revision();
    blockData.beginState = m_beginState;
    blockData.endState = m_currentState;
    blockData.indentation = m_indentation;
    blockData.padding = m_padding;

    QTextBlock saveableBlock(block);
    saveBlockData(&saveableBlock, blockData);
}
Example #2
0
void saveMap(const char* filename, LevelMap* levelMap)
{
	printf("Saving file: %s\n", filename);	
	ofstream file;
	file.open(filename);
	
	if(file.fail()){
		printf("Failed to load %s!\n", filename);
		return;
	}
	
	for(GLshort i = 0; i < MAP_BLOCK[X]; i++){
		for(GLshort j = 0; j < MAP_BLOCK[Y]; j++){
			saveBlockData(file, LevelMap::getBlockByIso(i, j));
			file << "\n";
		}
		file << "\n";
	}
	
	file.close();
}
Example #3
0
void GoCodeFormatter::updateStateUntil(const QTextBlock &endBlock)
{
    QStack<CodeState> previousState = initialState();
    QTextBlock it = endBlock.document()->firstBlock();

    // find the first block that needs recalculation
    while (it.isValid() && it != endBlock) {
        BlockData blockData;
        if (!loadBlockData(it, &blockData))
            break;
        if (blockData.revision != it.revision())
            break;
        if (previousState.isEmpty() || blockData.beginState.isEmpty()
                || previousState != blockData.beginState)
            break;
        if (TextEditor::TextDocumentLayout::lexerState(endBlock) == -1)
            break;

        previousState = blockData.endState;
        it = it.next();
    }

    if (it == endBlock) // No need to recalculate
        return;

    // update everthing until endBlock
    while (it.isValid() && it != endBlock) {
        recalculateStateAfter(it);
        it = it.next();
    }

    // invalidate everything below by marking the state in endBlock as invalid
    if (it.isValid()) {
        BlockData invalidBlockData;
        saveBlockData(&it, invalidBlockData);
    }
}