001442755 000__ 07102cam\a2200565Ii\4500 001442755 001__ 1442755 001442755 003__ OCoLC 001442755 005__ 20230310003434.0 001442755 006__ m\\\\\o\\d\\\\\\\\ 001442755 007__ cr\cn\nnnunnun 001442755 008__ 211120s2022\\\\cau\\\\\o\\\\\001\0\eng\d 001442755 019__ $$a1285493865$$a1285554197$$a1285568488$$a1286426946 001442755 020__ $$a9781484277928$$q(electronic bk.) 001442755 020__ $$a1484277929$$q(electronic bk.) 001442755 020__ $$z1484277910 001442755 020__ $$z9781484277911 001442755 0247_ $$a10.1007/978-1-4842-7792-8$$2doi 001442755 035__ $$aSP(OCoLC)1285778981 001442755 040__ $$aEBLCP$$beng$$erda$$cEBLCP$$dYDX$$dTOH$$dORMDA$$dOCLCO$$dOCLCF$$dYDX$$dGW5XE$$dOCLCO$$dOCLCQ 001442755 049__ $$aISEA 001442755 050_4 $$aQA76.7$$b.G86 2022 001442755 08204 $$a005.13$$223 001442755 1001_ $$aGunasinghe, Nadeeshaan,$$eauthor. 001442755 24510 $$aLanguage server protocol and implementation :$$bsupporting language-smart editing and programming tools /$$cNadeeshaan Gunasinghe, Nipuna Marcus. 001442755 264_1 $$aCalifornia :$$bApress,$$c[2022] 001442755 300__ $$a1 online resource 001442755 336__ $$atext$$btxt$$2rdacontent 001442755 337__ $$acomputer$$bc$$2rdamedia 001442755 338__ $$aonline resource$$bcr$$2rdacarrier 001442755 500__ $$aIncludes index. 001442755 5050_ $$aIntro -- Table of Contents -- About the Authors -- About the Technical Reviewer -- Acknowledgments -- Introduction -- Chapter 1: Developer Tools and Language Services -- Early Programmable Computers -- Code Forms and Punched Cards -- Text Editors vs. Source Code Editors -- Why IDEs -- Language Intelligence -- Summary -- Chapter 2: Understanding the Language Server Protocol -- Understanding JSON-RPC -- Request Object -- jsonrpc -- method -- params -- id -- Notification -- Response Object -- jsonrpc -- result -- error -- id -- Error Object -- code -- message -- data -- Batch 001442755 5058_ $$aUnderstanding the Base Protocol -- Header Part -- Content Part -- Communication Model -- General Messages -- Outline Placeholder -- window -- telemetry -- workspace -- textDocument -- Summary -- Chapter 3: Implementing a Language Server -- Tools and Dependencies -- Building the Project -- Compatibility with Ballerina -- Debugging the Client and the Server -- Understanding the Main Components -- Server API -- Server Core -- Client Implementation -- Summary -- Chapter 4: General Messages -- General Messages -- Initialize -- Generating the InitializeResult -- Initialized -- Shutdown -- Exit 001442755 5058_ $$aWindow Operations -- ShowMessage -- ShowMessageRequest -- Generating the Request -- ShowDocument -- Generating the Request -- LogMessage -- Progress/Create -- Progress/Cancel -- Summary -- Chapter 5: Text Synchronization -- General Capabilities -- didOpen -- Indexing and Project Initialization -- didChange -- willSave -- willSaveWaitUntil -- didSave -- didClose -- Summary -- Chapter 6: Diagnostics, Smart Editing, and Documentation -- Diagnostics -- Initialization and Capabilities -- Publishing the Diagnostics -- Completion -- Initialization and Capabilities -- Client Capabilities 001442755 5058_ $$aServer Capabilities -- Generating the Completions -- Text Insertion -- Documentation and Additional Information -- Sorting and Filtering -- Completion Resolve -- Signature Help -- Initialization and Capabilities -- Client Capabilities -- Server Capabilities -- Generating the Signature Help -- Hover -- Initialization and Capabilities -- Client Capabilities -- Generating the Hover -- Summary -- Chapter 7: Refactoring and Code Fixes -- Rename -- Initialization and Capabilities -- Client Capabilities -- Server Capabilities -- Generating the Workspace Edit -- Prepare Rename -- Formatting 001442755 5058_ $$aInitialization and Capabilities -- Client Capabilities -- Server Capabilities -- Generating the Formatting TextEdits -- Range Formatting -- Initialization and Capabilities -- Generating the Range Formatting TextEdits -- On Type Formatting -- Initialization and Capabilities -- Client Capabilities -- Server Capabilities -- Generating the On Type Formatting TextEdits -- Code Actions -- Initialization and Capabilities -- Client Capabilities -- Server Capabilities -- Generating the CodeAction -- Request Parameters -- Generating the Response -- Code Actions Resolve -- CodeLens 001442755 506__ $$aAccess limited to authorized users. 001442755 520__ $$aUnderstand the important aspects of implementing a production-grade language server in support of language-smart tools such as code editors and other programming utilities. This book shows you how to create a single implementation of a language server that can be used by multiple tools, enabling you to do the job once in a way that can be shared and reused. This book covers the language server protocol used for communication between programming tools and your language server. The book also provides an in-depth understanding of the design, implementation, and user experience aspects which should be considered when implementing a language server. The book walks you through an example language server implementation to illustrate the basic concepts, then goes on to cover advanced aspects of language server use such as progress reporting, launchers, and extension points. User experience is an important aspect of language server implementation and different tooling vendors strive to provide their own unique user experiences. This book explains how the protocol features can be leveraged to address the unique developer experience provided by different tooling vendors. The book also shows how to enhance the smoothness of the editing experience by orchestrating multiple features together. What You Will Learn Implement a language server from scratch Understand language server protocol and its data models Leverage the protocol while preserving the unique user experience of different editors Extend the protocol to support more than its standard capabilities Run a language server on top of launchers such as standard I/O and TCP socket Seamlessly incorporate language semantics into your protocol features Who This Book Is For Developers focused on and passionate about implementing language development tools such as plug-ins and extensions for interactive development environments (IDEs) or other tools that rely upon parsing of language statements and commands, and developers who need an in-depth understanding of the language server protocol as well as how to use the language server protocol to develop extensible language services. 001442755 588__ $$aDescription based on online resource; title from digital title page (viewed on February 15, 2022). 001442755 650_0 $$aComputer programming. 001442755 650_0 $$aProgramming languages (Electronic computers) 001442755 650_6 $$aProgrammation (Informatique) 001442755 655_0 $$aElectronic books. 001442755 7001_ $$aMarcus, Nipuna,$$eauthor. 001442755 77608 $$iPrint version:$$aGunasinghe, Nadeeshaan$$tLanguage Server Protocol and Implementation$$dBerkeley, CA : Apress L. P.,c2021$$z9781484277911 001442755 852__ $$bebk 001442755 85640 $$3Springer Nature$$uhttps://univsouthin.idm.oclc.org/login?url=https://link.springer.com/10.1007/978-1-4842-7792-8$$zOnline Access$$91397441.1 001442755 909CO $$ooai:library.usi.edu:1442755$$pGLOBAL_SET 001442755 980__ $$aBIB 001442755 980__ $$aEBOOK 001442755 982__ $$aEbook 001442755 983__ $$aOnline 001442755 994__ $$a92$$bISE