Branch: refs/heads/master Author: Lex elextr@gmail.com Committer: Lex elextr@gmail.com Date: Thu, 17 Jan 2013 04:27:39 UTC Commit: 76aec0852af3450aabb296dff17f878571d25a49 https://github.com/geany/geany/commit/76aec0852af3450aabb296dff17f878571d25a...
Log Message: ----------- Revert incomplete Asciidoc filetype commit.
This reverts commit da78a44a1cfeb753e0d06d7175e882f508ad9788.
Modified Paths: -------------- data/filetypes.asciidoc tagmanager/ctags/asciidoc.c
Modified: data/filetypes.asciidoc 35 files changed, 0 insertions(+), 35 deletions(-) =================================================================== @@ -1,35 +0,0 @@ -# For complete documentation of this file, please see Geany's main documentation -[styling] -# no syntax highlighting yet - -[settings] -# default extension used when saving files -extension=asciidoc - -# the following characters are these which a "word" can contains, see documentation -#wordchars=_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 - -# single comments, like # in this file -comment_single=// -# multiline comments -#comment_open=//// -#comment_close=//// - -# set to false if a comment character/string should start at column 0 of a line, true uses any -# indentation of the line, e.g. setting to true causes the following on pressing CTRL+d - #command_example(); -# setting to false would generate this -# command_example(); -# This setting works only for single line comments -comment_use_indent=false - -# context action command (please see Geany's main documentation for details) -context_action_cmd= - -# sort tags by appearance -symbol_list_sort_mode=1 - -[indentation] -#width=4 -# 0 is spaces, 1 is tabs, 2 is tab & spaces -#type=1
Modified: tagmanager/ctags/asciidoc.c 208 files changed, 0 insertions(+), 208 deletions(-) =================================================================== @@ -1,208 +0,0 @@ -/* -* -* Copyright (c) 2012, Lex Trotman -* Based on Rest code by Nick Treleaven, see rest.c -* -* This source code is released for free distribution under the terms of the -* GNU General Public License. -* -* This module contains functions for generating tags for asciidoc files. -*/ - -/* -* INCLUDE FILES -*/ -#include "general.h" /* must always come first */ - -#include <ctype.h> -#include <string.h> - -#include "parse.h" -#include "read.h" -#include "vstring.h" -#include "nestlevel.h" - -/* -* DATA DEFINITIONS -*/ -typedef enum { - K_CHAPTER = 0, - K_SECTION, - K_SUBSECTION, - K_SUBSUBSECTION, - K_LEVEL5SECTION, - SECTION_COUNT -} asciidocKind; - -static kindOption AsciidocKinds[] = { - { TRUE, 'n', "namespace", "chapters"}, - { TRUE, 'm', "member", "sections" }, - { TRUE, 'd', "macro", "level2sections" }, - { TRUE, 'v', "variable", "level3sections" }, - { TRUE, 's', "struct", "level4sections" } -}; - -static char kindchars[SECTION_COUNT]={ '=', '-', '~', '^', '+' }; - -static NestingLevels *nestingLevels = NULL; - -/* -* FUNCTION DEFINITIONS -*/ - -static NestingLevel *getNestingLevel(const int kind) -{ - NestingLevel *nl; - - while (1) - { - nl = nestingLevelsGetCurrent(nestingLevels); - if (nl && nl->type >= kind) - nestingLevelsPop(nestingLevels); - else - break; - } - return nl; -} - -static void makeAsciidocTag (const vString* const name, const int kind) -{ - const NestingLevel *const nl = getNestingLevel(kind); - - if (vStringLength (name) > 0) - { - tagEntryInfo e; - initTagEntry (&e, vStringValue (name)); - - e.lineNumber--; /* we want the line before the '---' underline chars */ - e.kindName = AsciidocKinds [kind].name; - e.kind = AsciidocKinds [kind].letter; - - if (nl && nl->type < kind) - { - e.extensionFields.scope [0] = AsciidocKinds [nl->type].name; - e.extensionFields.scope [1] = vStringValue (nl->name); - } - makeTagEntry (&e); - } - nestingLevelsPush(nestingLevels, name, kind); -} - - -/* checks if str is all the same character - * FIXME needs to consider single line titles as well as underlines - * and rename me istitle() */ -static boolean issame(const char *str) -{ - char first = *str; - - while (*str) - { - char c; - - str++; - c = *str; - if (c && c != first) - return FALSE; - } - return TRUE; -} - - -static int get_kind(char c) -{ - int i; - - for (i = 0; i < SECTION_COUNT; i++) - { - if (kindchars[i] == c) - return i; - } - return -1; -} - - -/* computes the length of an UTF-8 string - * if the string doesn't look like UTF-8, return -1 - * FIXME asciidoc also takes the asian character width into consideration */ -static int utf8_strlen(const char *buf, int buf_len) -{ - int len = 0; - const char *end = buf + buf_len; - - for (len = 0; buf < end; len ++) - { - /* perform quick and naive validation (no sub-byte checking) */ - if (! (*buf & 0x80)) - buf ++; - else if ((*buf & 0xe0) == 0xc0) - buf += 2; - else if ((*buf & 0xf0) == 0xe0) - buf += 3; - else if ((*buf & 0xf8) == 0xf0) - buf += 4; - else /* not a valid leading UTF-8 byte, abort */ - return -1; - - if (buf > end) /* incomplete last byte */ - return -1; - } - - return len; -} - - -static void findAsciidocTags (void) -{ - vString *name = vStringNew (); - const unsigned char *line; - - nestingLevels = nestingLevelsNew(); - - while ((line = fileReadLine ()) != NULL) - { - int line_len = strlen((const char*) line); - int name_len_bytes = vStringLength(name); - int name_len = utf8_strlen(vStringValue(name), name_len_bytes); - - /* if the name doesn't look like UTF-8, assume one-byte charset */ - if (name_len < 0) - name_len = name_len_bytes; - - /* underlines must be +-2 chars */ - if (line_len >= name_len - 2 && line_len <= name_len + 2 && name_len > 0 && - ispunct(line[0]) && issame((const char*) line)) - { - char c = line[0]; - int kind = get_kind(c); - - if (kind >= 0) - { - makeAsciidocTag(name, kind); - continue; - } - } - vStringClear (name); - if (! isspace(*line)) - vStringCatS(name, (const char*) line); - vStringTerminate(name); - } - vStringDelete (name); - nestingLevelsFree(nestingLevels); -} - -extern parserDefinition* AsciidocParser (void) -{ - static const char *const patterns [] = { "*.asciidoc", NULL }; - static const char *const extensions [] = { "asciidoc", NULL }; - parserDefinition* const def = parserNew ("Asciidoc"); - - def->kinds = AsciidocKinds; - def->kindCount = KIND_COUNT (AsciidocKinds); - def->patterns = patterns; - def->extensions = extensions; - def->parser = findAsciidocTags; - return def; -} - -/* vi:set tabstop=8 shiftwidth=4: */
-------------- This E-Mail was brought to you by github_commit_mail.py (Source: https://github.com/geany/infrastructure).