{"id":13684890,"url":"https://github.com/markohlebar/Peckham","last_synced_at":"2025-05-01T00:33:38.312Z","repository":{"id":18044467,"uuid":"21090765","full_name":"markohlebar/Peckham","owner":"markohlebar","description":"Add #import-s from anywhere in the code. ","archived":false,"fork":false,"pushed_at":"2016-10-05T16:10:40.000Z","size":3160,"stargazers_count":713,"open_issues_count":18,"forks_count":94,"subscribers_count":36,"default_branch":"master","last_synced_at":"2024-08-03T14:08:09.083Z","etag":null,"topics":["alcatraz","objective-c","xcode","xcode-plugin"],"latest_commit_sha":null,"homepage":"","language":"Objective-C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/markohlebar.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2014-06-22T10:11:57.000Z","updated_at":"2023-12-15T09:32:37.000Z","dependencies_parsed_at":"2022-08-25T16:00:22.924Z","dependency_job_id":null,"html_url":"https://github.com/markohlebar/Peckham","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/markohlebar%2FPeckham","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/markohlebar%2FPeckham/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/markohlebar%2FPeckham/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/markohlebar%2FPeckham/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/markohlebar","download_url":"https://codeload.github.com/markohlebar/Peckham/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":224230653,"owners_count":17277372,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["alcatraz","objective-c","xcode","xcode-plugin"],"created_at":"2024-08-02T14:00:40.312Z","updated_at":"2024-11-12T06:30:48.283Z","avatar_url":"https://github.com/markohlebar.png","language":"Objective-C","funding_links":[],"categories":["Unofficial","非官方","WebSocket"],"sub_categories":["Plugins","\u003ca name=\"plugins\"\u003e\u003c/a\u003e插件"],"readme":"Peckham\n=======\n\n[![CI Status](https://travis-ci.org/markohlebar/Peckham.svg)](https://travis-ci.org/markohlebar/Peckham)\n\nXcode plugin that simplifies adding #import-s. \n\n### Important\n\nXcode plugins are no longer supported since Xcode 8. If you're looking for an Xcode App Extension, check out \n### [Import☝️](https://github.com/markohlebar/Import)\n\n![Peckham.gif](/Misc/Peckham.gif)\n\n### Installation Guide\n\n#### Alcatraz\n\n- install [Alcatraz](https://github.com/alcatraz/Alcatraz) and search for **Peckham** \n\n#### Manual Labour\n\n- clone the repository or download .zip\n- open **Peckham.xcodeproj** \n- build **Peckham** target\n- restart Xcode\n\n### User guide\n\n- **⌘ + ctrl + P** to invoke the popup\n- start typing or paste the keyword of your import\n- use **↑** or **↓** keys to navigate\n- press **↵** or double click to add an import\n\n### Advanced\n- fuzzy search =\u003e type `mvc` to find a `ModelViewController`\n- copy paste =\u003e **⌘ + C** the class name and then **⌘ + V** after opening Peckham\n\n### History\n\nOriginally the plugin was supposed to handle adding / removing imports on the fly, which soon proved to be a more difficult task than I originally imagined, and took me on an exploration path of Clang libtooling and other cool stuff. I recently decided that I would instead make a GUI popup for adding an #import which seems to be a better approach to the problem in the first place. The code base contains a lot of parts that were originally meant to parse the code and make a tree (similar to Clang's AST) to find the #import statements in text. Due to performance reasons, this was dumped in favor of regex-es. \n\n### Roadmap \n\nThere are several things that are to be added to the project\n- faster algorithm to find the header files associated with a certain target\n- adding frameworks to the selected target build phases as soon as you add an #import in your file\n- @import support\n\n### Known Issues \n\n- the search includes the whole path of the header\n- the table cell highlights the wrong piece of string\n- user headers are not really handled properly\n- there is an issue with header duplication (especially visible with CocoaPods)\n\n### Contributing \n\n- check [issues](https://github.com/markohlebar/Peckham/issues?state=open) section\n- branch from **develop** and PR to **develop** \n- use gitflow for creating a feature branch\n\n### Dependencies\n\n- **XcodeEditor** https://github.com/appsquickly/XcodeEditor\n- **PegKit** https://github.com/itod/pegkit\n\n### License\n\nMIT, see LICENSE\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmarkohlebar%2FPeckham","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmarkohlebar%2FPeckham","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmarkohlebar%2FPeckham/lists"}