# LSP

يستعلم من خوادم بروتوكول خادم اللغة (LSP) للحصول على ذكاء الشيفرة — التعريفات والمراجع والتلميحات والرموز والتنفيذات وتسلسل الاستدعاءات. أكثر دقة من البحث النصي لأنه يفهم الشيفرة دلاليًا.

## متى تستخدمه

- الانتقال إلى تعريف رمز (`goToDefinition`) أو العثور على كل مرجع له (`findReferences`)
- قراءة توقيعات الأنواع / التوثيق لرمز ما (`hover`)
- سرد الرموز في ملف واحد (`documentSymbol`) أو البحث عنها عبر المشروع بأكمله (`workspaceSymbol`)
- العثور على تنفيذات واجهة أو طريقة مجردة (`goToImplementation`)
- التنقل في تسلسل استدعاءات دالة (`prepareCallHierarchy` و`incomingCalls` و`outgoingCalls`)

## المعاملات

- `operation` (string، مطلوب): إحدى العمليات المذكورة أعلاه.
- `filePath` (string، مطلوب): الملف المراد العمل عليه.
- `line` (number، مطلوب): رقم السطر يبدأ من 1، كما هو معروض في المحرر.
- `character` (number، مطلوب): إزاحة الحرف تبدأ من 1، كما هي معروضة في المحرر.

## ملاحظات

- يتطلب خادم LSP مُهيَّأً لنوع الملف هذا؛ وإلا فإن الاستدعاء يُرجع خطأً.
- يبدأ السطر والحرف من 1 (إحداثيات المحرر)، وليس من 0.
- فضِّل LSP على `Grep` عندما تحتاج إلى تنقل دلالي (تعريف/مرجع حقيقي) بدلاً من تطابق نصي.

## مفاهيم ذات صلة

- يكمّل `Read` و`Edit` عند التنقل في الشيفرة وتعديلها.
