Branch: refs/heads/1.22_release Author: Colomban Wendling ban@herbesfolles.org Committer: Colomban Wendling ban@herbesfolles.org Date: Sun, 08 Jul 2012 21:14:20 Commit: ce109470bc165581f85487fe44c543b2df76b974 https://github.com/geany/geany-plugins/commit/ce109470bc165581f85487fe44c543...
Log Message: ----------- PrettyPrinter: Don't mix declarations and code
Modified Paths: -------------- pretty-printer/src/ConfigUI.c pretty-printer/src/PluginEntry.c pretty-printer/src/PrettyPrinter.c
Modified: pretty-printer/src/ConfigUI.c 39 files changed, 26 insertions(+), 13 deletions(-) =================================================================== @@ -52,25 +52,36 @@ /* Will never be used, just here for example */ GtkWidget* createPrettyPrinterConfigUI(GtkDialog * dialog) { + PrettyPrintingOptions* ppo; + GtkWidget* container; + GtkWidget* leftBox; + GtkWidget* rightBox; + GtkWidget* commentOptions; + GtkWidget* textOptions; + GtkWidget* cdataOptions; + GtkWidget* emptyOptions; + GtkWidget* indentationOptions; + GtkWidget* lineReturnOptions; + /* default printing options */ if (prettyPrintingOptions == NULL) { prettyPrintingOptions = createDefaultPrettyPrintingOptions(); } - PrettyPrintingOptions* ppo = prettyPrintingOptions; + ppo = prettyPrintingOptions;
- GtkWidget* container = gtk_hbox_new(FALSE, 10); - - GtkWidget* leftBox = gtk_vbox_new(FALSE, 6); - GtkWidget* commentOptions = createThreeOptionsBox(_("Comments"), _("Put on one line"), _("Inline if possible"), _("Alignment"), ppo->oneLineComment, ppo->inlineComment, ppo->alignComment, &commentOneLine, &commentInline, &commentAlign); - GtkWidget* textOptions = createThreeOptionsBox(_("Text nodes"), _("Put on one line"), _("Inline if possible"), _("Alignment"), ppo->oneLineText, ppo->inlineText, ppo->alignText, &textOneLine, &textInline, &textAlign); - GtkWidget* cdataOptions = createThreeOptionsBox(_("CDATA"), _("Put on one line"), _("Inline if possible"), _("Alignment"), ppo->oneLineCdata, ppo->inlineCdata, ppo->alignCdata, &cdataOneLine, &cdataInline, &cdataAlign); - GtkWidget* emptyOptions = createEmptyTextOptions(ppo->emptyNodeStripping, ppo->emptyNodeStrippingSpace, ppo->forceEmptyNodeSplit); - GtkWidget* indentationOptions = createIndentationOptions(ppo->indentChar, ppo->indentLength); - GtkWidget* lineReturnOptions = createLineReturnOptions(ppo->newLineChars); + container = gtk_hbox_new(FALSE, 10); + + leftBox = gtk_vbox_new(FALSE, 6); + commentOptions = createThreeOptionsBox(_("Comments"), _("Put on one line"), _("Inline if possible"), _("Alignment"), ppo->oneLineComment, ppo->inlineComment, ppo->alignComment, &commentOneLine, &commentInline, &commentAlign); + textOptions = createThreeOptionsBox(_("Text nodes"), _("Put on one line"), _("Inline if possible"), _("Alignment"), ppo->oneLineText, ppo->inlineText, ppo->alignText, &textOneLine, &textInline, &textAlign); + cdataOptions = createThreeOptionsBox(_("CDATA"), _("Put on one line"), _("Inline if possible"), _("Alignment"), ppo->oneLineCdata, ppo->inlineCdata, ppo->alignCdata, &cdataOneLine, &cdataInline, &cdataAlign); + emptyOptions = createEmptyTextOptions(ppo->emptyNodeStripping, ppo->emptyNodeStrippingSpace, ppo->forceEmptyNodeSplit); + indentationOptions = createIndentationOptions(ppo->indentChar, ppo->indentLength); + lineReturnOptions = createLineReturnOptions(ppo->newLineChars);
gtk_box_pack_start(GTK_BOX(leftBox), commentOptions, FALSE, FALSE, 3); gtk_box_pack_start(GTK_BOX(leftBox), textOptions, FALSE, FALSE, 3); gtk_box_pack_start(GTK_BOX(leftBox), cdataOptions, FALSE, FALSE, 3);
- GtkWidget* rightBox = gtk_vbox_new(FALSE, 6); + rightBox = gtk_vbox_new(FALSE, 6); gtk_box_pack_start(GTK_BOX(rightBox), emptyOptions, FALSE, FALSE, 3); gtk_box_pack_start(GTK_BOX(rightBox), indentationOptions, FALSE, FALSE, 3); gtk_box_pack_start(GTK_BOX(rightBox), lineReturnOptions, FALSE, FALSE, 3); @@ -84,6 +95,7 @@ GtkWidget* createPrettyPrinterConfigUI(GtkDialog * dialog)
void saveSettings(void) { + int breakStyle; PrettyPrintingOptions* ppo = prettyPrintingOptions;
ppo->oneLineComment = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(commentOneLine)); @@ -105,7 +117,7 @@ void saveSettings(void) ppo->indentLength = gtk_spin_button_get_value(GTK_SPIN_BUTTON(indentationCount)); ppo->indentChar = gtk_combo_box_get_active(GTK_COMBO_BOX(indentationChar))==0 ? '\t' : ' ';
- int breakStyle = gtk_combo_box_get_active(GTK_COMBO_BOX(lineBreak)); + breakStyle = gtk_combo_box_get_active(GTK_COMBO_BOX(lineBreak)); if (breakStyle == 0) ppo->newLineChars = "\r"; else if (breakStyle == 1) ppo->newLineChars = "\n"; else ppo->newLineChars = "\r\n"; @@ -252,11 +264,12 @@ static GtkWidget* createLineReturnOptions(const char* lineReturn) GtkWidget* lbl = gtk_label_new(_("Line break")); GtkWidget* comboChar = gtk_combo_box_new_text();
+ int active = 0; + gtk_combo_box_append_text(GTK_COMBO_BOX(comboChar), "\r"); gtk_combo_box_append_text(GTK_COMBO_BOX(comboChar), "\n"); gtk_combo_box_append_text(GTK_COMBO_BOX(comboChar), "\r\n");
- int active = 0; if (strlen(lineReturn) == 2) active = 2; else if (lineReturn[0] == '\n') active = 1;
Modified: pretty-printer/src/PluginEntry.c 25 files changed, 17 insertions(+), 8 deletions(-) =================================================================== @@ -113,25 +113,34 @@ void xml_format(GtkMenuItem* menuitem, gpointer gdata) { /* retrieves the current document */ GeanyDocument* doc = document_get_current(); + GeanyEditor* editor; + ScintillaObject* sco; + int length; + char* buffer; + xmlDoc* parsedDocument; + int result; + int xOffset; + GeanyFiletype* fileType; + g_return_if_fail(doc != NULL);
- GeanyEditor* editor = doc->editor; - ScintillaObject* sco = editor->sci; + editor = doc->editor; + sco = editor->sci;
/* default printing options */ if (prettyPrintingOptions == NULL) { prettyPrintingOptions = createDefaultPrettyPrintingOptions(); }
/* prepare the buffer that will contain the text * from the scintilla object */ - int length = sci_get_length(sco)+1; - char* buffer = (char*)malloc(length*sizeof(char)); + length = sci_get_length(sco)+1; + buffer = (char*)malloc(length*sizeof(char)); if (buffer == NULL) { exit(-1); } /* malloc error */
/* retrieves the text */ sci_get_text(sco, length, buffer);
/* checks if the data is an XML format */ - xmlDoc* parsedDocument = xmlParseDoc((unsigned char*)buffer); + parsedDocument = xmlParseDoc((unsigned char*)buffer);
/* this is not a valid xml => exit with an error message */ if(parsedDocument == NULL) @@ -144,7 +153,7 @@ void xml_format(GtkMenuItem* menuitem, gpointer gdata) xmlFreeDoc(parsedDocument);
/* process pretty-printing */ - int result = processXMLPrettyPrinting(&buffer, &length, prettyPrintingOptions); + result = processXMLPrettyPrinting(&buffer, &length, prettyPrintingOptions); if (result != PRETTY_PRINTING_SUCCESS) { dialogs_show_msgbox(GTK_MESSAGE_ERROR, _("Unable to process PrettyPrinting on the specified XML because some features are not supported.\n\nSee Help > Debug messages for more details...")); @@ -155,10 +164,10 @@ void xml_format(GtkMenuItem* menuitem, gpointer gdata) sci_set_text(sco, buffer);
/* set the line */ - int xOffset = scintilla_send_message(sco, SCI_GETXOFFSET, 0, 0); + xOffset = scintilla_send_message(sco, SCI_GETXOFFSET, 0, 0); scintilla_send_message(sco, SCI_LINESCROLL, -xOffset, 0); /* TODO update with the right function-call for geany-0.19 */
/* sets the type */ - GeanyFiletype* fileType = filetypes_index(GEANY_FILETYPES_XML); + fileType = filetypes_index(GEANY_FILETYPES_XML); document_set_filetype(doc, fileType); }
Modified: pretty-printer/src/PrettyPrinter.c 98 files changed, 66 insertions(+), 32 deletions(-) =================================================================== @@ -88,13 +88,16 @@ static void PP_ERROR(const char* fmt, ...)
int processXMLPrettyPrinting(char** buffer, int* length, PrettyPrintingOptions* ppOptions) { + bool freeOptions; + char* reallocated; + /* empty buffer, nothing to process */ if (*length == 0) { return PRETTY_PRINTING_EMPTY_XML; } if (buffer == NULL || *buffer == NULL) { return PRETTY_PRINTING_EMPTY_XML; }
/* initialize the variables */ result = PRETTY_PRINTING_SUCCESS; - bool freeOptions = FALSE; + freeOptions = FALSE; if (ppOptions == NULL) { ppOptions = createDefaultPrettyPrintingOptions(); @@ -126,7 +129,7 @@ int processXMLPrettyPrinting(char** buffer, int* length, PrettyPrintingOptions* putCharInBuffer('\0');
/* adjust the final size */ - char* reallocated = (char*)realloc(xmlPrettyPrinted, xmlPrettyPrintedIndex); + reallocated = (char*)realloc(xmlPrettyPrinted, xmlPrettyPrintedIndex); if (reallocated == NULL) { PP_ERROR("Allocation error (reallocation size is %d)", xmlPrettyPrintedIndex); return PRETTY_PRINTING_SYSTEM_ERROR; } xmlPrettyPrinted = reallocated;
@@ -201,9 +204,11 @@ void putCharInBuffer(char charToAdd) /* check if the buffer is full and reallocation if needed */ if (xmlPrettyPrintedIndex >= xmlPrettyPrintedLength) { + char* reallocated; + if (charToAdd == '\0') { ++xmlPrettyPrintedLength; } else { xmlPrettyPrintedLength += inputBufferLength; } - char* reallocated = (char*)realloc(xmlPrettyPrinted, xmlPrettyPrintedLength); + reallocated = (char*)realloc(xmlPrettyPrinted, xmlPrettyPrintedLength); if (reallocated == NULL) { PP_ERROR("Allocation error (char was %c)", charToAdd); return; } xmlPrettyPrinted = reallocated; } @@ -230,9 +235,11 @@ char getPreviousInsertedChar(void)
int putNewLine(void) { - putCharsInBuffer(options->newLineChars); - int spaces = currentDepth*options->indentLength; + int spaces; int i; + + putCharsInBuffer(options->newLineChars); + spaces = currentDepth*options->indentLength; for(i=0 ; i<spaces ; ++i) { putCharInBuffer(options->indentChar); @@ -291,30 +298,37 @@ bool isLineBreak(char c)
bool isInlineNodeAllowed(void) { + int firstChar; + int secondChar; + int thirdChar; + int currentIndex; + char currentChar; + /* the last action was not an opening => inline not allowed */ if (!lastNodeOpen) { return FALSE; }
- int firstChar = getNextChar(); /* should be '<' or we are in a text node */ - int secondChar = inputBuffer[inputBufferIndex+1]; /* should be '!' */ - int thirdChar = inputBuffer[inputBufferIndex+2]; /* should be '-' or '[' */ + firstChar = getNextChar(); /* should be '<' or we are in a text node */ + secondChar = inputBuffer[inputBufferIndex+1]; /* should be '!' */ + thirdChar = inputBuffer[inputBufferIndex+2]; /* should be '-' or '[' */
/* loop through the content up to the next opening/closing node */ currentIndex = inputBufferIndex+1; if (firstChar == '<') { + char closingComment = '-'; + char oldChar = ' '; + bool loop = TRUE; + /* another node is being open ==> no inline ! */ if (secondChar != '!') { return FALSE; }
/* okay we are in a comment/cdata node, so read until it is closed */
/* select the closing char */ - char closingComment = '-'; if (thirdChar == '[') { closingComment = ']'; }
/* read until closing */ - char oldChar = ' '; currentIndex += 3; /* that bypass meanless chars */ - bool loop = TRUE; while (loop) { char current = inputBuffer[currentIndex]; @@ -417,21 +431,24 @@ void resetBackwardIndentation(bool resetLineBreak) int processElements(void) { int counter = 0; - ++currentDepth; bool loop = TRUE; + ++currentDepth; while (loop && result == PRETTY_PRINTING_SUCCESS) { + bool indentBackward; + char nextChar; + /* strip unused whites */ readWhites(TRUE);
- char nextChar = getNextChar(); + nextChar = getNextChar(); if (nextChar == '\0') { return 0; } /* no more data to read */
/* put a new line with indentation */ if (appendIndentation) { putNewLine(); }
/* always append indentation (but need to store the state) */ - bool indentBackward = appendIndentation; + indentBackward = appendIndentation; appendIndentation = TRUE;
/* okay what do we have now ? */ @@ -487,6 +504,8 @@ int processElements(void)
void processElementAttribute(void) { + char quote; + char value; /* process the attribute name */ char nextChar = readNextChar(); while (nextChar != '=') @@ -498,11 +517,11 @@ void processElementAttribute(void) putCharInBuffer(nextChar); /* that's the '=' */
/* read the simple quote or double quote and put it into the buffer */ - char quote = readNextChar(); + quote = readNextChar(); putCharInBuffer(quote);
/* process until the last quote */ - char value = readNextChar(); + value = readNextChar(); while(value != quote) { putCharInBuffer(value); @@ -515,6 +534,7 @@ void processElementAttribute(void)
void processElementAttributes(void) { + bool loop = TRUE; char current = getNextChar(); /* should not be a white */ if (isWhite(current)) { @@ -523,12 +543,13 @@ void processElementAttributes(void) return; }
- bool loop = TRUE; while (loop) { + char next; + readWhites(TRUE); /* strip the whites */
- char next = getNextChar(); /* don't read the last char (processed afterwards) */ + next = getNextChar(); /* don't read the last char (processed afterwards) */ if (next == '/') { loop = FALSE; } /* end of node */ else if (next == '>') { loop = FALSE; } /* end of tag */ else if (next == '?') { loop = FALSE; } /* end of header */ @@ -569,6 +590,12 @@ void processHeader(void)
void processNode(void) { + char closeChar; + int subElementsProcessed = 0; + char nextChar; + char* nodeName; + int nodeNameLength = 0; + int i; int opening = readNextChar(); if (opening != '<') { @@ -580,7 +607,6 @@ void processNode(void) putCharInBuffer(opening);
/* read the node name */ - int nodeNameLength = 0; while (!isWhite(getNextChar()) && getNextChar() != '>' && /* end of the tag */ getNextChar() != '/') /* tag is being closed */ @@ -590,10 +616,9 @@ void processNode(void) }
/* store the name */ - char* nodeName = (char*)malloc(sizeof(char)*nodeNameLength+1); + nodeName = (char*)malloc(sizeof(char)*nodeNameLength+1); if (nodeName == NULL) { PP_ERROR("Allocation error (node name length is %d)", nodeNameLength); return ; } nodeName[nodeNameLength] = '\0'; - int i; for (i=0 ; i<nodeNameLength ; ++i) { int tempIndex = xmlPrettyPrintedIndex-nodeNameLength+i; @@ -608,8 +633,8 @@ void processNode(void) processElementAttributes();
/* process the end of the tag */ - int subElementsProcessed = 0; - char nextChar = getNextChar(); /* should be either '/' or '>' */ + subElementsProcessed = 0; + nextChar = getNextChar(); /* should be either '/' or '>' */ if (nextChar == '/') /* the node is being closed immediatly */ { /* closing node directly */ @@ -654,7 +679,7 @@ void processNode(void)
/* if the code reaches this area, then the processElements has been called and we must * close the opening tag */ - char closeChar = getNextChar(); + closeChar = getNextChar(); if (closeChar != '<') { printError("processNode : Invalid character '%c' for closing tag (should be '<')", closeChar); @@ -707,6 +732,9 @@ void processNode(void)
void processComment(void) { + char lastChar; + bool loop = TRUE; + char oldChar; bool inlineAllowed = FALSE; if (options->inlineComment) { inlineAllowed = isInlineNodeAllowed(); } if (inlineAllowed && !options->oneLineComment) { inlineAllowed = isOnSingleLine(4, '-', '-'); } @@ -714,8 +742,7 @@ void processComment(void)
putNextCharsInBuffer(4); /* add the chars '<!--' */
- char oldChar = '-'; - bool loop = TRUE; + oldChar = '-'; while (loop) { char nextChar = readNextChar(); @@ -795,7 +822,7 @@ void processComment(void) } }
- char lastChar = readNextChar(); /* should be '>' */ + lastChar = readNextChar(); /* should be '>' */ if (lastChar != '>') { printError("processComment : last char must be '>' (not '%c')", lastChar); @@ -904,6 +931,9 @@ void processTextNode(void)
void processCDATA(void) { + char lastChar; + bool loop = TRUE; + char oldChar; bool inlineAllowed = FALSE; if (options->inlineCdata) { inlineAllowed = isInlineNodeAllowed(); } if (inlineAllowed && !options->oneLineCdata) { inlineAllowed = isOnSingleLine(9, ']', ']'); } @@ -911,8 +941,7 @@ void processCDATA(void)
putNextCharsInBuffer(9); /* putting the '<![CDATA[' into the buffer */
- bool loop = TRUE; - char oldChar = '['; + oldChar = '['; while(loop) { char nextChar = readNextChar(); @@ -1026,15 +1055,18 @@ void processCDATA(void)
void processDoctype(void) { + bool loop = TRUE; + putNextCharsInBuffer(9); /* put the '<!DOCTYPE' into the buffer */
- bool loop = TRUE; while(loop) { + int nextChar; + readWhites(TRUE); putCharInBuffer(' '); /* only one space for the attributes */
- int nextChar = readNextChar(); + nextChar = readNextChar(); while(!isWhite(nextChar) && !isQuote(nextChar) && /* begins a quoted text */ nextChar != '=' && /* begins an attribute */ @@ -1048,6 +1080,8 @@ void processDoctype(void) if (isWhite(nextChar)) {} /* do nothing, just let the next loop do the job */ else if (isQuote(nextChar) || nextChar == '=') { + char quote; + if (nextChar == '=') { putCharInBuffer(nextChar); @@ -1062,7 +1096,7 @@ void processDoctype(void) }
/* simply process the content */ - char quote = nextChar; + quote = nextChar; do { putCharInBuffer(nextChar);
@@ Diff output truncated at 100000 characters. @@
-------------- This E-Mail was brought to you by github_commit_mail.py (Source: TBD).