मुख्य सामग्री पर जाएं
होम पर वापस
ब्लॉग पर वापस
Feature

वह Code Editor जिसका Android हकदार है: LSP, IntelliSense और बहुत कुछ

Android के लिए एक असली code editor: LSP language servers, semantic autocomplete, TextMate syntax highlighting, multi-cursor editing, code navigation और inline diagnostics — सब कुछ आपके फ़ोन पर।

10 min
लेखक Pelayo Naredo
वह Code Editor जिसका Android हकदार है: LSP, IntelliSense और बहुत कुछ

Android पर ज़्यादातर "code editors" बस दिखावटी text box भर हैं। वे Android के TextView पर टिके रहते हैं, 2,000 लाइन की फ़ाइल पर अटक जाते हैं, और ऐसा कुछ नहीं देते जिससे कोई असली developer उन्हें production code के लिए भरोसे लायक समझे। किस्मत अच्छी हुई तो आपको syntax colors मिल जाते हैं, और बस इतना ही। इसलिए जैसे ही रास्ते में कोई bug ठीक करना हो, आप फिर भी अपने laptop की तरफ़ ही हाथ बढ़ाते हैं।

PocketCode इसका बिल्कुल उल्टा रास्ता अपनाता है। इसका Android के लिए code editor Sora Editor पर बना है — एक high-performance engine जो gap-buffer data structure पर आधारित है। TextView वाले समाधानों के उलट, Sora हर keystroke पर होने वाली O(n) copy से बचता है, इसलिए बड़ी फ़ाइलें भी smooth रहती हैं। उस engine के ऊपर PocketCode वे चीज़ें जोड़ता है जिनकी उम्मीद आप एक desktop IDE से करते हैं: LSP language servers, semantic autocomplete, असली syntax highlighting, multi-cursor editing, और गहरी code navigation। इसे नज़दीक से देखने के लिए code editor फ़ीचर पेज पर भी जा सकते हैं। यहाँ देखिए यह असल में कैसा दिखता है।

ऐसी syntax highlighting जो खिलौना नहीं है

Highlighting को TextMate grammars चलाती हैं (वही .tmLanguage.json format जो VS Code इस्तेमाल करता है), जिन्हें tm4e engine process करता है। यह बॉक्स से बाहर ही 33 languages को cover करता है — Kotlin, Java, Python, JavaScript, TypeScript (और TSX), Go, Rust, C, C++, C#, PHP, Ruby, Swift, Scala, SQL, YAML, TOML, Dockerfile, और बहुत कुछ — हर एक अपने सही TextMate scope और file extensions से mapped।

फ़ोन पर editor को responsive बनाए रखने के लिए, PocketCode अपना खुद का IncrementalTokenizer देता है जो पूरे TextMate pass के ख़त्म होने का इंतज़ार किए बिना tokens को तुरंत paint कर देता है। इसके इर्द-गिर्द आपको वे editor की बुनियादी चीज़ें मिलती हैं जो code को पढ़ने लायक बनाती हैं: configurable line numbers, matching brace और parenthesis के indicators, visual indentation guides, और functions, classes, methods, interfaces, comment blocks, import blocks तथा custom regions के लिए code folding — nested folds के साथ, और एक fold state जो हर फ़ाइल के लिए अलग से याद रहता है

Language detection अपने आप होती है, extension से (CodeLanguage.fromExtension()) या filename से (CodeLanguage.fromFileName(), जो Dockerfile, Makefile, .gitignore वगैरह को पहचानता है), और कुछ भी match न हो तो plain text पर लौट आता है।

LSP से चलने वाली autocomplete और IntelliSense

यहीं से PocketCode एक mobile खिलौना होना बंद कर एक IDE बनना शुरू करता है। Editor में एक पूरा Language Server Protocol client शामिल है — LspClient, जो LSP 3.17 लागू करता है — जो standard external language servers (clangd, pyright, और दूसरे) से जुड़ता है। संचार JSON-RPC 2.0 पर चलता है, पूरे language-server lifecycle management के साथ, और अगर कोई server गिर जाए तो automatic reconnection के साथ।

यही LSP client basic completion को असली IntelliSense में बदल देता है। यह जो आठ क्षमताएँ लागू करता है, वे ये हैं:

LSP methodफ़ीचर
textDocument/completionSemantic autocomplete
textDocument/hoverHover पर documentation
textDocument/definitionDefinition पर जाएँ
textDocument/referencesReferences ढूँढें
textDocument/signatureHelpFunction parameter के संकेत
textDocument/formattingServer-assisted formatting
textDocument/renameसुरक्षित semantic rename
textDocument/publishDiagnosticsReal-time server diagnostics

Sora engine खुद भी अपना native floating autocomplete window देता है, इसलिए किसी language server को जोड़े बिना भी आपको completion मिल जाती है। और AI की मदद से लिखने के लिए, एक Ghost Text layer suggestions को cursor के बाद semi-transparent inline text के रूप में दिखाता है, और cursor की छोटी-मोटी हलचल उसे हटा दे उससे पहले 150 ms का एक grace window रखता है — किसी suggestion को accept करने पर पूरा text डल जाता है और साथ ही आपकी undo/redo history सुरक्षित रहती है, और यह कभी भी standard autocomplete engine से नहीं भिड़ता। और जानने के लिए editor documentation देखें।

Editing की ताक़त: multi-cursor, Emmet और एक symbol keyboard

फ़ोन पर code टाइप करना तभी तकलीफ़देह होता है जब editor उसे तकलीफ़देह बनाए। PocketCode का MultiCursorEngine आपको मनचाही जगहों पर अतिरिक्त cursors रखने और उन सबको एक साथ edit करने देता है, साफ़-सुथरे offset ↔ line/column conversion के साथ, और बाकी cursors के active रहते हुए किसी एक cursor को हटाने की सुविधा के साथ।

Emmet HTML और CSS के लिए पूरी तरह समर्थित है: ul>li*3 एक nested list में फैल जाता है, div.cls#id बन जाता है <div id="id" class="cls"></div>, और dfdisplay: flex या w100pwidth: 100% जैसे CSS shorthands भी सब काम करते हैं।

चूँकि फ़ोन के keyboards code के लिए नहीं बने थे, system keyboard के ऊपर एक programming symbol bar बैठती है। एक हिस्सा वे characters डालता है जिनकी आपको सच में ज़रूरत होती है — { } [ ] ( ) ; : = और बाकी — और दूसरा हिस्सा कई actions सामने रखता है: undo/redo, किसी line को ऊपर या नीचे ले जाना, line (//) या block (/* */) comments को toggle करना, मौजूदा line को duplicate करना, किसी line पर जाना, चुनी हुई lines को sort करना, और case बदलना (UPPER / lower / Title)। इसमें pinch-to-zoom से font size, सटीक cursor रखने के लिए long-press पर एक magnifier, और असीमित undo/redo जोड़ दें, तो छोटी screen अब कोई बहाना नहीं रह जाती।

Code में यूँ navigate करें जैसे आपका इरादा पक्का हो

एक असली editor की परख इसी से होती है कि आप codebase में कितनी तेज़ी से घूम पाते हैं। Pocket Code आपको पूरी navigation kit देता है:

  • Go to symbol — active फ़ाइल पर एक fuzzy-filtered dialog, जो functions, methods, classes, interfaces, properties, variables, constants, imports और regions को cover करता है, हर एक एक context line के साथ दिखता है।
  • Outline panel — फ़ाइल की संरचना का एक slide-out tree जो आपके edit करते ही live update होता रहता है।
  • Peek definition — एक inline popup जो किसी symbol की definition के इर्द-गिर्द ~10 lines का context दिखाता है, वह भी आपका cursor हिलाए बिना।
  • Go to references — पूरे project में हर reference, definitions को uses से दृश्यतः अलग करते हुए।
  • Rename symbol — project भर में सारी घटनाएँ ढूँढता है, code को strings/comments से अलग करता है, और लागू करने से पहले एक preview दिखाता है।
  • Global search — सभी project files में text या regex search, extension से filter करने योग्य, Ctrl+Shift+F से bound।
  • Command palette — हर editor action तक पहुँचने का एक VS Code-style fuzzy प्रवेश-बिंदु।
  • Auto-import — undefined symbols के लिए scan करता है और Kotlin, Java, Python, TypeScript, JavaScript और अन्य के लिए सही imports सुझाता है।

बिना किसी server के diagnostics

आप हमेशा एक language server चालू नहीं करना चाहते, इसलिए PocketCode एक local InlineDiagnostics engine देता है जो per-language rules की मदद से real time में समस्याएँ पकड़ता है — कोई LSP ज़रूरी नहीं। इसमें Kotlin, Java, JavaScript/TypeScript, Python, Go, Rust, PHP, CSS, HTML और JSON के rules हैं।

सार्वभौमिक rules trailing whitespace, हद से ज़्यादा लगातार blank lines, और TODO / FIXME / HACK / NOTE / BUG / WARN comments को flag करते हैं। भाषा-विशेष rules और आगे जाते हैं — Kotlin में !! का इस्तेमाल, JavaScript में === की जगह == या let/const की जगह var, Python में असंगत indentation और unused imports, गड़बड़ JSON। सब कुछ एक VS Code-style Problems panel में सामने आता है, फ़ाइल के हिसाब से grouped और severity (ERROR, WARNING, INFO, HINT) से filter करने योग्य।

जहाँ मुमकिन हो, editor चीज़ें आपके लिए ठीक कर देता है। Quick fixes diagnostics के बगल में दिखते हैं — trailing whitespace साफ़ करना, blank lines हटाना, और भाषा-विशेष actions लागू करना। और extract refactorings किसी selection के variables का विश्लेषण करके एक method बाहर निकालते हैं (सही parameters और call site के साथ) या किसी expression को एक named variable में लपेट देते हैं, सही level तक auto-indented।

Formatting, वह भी device पर ही

Formatting पूरी तरह device पर ही होती है — कोई external tooling नहीं, कोई network round-trip नहीं। हर भाषा का अपना formatter implementation है:

Formatterभाषाएँ
C-styleKotlin, Java, JS, TS, C, C++, C#, Dart, Go, Swift, Rust, PHP, Scala, Gradle
PythonPython (PEP-8 indentation)
XML/HTMLHTML, XML, SVG
JSONJSON (pretty-print या compact)
CSSCSS, SCSS, Less
YAML / SQL / MarkdownYAML, SQL, Markdown

Per-profile options आपको indentation size, अधिकतम line width, trailing newline जोड़ना है या नहीं, operators के आस-पास की spacing, और brace placement तय करने देते हैं।

फ़ोन के लिए बना, फ़ोन पर port किया हुआ नहीं

Layout अपने आप Phone Portrait, Phone Landscape, Tablet और Foldable form factors के बीच ढल जाता है। एक Zen mode text के सिवा सब कुछ छिपा देता है, एक split editor दो फ़ाइलें साथ-साथ दिखाता है, और contextual toolbar chips Format, Find, Replace और Outline को एक tap की दूरी पर ला देते हैं। लगभग हर action एक व्यवस्थित overflow menu में रहता है, और एक offline mode है ताकि editing, local execution और Git बिना connectivity के भी चलते रहें।

एक ईमानदार बात: real-time collaboration roadmap पर है लेकिन अभी आया नहीं है। Collaboration panel बिना किसी backend के एक UI prototype के रूप में मौजूद है — cursor sync और shared sessions की योजना है, इसलिए हम यह दिखावा नहीं करेंगे कि वे आज काम करते हैं।


फ़ोन अब किसी घटिया tool से code लिखने का बहाना नहीं रहा। PocketCode का editor वे हिस्से — LSP-समर्थित autocomplete और IntelliSense, 33 languages में TextMate syntax highlighting, multi-cursor editing, और पूरी code navigation — उस device पर ले आता है जो हमेशा आपकी जेब में रहता है। अलग-अलग plans की क्षमताओं के लिए pricing पेज भी देख सकते हैं।

Android के लिए code editor: त्वरित जवाब

क्या Android के लिए कोई अच्छा code editor है? हाँ — PocketCode फ़ोन पर LSP autocomplete, 33 languages के लिए highlighting, multi-cursor और बिल्ट-इन Git ले आता है।

क्या आप बिना कंप्यूटर के Android पर code कर सकते हैं? हाँ — फ़ोन पर ही लिखें, चलाएँ और debug करें, ऑफ़लाइन।

terminal वाला code editor? हाँ — editor एक बिल्ट-इन terminal (SSH/SFTP) और ऑन-डिवाइस runners के साथ बैठता है, इसलिए आप एक ही app में edit और run करते हैं।

क्या इसमें Git है? बिल्ट-इन: commit, diff, blame, branches — कोई बाहरी client नहीं।

मुफ़्त और विज्ञापन-रहित? पूरा editor मुफ़्त है, कोई विज्ञापन नहीं।

ऑफ़लाइन? पूरी तरह — editor, runtimes और Git सभी बिना किसी कनेक्शन के काम करते हैं।

PocketCode Google Play की ओर बढ़ रहा है। अपने खुद के device पर इसे सबसे पहले आज़माने वालों में शामिल होने के लिए pre-registration में शामिल हों

इस लेख के पीछे का टूल

कोड एडिटर

PocketCode आज़माने के लिए तैयार हैं?

ऐप डाउनलोड करें और अपने फ़ोन से कोडिंग शुरू करें।