{"action":"created","comment":{"url":"https://api.github.com/repos/notepad-plus-plus/notepad-plus-plus/pulls/comments/33002177","id":33002177,"diff_hunk":"@@ -0,0 +1,126 @@\n+// This file is part of Notepad++ project\n+// Copyright (C)2003 Don HO <don.h@free.fr>\n+//\n+// This program is free software; you can redistribute it and/or\n+// modify it under the terms of the GNU General Public License\n+// as published by the Free Software Foundation; either\n+// version 2 of the License, or (at your option) any later version.\n+//\n+// Note that the GPL places important restrictions on \"derived works\", yet\n+// it does not provide a detailed definition of that term.  To avoid      \n+// misunderstandings, we consider an application to constitute a          \n+// \"derivative work\" for the purpose of this license if it does any of the\n+// following:                                                             \n+// 1. Integrates source code from Notepad++.\n+// 2. Integrates/includes/aggregates Notepad++ into a proprietary executable\n+//    installer, such as those produced by InstallShield.\n+// 3. Links to a library or executes a program that does any of the above.\n+//\n+// This program is distributed in the hope that it will be useful,\n+// but WITHOUT ANY WARRANTY; without even the implied warranty of\n+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n+// GNU General Public License for more details.\n+//\n+// You should have received a copy of the GNU General Public License\n+// along with this program; if not, write to the Free Software\n+// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.\n+\n+\n+#ifndef DIRECTORY_H\n+#define DIRECTORY_H\n+\n+#include \"Common.h\"\n+#include <set>\n+\n+// directory class for project panel.\n+\n+class Directory {\n+protected:\n+\tgeneric_string _path;\n+\tbool _hideEmptyDirs;\n+\tbool _wasRead;\n+\n+\tstruct comparator {\n+\t\tbool operator() (const generic_string& lhs, const generic_string& rhs) const {\n+\t\t\treturn lstrcmpi(lhs.c_str(),rhs.c_str()) < 0;\n+\t\t}\n+\t};\n+\tstd::set<generic_string,comparator> _dirs;\n+\tstd::set<generic_string,comparator> _files;\n+\tstd::vector<generic_string> _invisibleDirs;\n+\t\n+\tstd::vector<generic_string> _filters;\n+\n+\tbool _exists;\n+\n+\tFILETIME _lastWriteTime;\n+public:\n+\t// default directory - does not exist by default\n+\tDirectory(bool hideEmptyDirs = true);\n+\t// directory with path - is instantly read in ctor, if autoread==true\n+\tDirectory(const generic_string& path, const std::vector<generic_string>& filters = std::vector<generic_string>(), bool hideEmptyDirs=true, bool autoread=true );\n+\n+\tvirtual ~Directory() {}\n+\n+\tconst generic_string& getPath() const { return _path; }\n+\n+\t// read the directory. Returns true, if the directory exists.\n+\tbool read(const generic_string& path, const std::vector<generic_string>& filters);\n+\tbool read(const generic_string& path) { return read(path,_filters); }\n+\tbool read() { return read(_path, _filters); }\n+\n+\t// re-read the current directory, but only if it was changed.\n+\t// returns true, if directory was re-read, false if directory has not changed.\n+\tbool readIfChanged(bool respectEmptyDirs = true);\n+\n+\t// false when not initialized.\n+\tbool exists() const { return _exists; }\n+\n+\tconst std::set<generic_string,comparator>& getDirs() const { return _dirs; }\n+\tconst std::set<generic_string,comparator>& getFiles() const { return _files; }\n+\n+\tbool operator== (const Directory& other) const;\n+\tbool operator!= (const Directory& other) const;\n+\n+\tbool empty() const { return _dirs.empty() && _files.empty(); }\n+\n+\tbool writeTimeHasChanged() const;\n+\n+\tvoid setFilters(const std::vector<generic_string>& filters = std::vector<generic_string>(), bool autoread=true);\n+\tconst std::vector<generic_string>& getFilters() const { return _filters; }\n+\n+\t// empty directories can be hidden:\n+\t// \"empty\" means in this case, neither the directory itself nor its subdirectories contains any data, which match the filters\n+\tbool getHideEmptyDirs() const { return _hideEmptyDirs; }","path":"PowerEditor/src/WinControls/ProjectPanel/Directory.h","position":94,"original_position":94,"commit_id":"9e771b31d813d45c98554fb5ba8bd9f5c6a9baa4","original_commit_id":"9e771b31d813d45c98554fb5ba8bd9f5c6a9baa4","user":{"login":"ariccio","id":2142308,"avatar_url":"https://avatars.githubusercontent.com/u/2142308?v=3","gravatar_id":"","url":"https://api.github.com/users/ariccio","html_url":"https://github.com/ariccio","followers_url":"https://api.github.com/users/ariccio/followers","following_url":"https://api.github.com/users/ariccio/following{/other_user}","gists_url":"https://api.github.com/users/ariccio/gists{/gist_id}","starred_url":"https://api.github.com/users/ariccio/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ariccio/subscriptions","organizations_url":"https://api.github.com/users/ariccio/orgs","repos_url":"https://api.github.com/users/ariccio/repos","events_url":"https://api.github.com/users/ariccio/events{/privacy}","received_events_url":"https://api.github.com/users/ariccio/received_events","type":"User","site_admin":false},"body":"`getHideEmptyDirs` is not used? I also don't see the purpose of a one-line-getter for a `bool`. That doesn't improve encapsulation?","created_at":"2015-06-23T01:22:41Z","updated_at":"2015-06-23T01:22:41Z","html_url":"https://github.com/notepad-plus-plus/notepad-plus-plus/pull/214#discussion_r33002177","pull_request_url":"https://api.github.com/repos/notepad-plus-plus/notepad-plus-plus/pulls/214","_links":{"self":{"href":"https://api.github.com/repos/notepad-plus-plus/notepad-plus-plus/pulls/comments/33002177"},"html":{"href":"https://github.com/notepad-plus-plus/notepad-plus-plus/pull/214#discussion_r33002177"},"pull_request":{"href":"https://api.github.com/repos/notepad-plus-plus/notepad-plus-plus/pulls/214"}}},"pull_request":{"url":"https://api.github.com/repos/notepad-plus-plus/notepad-plus-plus/pulls/214","id":37643792,"html_url":"https://github.com/notepad-plus-plus/notepad-plus-plus/pull/214","diff_url":"https://github.com/notepad-plus-plus/notepad-plus-plus/pull/214.diff","patch_url":"https://github.com/notepad-plus-plus/notepad-plus-plus/pull/214.patch","issue_url":"https://api.github.com/repos/notepad-plus-plus/notepad-plus-plus/issues/214","number":214,"state":"open","locked":false,"title":"Added monitored directories to project panel (Change request #2024)","user":{"login":"Arkarit","id":12444486,"avatar_url":"https://avatars.githubusercontent.com/u/12444486?v=3","gravatar_id":"","url":"https://api.github.com/users/Arkarit","html_url":"https://github.com/Arkarit","followers_url":"https://api.github.com/users/Arkarit/followers","following_url":"https://api.github.com/users/Arkarit/following{/other_user}","gists_url":"https://api.github.com/users/Arkarit/gists{/gist_id}","starred_url":"https://api.github.com/users/Arkarit/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Arkarit/subscriptions","organizations_url":"https://api.github.com/users/Arkarit/orgs","repos_url":"https://api.github.com/users/Arkarit/repos","events_url":"https://api.github.com/users/Arkarit/events{/privacy}","received_events_url":"https://api.github.com/users/Arkarit/received_events","type":"User","site_admin":false},"body":"Monitored directories can be added to a project.\r\nEach monitored directory can have multiple search patterns. These search patterns are displayed in the directory and in the info tip. Clearing the search pattern filters for all files. Sub directories, which contain no data matching the pattern, are hidden.\r\nDirectories can also be renamed manually.\r\n\r\n\r\nImplementation details:\r\nThe monitoring is done by polling every second.\r\n\r\nI don't really like polling, but I tried two other obvious attempts, both of which had severe drawbacks:\r\n\r\nFindFirstChangeNotification/FindNextChangeNotification: Did not work very good, because a max of ~60 directories per thread can be handled (64 objects limit of WaitForMultipleObjects). Additionally, it is not very useful when used for full sub trees, because it does not offer details about WHAT was changed.\r\n\r\nGetQueuedCompletionStatus/ReadDirectoryChangesW: Worked absolutely perfect in terms of being notified, BUT locked all open directories against deletion, which is definitely not what we want: The feature is mainly thought for directories, which are externally changed, e.g. a Perforce directory of LUA files, which change on every get latest version. It would be completely counterproductive if Perforce would be hindered from deleting directories, because Notepad++ watches it.\r\n\r\nThe polling itself is quick, because the last write time is checked first.\r\n\r\nEvery 10 seconds, the visibility of the sub directories is checked.\r\nSince this is a recursive operation (a sub-directory may not be hidden, if a sub-sub-sub-directory contains data), this is a far more time consuming operation. If you add directories with an extreme amount of sub-directories (e.g. C:\\Windows\\winsxs, it has ~18.000 sub directories on my machine!), a remarkably time is spent by checking these. Nevertheless, monitoring winsxs is not what the project panel is thought for, and for moderately big directories, it works pretty good.\r\n\r\nAdditionally, there is still some optimization potential for opening directories, which is slow currently for really large directories. Currently, if a directory changes, the directory is read and compared in the watcher thread, then a message is sent, and then its read and compared again in the project panel. It would be better, if the directory contents would be directly sent.\r\n\r\nProbably, the monitoring feature and the sub directory visibility feature could be switched by user options. This is prepared, but not tested.\r\n\r\nFeedback appreciated.","created_at":"2015-06-14T16:02:23Z","updated_at":"2015-06-23T01:22:41Z","closed_at":null,"merged_at":null,"merge_commit_sha":"2ab4611037bd3f72aaf7fc9b2e59cc6d148c8643","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/notepad-plus-plus/notepad-plus-plus/pulls/214/commits","review_comments_url":"https://api.github.com/repos/notepad-plus-plus/notepad-plus-plus/pulls/214/comments","review_comment_url":"https://api.github.com/repos/notepad-plus-plus/notepad-plus-plus/pulls/comments{/number}","comments_url":"https://api.github.com/repos/notepad-plus-plus/notepad-plus-plus/issues/214/comments","statuses_url":"https://api.github.com/repos/notepad-plus-plus/notepad-plus-plus/statuses/9e771b31d813d45c98554fb5ba8bd9f5c6a9baa4","head":{"label":"Arkarit:monitoredProjectDirectories","ref":"monitoredProjectDirectories","sha":"9e771b31d813d45c98554fb5ba8bd9f5c6a9baa4","user":{"login":"Arkarit","id":12444486,"avatar_url":"https://avatars.githubusercontent.com/u/12444486?v=3","gravatar_id":"","url":"https://api.github.com/users/Arkarit","html_url":"https://github.com/Arkarit","followers_url":"https://api.github.com/users/Arkarit/followers","following_url":"https://api.github.com/users/Arkarit/following{/other_user}","gists_url":"https://api.github.com/users/Arkarit/gists{/gist_id}","starred_url":"https://api.github.com/users/Arkarit/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Arkarit/subscriptions","organizations_url":"https://api.github.com/users/Arkarit/orgs","repos_url":"https://api.github.com/users/Arkarit/repos","events_url":"https://api.github.com/users/Arkarit/events{/privacy}","received_events_url":"https://api.github.com/users/Arkarit/received_events","type":"User","site_admin":false},"repo":{"id":35608524,"name":"notepad-plus-plus","full_name":"Arkarit/notepad-plus-plus","owner":{"login":"Arkarit","id":12444486,"avatar_url":"https://avatars.githubusercontent.com/u/12444486?v=3","gravatar_id":"","url":"https://api.github.com/users/Arkarit","html_url":"https://github.com/Arkarit","followers_url":"https://api.github.com/users/Arkarit/followers","following_url":"https://api.github.com/users/Arkarit/following{/other_user}","gists_url":"https://api.github.com/users/Arkarit/gists{/gist_id}","starred_url":"https://api.github.com/users/Arkarit/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Arkarit/subscriptions","organizations_url":"https://api.github.com/users/Arkarit/orgs","repos_url":"https://api.github.com/users/Arkarit/repos","events_url":"https://api.github.com/users/Arkarit/events{/privacy}","received_events_url":"https://api.github.com/users/Arkarit/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/Arkarit/notepad-plus-plus","description":"Notepad++ work repository (non-official). For official repository see donho/notepad-plus-plus","fork":true,"url":"https://api.github.com/repos/Arkarit/notepad-plus-plus","forks_url":"https://api.github.com/repos/Arkarit/notepad-plus-plus/forks","keys_url":"https://api.github.com/repos/Arkarit/notepad-plus-plus/keys{/key_id}","collaborators_url":"https://api.github.com/repos/Arkarit/notepad-plus-plus/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/Arkarit/notepad-plus-plus/teams","hooks_url":"https://api.github.com/repos/Arkarit/notepad-plus-plus/hooks","issue_events_url":"https://api.github.com/repos/Arkarit/notepad-plus-plus/issues/events{/number}","events_url":"https://api.github.com/repos/Arkarit/notepad-plus-plus/events","assignees_url":"https://api.github.com/repos/Arkarit/notepad-plus-plus/assignees{/user}","branches_url":"https://api.github.com/repos/Arkarit/notepad-plus-plus/branches{/branch}","tags_url":"https://api.github.com/repos/Arkarit/notepad-plus-plus/tags","blobs_url":"https://api.github.com/repos/Arkarit/notepad-plus-plus/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/Arkarit/notepad-plus-plus/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/Arkarit/notepad-plus-plus/git/refs{/sha}","trees_url":"https://api.github.com/repos/Arkarit/notepad-plus-plus/git/trees{/sha}","statuses_url":"https://api.github.com/repos/Arkarit/notepad-plus-plus/statuses/{sha}","languages_url":"https://api.github.com/repos/Arkarit/notepad-plus-plus/languages","stargazers_url":"https://api.github.com/repos/Arkarit/notepad-plus-plus/stargazers","contributors_url":"https://api.github.com/repos/Arkarit/notepad-plus-plus/contributors","subscribers_url":"https://api.github.com/repos/Arkarit/notepad-plus-plus/subscribers","subscription_url":"https://api.github.com/repos/Arkarit/notepad-plus-plus/subscription","commits_url":"https://api.github.com/repos/Arkarit/notepad-plus-plus/commits{/sha}","git_commits_url":"https://api.github.com/repos/Arkarit/notepad-plus-plus/git/commits{/sha}","comments_url":"https://api.github.com/repos/Arkarit/notepad-plus-plus/comments{/number}","issue_comment_url":"https://api.github.com/repos/Arkarit/notepad-plus-plus/issues/comments{/number}","contents_url":"https://api.github.com/repos/Arkarit/notepad-plus-plus/contents/{+path}","compare_url":"https://api.github.com/repos/Arkarit/notepad-plus-plus/compare/{base}...{head}","merges_url":"https://api.github.com/repos/Arkarit/notepad-plus-plus/merges","archive_url":"https://api.github.com/repos/Arkarit/notepad-plus-plus/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/Arkarit/notepad-plus-plus/downloads","issues_url":"https://api.github.com/repos/Arkarit/notepad-plus-plus/issues{/number}","pulls_url":"https://api.github.com/repos/Arkarit/notepad-plus-plus/pulls{/number}","milestones_url":"https://api.github.com/repos/Arkarit/notepad-plus-plus/milestones{/number}","notifications_url":"https://api.github.com/repos/Arkarit/notepad-plus-plus/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/Arkarit/notepad-plus-plus/labels{/name}","releases_url":"https://api.github.com/repos/Arkarit/notepad-plus-plus/releases{/id}","created_at":"2015-05-14T11:53:02Z","updated_at":"2015-05-23T08:04:46Z","pushed_at":"2015-06-21T00:08:06Z","git_url":"git://github.com/Arkarit/notepad-plus-plus.git","ssh_url":"git@github.com:Arkarit/notepad-plus-plus.git","clone_url":"https://github.com/Arkarit/notepad-plus-plus.git","svn_url":"https://github.com/Arkarit/notepad-plus-plus","homepage":"","size":142822,"stargazers_count":0,"watchers_count":0,"language":"C++","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":"notepad-plus-plus:master","ref":"master","sha":"0d768dd289e504f2f1dddbcc97f8073213d29c05","user":{"login":"notepad-plus-plus","id":12589084,"avatar_url":"https://avatars.githubusercontent.com/u/12589084?v=3","gravatar_id":"","url":"https://api.github.com/users/notepad-plus-plus","html_url":"https://github.com/notepad-plus-plus","followers_url":"https://api.github.com/users/notepad-plus-plus/followers","following_url":"https://api.github.com/users/notepad-plus-plus/following{/other_user}","gists_url":"https://api.github.com/users/notepad-plus-plus/gists{/gist_id}","starred_url":"https://api.github.com/users/notepad-plus-plus/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/notepad-plus-plus/subscriptions","organizations_url":"https://api.github.com/users/notepad-plus-plus/orgs","repos_url":"https://api.github.com/users/notepad-plus-plus/repos","events_url":"https://api.github.com/users/notepad-plus-plus/events{/privacy}","received_events_url":"https://api.github.com/users/notepad-plus-plus/received_events","type":"Organization","site_admin":false},"repo":{"id":33014811,"name":"notepad-plus-plus","full_name":"notepad-plus-plus/notepad-plus-plus","owner":{"login":"notepad-plus-plus","id":12589084,"avatar_url":"https://avatars.githubusercontent.com/u/12589084?v=3","gravatar_id":"","url":"https://api.github.com/users/notepad-plus-plus","html_url":"https://github.com/notepad-plus-plus","followers_url":"https://api.github.com/users/notepad-plus-plus/followers","following_url":"https://api.github.com/users/notepad-plus-plus/following{/other_user}","gists_url":"https://api.github.com/users/notepad-plus-plus/gists{/gist_id}","starred_url":"https://api.github.com/users/notepad-plus-plus/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/notepad-plus-plus/subscriptions","organizations_url":"https://api.github.com/users/notepad-plus-plus/orgs","repos_url":"https://api.github.com/users/notepad-plus-plus/repos","events_url":"https://api.github.com/users/notepad-plus-plus/events{/privacy}","received_events_url":"https://api.github.com/users/notepad-plus-plus/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/notepad-plus-plus/notepad-plus-plus","description":"Notepad++ official repository","fork":false,"url":"https://api.github.com/repos/notepad-plus-plus/notepad-plus-plus","forks_url":"https://api.github.com/repos/notepad-plus-plus/notepad-plus-plus/forks","keys_url":"https://api.github.com/repos/notepad-plus-plus/notepad-plus-plus/keys{/key_id}","collaborators_url":"https://api.github.com/repos/notepad-plus-plus/notepad-plus-plus/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/notepad-plus-plus/notepad-plus-plus/teams","hooks_url":"https://api.github.com/repos/notepad-plus-plus/notepad-plus-plus/hooks","issue_events_url":"https://api.github.com/repos/notepad-plus-plus/notepad-plus-plus/issues/events{/number}","events_url":"https://api.github.com/repos/notepad-plus-plus/notepad-plus-plus/events","assignees_url":"https://api.github.com/repos/notepad-plus-plus/notepad-plus-plus/assignees{/user}","branches_url":"https://api.github.com/repos/notepad-plus-plus/notepad-plus-plus/branches{/branch}","tags_url":"https://api.github.com/repos/notepad-plus-plus/notepad-plus-plus/tags","blobs_url":"https://api.github.com/repos/notepad-plus-plus/notepad-plus-plus/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/notepad-plus-plus/notepad-plus-plus/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/notepad-plus-plus/notepad-plus-plus/git/refs{/sha}","trees_url":"https://api.github.com/repos/notepad-plus-plus/notepad-plus-plus/git/trees{/sha}","statuses_url":"https://api.github.com/repos/notepad-plus-plus/notepad-plus-plus/statuses/{sha}","languages_url":"https://api.github.com/repos/notepad-plus-plus/notepad-plus-plus/languages","stargazers_url":"https://api.github.com/repos/notepad-plus-plus/notepad-plus-plus/stargazers","contributors_url":"https://api.github.com/repos/notepad-plus-plus/notepad-plus-plus/contributors","subscribers_url":"https://api.github.com/repos/notepad-plus-plus/notepad-plus-plus/subscribers","subscription_url":"https://api.github.com/repos/notepad-plus-plus/notepad-plus-plus/subscription","commits_url":"https://api.github.com/repos/notepad-plus-plus/notepad-plus-plus/commits{/sha}","git_commits_url":"https://api.github.com/repos/notepad-plus-plus/notepad-plus-plus/git/commits{/sha}","comments_url":"https://api.github.com/repos/notepad-plus-plus/notepad-plus-plus/comments{/number}","issue_comment_url":"https://api.github.com/repos/notepad-plus-plus/notepad-plus-plus/issues/comments{/number}","contents_url":"https://api.github.com/repos/notepad-plus-plus/notepad-plus-plus/contents/{+path}","compare_url":"https://api.github.com/repos/notepad-plus-plus/notepad-plus-plus/compare/{base}...{head}","merges_url":"https://api.github.com/repos/notepad-plus-plus/notepad-plus-plus/merges","archive_url":"https://api.github.com/repos/notepad-plus-plus/notepad-plus-plus/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/notepad-plus-plus/notepad-plus-plus/downloads","issues_url":"https://api.github.com/repos/notepad-plus-plus/notepad-plus-plus/issues{/number}","pulls_url":"https://api.github.com/repos/notepad-plus-plus/notepad-plus-plus/pulls{/number}","milestones_url":"https://api.github.com/repos/notepad-plus-plus/notepad-plus-plus/milestones{/number}","notifications_url":"https://api.github.com/repos/notepad-plus-plus/notepad-plus-plus/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/notepad-plus-plus/notepad-plus-plus/labels{/name}","releases_url":"https://api.github.com/repos/notepad-plus-plus/notepad-plus-plus/releases{/id}","created_at":"2015-03-28T00:05:08Z","updated_at":"2015-06-22T22:35:34Z","pushed_at":"2015-06-22T22:16:43Z","git_url":"git://github.com/notepad-plus-plus/notepad-plus-plus.git","ssh_url":"git@github.com:notepad-plus-plus/notepad-plus-plus.git","clone_url":"https://github.com/notepad-plus-plus/notepad-plus-plus.git","svn_url":"https://github.com/notepad-plus-plus/notepad-plus-plus","homepage":"https://notepad-plus-plus.org/","size":157675,"stargazers_count":1408,"watchers_count":1408,"language":"C++","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":199,"mirror_url":null,"open_issues_count":158,"forks":199,"open_issues":158,"watchers":1408,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/notepad-plus-plus/notepad-plus-plus/pulls/214"},"html":{"href":"https://github.com/notepad-plus-plus/notepad-plus-plus/pull/214"},"issue":{"href":"https://api.github.com/repos/notepad-plus-plus/notepad-plus-plus/issues/214"},"comments":{"href":"https://api.github.com/repos/notepad-plus-plus/notepad-plus-plus/issues/214/comments"},"review_comments":{"href":"https://api.github.com/repos/notepad-plus-plus/notepad-plus-plus/pulls/214/comments"},"review_comment":{"href":"https://api.github.com/repos/notepad-plus-plus/notepad-plus-plus/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/notepad-plus-plus/notepad-plus-plus/pulls/214/commits"},"statuses":{"href":"https://api.github.com/repos/notepad-plus-plus/notepad-plus-plus/statuses/9e771b31d813d45c98554fb5ba8bd9f5c6a9baa4"}}}}