{"action":"created","comment":{"url":"https://api.github.com/repos/geany/geany/pulls/comments/73731166","id":73731166,"diff_hunk":"@@ -0,0 +1,277 @@\n+/*\n+*   Copyright (c) 1996-2003, Darren Hiebert\n+*\n+*   Author: Darren Hiebert <dhiebert@users.sourceforge.net>\n+*           http://ctags.sourceforge.net\n+*\n+*   This source code is released for free distribution under the terms of the\n+*   GNU General Public License version 2 or (at your option) any later version.\n+*   It is provided on an as-is basis and no responsibility is accepted for its\n+*   failure to perform as expected.\n+*\n+*   This is a reimplementation of the ctags (1) program. It is an attempt to\n+*   provide a fully featured ctags program which is free of the limitations\n+*   which most (all?) others are subject to.\n+*\n+*   This module contains the start-up code and routines to determine the list\n+*   of files to parsed for tags.\n+*/\n+\n+/*\n+*   INCLUDE FILES\n+*/\n+#include \"general.h\"  /* must always come first */\n+\n+#include <glib.h>\n+\n+/*  To provide timings features if available.\n+ */\n+#ifdef HAVE_CLOCK\n+# ifdef HAVE_TIME_H\n+#  include <time.h>\n+# endif\n+#else\n+# ifdef HAVE_TIMES\n+#  ifdef HAVE_SYS_TIMES_H\n+#   include <sys/times.h>\n+#  endif\n+# endif\n+#endif\n+\n+/*  To provide directory searching for recursion feature.\n+ */\n+\n+#ifdef HAVE_DIRENT_H\n+# ifdef HAVE_SYS_TYPES_H\n+#  include <sys/types.h>  /* required by dirent.h */\n+# endif\n+# include <dirent.h>  /* to declare opendir() */\n+# undef boolean\n+#endif\n+#ifdef HAVE_DIRECT_H\n+# include <direct.h>  /* to _getcwd() */\n+#endif\n+#ifdef HAVE_DIR_H\n+# include <dir.h>  /* to declare findfirst() and findnext */\n+#endif\n+#ifdef HAVE_IO_H\n+# include <io.h>  /* to declare _findfirst() */\n+#endif\n+\n+#include <string.h>\n+\n+#include \"debug.h\"\n+#include \"entry.h\"\n+#include \"keyword.h\"\n+#include \"main.h\"\n+#include \"options.h\"\n+#include \"read.h\"\n+#include \"routines.h\"\n+\n+/*\n+*   MACROS\n+*/\n+#define plural(value)           (((unsigned long)(value) == 1L) ? \"\" : \"s\")\n+\n+/*\n+*   DATA DEFINITIONS\n+*/\n+static struct { long files, lines, bytes; } Totals = { 0, 0, 0 };\n+\n+/*\n+*   FUNCTION DEFINITIONS\n+*/\n+\n+extern void addTotals (\n+\t\tconst unsigned int files, const long unsigned int lines,\n+\t\tconst long unsigned int bytes)\n+{\n+\tTotals.files += files;\n+\tTotals.lines += lines;\n+\tTotals.bytes += bytes;\n+}\n+\n+extern boolean isDestinationStdout (void)\n+{\n+\tboolean toStdout = FALSE;\n+\n+\tif (Option.xref  ||  Option.filter  ||\n+\t\t(Option.tagFileName != NULL  &&  (strcmp (Option.tagFileName, \"-\") == 0\n+\t\t\t\t\t\t  || strcmp (Option.tagFileName, \"/dev/stdout\") == 0\n+\t\t)))\n+\t\ttoStdout = TRUE;\n+\treturn toStdout;\n+}\n+\n+\n+# if defined (WIN32)\n+\n+static boolean createTagsForMatchingEntries (char *const pattern)\n+{\n+\tboolean resize = FALSE;\n+\tconst size_t dirLength = baseFilename (pattern) - (char *) pattern;\n+\tvString *const filePath = vStringNew ();\n+#if defined (HAVE_FINDFIRST)\n+\tstruct ffblk fileInfo;\n+\tint result = findfirst (pattern, &fileInfo, FA_DIREC);\n+\twhile (result == 0)\n+\t{\n+\t\tconst char *const entryName = fileInfo.ff_name;\n+\n+\t\t/*  We must not recurse into the directories \".\" or \"..\".\n+\t\t */\n+\t\tif (strcmp (entryName, \".\") != 0  &&  strcmp (entryName, \"..\") != 0)\n+\t\t{\n+\t\t\tvStringNCopyS (filePath, pattern, dirLength);\n+\t\t\tvStringCatS (filePath, entryName);\n+\t\t\tresize |= createTagsForEntry (vStringValue (filePath));\n+\t\t}\n+\t\tresult = findnext (&fileInfo);\n+\t}\n+#elif defined (HAVE__FINDFIRST)\n+\tstruct _finddata_t fileInfo;\n+\tlong hFile = _findfirst (pattern, &fileInfo);\n+\n+\tif (hFile != -1L)\n+\t{\n+\t\tdo\n+\t\t{\n+\t\t\tconst char *const entryName = fileInfo.name;\n+\n+\t\t\t/*  We must not recurse into the directories \".\" or \"..\".\n+\t\t\t */\n+\t\t\tif (strcmp (entryName, \".\") != 0  &&  strcmp (entryName, \"..\") != 0)\n+\t\t\t{\n+\t\t\t\tvStringNCopyS (filePath, pattern, dirLength);\n+\t\t\t\tvStringCatS (filePath, entryName);\n+\t\t\t\tresize |= createTagsForEntry (vStringValue (filePath));\n+\t\t\t}\n+\t\t} while (_findnext (hFile, &fileInfo) == 0);\n+\t\t_findclose (hFile);\n+\t}\n+#endif\n+\n+\tvStringDelete (filePath);\n+\treturn resize;\n+}\n+\n+#endif\n+\n+\n+static boolean recurseIntoDirectory (const char *const dirName)\n+{\n+\tboolean resize = FALSE;\n+\tif (isRecursiveLink (dirName))\n+\t\tverbose (\"ignoring \\\"%s\\\" (recursive link)\\n\", dirName);\n+\telse if (! Option.recurse)\n+\t\tverbose (\"ignoring \\\"%s\\\" (directory)\\n\", dirName);\n+\telse\n+\t{\n+#if defined (HAVE_OPENDIR)\n+\t\tDIR *const dir = opendir (dirName);\n+\t\tif (dir == NULL)\n+\t\t\terror (WARNING | PERROR, \"cannot recurse into directory \\\"%s\\\"\",\n+\t\t\t\t   dirName);\n+\t\telse\n+\t\t{\n+\t\t\tstruct dirent *entry;\n+\t\t\tverbose (\"RECURSING into directory \\\"%s\\\"\\n\", dirName);\n+\t\t\twhile ((entry = readdir (dir)) != NULL)\n+\t\t\t{\n+\t\t\t\tif (strcmp (entry->d_name, \".\") != 0  &&\n+\t\t\t\t\tstrcmp (entry->d_name, \"..\") != 0)\n+\t\t\t\t{\n+\t\t\t\t\tvString *filePath;\n+\t\t\t\t\tif (strcmp (dirName, \".\") == 0)\n+\t\t\t\t\t\tfilePath = vStringNewInit (entry->d_name);\n+\t\t\t\t\telse\n+\t\t\t\t\t\tfilePath = combinePathAndFile (dirName, entry->d_name);\n+\t\t\t\t\tresize |= createTagsForEntry (vStringValue (filePath));\n+\t\t\t\t\tvStringDelete (filePath);\n+\t\t\t\t}\n+\t\t\t}\n+\t\t\tclosedir (dir);\n+\t\t}\n+#elif defined (WIN32)\n+\t\tvString *const pattern = vStringNew ();\n+\t\tverbose (\"RECURSING into directory \\\"%s\\\"\\n\", dirName);\n+\t\tvStringCopyS (pattern, dirName);\n+\t\tvStringPut (pattern, OUTPUT_PATH_SEPARATOR);\n+\t\tvStringCatS (pattern, \"*.*\");\n+\t\tresize = createTagsForMatchingEntries (vStringValue (pattern));\n+\t\tvStringDelete (pattern);\n+#endif  /* HAVE_OPENDIR */\n+\t}\n+\treturn resize;\n+}\n+\n+#if defined (HAVE_CLOCK)\n+# define CLOCK_AVAILABLE\n+# ifndef CLOCKS_PER_SEC\n+#  define CLOCKS_PER_SEC\t\t1000000\n+# endif\n+#elif defined (HAVE_TIMES)\n+# define CLOCK_AVAILABLE\n+# define CLOCKS_PER_SEC\t60\n+static clock_t clock (void)\n+{\n+\tstruct tms buf;\n+\n+\ttimes (&buf);\n+\treturn (buf.tms_utime + buf.tms_stime);\n+}\n+#else\n+# define clock()  (clock_t)0\n+#endif\n+\n+static void printTotals (const clock_t *const timeStamps)\n+{\n+\tconst unsigned long totalTags = TagFile.numTags.added +\n+\t\t\t\t\t\t\t\t\tTagFile.numTags.prev;\n+\n+\tfprintf (errout, \"%ld file%s, %ld line%s (%ld kB) scanned\",\n+\t\t\tTotals.files, plural (Totals.files),\n+\t\t\tTotals.lines, plural (Totals.lines),\n+\t\t\tTotals.bytes/1024L);\n+#ifdef CLOCK_AVAILABLE\n+\t{\n+\t\tconst double interval = ((double) (timeStamps [1] - timeStamps [0])) /\n+\t\t\t\t\t\t\t\tCLOCKS_PER_SEC;\n+\n+\t\tfprintf (errout, \" in %.01f seconds\", interval);\n+\t\tif (interval != (double) 0.0)\n+\t\t\tfprintf (errout, \" (%lu kB/s)\",\n+\t\t\t\t\t(unsigned long) (Totals.bytes / interval) / 1024L);\n+\t}\n+#endif\n+\tfputc ('\\n', errout);\n+\n+\tfprintf (errout, \"%lu tag%s added to tag file\",\n+\t\t\tTagFile.numTags.added, plural (TagFile.numTags.added));\n+\tif (Option.append)\n+\t\tfprintf (errout, \" (now %lu tags)\", totalTags);\n+\tfputc ('\\n', errout);\n+\n+\tif (totalTags > 0  &&  Option.sorted)\n+\t{\n+\t\tfprintf (errout, \"%lu tag%s sorted\", totalTags, plural (totalTags));\n+#ifdef CLOCK_AVAILABLE\n+\t\tfprintf (errout, \" in %.02f seconds\",\n+\t\t\t\t((double) (timeStamps [2] - timeStamps [1])) / CLOCKS_PER_SEC);\n+#endif\n+\t\tfputc ('\\n', errout);\n+\t}\n+\n+#ifdef TM_DEBUG\n+\tfprintf (errout, \"longest tag line = %lu\\n\",\n+\t\t\t(unsigned long) TagFile.max.line);\n+#endif\n+}","path":"ctags/main/main.c","position":167,"original_position":269,"commit_id":"eb45c80058bc74fb3331e91d78d41e54b1ff482b","original_commit_id":"ea72ecc00fc22f24eced3ffce7c7db67d5f02271","user":{"login":"b4n","id":793526,"avatar_url":"https://avatars.githubusercontent.com/u/793526?v=3","gravatar_id":"","url":"https://api.github.com/users/b4n","html_url":"https://github.com/b4n","followers_url":"https://api.github.com/users/b4n/followers","following_url":"https://api.github.com/users/b4n/following{/other_user}","gists_url":"https://api.github.com/users/b4n/gists{/gist_id}","starred_url":"https://api.github.com/users/b4n/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/b4n/subscriptions","organizations_url":"https://api.github.com/users/b4n/orgs","repos_url":"https://api.github.com/users/b4n/repos","events_url":"https://api.github.com/users/b4n/events{/privacy}","received_events_url":"https://api.github.com/users/b4n/received_events","type":"User","site_admin":false},"body":"actually, all 'til here","created_at":"2016-08-05T17:40:08Z","updated_at":"2016-08-05T17:40:08Z","html_url":"https://github.com/geany/geany/pull/1160#discussion_r73731166","pull_request_url":"https://api.github.com/repos/geany/geany/pulls/1160","_links":{"self":{"href":"https://api.github.com/repos/geany/geany/pulls/comments/73731166"},"html":{"href":"https://github.com/geany/geany/pull/1160#discussion_r73731166"},"pull_request":{"href":"https://api.github.com/repos/geany/geany/pulls/1160"}}},"pull_request":{"url":"https://api.github.com/repos/geany/geany/pulls/1160","id":79822474,"html_url":"https://github.com/geany/geany/pull/1160","diff_url":"https://github.com/geany/geany/pull/1160.diff","patch_url":"https://github.com/geany/geany/pull/1160.patch","issue_url":"https://api.github.com/repos/geany/geany/issues/1160","number":1160,"state":"open","locked":false,"title":"Ctags sync, part 1","user":{"login":"techee","id":713965,"avatar_url":"https://avatars.githubusercontent.com/u/713965?v=3","gravatar_id":"","url":"https://api.github.com/users/techee","html_url":"https://github.com/techee","followers_url":"https://api.github.com/users/techee/followers","following_url":"https://api.github.com/users/techee/following{/other_user}","gists_url":"https://api.github.com/users/techee/gists{/gist_id}","starred_url":"https://api.github.com/users/techee/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/techee/subscriptions","organizations_url":"https://api.github.com/users/techee/orgs","repos_url":"https://api.github.com/users/techee/repos","events_url":"https://api.github.com/users/techee/events{/privacy}","received_events_url":"https://api.github.com/users/techee/received_events","type":"User","site_admin":false},"body":"The purpose of this pull request is to bring parsers as close to uctags parsers as possible in terms of their interaction with the \"main\" part of ctags (this means, no changes in parser's actual logic are made in this patch set). This involves various renames of functions in the \"API\" of \"main\" so that Geany parsers call the same functions as the uctags ones. Additional modifications include using tab-only indentation style (some files used combination of tabs and spaces) and unification of includes with uctags so some stuff had to be moved around.\r\n\r\nI was concentrated mostly on how the parsers look - in some cases I didn't backport the full implementation of the \"main\" functionality and used just some dummy implementation (in cases where the actual implementation isn't used by Geany).\r\n\r\nAt this point, parsers can be synced one by one independently of the sync work inside \"main\" (some are already identical with the uctags ones!). The work on syncing \"main\" shouldn't affect the work on syncing parsers (there are just tiny bits missing like cork support but these will be 1-line diffs in parsers).\r\n\r\nIt would be good to merge this soon - the patches have a huge potential to introduce merge conflicts with any other change made in the ctags directory and resolving conflicts will be quite painful.\r\n","created_at":"2016-08-02T22:50:05Z","updated_at":"2016-08-05T17:40:08Z","closed_at":null,"merged_at":null,"merge_commit_sha":"ff97e559caeb6511b4dc50429970029b86e8865a","assignee":{"login":"b4n","id":793526,"avatar_url":"https://avatars.githubusercontent.com/u/793526?v=3","gravatar_id":"","url":"https://api.github.com/users/b4n","html_url":"https://github.com/b4n","followers_url":"https://api.github.com/users/b4n/followers","following_url":"https://api.github.com/users/b4n/following{/other_user}","gists_url":"https://api.github.com/users/b4n/gists{/gist_id}","starred_url":"https://api.github.com/users/b4n/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/b4n/subscriptions","organizations_url":"https://api.github.com/users/b4n/orgs","repos_url":"https://api.github.com/users/b4n/repos","events_url":"https://api.github.com/users/b4n/events{/privacy}","received_events_url":"https://api.github.com/users/b4n/received_events","type":"User","site_admin":false},"assignees":[{"login":"b4n","id":793526,"avatar_url":"https://avatars.githubusercontent.com/u/793526?v=3","gravatar_id":"","url":"https://api.github.com/users/b4n","html_url":"https://github.com/b4n","followers_url":"https://api.github.com/users/b4n/followers","following_url":"https://api.github.com/users/b4n/following{/other_user}","gists_url":"https://api.github.com/users/b4n/gists{/gist_id}","starred_url":"https://api.github.com/users/b4n/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/b4n/subscriptions","organizations_url":"https://api.github.com/users/b4n/orgs","repos_url":"https://api.github.com/users/b4n/repos","events_url":"https://api.github.com/users/b4n/events{/privacy}","received_events_url":"https://api.github.com/users/b4n/received_events","type":"User","site_admin":false}],"milestone":null,"commits_url":"https://api.github.com/repos/geany/geany/pulls/1160/commits","review_comments_url":"https://api.github.com/repos/geany/geany/pulls/1160/comments","review_comment_url":"https://api.github.com/repos/geany/geany/pulls/comments{/number}","comments_url":"https://api.github.com/repos/geany/geany/issues/1160/comments","statuses_url":"https://api.github.com/repos/geany/geany/statuses/eb45c80058bc74fb3331e91d78d41e54b1ff482b","head":{"label":"techee:ctags_sync","ref":"ctags_sync","sha":"eb45c80058bc74fb3331e91d78d41e54b1ff482b","user":{"login":"techee","id":713965,"avatar_url":"https://avatars.githubusercontent.com/u/713965?v=3","gravatar_id":"","url":"https://api.github.com/users/techee","html_url":"https://github.com/techee","followers_url":"https://api.github.com/users/techee/followers","following_url":"https://api.github.com/users/techee/following{/other_user}","gists_url":"https://api.github.com/users/techee/gists{/gist_id}","starred_url":"https://api.github.com/users/techee/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/techee/subscriptions","organizations_url":"https://api.github.com/users/techee/orgs","repos_url":"https://api.github.com/users/techee/repos","events_url":"https://api.github.com/users/techee/events{/privacy}","received_events_url":"https://api.github.com/users/techee/received_events","type":"User","site_admin":false},"repo":{"id":24825705,"name":"geany","full_name":"techee/geany","owner":{"login":"techee","id":713965,"avatar_url":"https://avatars.githubusercontent.com/u/713965?v=3","gravatar_id":"","url":"https://api.github.com/users/techee","html_url":"https://github.com/techee","followers_url":"https://api.github.com/users/techee/followers","following_url":"https://api.github.com/users/techee/following{/other_user}","gists_url":"https://api.github.com/users/techee/gists{/gist_id}","starred_url":"https://api.github.com/users/techee/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/techee/subscriptions","organizations_url":"https://api.github.com/users/techee/orgs","repos_url":"https://api.github.com/users/techee/repos","events_url":"https://api.github.com/users/techee/events{/privacy}","received_events_url":"https://api.github.com/users/techee/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/techee/geany","description":"A fast and lightweight IDE","fork":true,"url":"https://api.github.com/repos/techee/geany","forks_url":"https://api.github.com/repos/techee/geany/forks","keys_url":"https://api.github.com/repos/techee/geany/keys{/key_id}","collaborators_url":"https://api.github.com/repos/techee/geany/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/techee/geany/teams","hooks_url":"https://api.github.com/repos/techee/geany/hooks","issue_events_url":"https://api.github.com/repos/techee/geany/issues/events{/number}","events_url":"https://api.github.com/repos/techee/geany/events","assignees_url":"https://api.github.com/repos/techee/geany/assignees{/user}","branches_url":"https://api.github.com/repos/techee/geany/branches{/branch}","tags_url":"https://api.github.com/repos/techee/geany/tags","blobs_url":"https://api.github.com/repos/techee/geany/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/techee/geany/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/techee/geany/git/refs{/sha}","trees_url":"https://api.github.com/repos/techee/geany/git/trees{/sha}","statuses_url":"https://api.github.com/repos/techee/geany/statuses/{sha}","languages_url":"https://api.github.com/repos/techee/geany/languages","stargazers_url":"https://api.github.com/repos/techee/geany/stargazers","contributors_url":"https://api.github.com/repos/techee/geany/contributors","subscribers_url":"https://api.github.com/repos/techee/geany/subscribers","subscription_url":"https://api.github.com/repos/techee/geany/subscription","commits_url":"https://api.github.com/repos/techee/geany/commits{/sha}","git_commits_url":"https://api.github.com/repos/techee/geany/git/commits{/sha}","comments_url":"https://api.github.com/repos/techee/geany/comments{/number}","issue_comment_url":"https://api.github.com/repos/techee/geany/issues/comments{/number}","contents_url":"https://api.github.com/repos/techee/geany/contents/{+path}","compare_url":"https://api.github.com/repos/techee/geany/compare/{base}...{head}","merges_url":"https://api.github.com/repos/techee/geany/merges","archive_url":"https://api.github.com/repos/techee/geany/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/techee/geany/downloads","issues_url":"https://api.github.com/repos/techee/geany/issues{/number}","pulls_url":"https://api.github.com/repos/techee/geany/pulls{/number}","milestones_url":"https://api.github.com/repos/techee/geany/milestones{/number}","notifications_url":"https://api.github.com/repos/techee/geany/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/techee/geany/labels{/name}","releases_url":"https://api.github.com/repos/techee/geany/releases{/id}","deployments_url":"https://api.github.com/repos/techee/geany/deployments","created_at":"2014-10-05T20:38:07Z","updated_at":"2015-03-11T21:37:59Z","pushed_at":"2016-08-03T20:13:43Z","git_url":"git://github.com/techee/geany.git","ssh_url":"git@github.com:techee/geany.git","clone_url":"https://github.com/techee/geany.git","svn_url":"https://github.com/techee/geany","homepage":"http://www.geany.org","size":50357,"stargazers_count":0,"watchers_count":0,"language":"Gettext Catalog","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"geany:master","ref":"master","sha":"5d8e291c6f7e5dfdfaf11cfe11e46684ffc669b5","user":{"login":"geany","id":1108795,"avatar_url":"https://avatars.githubusercontent.com/u/1108795?v=3","gravatar_id":"","url":"https://api.github.com/users/geany","html_url":"https://github.com/geany","followers_url":"https://api.github.com/users/geany/followers","following_url":"https://api.github.com/users/geany/following{/other_user}","gists_url":"https://api.github.com/users/geany/gists{/gist_id}","starred_url":"https://api.github.com/users/geany/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/geany/subscriptions","organizations_url":"https://api.github.com/users/geany/orgs","repos_url":"https://api.github.com/users/geany/repos","events_url":"https://api.github.com/users/geany/events{/privacy}","received_events_url":"https://api.github.com/users/geany/received_events","type":"Organization","site_admin":false},"repo":{"id":2532922,"name":"geany","full_name":"geany/geany","owner":{"login":"geany","id":1108795,"avatar_url":"https://avatars.githubusercontent.com/u/1108795?v=3","gravatar_id":"","url":"https://api.github.com/users/geany","html_url":"https://github.com/geany","followers_url":"https://api.github.com/users/geany/followers","following_url":"https://api.github.com/users/geany/following{/other_user}","gists_url":"https://api.github.com/users/geany/gists{/gist_id}","starred_url":"https://api.github.com/users/geany/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/geany/subscriptions","organizations_url":"https://api.github.com/users/geany/orgs","repos_url":"https://api.github.com/users/geany/repos","events_url":"https://api.github.com/users/geany/events{/privacy}","received_events_url":"https://api.github.com/users/geany/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/geany/geany","description":"A fast and lightweight IDE","fork":false,"url":"https://api.github.com/repos/geany/geany","forks_url":"https://api.github.com/repos/geany/geany/forks","keys_url":"https://api.github.com/repos/geany/geany/keys{/key_id}","collaborators_url":"https://api.github.com/repos/geany/geany/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/geany/geany/teams","hooks_url":"https://api.github.com/repos/geany/geany/hooks","issue_events_url":"https://api.github.com/repos/geany/geany/issues/events{/number}","events_url":"https://api.github.com/repos/geany/geany/events","assignees_url":"https://api.github.com/repos/geany/geany/assignees{/user}","branches_url":"https://api.github.com/repos/geany/geany/branches{/branch}","tags_url":"https://api.github.com/repos/geany/geany/tags","blobs_url":"https://api.github.com/repos/geany/geany/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/geany/geany/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/geany/geany/git/refs{/sha}","trees_url":"https://api.github.com/repos/geany/geany/git/trees{/sha}","statuses_url":"https://api.github.com/repos/geany/geany/statuses/{sha}","languages_url":"https://api.github.com/repos/geany/geany/languages","stargazers_url":"https://api.github.com/repos/geany/geany/stargazers","contributors_url":"https://api.github.com/repos/geany/geany/contributors","subscribers_url":"https://api.github.com/repos/geany/geany/subscribers","subscription_url":"https://api.github.com/repos/geany/geany/subscription","commits_url":"https://api.github.com/repos/geany/geany/commits{/sha}","git_commits_url":"https://api.github.com/repos/geany/geany/git/commits{/sha}","comments_url":"https://api.github.com/repos/geany/geany/comments{/number}","issue_comment_url":"https://api.github.com/repos/geany/geany/issues/comments{/number}","contents_url":"https://api.github.com/repos/geany/geany/contents/{+path}","compare_url":"https://api.github.com/repos/geany/geany/compare/{base}...{head}","merges_url":"https://api.github.com/repos/geany/geany/merges","archive_url":"https://api.github.com/repos/geany/geany/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/geany/geany/downloads","issues_url":"https://api.github.com/repos/geany/geany/issues{/number}","pulls_url":"https://api.github.com/repos/geany/geany/pulls{/number}","milestones_url":"https://api.github.com/repos/geany/geany/milestones{/number}","notifications_url":"https://api.github.com/repos/geany/geany/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/geany/geany/labels{/name}","releases_url":"https://api.github.com/repos/geany/geany/releases{/id}","deployments_url":"https://api.github.com/repos/geany/geany/deployments","created_at":"2011-10-07T14:25:32Z","updated_at":"2016-08-04T22:08:08Z","pushed_at":"2016-08-05T06:02:07Z","git_url":"git://github.com/geany/geany.git","ssh_url":"git@github.com:geany/geany.git","clone_url":"https://github.com/geany/geany.git","svn_url":"https://github.com/geany/geany","homepage":"http://www.geany.org","size":56407,"stargazers_count":793,"watchers_count":793,"language":"C","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":271,"mirror_url":null,"open_issues_count":383,"forks":271,"open_issues":383,"watchers":793,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/geany/geany/pulls/1160"},"html":{"href":"https://github.com/geany/geany/pull/1160"},"issue":{"href":"https://api.github.com/repos/geany/geany/issues/1160"},"comments":{"href":"https://api.github.com/repos/geany/geany/issues/1160/comments"},"review_comments":{"href":"https://api.github.com/repos/geany/geany/pulls/1160/comments"},"review_comment":{"href":"https://api.github.com/repos/geany/geany/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/geany/geany/pulls/1160/commits"},"statuses":{"href":"https://api.github.com/repos/geany/geany/statuses/eb45c80058bc74fb3331e91d78d41e54b1ff482b"}}}}
{"actor":{"display_login":"b4n"}}