From fb9096013f04758a8ed886ad602f416992ee43a1 Mon Sep 17 00:00:00 2001 From: Akash Yadav Date: Tue, 20 Dec 2022 07:46:43 +0530 Subject: [PATCH] refactor: move IDEEditor to :editor module (fixes #672) --- .idea/compiler.xml | 1 + app/build.gradle | 1 - .../com/itsaky/androidide/EditorActivity.java | 2 +- .../androidide/actions/BaseEditorAction.kt | 2 +- .../androidide/actions/EditorRelatedAction.kt | 2 +- .../actions/etc/PreviewLayoutAction.kt | 3 +- .../adapters/SymbolInputAdapter.java | 2 +- .../itsaky/androidide/app/IDEApplication.java | 5 - .../androidide/fragments/LogViewFragment.kt | 4 +- .../fragments/NonEditableEditorFragment.java | 2 +- .../fragments/sheets/TextSheetFragment.java | 7 +- .../androidide/lsp/IDELanguageClientImpl.java | 3 +- .../itsaky/androidide/ui/EditorBottomSheet.kt | 6 - .../itsaky/androidide/ui/SymbolInputView.java | 3 +- .../androidide/ui/editor/CodeEditorView.java | 18 +- .../utils/IDEEditorInstanceProvider.kt | 31 --- app/src/main/res/layout/fragment_log.xml | 2 +- .../layout/fragment_non_editable_editor.xml | 2 +- .../com/itsaky/androidide/utils/LSPUtils.java | 0 editor-languages/.gitignore | 1 - editor-languages/build.gradle | 69 ------ editor-languages/consumer-rules.pro | 0 editor-languages/proguard-rules.pro | 21 -- editor-languages/src/main/AndroidManifest.xml | 21 -- .../androidide/language/cpp/CppAnalyzer.java | 225 ----------------- editor/build.gradle | 60 +++++ editor/build.gradle.kts | 39 --- .../com/itsaky/androidide/editor/IEditor.java | 6 +- .../androidide/editor/IEditorProvider.kt | 36 --- .../editor}/adapters/CompletionListAdapter.kt | 27 +- .../editor}/language/BraceHandler.kt | 2 +- .../language/CommonCompletionProvider.kt | 2 +- .../editor}/language/CommonSymbolPairs.kt | 2 +- .../language/CompletionCancelChecker.kt | 2 +- .../editor}/language/IDELanguage.java | 2 +- .../editor}/language/LSPFormatter.kt | 2 +- .../editor/language/cpp/CppAnalyzer.java | 233 ++++++++++++++++++ .../editor}/language/cpp/CppLanguage.java | 35 ++- .../editor}/language/groovy/GroovyAnalyzer.kt | 8 +- .../language/groovy/GroovyAutoComplete.java | 31 ++- .../language/groovy/GroovyLanguage.java | 35 ++- .../BaseIncrementalAnalyzeManager.java | 8 +- .../language/incremental/IncrementalToken.kt | 2 +- .../editor}/language/incremental/LineState.kt | 2 +- .../editor}/language/java/JavaAnalyzer.kt | 8 +- .../editor}/language/java/JavaLanguage.java | 10 +- .../editor}/language/kotlin/KotlinAnalyzer.kt | 8 +- .../language/kotlin/KotlinLanguage.java | 37 ++- .../editor}/language/log/LogLanguage.kt | 4 +- .../editor}/language/log/LogLineAnalyzer.kt | 4 +- .../editor}/language/xml/XMLAnalyzer.kt | 8 +- .../editor}/language/xml/XMLLanguage.java | 29 ++- .../editor/ui}/AbstractPopupWindow.kt | 2 +- .../editor/ui}/BaseEditorWindow.java | 3 +- .../androidide/editor/ui}/DiagnosticWindow.kt | 2 +- .../editor/ui}/EditorActionsMenu.kt | 12 +- .../editor/ui}/EditorCompletionWindow.kt | 2 +- .../editor/ui}/EditorSearchLayout.kt | 10 +- .../androidide/editor/ui}/IDEEditor.java | 45 ++-- .../androidide/editor/ui}/ReplaceAction.kt | 4 +- .../editor/ui}/SignatureHelpWindow.java | 2 +- .../rosemoe/sora/widget/IDEEditorSearcher.kt | 2 +- .../main/res/layout/layout_code_editor.xml | 19 +- .../res/layout/layout_completion_item.xml | 0 .../res/layout/layout_editor_find_replace.xml | 0 .../main/res/layout/layout_find_in_file.xml | 0 .../res/layout/layout_popup_menu_item.xml | 0 .../BaseIncrementalAnalyzeManagerTest.kt | 4 +- .../androidide/lsp/api/ILanguageClient.java | 10 + settings.gradle | 1 - tests/test-home/.androidide/init/model.jar | Bin 65261 -> 65261 bytes uidesigner/build.gradle | 3 +- .../androidide/uidesigner/ShowXmlActivity.kt | 8 +- 73 files changed, 528 insertions(+), 676 deletions(-) delete mode 100644 app/src/main/java/com/itsaky/androidide/utils/IDEEditorInstanceProvider.kt rename {app => common}/src/main/java/com/itsaky/androidide/utils/LSPUtils.java (100%) delete mode 100644 editor-languages/.gitignore delete mode 100644 editor-languages/build.gradle delete mode 100644 editor-languages/consumer-rules.pro delete mode 100644 editor-languages/proguard-rules.pro delete mode 100644 editor-languages/src/main/AndroidManifest.xml delete mode 100644 editor-languages/src/main/java/com/itsaky/androidide/language/cpp/CppAnalyzer.java create mode 100644 editor/build.gradle delete mode 100644 editor/build.gradle.kts delete mode 100644 editor/src/main/java/com/itsaky/androidide/editor/IEditorProvider.kt rename {app/src/main/java/com/itsaky/androidide => editor/src/main/java/com/itsaky/androidide/editor}/adapters/CompletionListAdapter.kt (86%) rename {editor-languages/src/main/java/com/itsaky/androidide => editor/src/main/java/com/itsaky/androidide/editor}/language/BraceHandler.kt (98%) rename {editor-languages/src/main/java/com/itsaky/androidide => editor/src/main/java/com/itsaky/androidide/editor}/language/CommonCompletionProvider.kt (96%) rename {editor-languages/src/main/java/com/itsaky/androidide => editor/src/main/java/com/itsaky/androidide/editor}/language/CommonSymbolPairs.kt (96%) rename {editor-languages/src/main/java/com/itsaky/androidide => editor/src/main/java/com/itsaky/androidide/editor}/language/CompletionCancelChecker.kt (96%) rename {editor-languages/src/main/java/com/itsaky/androidide => editor/src/main/java/com/itsaky/androidide/editor}/language/IDELanguage.java (98%) rename {editor-languages/src/main/java/com/itsaky/androidide => editor/src/main/java/com/itsaky/androidide/editor}/language/LSPFormatter.kt (98%) create mode 100644 editor/src/main/java/com/itsaky/androidide/editor/language/cpp/CppAnalyzer.java rename {editor-languages/src/main/java/com/itsaky/androidide => editor/src/main/java/com/itsaky/androidide/editor}/language/cpp/CppLanguage.java (72%) rename {editor-languages/src/main/java/com/itsaky/androidide => editor/src/main/java/com/itsaky/androidide/editor}/language/groovy/GroovyAnalyzer.kt (95%) rename {editor-languages/src/main/java/com/itsaky/androidide => editor/src/main/java/com/itsaky/androidide/editor}/language/groovy/GroovyAutoComplete.java (94%) rename {editor-languages/src/main/java/com/itsaky/androidide => editor/src/main/java/com/itsaky/androidide/editor}/language/groovy/GroovyLanguage.java (76%) rename {editor-languages/src/main/java/com/itsaky/androidide => editor/src/main/java/com/itsaky/androidide/editor}/language/incremental/BaseIncrementalAnalyzeManager.java (98%) rename {editor-languages/src/main/java/com/itsaky/androidide => editor/src/main/java/com/itsaky/androidide/editor}/language/incremental/IncrementalToken.kt (96%) rename {editor-languages/src/main/java/com/itsaky/androidide => editor/src/main/java/com/itsaky/androidide/editor}/language/incremental/LineState.kt (95%) rename {editor-languages/src/main/java/com/itsaky/androidide => editor/src/main/java/com/itsaky/androidide/editor}/language/java/JavaAnalyzer.kt (95%) rename {editor-languages/src/main/java/com/itsaky/androidide => editor/src/main/java/com/itsaky/androidide/editor}/language/java/JavaLanguage.java (92%) rename {editor-languages/src/main/java/com/itsaky/androidide => editor/src/main/java/com/itsaky/androidide/editor}/language/kotlin/KotlinAnalyzer.kt (96%) rename {editor-languages/src/main/java/com/itsaky/androidide => editor/src/main/java/com/itsaky/androidide/editor}/language/kotlin/KotlinLanguage.java (71%) rename {editor-languages/src/main/java/com/itsaky/androidide => editor/src/main/java/com/itsaky/androidide/editor}/language/log/LogLanguage.kt (94%) rename {editor-languages/src/main/java/com/itsaky/androidide => editor/src/main/java/com/itsaky/androidide/editor}/language/log/LogLineAnalyzer.kt (97%) rename {editor-languages/src/main/java/com/itsaky/androidide => editor/src/main/java/com/itsaky/androidide/editor}/language/xml/XMLAnalyzer.kt (96%) rename {editor-languages/src/main/java/com/itsaky/androidide => editor/src/main/java/com/itsaky/androidide/editor}/language/xml/XMLLanguage.java (73%) rename {app/src/main/java/com/itsaky/androidide/ui/editor => editor/src/main/java/com/itsaky/androidide/editor/ui}/AbstractPopupWindow.kt (96%) rename {app/src/main/java/com/itsaky/androidide/ui/editor => editor/src/main/java/com/itsaky/androidide/editor/ui}/BaseEditorWindow.java (97%) rename {app/src/main/java/com/itsaky/androidide/ui/editor => editor/src/main/java/com/itsaky/androidide/editor/ui}/DiagnosticWindow.kt (97%) rename {app/src/main/java/com/itsaky/androidide/ui/editor => editor/src/main/java/com/itsaky/androidide/editor/ui}/EditorActionsMenu.kt (94%) rename {app/src/main/java/com/itsaky/androidide/ui/editor => editor/src/main/java/com/itsaky/androidide/editor/ui}/EditorCompletionWindow.kt (99%) rename {app/src/main/java/com/itsaky/androidide/ui/editor => editor/src/main/java/com/itsaky/androidide/editor/ui}/EditorSearchLayout.kt (96%) rename {app/src/main/java/com/itsaky/androidide/ui/editor => editor/src/main/java/com/itsaky/androidide/editor/ui}/IDEEditor.java (92%) rename {app/src/main/java/com/itsaky/androidide/ui/editor => editor/src/main/java/com/itsaky/androidide/editor/ui}/ReplaceAction.kt (95%) rename {app/src/main/java/com/itsaky/androidide/ui/editor => editor/src/main/java/com/itsaky/androidide/editor/ui}/SignatureHelpWindow.java (99%) rename {app => editor}/src/main/java/io/github/rosemoe/sora/widget/IDEEditorSearcher.kt (95%) rename {app => editor}/src/main/res/layout/layout_code_editor.xml (57%) rename {app => editor}/src/main/res/layout/layout_completion_item.xml (100%) rename {app => editor}/src/main/res/layout/layout_editor_find_replace.xml (100%) rename {app => editor}/src/main/res/layout/layout_find_in_file.xml (100%) rename {app => editor}/src/main/res/layout/layout_popup_menu_item.xml (100%) rename {editor-languages => editor}/src/test/java/com/itsaky/androidide/language/incremental/BaseIncrementalAnalyzeManagerTest.kt (95%) diff --git a/.idea/compiler.xml b/.idea/compiler.xml index c6bd08e0f..bcd77538a 100755 --- a/.idea/compiler.xml +++ b/.idea/compiler.xml @@ -40,6 +40,7 @@ + diff --git a/app/build.gradle b/app/build.gradle index 86f26b6da..5c2d567a0 100755 --- a/app/build.gradle +++ b/app/build.gradle @@ -140,7 +140,6 @@ dependencies { implementation project (':actions') implementation project (':common') implementation project (':editor') - implementation project (':editor-languages') implementation project (':emulatorview') implementation project (':eventbus') implementation project (':eventbus-android') diff --git a/app/src/main/java/com/itsaky/androidide/EditorActivity.java b/app/src/main/java/com/itsaky/androidide/EditorActivity.java index 1002d68ec..7e401e5e1 100755 --- a/app/src/main/java/com/itsaky/androidide/EditorActivity.java +++ b/app/src/main/java/com/itsaky/androidide/EditorActivity.java @@ -115,7 +115,7 @@ import com.itsaky.androidide.shell.ShellServer; import com.itsaky.androidide.ui.EditorBottomSheet; import com.itsaky.androidide.ui.MaterialBanner; import com.itsaky.androidide.ui.editor.CodeEditorView; -import com.itsaky.androidide.ui.editor.IDEEditor; +import com.itsaky.androidide.editor.ui.IDEEditor; import com.itsaky.androidide.uidesigner.UIDesignerActivity; import com.itsaky.androidide.utils.ActionMenuUtils; import com.itsaky.androidide.utils.DialogUtils; diff --git a/app/src/main/java/com/itsaky/androidide/actions/BaseEditorAction.kt b/app/src/main/java/com/itsaky/androidide/actions/BaseEditorAction.kt index 38e3e929d..37b69d7c5 100644 --- a/app/src/main/java/com/itsaky/androidide/actions/BaseEditorAction.kt +++ b/app/src/main/java/com/itsaky/androidide/actions/BaseEditorAction.kt @@ -20,7 +20,7 @@ package com.itsaky.androidide.actions import android.content.Context import android.graphics.drawable.Drawable import androidx.core.content.ContextCompat -import com.itsaky.androidide.ui.editor.IDEEditor +import com.itsaky.androidide.editor.ui.IDEEditor /** @author Akash Yadav */ abstract class BaseEditorAction : EditorActionItem { diff --git a/app/src/main/java/com/itsaky/androidide/actions/EditorRelatedAction.kt b/app/src/main/java/com/itsaky/androidide/actions/EditorRelatedAction.kt index aa84e217e..6fc187921 100644 --- a/app/src/main/java/com/itsaky/androidide/actions/EditorRelatedAction.kt +++ b/app/src/main/java/com/itsaky/androidide/actions/EditorRelatedAction.kt @@ -18,7 +18,7 @@ package com.itsaky.androidide.actions import com.itsaky.androidide.ui.editor.CodeEditorView -import com.itsaky.androidide.ui.editor.IDEEditor +import com.itsaky.androidide.editor.ui.IDEEditor /** @author Akash Yadav */ abstract class EditorRelatedAction : EditorActivityAction(), EditorActionItem { diff --git a/app/src/main/java/com/itsaky/androidide/actions/etc/PreviewLayoutAction.kt b/app/src/main/java/com/itsaky/androidide/actions/etc/PreviewLayoutAction.kt index 743125747..982fbc191 100644 --- a/app/src/main/java/com/itsaky/androidide/actions/etc/PreviewLayoutAction.kt +++ b/app/src/main/java/com/itsaky/androidide/actions/etc/PreviewLayoutAction.kt @@ -27,9 +27,8 @@ import com.blankj.utilcode.util.KeyboardUtils import com.itsaky.androidide.EditorActivity import com.itsaky.androidide.actions.ActionData import com.itsaky.androidide.actions.EditorRelatedAction -import com.itsaky.androidide.actions.markInvisible import com.itsaky.androidide.resources.R -import com.itsaky.androidide.ui.editor.IDEEditor +import com.itsaky.androidide.editor.ui.IDEEditor import com.itsaky.androidide.uidesigner.UIDesignerActivity import java.io.File diff --git a/app/src/main/java/com/itsaky/androidide/adapters/SymbolInputAdapter.java b/app/src/main/java/com/itsaky/androidide/adapters/SymbolInputAdapter.java index a73250e24..0587c8e12 100755 --- a/app/src/main/java/com/itsaky/androidide/adapters/SymbolInputAdapter.java +++ b/app/src/main/java/com/itsaky/androidide/adapters/SymbolInputAdapter.java @@ -29,7 +29,7 @@ import androidx.recyclerview.widget.RecyclerView; import com.itsaky.androidide.R; import com.itsaky.androidide.databinding.LayoutSymbolItemBinding; import com.itsaky.androidide.ui.SymbolInputView.Symbol; -import com.itsaky.androidide.ui.editor.IDEEditor; +import com.itsaky.androidide.editor.ui.IDEEditor; import java.util.ArrayList; import java.util.List; diff --git a/app/src/main/java/com/itsaky/androidide/app/IDEApplication.java b/app/src/main/java/com/itsaky/androidide/app/IDEApplication.java index f67a6c8e2..af430e220 100755 --- a/app/src/main/java/com/itsaky/androidide/app/IDEApplication.java +++ b/app/src/main/java/com/itsaky/androidide/app/IDEApplication.java @@ -23,13 +23,10 @@ import android.net.Uri; import com.blankj.utilcode.util.ThrowableUtils; import com.itsaky.androidide.BuildConfig; import com.itsaky.androidide.CrashHandlerActivity; -import com.itsaky.androidide.editor.IEditorProvider; import com.itsaky.androidide.events.AppEventsIndex; import com.itsaky.androidide.events.LspApiEventsIndex; import com.itsaky.androidide.events.LspJavaEventsIndex; import com.itsaky.androidide.events.ProjectsApiEventsIndex; -import com.itsaky.androidide.lookup.Lookup; -import com.itsaky.androidide.utils.IDEEditorInstanceProvider; import com.itsaky.androidide.utils.ILogger; import com.itsaky.toaster.ToastUtilsKt; import com.itsaky.toaster.Toaster; @@ -59,8 +56,6 @@ public class IDEApplication extends BaseApplication { .addIndex(new LspApiEventsIndex()) .addIndex(new LspJavaEventsIndex()) .installDefaultEventBus(); - - Lookup.DEFAULT.register(IEditorProvider.class, new IDEEditorInstanceProvider()); } private void handleCrash(Thread thread, Throwable th) { diff --git a/app/src/main/java/com/itsaky/androidide/fragments/LogViewFragment.kt b/app/src/main/java/com/itsaky/androidide/fragments/LogViewFragment.kt index 5f72ba3f5..bc8a93615 100644 --- a/app/src/main/java/com/itsaky/androidide/fragments/LogViewFragment.kt +++ b/app/src/main/java/com/itsaky/androidide/fragments/LogViewFragment.kt @@ -24,7 +24,7 @@ import android.view.ViewGroup import androidx.fragment.app.Fragment import com.blankj.utilcode.util.ThreadUtils import com.itsaky.androidide.databinding.FragmentLogBinding -import com.itsaky.androidide.language.log.LogLanguage +import com.itsaky.androidide.editor.language.log.LogLanguage import com.itsaky.androidide.models.LogLine import com.itsaky.androidide.syntax.colorschemes.SchemeAndroidIDE import com.itsaky.androidide.utils.ILogger.Priority @@ -88,7 +88,7 @@ abstract class LogViewFragment : Fragment(), ShareableOutputFragment { editor.setTextSize(12f) editor.typefaceText = jetbrainsMono() editor.colorScheme = SchemeAndroidIDE.newInstance(requireContext()) - editor.setEditorLanguage(com.itsaky.androidide.language.log.LogLanguage()) + editor.setEditorLanguage(LogLanguage()) } override fun onDestroy() { diff --git a/app/src/main/java/com/itsaky/androidide/fragments/NonEditableEditorFragment.java b/app/src/main/java/com/itsaky/androidide/fragments/NonEditableEditorFragment.java index e913de9ab..d15e13736 100644 --- a/app/src/main/java/com/itsaky/androidide/fragments/NonEditableEditorFragment.java +++ b/app/src/main/java/com/itsaky/androidide/fragments/NonEditableEditorFragment.java @@ -29,7 +29,7 @@ import androidx.fragment.app.Fragment; import com.itsaky.androidide.databinding.FragmentNonEditableEditorBinding; import com.itsaky.androidide.syntax.colorschemes.SchemeAndroidIDE; import com.itsaky.androidide.utils.TypefaceUtilsKt; -import com.itsaky.androidide.ui.editor.IDEEditor; +import com.itsaky.androidide.editor.ui.IDEEditor; import io.github.rosemoe.sora.lang.EmptyLanguage; diff --git a/app/src/main/java/com/itsaky/androidide/fragments/sheets/TextSheetFragment.java b/app/src/main/java/com/itsaky/androidide/fragments/sheets/TextSheetFragment.java index 3696b27a6..d118c2957 100755 --- a/app/src/main/java/com/itsaky/androidide/fragments/sheets/TextSheetFragment.java +++ b/app/src/main/java/com/itsaky/androidide/fragments/sheets/TextSheetFragment.java @@ -25,10 +25,8 @@ import android.widget.LinearLayout; import androidx.annotation.NonNull; -import com.itsaky.androidide.editor.IEditorProvider; -import com.itsaky.androidide.lookup.Lookup; +import com.itsaky.androidide.editor.ui.IDEEditor; import com.itsaky.androidide.resources.R; -import com.itsaky.androidide.ui.editor.IDEEditor; import com.itsaky.androidide.utils.TypefaceUtilsKt; import io.github.rosemoe.sora.lang.EmptyLanguage; @@ -118,8 +116,7 @@ public class TextSheetFragment extends BaseBottomSheetFragment { } private IDEEditor createEditor() { - //noinspection ConstantConditions - editor = (IDEEditor) Lookup.DEFAULT.lookup(IEditorProvider.class).createEditor(getContext()); + editor = new IDEEditor(getContext()); editor.setEditable(false); editor.setDividerWidth(0); editor.setEditorLanguage(new EmptyLanguage()); diff --git a/app/src/main/java/com/itsaky/androidide/lsp/IDELanguageClientImpl.java b/app/src/main/java/com/itsaky/androidide/lsp/IDELanguageClientImpl.java index ffbedfbfa..3446ccff5 100755 --- a/app/src/main/java/com/itsaky/androidide/lsp/IDELanguageClientImpl.java +++ b/app/src/main/java/com/itsaky/androidide/lsp/IDELanguageClientImpl.java @@ -48,7 +48,7 @@ import com.itsaky.androidide.tasks.TaskExecutor; import com.itsaky.androidide.utils.ILogger; import com.itsaky.androidide.utils.LSPUtils; import com.itsaky.androidide.ui.editor.CodeEditorView; -import com.itsaky.androidide.ui.editor.IDEEditor; +import com.itsaky.androidide.editor.ui.IDEEditor; import com.itsaky.toaster.ToastUtilsKt; import com.itsaky.toaster.Toaster; @@ -383,6 +383,7 @@ public class IDELanguageClientImpl implements ILanguageClient { } /** Called by {@link IDEEditor IDEEditor} to show locations in EditorActivity */ + @Override public void showLocations(List locations) { // Cannot show anything if the activity() is null diff --git a/app/src/main/java/com/itsaky/androidide/ui/EditorBottomSheet.kt b/app/src/main/java/com/itsaky/androidide/ui/EditorBottomSheet.kt index 3648d63a5..6c42becd6 100644 --- a/app/src/main/java/com/itsaky/androidide/ui/EditorBottomSheet.kt +++ b/app/src/main/java/com/itsaky/androidide/ui/EditorBottomSheet.kt @@ -20,7 +20,6 @@ package com.itsaky.androidide.ui import android.app.Activity import android.app.ProgressDialog import android.content.Context -import android.content.res.ColorStateList import android.text.TextUtils import android.util.AttributeSet import android.view.Gravity @@ -30,7 +29,6 @@ import android.view.ViewTreeObserver import android.widget.RelativeLayout import androidx.annotation.GravityInt import androidx.appcompat.widget.TooltipCompat -import androidx.core.view.ViewCompat import androidx.core.view.updateLayoutParams import androidx.core.view.updatePadding import androidx.fragment.app.Fragment @@ -41,9 +39,6 @@ import com.blankj.utilcode.util.KeyboardUtils import com.blankj.utilcode.util.SizeUtils import com.blankj.utilcode.util.ThreadUtils.runOnUiThread import com.google.android.material.bottomsheet.BottomSheetBehavior -import com.google.android.material.shape.CornerFamily -import com.google.android.material.shape.MaterialShapeDrawable -import com.google.android.material.shape.ShapeAppearanceModel import com.google.android.material.tabs.TabLayout.OnTabSelectedListener import com.google.android.material.tabs.TabLayout.Tab import com.google.android.material.tabs.TabLayoutMediator @@ -63,7 +58,6 @@ import com.itsaky.androidide.ui.editor.CodeEditorView import com.itsaky.androidide.utils.ILogger import com.itsaky.androidide.utils.IntentUtils.shareFile import com.itsaky.androidide.utils.Symbols.forFile -import com.itsaky.androidide.utils.resolveAttr import com.itsaky.toaster.Toaster.Type.ERROR import com.itsaky.toaster.toast import java.io.File diff --git a/app/src/main/java/com/itsaky/androidide/ui/SymbolInputView.java b/app/src/main/java/com/itsaky/androidide/ui/SymbolInputView.java index 0ccb8fe80..92b46f7a7 100755 --- a/app/src/main/java/com/itsaky/androidide/ui/SymbolInputView.java +++ b/app/src/main/java/com/itsaky/androidide/ui/SymbolInputView.java @@ -25,9 +25,8 @@ import android.util.AttributeSet; import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; -import com.itsaky.androidide.R; import com.itsaky.androidide.adapters.SymbolInputAdapter; -import com.itsaky.androidide.ui.editor.IDEEditor; +import com.itsaky.androidide.editor.ui.IDEEditor; public class SymbolInputView extends RecyclerView { diff --git a/app/src/main/java/com/itsaky/androidide/ui/editor/CodeEditorView.java b/app/src/main/java/com/itsaky/androidide/ui/editor/CodeEditorView.java index 280222d09..479c93d9e 100644 --- a/app/src/main/java/com/itsaky/androidide/ui/editor/CodeEditorView.java +++ b/app/src/main/java/com/itsaky/androidide/ui/editor/CodeEditorView.java @@ -51,14 +51,16 @@ import androidx.annotation.Nullable; import com.blankj.utilcode.util.FileIOUtils; import com.blankj.utilcode.util.FileUtils; import com.blankj.utilcode.util.SizeUtils; -import com.itsaky.androidide.app.IDEApplication; -import com.itsaky.androidide.databinding.LayoutCodeEditorBinding; +import com.itsaky.androidide.app.BaseApplication; +import com.itsaky.androidide.editor.databinding.LayoutCodeEditorBinding; +import com.itsaky.androidide.editor.ui.EditorSearchLayout; +import com.itsaky.androidide.editor.ui.IDEEditor; import com.itsaky.androidide.eventbus.events.preferences.PreferenceChangeEvent; -import com.itsaky.androidide.language.cpp.CppLanguage; -import com.itsaky.androidide.language.groovy.GroovyLanguage; -import com.itsaky.androidide.language.java.JavaLanguage; -import com.itsaky.androidide.language.kotlin.KotlinLanguage; -import com.itsaky.androidide.language.xml.XMLLanguage; +import com.itsaky.androidide.editor.language.cpp.CppLanguage; +import com.itsaky.androidide.editor.language.groovy.GroovyLanguage; +import com.itsaky.androidide.editor.language.java.JavaLanguage; +import com.itsaky.androidide.editor.language.kotlin.KotlinLanguage; +import com.itsaky.androidide.editor.language.xml.XMLLanguage; import com.itsaky.androidide.lsp.api.ILanguageServer; import com.itsaky.androidide.lsp.api.ILanguageServerRegistry; import com.itsaky.androidide.lsp.java.JavaLanguageServer; @@ -319,7 +321,7 @@ public class CodeEditorView extends LinearLayout { return; } - final var prefs = IDEApplication.getInstance().getPrefManager(); + final var prefs = BaseApplication.getBaseInstance().getPrefManager(); switch (event.getKey()) { case FONT_SIZE: onFontSizePrefChanged(); diff --git a/app/src/main/java/com/itsaky/androidide/utils/IDEEditorInstanceProvider.kt b/app/src/main/java/com/itsaky/androidide/utils/IDEEditorInstanceProvider.kt deleted file mode 100644 index be8262345..000000000 --- a/app/src/main/java/com/itsaky/androidide/utils/IDEEditorInstanceProvider.kt +++ /dev/null @@ -1,31 +0,0 @@ -/* - * This file is part of AndroidIDE. - * - * AndroidIDE is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * AndroidIDE is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with AndroidIDE. If not, see . - */ - -package com.itsaky.androidide.utils - -import android.content.Context -import com.itsaky.androidide.editor.IEditor -import com.itsaky.androidide.editor.IEditorProvider -import com.itsaky.androidide.ui.editor.IDEEditor - -/** @author Akash Yadav */ -class IDEEditorInstanceProvider : IEditorProvider { - - override fun createEditor(context: Context): IEditor { - return IDEEditor(context) - } -} diff --git a/app/src/main/res/layout/fragment_log.xml b/app/src/main/res/layout/fragment_log.xml index ecbe5b89f..abde26a0a 100644 --- a/app/src/main/res/layout/fragment_log.xml +++ b/app/src/main/res/layout/fragment_log.xml @@ -14,7 +14,7 @@ ~ You should have received a copy of the GNU General Public License ~ along with AndroidIDE. If not, see . --> - \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_non_editable_editor.xml b/app/src/main/res/layout/fragment_non_editable_editor.xml index 0c25b799d..b718c3e46 100644 --- a/app/src/main/res/layout/fragment_non_editable_editor.xml +++ b/app/src/main/res/layout/fragment_non_editable_editor.xml @@ -15,7 +15,7 @@ ~ along with AndroidIDE. If not, see . --> - \ No newline at end of file diff --git a/app/src/main/java/com/itsaky/androidide/utils/LSPUtils.java b/common/src/main/java/com/itsaky/androidide/utils/LSPUtils.java similarity index 100% rename from app/src/main/java/com/itsaky/androidide/utils/LSPUtils.java rename to common/src/main/java/com/itsaky/androidide/utils/LSPUtils.java diff --git a/editor-languages/.gitignore b/editor-languages/.gitignore deleted file mode 100644 index 42afabfd2..000000000 --- a/editor-languages/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/build \ No newline at end of file diff --git a/editor-languages/build.gradle b/editor-languages/build.gradle deleted file mode 100644 index 2746449de..000000000 --- a/editor-languages/build.gradle +++ /dev/null @@ -1,69 +0,0 @@ -/* - * This file is part of AndroidIDE. - * - * AndroidIDE is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * AndroidIDE is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with AndroidIDE. If not, see . - */ -plugins { - id 'com.android.library' - id 'org.jetbrains.kotlin.android' -} - -android { - namespace "com.itsaky.androidide.language" - compileSdkVersion rootProject.ext.compileSdk - buildToolsVersion rootProject.ext.buildTools - - defaultConfig { - minSdkVersion rootProject.ext.minSdk - targetSdkVersion rootProject.ext.targetSdk - } - - buildTypes { - release { - minifyEnabled false - proguardFiles getDefaultProguardFile ('proguard-android-optimize.txt'), 'proguard-rules.pro' - } - } - - compileOptions { - sourceCompatibility rootProject.ext.javaSourceVersion - targetCompatibility rootProject.ext.javaTargetVersion - } - - kotlinOptions { - jvmTarget = "11" - } -} - -dependencies { - implementation project(path: ':common') - implementation project(path: ':editor') - implementation project(path: ':logger') - implementation project(path: ':lookup') - implementation project(path: ':lexers') - implementation project(path: ':lsp:api') - implementation project(path: ':lsp:java') - implementation project(path: ':lsp:xml') - - implementation common.editor - implementation common.utilcode - implementation common.kotlin - - implementation google.guava - - testImplementation common.editor - testImplementation tests.junit - testImplementation tests.google_truth - testImplementation tests.robolectric -} \ No newline at end of file diff --git a/editor-languages/consumer-rules.pro b/editor-languages/consumer-rules.pro deleted file mode 100644 index e69de29bb..000000000 diff --git a/editor-languages/proguard-rules.pro b/editor-languages/proguard-rules.pro deleted file mode 100644 index 481bb4348..000000000 --- a/editor-languages/proguard-rules.pro +++ /dev/null @@ -1,21 +0,0 @@ -# Add project specific ProGuard rules here. -# You can control the set of applied configuration files using the -# proguardFiles setting in build.gradle. -# -# For more details, see -# http://developer.android.com/guide/developing/tools/proguard.html - -# If your project uses WebView with JS, uncomment the following -# and specify the fully qualified class name to the JavaScript interface -# class: -#-keepclassmembers class fqcn.of.javascript.interface.for.webview { -# public *; -#} - -# Uncomment this to preserve the line number information for -# debugging stack traces. -#-keepattributes SourceFile,LineNumberTable - -# If you keep the line number information, uncomment this to -# hide the original source file name. -#-renamesourcefileattribute SourceFile \ No newline at end of file diff --git a/editor-languages/src/main/AndroidManifest.xml b/editor-languages/src/main/AndroidManifest.xml deleted file mode 100644 index e62e7b210..000000000 --- a/editor-languages/src/main/AndroidManifest.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/editor-languages/src/main/java/com/itsaky/androidide/language/cpp/CppAnalyzer.java b/editor-languages/src/main/java/com/itsaky/androidide/language/cpp/CppAnalyzer.java deleted file mode 100644 index 836265993..000000000 --- a/editor-languages/src/main/java/com/itsaky/androidide/language/cpp/CppAnalyzer.java +++ /dev/null @@ -1,225 +0,0 @@ -package com.itsaky.androidide.language.cpp; - -import static com.itsaky.androidide.lexers.cpp.CPP14Lexer.Class; -import static com.itsaky.androidide.lexers.cpp.CPP14Lexer.Double; -import static com.itsaky.androidide.lexers.cpp.CPP14Lexer.Enum; -import static com.itsaky.androidide.lexers.cpp.CPP14Lexer.Float; -import static com.itsaky.androidide.lexers.cpp.CPP14Lexer.Long; -import static com.itsaky.androidide.lexers.cpp.CPP14Lexer.Override; -import static com.itsaky.androidide.lexers.cpp.CPP14Lexer.Short; -import static com.itsaky.androidide.lexers.cpp.CPP14Lexer.Void; -import static com.itsaky.androidide.lexers.cpp.CPP14Lexer.*; -import static com.itsaky.androidide.syntax.colorschemes.SchemeAndroidIDE.LITERAL; -import static com.itsaky.androidide.syntax.colorschemes.SchemeAndroidIDE.OPERATOR; -import static com.itsaky.androidide.syntax.colorschemes.SchemeAndroidIDE.TEXT_NORMAL; -import static com.itsaky.androidide.syntax.colorschemes.SchemeAndroidIDE.TYPE_NAME; -import static com.itsaky.androidide.syntax.colorschemes.SchemeAndroidIDE.forComment; -import static com.itsaky.androidide.syntax.colorschemes.SchemeAndroidIDE.forKeyword; -import static com.itsaky.androidide.syntax.colorschemes.SchemeAndroidIDE.forString; -import static io.github.rosemoe.sora.lang.styling.TextStyle.makeStyle; - -import com.itsaky.androidide.language.incremental.BaseIncrementalAnalyzeManager; -import com.itsaky.androidide.language.incremental.IncrementalToken; -import com.itsaky.androidide.language.incremental.LineState; -import com.itsaky.androidide.lexers.cpp.CPP14Lexer; -import com.itsaky.androidide.utils.ILogger; - -import java.lang.Override; -import java.util.ArrayList; -import java.util.List; - -import io.github.rosemoe.sora.lang.styling.Span; - -public class CppAnalyzer extends BaseIncrementalAnalyzeManager { - - private static final ILogger LOG = ILogger.newInstance("CppAnalyzer"); - - public CppAnalyzer() { - super(CPP14Lexer.class); - } - - @Override - protected int[][] getMultilineTokenStartEndTypes() { - final var start = new int[] {Div, Star}; - final var end = new int[] {Star, Div}; - return new int[][] {start, end}; - } - - @Override - protected List generateSpans(final LineTokenizeResult tokens) { - final var spans = new ArrayList(); - spans.add(Span.obtain(0, makeStyle(TEXT_NORMAL))); - for (int i = 0; i < tokens.tokens.size(); i++) { - final var token = tokens.tokens.get(i); - final var type = token.getType(); - final var offset = token.getStartIndex(); - - switch (type) { - case Alignas: - case Alignof: - case Asm: - case Auto: - case Break: - case Class: - case Const: - case Catch: - case Case: - case Constexpr: - case Const_cast: - case Continue: - case Decltype: - case Default: - case Delete: - case Do: - case Dynamic_cast: - case Else: - case Enum: - case Explicit: - case Export: - case Extern: - case Final: - case For: - case Friend: - case Goto: - case If: - case Inline: - case Mutable: - case Namespace: - case New: - case Noexcept: - case Operator: - case Override: - case Private: - case Protected: - case Public: - case Register: - case Reinterpret_cast: - case Return: - case Sizeof: - case Signed: - case Static: - case Static_cast: - case Static_assert: - case Struct: - case Switch: - case Template: - case This: - case Throw: - case Thread_local: - case Try: - case Typedef: - case Typeid_: - case Typename_: - case Unsigned: - case Union: - case Using: - case Virtual: - case Volatile: - case While: - case Void: - spans.add(Span.obtain(offset, forKeyword())); - break; - case Bool: - case Char: - case Char16: - case Char32: - case Double: - case Float: - case Int: - case Long: - case Short: - case Wchar: - spans.add(Span.obtain(offset, makeStyle(TYPE_NAME))); - break; - case LeftParen: - case LeftBracket: - case LeftBrace: - case Dot: - case RightParen: - case RightBracket: - case RightBrace: - case Semi: - case Comma: - case Plus: - case Minus: - case Star: - case Div: - case Mod: - case Caret: - case And: - case Or: - case Tilde: - case Not: - case Assign: - case Less: - case Greater: - case PlusAssign: - case MinusAssign: - case StarAssign: - case DivAssign: - case ModAssign: - case XorAssign: - case AndAssign: - case OrAssign: - case RightShiftAssign: - case LeftShiftAssign: - case Equal: - case NotEqual: - case LessEqual: - case GreaterEqual: - case AndAnd: - case OrOr: - case PlusPlus: - case MinusMinus: - case Arrow: - case ArrowStar: - case Question: - case Colon: - case Doublecolon: - case DotStar: - case Ellipsis: - spans.add(Span.obtain(offset, makeStyle(OPERATOR))); - break; - case IntegerLiteral: - case DecimalLiteral: - case OctalLiteral: - case HexadecimalLiteral: - case BinaryLiteral: - case Integersuffix: - case CharacterLiteral: - case FloatingLiteral: - case BooleanLiteral: - case Nullptr: - case True_: - case False_: - spans.add(Span.obtain(offset, makeStyle(LITERAL))); - break; - case StringLiteral: - case MultiLineMacro: - case Directive: - spans.add(Span.obtain(offset, forString())); - break; - case BlockComment: - spans.add(Span.obtain(offset, forComment())); - break; - case LineComment: - handleLineCommentSpan(token, spans, offset); - break; - default: - spans.add(Span.obtain(offset, makeStyle(TEXT_NORMAL))); - break; - } - } - return spans; - } - - @Override - protected void handleIncompleteToken(final IncrementalToken token) { - token.type = BlockComment; - } - - @Override - protected int[] getCodeBlockTokens() { - return new int[] {LeftBrace, RightBrace}; - } -} diff --git a/editor/build.gradle b/editor/build.gradle new file mode 100644 index 000000000..a51be9f7d --- /dev/null +++ b/editor/build.gradle @@ -0,0 +1,60 @@ +plugins { + id 'com.android.library' + id 'kotlin-android' +} + +android { + namespace "com.itsaky.androidide.editor" + compileSdkVersion rootProject.ext.compileSdk + buildToolsVersion rootProject.ext.buildTools + + defaultConfig { + minSdkVersion rootProject.ext.minSdk + targetSdkVersion rootProject.ext.targetSdk + } + + buildFeatures.viewBinding true + + compileOptions { + sourceCompatibility rootProject.ext.javaSourceVersion + targetCompatibility rootProject.ext.javaTargetVersion + } + + kotlinOptions { + jvmTarget = "11" + } + + buildTypes { + release { + minifyEnabled true + } + } + + testOptions { + unitTests { + includeAndroidResources = true + } + } +} + +dependencies { + + implementation androidx.annotation + implementation androidx.appcompat + implementation androidx.constraintlayout + + implementation common.editor + implementation common.utilcode + + implementation google.material + + implementation project (path: ":actions") + implementation project (path: ":common") + implementation project (path: ":lexers") + implementation project (path: ":shared") + implementation project (path: ":resources") + + implementation project (path: ":lsp:api") + implementation project (path: ":lsp:java") + implementation project (path: ":lsp:xml") +} \ No newline at end of file diff --git a/editor/build.gradle.kts b/editor/build.gradle.kts deleted file mode 100644 index 103fcbc75..000000000 --- a/editor/build.gradle.kts +++ /dev/null @@ -1,39 +0,0 @@ -import com.itsaky.androidide.Versions - -plugins { - id("com.android.library") - id("kotlin-android") -} - -android { - namespace = "com.itsaky.androidide.editor" - compileSdk = Versions.compileSdk - buildToolsVersion = Versions.buildTools - - defaultConfig { - minSdk = Versions.minSdk - targetSdk = Versions.targetSdk - } - - buildTypes { - release { - isMinifyEnabled = false - proguardFiles(getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro") - } - } - - compileOptions { - sourceCompatibility = Versions.javaVersion - targetCompatibility = Versions.javaVersion - } - - kotlinOptions { - jvmTarget = "11" - } -} - -dependencies { - implementation(project(path = ":common")) - implementation(project(path = ":shared")) - implementation(project(path = ":lsp:api")) -} \ No newline at end of file diff --git a/editor/src/main/java/com/itsaky/androidide/editor/IEditor.java b/editor/src/main/java/com/itsaky/androidide/editor/IEditor.java index 3b1d5443c..0710969c3 100644 --- a/editor/src/main/java/com/itsaky/androidide/editor/IEditor.java +++ b/editor/src/main/java/com/itsaky/androidide/editor/IEditor.java @@ -19,6 +19,7 @@ package com.itsaky.androidide.editor; import androidx.annotation.NonNull; +import com.itsaky.androidide.lsp.api.ILanguageClient; import com.itsaky.androidide.lsp.api.ILanguageServer; import com.itsaky.androidide.lsp.models.SignatureHelp; import com.itsaky.androidide.models.Position; @@ -32,9 +33,8 @@ import java.io.File; * @author Akash Yadav */ public interface IEditor { - + String KEY_FILE = "ide.editor.file"; - /** * Get the file that this editor is currently editing. @@ -172,7 +172,7 @@ public interface IEditor { /** * Set the language server that this editor will connect with. If the language client is not set, - * it'll be set to {@link IDELanguageClientImpl}. + * it'll be set to {@link ILanguageClient} from the language server. * * @param server The server to set. Provide null to disable all the language server * features. diff --git a/editor/src/main/java/com/itsaky/androidide/editor/IEditorProvider.kt b/editor/src/main/java/com/itsaky/androidide/editor/IEditorProvider.kt deleted file mode 100644 index 926602853..000000000 --- a/editor/src/main/java/com/itsaky/androidide/editor/IEditorProvider.kt +++ /dev/null @@ -1,36 +0,0 @@ -/* - * This file is part of AndroidIDE. - * - * AndroidIDE is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * AndroidIDE is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with AndroidIDE. If not, see . - */ - -package com.itsaky.androidide.editor - -import android.content.Context - -/** - * Provides instance of [IEditor]. An instance of this class can be retrieved with the help of the - * Lookup API. - * - * @author Akash Yadav - */ -interface IEditorProvider { - - /** - * Creates a new instance of editor with the given [context]. - * - * @param context The context to use for editor instance creation. - */ - fun createEditor(context: Context) : IEditor -} diff --git a/app/src/main/java/com/itsaky/androidide/adapters/CompletionListAdapter.kt b/editor/src/main/java/com/itsaky/androidide/editor/adapters/CompletionListAdapter.kt similarity index 86% rename from app/src/main/java/com/itsaky/androidide/adapters/CompletionListAdapter.kt rename to editor/src/main/java/com/itsaky/androidide/editor/adapters/CompletionListAdapter.kt index 0b9d6c14e..99e674ead 100755 --- a/app/src/main/java/com/itsaky/androidide/adapters/CompletionListAdapter.kt +++ b/editor/src/main/java/com/itsaky/androidide/editor/adapters/CompletionListAdapter.kt @@ -1,21 +1,20 @@ /* - * This file is part of AndroidIDE. + * This file is part of AndroidIDE. * - * AndroidIDE is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * AndroidIDE is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. * - * AndroidIDE is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with AndroidIDE. If not, see . + * AndroidIDE is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. * + * You should have received a copy of the GNU General Public License + * along with AndroidIDE. If not, see . */ -package com.itsaky.androidide.adapters +package com.itsaky.androidide.editor.adapters import android.content.res.Resources import android.graphics.Typeface @@ -25,7 +24,7 @@ import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import android.widget.TextView -import com.itsaky.androidide.databinding.LayoutCompletionItemBinding +import com.itsaky.androidide.editor.databinding.LayoutCompletionItemBinding import com.itsaky.androidide.lookup.Lookup import com.itsaky.androidide.lsp.models.ClassCompletionData import com.itsaky.androidide.lsp.models.CompletionItem as LspCompletionItem diff --git a/editor-languages/src/main/java/com/itsaky/androidide/language/BraceHandler.kt b/editor/src/main/java/com/itsaky/androidide/editor/language/BraceHandler.kt similarity index 98% rename from editor-languages/src/main/java/com/itsaky/androidide/language/BraceHandler.kt rename to editor/src/main/java/com/itsaky/androidide/editor/language/BraceHandler.kt index 9b220589c..321719bbc 100644 --- a/editor-languages/src/main/java/com/itsaky/androidide/language/BraceHandler.kt +++ b/editor/src/main/java/com/itsaky/androidide/editor/language/BraceHandler.kt @@ -15,7 +15,7 @@ * along with AndroidIDE. If not, see . */ -package com.itsaky.androidide.language +package com.itsaky.androidide.editor.language import io.github.rosemoe.sora.lang.smartEnter.NewlineHandleResult import io.github.rosemoe.sora.lang.smartEnter.NewlineHandler diff --git a/editor-languages/src/main/java/com/itsaky/androidide/language/CommonCompletionProvider.kt b/editor/src/main/java/com/itsaky/androidide/editor/language/CommonCompletionProvider.kt similarity index 96% rename from editor-languages/src/main/java/com/itsaky/androidide/language/CommonCompletionProvider.kt rename to editor/src/main/java/com/itsaky/androidide/editor/language/CommonCompletionProvider.kt index e1aa6ed53..59d967ce6 100644 --- a/editor-languages/src/main/java/com/itsaky/androidide/language/CommonCompletionProvider.kt +++ b/editor/src/main/java/com/itsaky/androidide/editor/language/CommonCompletionProvider.kt @@ -14,7 +14,7 @@ * You should have received a copy of the GNU General Public License * along with AndroidIDE. If not, see . */ -package com.itsaky.androidide.language +package com.itsaky.androidide.editor.language import com.itsaky.androidide.lsp.api.ILanguageServer import com.itsaky.androidide.lsp.models.CompletionItem diff --git a/editor-languages/src/main/java/com/itsaky/androidide/language/CommonSymbolPairs.kt b/editor/src/main/java/com/itsaky/androidide/editor/language/CommonSymbolPairs.kt similarity index 96% rename from editor-languages/src/main/java/com/itsaky/androidide/language/CommonSymbolPairs.kt rename to editor/src/main/java/com/itsaky/androidide/editor/language/CommonSymbolPairs.kt index ba4487b13..d958f8e6a 100644 --- a/editor-languages/src/main/java/com/itsaky/androidide/language/CommonSymbolPairs.kt +++ b/editor/src/main/java/com/itsaky/androidide/editor/language/CommonSymbolPairs.kt @@ -15,7 +15,7 @@ * along with AndroidIDE. If not, see . */ -package com.itsaky.androidide.language +package com.itsaky.androidide.editor.language import io.github.rosemoe.sora.text.Content import io.github.rosemoe.sora.widget.SymbolPairMatch diff --git a/editor-languages/src/main/java/com/itsaky/androidide/language/CompletionCancelChecker.kt b/editor/src/main/java/com/itsaky/androidide/editor/language/CompletionCancelChecker.kt similarity index 96% rename from editor-languages/src/main/java/com/itsaky/androidide/language/CompletionCancelChecker.kt rename to editor/src/main/java/com/itsaky/androidide/editor/language/CompletionCancelChecker.kt index fc67b75f2..5d5914c20 100644 --- a/editor-languages/src/main/java/com/itsaky/androidide/language/CompletionCancelChecker.kt +++ b/editor/src/main/java/com/itsaky/androidide/editor/language/CompletionCancelChecker.kt @@ -15,7 +15,7 @@ * along with AndroidIDE. If not, see . */ -package com.itsaky.androidide.language +package com.itsaky.androidide.editor.language import com.itsaky.androidide.lsp.api.ICompletionCancelChecker import io.github.rosemoe.sora.lang.completion.CompletionCancelledException diff --git a/editor-languages/src/main/java/com/itsaky/androidide/language/IDELanguage.java b/editor/src/main/java/com/itsaky/androidide/editor/language/IDELanguage.java similarity index 98% rename from editor-languages/src/main/java/com/itsaky/androidide/language/IDELanguage.java rename to editor/src/main/java/com/itsaky/androidide/editor/language/IDELanguage.java index c774e7e78..28c32bc3c 100644 --- a/editor-languages/src/main/java/com/itsaky/androidide/language/IDELanguage.java +++ b/editor/src/main/java/com/itsaky/androidide/editor/language/IDELanguage.java @@ -14,7 +14,7 @@ * You should have received a copy of the GNU General Public License * along with AndroidIDE. If not, see . */ -package com.itsaky.androidide.language; +package com.itsaky.androidide.editor.language; import android.os.Bundle; diff --git a/editor-languages/src/main/java/com/itsaky/androidide/language/LSPFormatter.kt b/editor/src/main/java/com/itsaky/androidide/editor/language/LSPFormatter.kt similarity index 98% rename from editor-languages/src/main/java/com/itsaky/androidide/language/LSPFormatter.kt rename to editor/src/main/java/com/itsaky/androidide/editor/language/LSPFormatter.kt index 92d1a3254..d9e359d21 100644 --- a/editor-languages/src/main/java/com/itsaky/androidide/language/LSPFormatter.kt +++ b/editor/src/main/java/com/itsaky/androidide/editor/language/LSPFormatter.kt @@ -15,7 +15,7 @@ * along with AndroidIDE. If not, see . */ -package com.itsaky.androidide.language +package com.itsaky.androidide.editor.language import com.itsaky.androidide.lsp.api.ILanguageServer import com.itsaky.androidide.lsp.models.CodeFormatResult diff --git a/editor/src/main/java/com/itsaky/androidide/editor/language/cpp/CppAnalyzer.java b/editor/src/main/java/com/itsaky/androidide/editor/language/cpp/CppAnalyzer.java new file mode 100644 index 000000000..8d3e79bff --- /dev/null +++ b/editor/src/main/java/com/itsaky/androidide/editor/language/cpp/CppAnalyzer.java @@ -0,0 +1,233 @@ +/* + * This file is part of AndroidIDE. + * + * AndroidIDE is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * AndroidIDE is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with AndroidIDE. If not, see . + */ + +package com.itsaky.androidide.editor.language.cpp; + +import static com.itsaky.androidide.syntax.colorschemes.SchemeAndroidIDE.LITERAL; +import static com.itsaky.androidide.syntax.colorschemes.SchemeAndroidIDE.OPERATOR; +import static com.itsaky.androidide.syntax.colorschemes.SchemeAndroidIDE.TEXT_NORMAL; +import static com.itsaky.androidide.syntax.colorschemes.SchemeAndroidIDE.TYPE_NAME; +import static com.itsaky.androidide.syntax.colorschemes.SchemeAndroidIDE.forComment; +import static com.itsaky.androidide.syntax.colorschemes.SchemeAndroidIDE.forKeyword; +import static com.itsaky.androidide.syntax.colorschemes.SchemeAndroidIDE.forString; +import static io.github.rosemoe.sora.lang.styling.TextStyle.makeStyle; + +import com.itsaky.androidide.editor.language.incremental.IncrementalToken; +import com.itsaky.androidide.editor.language.incremental.BaseIncrementalAnalyzeManager; +import com.itsaky.androidide.editor.language.incremental.LineState; +import com.itsaky.androidide.lexers.cpp.CPP14Lexer; +import com.itsaky.androidide.utils.ILogger; + +import java.lang.Override; +import java.util.ArrayList; +import java.util.List; + +import io.github.rosemoe.sora.lang.styling.Span; + +public class CppAnalyzer extends BaseIncrementalAnalyzeManager { + + private static final ILogger LOG = ILogger.newInstance("CppAnalyzer"); + + public CppAnalyzer() { + super(CPP14Lexer.class); + } + + @Override + protected int[][] getMultilineTokenStartEndTypes() { + final var start = new int[] {CPP14Lexer.Div, CPP14Lexer.Star}; + final var end = new int[] {CPP14Lexer.Star, CPP14Lexer.Div}; + return new int[][] {start, end}; + } + + @Override + protected List generateSpans(final LineTokenizeResult tokens) { + final var spans = new ArrayList(); + spans.add(Span.obtain(0, makeStyle(TEXT_NORMAL))); + for (int i = 0; i < tokens.tokens.size(); i++) { + final var token = tokens.tokens.get(i); + final var type = token.getType(); + final var offset = token.getStartIndex(); + + switch (type) { + case CPP14Lexer.Alignas: + case CPP14Lexer.Alignof: + case CPP14Lexer.Asm: + case CPP14Lexer.Auto: + case CPP14Lexer.Break: + case CPP14Lexer.Class: + case CPP14Lexer.Const: + case CPP14Lexer.Catch: + case CPP14Lexer.Case: + case CPP14Lexer.Constexpr: + case CPP14Lexer.Const_cast: + case CPP14Lexer.Continue: + case CPP14Lexer.Decltype: + case CPP14Lexer.Default: + case CPP14Lexer.Delete: + case CPP14Lexer.Do: + case CPP14Lexer.Dynamic_cast: + case CPP14Lexer.Else: + case CPP14Lexer.Enum: + case CPP14Lexer.Explicit: + case CPP14Lexer.Export: + case CPP14Lexer.Extern: + case CPP14Lexer.Final: + case CPP14Lexer.For: + case CPP14Lexer.Friend: + case CPP14Lexer.Goto: + case CPP14Lexer.If: + case CPP14Lexer.Inline: + case CPP14Lexer.Mutable: + case CPP14Lexer.Namespace: + case CPP14Lexer.New: + case CPP14Lexer.Noexcept: + case CPP14Lexer.Operator: + case CPP14Lexer.Override: + case CPP14Lexer.Private: + case CPP14Lexer.Protected: + case CPP14Lexer.Public: + case CPP14Lexer.Register: + case CPP14Lexer.Reinterpret_cast: + case CPP14Lexer.Return: + case CPP14Lexer.Sizeof: + case CPP14Lexer.Signed: + case CPP14Lexer.Static: + case CPP14Lexer.Static_cast: + case CPP14Lexer.Static_assert: + case CPP14Lexer.Struct: + case CPP14Lexer.Switch: + case CPP14Lexer.Template: + case CPP14Lexer.This: + case CPP14Lexer.Throw: + case CPP14Lexer.Thread_local: + case CPP14Lexer.Try: + case CPP14Lexer.Typedef: + case CPP14Lexer.Typeid_: + case CPP14Lexer.Typename_: + case CPP14Lexer.Unsigned: + case CPP14Lexer.Union: + case CPP14Lexer.Using: + case CPP14Lexer.Virtual: + case CPP14Lexer.Volatile: + case CPP14Lexer.While: + case CPP14Lexer.Void: + spans.add(Span.obtain(offset, forKeyword())); + break; + case CPP14Lexer.Bool: + case CPP14Lexer.Char: + case CPP14Lexer.Char16: + case CPP14Lexer.Char32: + case CPP14Lexer.Double: + case CPP14Lexer.Float: + case CPP14Lexer.Int: + case CPP14Lexer.Long: + case CPP14Lexer.Short: + case CPP14Lexer.Wchar: + spans.add(Span.obtain(offset, makeStyle(TYPE_NAME))); + break; + case CPP14Lexer.LeftParen: + case CPP14Lexer.LeftBracket: + case CPP14Lexer.LeftBrace: + case CPP14Lexer.Dot: + case CPP14Lexer.RightParen: + case CPP14Lexer.RightBracket: + case CPP14Lexer.RightBrace: + case CPP14Lexer.Semi: + case CPP14Lexer.Comma: + case CPP14Lexer.Plus: + case CPP14Lexer.Minus: + case CPP14Lexer.Star: + case CPP14Lexer.Div: + case CPP14Lexer.Mod: + case CPP14Lexer.Caret: + case CPP14Lexer.And: + case CPP14Lexer.Or: + case CPP14Lexer.Tilde: + case CPP14Lexer.Not: + case CPP14Lexer.Assign: + case CPP14Lexer.Less: + case CPP14Lexer.Greater: + case CPP14Lexer.PlusAssign: + case CPP14Lexer.MinusAssign: + case CPP14Lexer.StarAssign: + case CPP14Lexer.DivAssign: + case CPP14Lexer.ModAssign: + case CPP14Lexer.XorAssign: + case CPP14Lexer.AndAssign: + case CPP14Lexer.OrAssign: + case CPP14Lexer.RightShiftAssign: + case CPP14Lexer.LeftShiftAssign: + case CPP14Lexer.Equal: + case CPP14Lexer.NotEqual: + case CPP14Lexer.LessEqual: + case CPP14Lexer.GreaterEqual: + case CPP14Lexer.AndAnd: + case CPP14Lexer.OrOr: + case CPP14Lexer.PlusPlus: + case CPP14Lexer.MinusMinus: + case CPP14Lexer.Arrow: + case CPP14Lexer.ArrowStar: + case CPP14Lexer.Question: + case CPP14Lexer.Colon: + case CPP14Lexer.Doublecolon: + case CPP14Lexer.DotStar: + case CPP14Lexer.Ellipsis: + spans.add(Span.obtain(offset, makeStyle(OPERATOR))); + break; + case CPP14Lexer.IntegerLiteral: + case CPP14Lexer.DecimalLiteral: + case CPP14Lexer.OctalLiteral: + case CPP14Lexer.HexadecimalLiteral: + case CPP14Lexer.BinaryLiteral: + case CPP14Lexer.Integersuffix: + case CPP14Lexer.CharacterLiteral: + case CPP14Lexer.FloatingLiteral: + case CPP14Lexer.BooleanLiteral: + case CPP14Lexer.Nullptr: + case CPP14Lexer.True_: + case CPP14Lexer.False_: + spans.add(Span.obtain(offset, makeStyle(LITERAL))); + break; + case CPP14Lexer.StringLiteral: + case CPP14Lexer.MultiLineMacro: + case CPP14Lexer.Directive: + spans.add(Span.obtain(offset, forString())); + break; + case CPP14Lexer.BlockComment: + spans.add(Span.obtain(offset, forComment())); + break; + case CPP14Lexer.LineComment: + handleLineCommentSpan(token, spans, offset); + break; + default: + spans.add(Span.obtain(offset, makeStyle(TEXT_NORMAL))); + break; + } + } + return spans; + } + + @Override + protected void handleIncompleteToken(final IncrementalToken token) { + token.type = CPP14Lexer.BlockComment; + } + + @Override + protected int[] getCodeBlockTokens() { + return new int[] {CPP14Lexer.LeftBrace, CPP14Lexer.RightBrace}; + } +} diff --git a/editor-languages/src/main/java/com/itsaky/androidide/language/cpp/CppLanguage.java b/editor/src/main/java/com/itsaky/androidide/editor/language/cpp/CppLanguage.java similarity index 72% rename from editor-languages/src/main/java/com/itsaky/androidide/language/cpp/CppLanguage.java rename to editor/src/main/java/com/itsaky/androidide/editor/language/cpp/CppLanguage.java index 840c4fb46..3686003b4 100644 --- a/editor-languages/src/main/java/com/itsaky/androidide/language/cpp/CppLanguage.java +++ b/editor/src/main/java/com/itsaky/androidide/editor/language/cpp/CppLanguage.java @@ -1,29 +1,28 @@ -/************************************************************************************ - * This file is part of AndroidIDE. +/* + * This file is part of AndroidIDE. * - * AndroidIDE is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * AndroidIDE is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. * - * AndroidIDE is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. + * AndroidIDE is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. * - * You should have received a copy of the GNU General Public License - * along with AndroidIDE. If not, see . - * - **************************************************************************************/ -package com.itsaky.androidide.language.cpp; + * You should have received a copy of the GNU General Public License + * along with AndroidIDE. If not, see . + */ +package com.itsaky.androidide.editor.language.cpp; import android.os.Bundle; import androidx.annotation.NonNull; -import com.itsaky.androidide.language.BraceHandler; -import com.itsaky.androidide.language.CommonSymbolPairs; -import com.itsaky.androidide.language.IDELanguage; +import com.itsaky.androidide.editor.language.BraceHandler; +import com.itsaky.androidide.editor.language.CommonSymbolPairs; +import com.itsaky.androidide.editor.language.IDELanguage; import com.itsaky.androidide.lexers.cpp.CPP14Lexer; import com.itsaky.androidide.utils.ILogger; diff --git a/editor-languages/src/main/java/com/itsaky/androidide/language/groovy/GroovyAnalyzer.kt b/editor/src/main/java/com/itsaky/androidide/editor/language/groovy/GroovyAnalyzer.kt similarity index 95% rename from editor-languages/src/main/java/com/itsaky/androidide/language/groovy/GroovyAnalyzer.kt rename to editor/src/main/java/com/itsaky/androidide/editor/language/groovy/GroovyAnalyzer.kt index f310976d4..ff826b4cb 100644 --- a/editor-languages/src/main/java/com/itsaky/androidide/language/groovy/GroovyAnalyzer.kt +++ b/editor/src/main/java/com/itsaky/androidide/editor/language/groovy/GroovyAnalyzer.kt @@ -15,11 +15,11 @@ * along with AndroidIDE. If not, see . */ -package com.itsaky.androidide.language.groovy +package com.itsaky.androidide.editor.language.groovy -import com.itsaky.androidide.language.incremental.BaseIncrementalAnalyzeManager -import com.itsaky.androidide.language.incremental.IncrementalToken -import com.itsaky.androidide.language.incremental.LineState +import com.itsaky.androidide.editor.language.incremental.BaseIncrementalAnalyzeManager +import com.itsaky.androidide.editor.language.incremental.IncrementalToken +import com.itsaky.androidide.editor.language.incremental.LineState import com.itsaky.androidide.lexers.groovy.GroovyLexer import com.itsaky.androidide.syntax.colorschemes.SchemeAndroidIDE import io.github.rosemoe.sora.lang.analysis.IncrementalAnalyzeManager.LineTokenizeResult diff --git a/editor-languages/src/main/java/com/itsaky/androidide/language/groovy/GroovyAutoComplete.java b/editor/src/main/java/com/itsaky/androidide/editor/language/groovy/GroovyAutoComplete.java similarity index 94% rename from editor-languages/src/main/java/com/itsaky/androidide/language/groovy/GroovyAutoComplete.java rename to editor/src/main/java/com/itsaky/androidide/editor/language/groovy/GroovyAutoComplete.java index 3fb42c983..f8e487568 100755 --- a/editor-languages/src/main/java/com/itsaky/androidide/language/groovy/GroovyAutoComplete.java +++ b/editor/src/main/java/com/itsaky/androidide/editor/language/groovy/GroovyAutoComplete.java @@ -1,23 +1,20 @@ -/************************************************************************************ - * This file is part of AndroidIDE. +/* + * This file is part of AndroidIDE. * + * AndroidIDE is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. * + * AndroidIDE is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. * - * AndroidIDE is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * AndroidIDE is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with AndroidIDE. If not, see . - * - **************************************************************************************/ -package com.itsaky.androidide.language.groovy; + * You should have received a copy of the GNU General Public License + * along with AndroidIDE. If not, see . + */ +package com.itsaky.androidide.editor.language.groovy; import android.os.Bundle; diff --git a/editor-languages/src/main/java/com/itsaky/androidide/language/groovy/GroovyLanguage.java b/editor/src/main/java/com/itsaky/androidide/editor/language/groovy/GroovyLanguage.java similarity index 76% rename from editor-languages/src/main/java/com/itsaky/androidide/language/groovy/GroovyLanguage.java rename to editor/src/main/java/com/itsaky/androidide/editor/language/groovy/GroovyLanguage.java index 3fb229066..50def6406 100755 --- a/editor-languages/src/main/java/com/itsaky/androidide/language/groovy/GroovyLanguage.java +++ b/editor/src/main/java/com/itsaky/androidide/editor/language/groovy/GroovyLanguage.java @@ -1,29 +1,28 @@ -/************************************************************************************ - * This file is part of AndroidIDE. +/* + * This file is part of AndroidIDE. * - * AndroidIDE is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * AndroidIDE is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. * - * AndroidIDE is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. + * AndroidIDE is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. * - * You should have received a copy of the GNU General Public License - * along with AndroidIDE. If not, see . - * - **************************************************************************************/ -package com.itsaky.androidide.language.groovy; + * You should have received a copy of the GNU General Public License + * along with AndroidIDE. If not, see . + */ +package com.itsaky.androidide.editor.language.groovy; import android.os.Bundle; import androidx.annotation.NonNull; -import com.itsaky.androidide.language.BraceHandler; -import com.itsaky.androidide.language.CommonSymbolPairs; -import com.itsaky.androidide.language.IDELanguage; +import com.itsaky.androidide.editor.language.CommonSymbolPairs; +import com.itsaky.androidide.editor.language.IDELanguage; +import com.itsaky.androidide.editor.language.BraceHandler; import com.itsaky.androidide.lexers.groovy.GroovyLexer; import com.itsaky.androidide.utils.CharSequenceReader; import com.itsaky.androidide.utils.ILogger; diff --git a/editor-languages/src/main/java/com/itsaky/androidide/language/incremental/BaseIncrementalAnalyzeManager.java b/editor/src/main/java/com/itsaky/androidide/editor/language/incremental/BaseIncrementalAnalyzeManager.java similarity index 98% rename from editor-languages/src/main/java/com/itsaky/androidide/language/incremental/BaseIncrementalAnalyzeManager.java rename to editor/src/main/java/com/itsaky/androidide/editor/language/incremental/BaseIncrementalAnalyzeManager.java index 1e24fe11f..487d4e45f 100644 --- a/editor-languages/src/main/java/com/itsaky/androidide/language/incremental/BaseIncrementalAnalyzeManager.java +++ b/editor/src/main/java/com/itsaky/androidide/editor/language/incremental/BaseIncrementalAnalyzeManager.java @@ -15,10 +15,10 @@ * along with AndroidIDE. If not, see . */ -package com.itsaky.androidide.language.incremental; +package com.itsaky.androidide.editor.language.incremental; -import static com.itsaky.androidide.language.incremental.LineState.INCOMPLETE; -import static com.itsaky.androidide.language.incremental.LineState.NORMAL; +import static com.itsaky.androidide.editor.language.incremental.LineState.INCOMPLETE; +import static com.itsaky.androidide.editor.language.incremental.LineState.NORMAL; import static com.itsaky.androidide.syntax.colorschemes.SchemeAndroidIDE.FIXME_COMMENT; import static com.itsaky.androidide.syntax.colorschemes.SchemeAndroidIDE.TODO_COMMENT; import static com.itsaky.androidide.syntax.colorschemes.SchemeAndroidIDE.withoutCompletion; @@ -28,7 +28,7 @@ import androidx.annotation.NonNull; import com.blankj.utilcode.util.ArrayUtils; import com.google.common.base.Preconditions; import com.google.common.collect.EvictingQueue; -import com.itsaky.androidide.language.java.JavaAnalyzer; +import com.itsaky.androidide.editor.language.java.JavaAnalyzer; import com.itsaky.androidide.syntax.colorschemes.SchemeAndroidIDE; import com.itsaky.androidide.utils.CharSequenceReader; import com.itsaky.androidide.utils.ILogger; diff --git a/editor-languages/src/main/java/com/itsaky/androidide/language/incremental/IncrementalToken.kt b/editor/src/main/java/com/itsaky/androidide/editor/language/incremental/IncrementalToken.kt similarity index 96% rename from editor-languages/src/main/java/com/itsaky/androidide/language/incremental/IncrementalToken.kt rename to editor/src/main/java/com/itsaky/androidide/editor/language/incremental/IncrementalToken.kt index 380070f74..cfb68d82d 100644 --- a/editor-languages/src/main/java/com/itsaky/androidide/language/incremental/IncrementalToken.kt +++ b/editor/src/main/java/com/itsaky/androidide/editor/language/incremental/IncrementalToken.kt @@ -15,7 +15,7 @@ * along with AndroidIDE. If not, see . */ -package com.itsaky.androidide.language.incremental +package com.itsaky.androidide.editor.language.incremental import org.antlr.v4.runtime.CharStream import org.antlr.v4.runtime.Token diff --git a/editor-languages/src/main/java/com/itsaky/androidide/language/incremental/LineState.kt b/editor/src/main/java/com/itsaky/androidide/editor/language/incremental/LineState.kt similarity index 95% rename from editor-languages/src/main/java/com/itsaky/androidide/language/incremental/LineState.kt rename to editor/src/main/java/com/itsaky/androidide/editor/language/incremental/LineState.kt index f0854e4b1..46b150118 100644 --- a/editor-languages/src/main/java/com/itsaky/androidide/language/incremental/LineState.kt +++ b/editor/src/main/java/com/itsaky/androidide/editor/language/incremental/LineState.kt @@ -15,7 +15,7 @@ * along with AndroidIDE. If not, see . */ -package com.itsaky.androidide.language.incremental +package com.itsaky.androidide.editor.language.incremental import org.antlr.v4.runtime.Lexer diff --git a/editor-languages/src/main/java/com/itsaky/androidide/language/java/JavaAnalyzer.kt b/editor/src/main/java/com/itsaky/androidide/editor/language/java/JavaAnalyzer.kt similarity index 95% rename from editor-languages/src/main/java/com/itsaky/androidide/language/java/JavaAnalyzer.kt rename to editor/src/main/java/com/itsaky/androidide/editor/language/java/JavaAnalyzer.kt index aa6654102..11ad6972b 100644 --- a/editor-languages/src/main/java/com/itsaky/androidide/language/java/JavaAnalyzer.kt +++ b/editor/src/main/java/com/itsaky/androidide/editor/language/java/JavaAnalyzer.kt @@ -14,11 +14,11 @@ * You should have received a copy of the GNU General Public License * along with AndroidIDE. If not, see . */ -package com.itsaky.androidide.language.java +package com.itsaky.androidide.editor.language.java -import com.itsaky.androidide.language.incremental.BaseIncrementalAnalyzeManager -import com.itsaky.androidide.language.incremental.IncrementalToken -import com.itsaky.androidide.language.incremental.LineState +import com.itsaky.androidide.editor.language.incremental.BaseIncrementalAnalyzeManager +import com.itsaky.androidide.editor.language.incremental.IncrementalToken +import com.itsaky.androidide.editor.language.incremental.LineState import com.itsaky.androidide.lexers.java.JavaLexer import com.itsaky.androidide.syntax.colorschemes.SchemeAndroidIDE.ANNOTATION import com.itsaky.androidide.syntax.colorschemes.SchemeAndroidIDE.LITERAL diff --git a/editor-languages/src/main/java/com/itsaky/androidide/language/java/JavaLanguage.java b/editor/src/main/java/com/itsaky/androidide/editor/language/java/JavaLanguage.java similarity index 92% rename from editor-languages/src/main/java/com/itsaky/androidide/language/java/JavaLanguage.java rename to editor/src/main/java/com/itsaky/androidide/editor/language/java/JavaLanguage.java index 2c1880d9f..840514cbc 100755 --- a/editor-languages/src/main/java/com/itsaky/androidide/language/java/JavaLanguage.java +++ b/editor/src/main/java/com/itsaky/androidide/editor/language/java/JavaLanguage.java @@ -14,14 +14,14 @@ * You should have received a copy of the GNU General Public License * along with AndroidIDE. If not, see . */ -package com.itsaky.androidide.language.java; +package com.itsaky.androidide.editor.language.java; import androidx.annotation.NonNull; -import com.itsaky.androidide.language.BraceHandler; -import com.itsaky.androidide.language.CommonCompletionProvider; -import com.itsaky.androidide.language.CommonSymbolPairs; -import com.itsaky.androidide.language.IDELanguage; +import com.itsaky.androidide.editor.language.CommonSymbolPairs; +import com.itsaky.androidide.editor.language.IDELanguage; +import com.itsaky.androidide.editor.language.BraceHandler; +import com.itsaky.androidide.editor.language.CommonCompletionProvider; import com.itsaky.androidide.lexers.java.JavaLexer; import com.itsaky.androidide.lexers.java.JavaParser; import com.itsaky.androidide.lsp.api.ILanguageServer; diff --git a/editor-languages/src/main/java/com/itsaky/androidide/language/kotlin/KotlinAnalyzer.kt b/editor/src/main/java/com/itsaky/androidide/editor/language/kotlin/KotlinAnalyzer.kt similarity index 96% rename from editor-languages/src/main/java/com/itsaky/androidide/language/kotlin/KotlinAnalyzer.kt rename to editor/src/main/java/com/itsaky/androidide/editor/language/kotlin/KotlinAnalyzer.kt index 5b4996c31..b37e959f0 100644 --- a/editor-languages/src/main/java/com/itsaky/androidide/language/kotlin/KotlinAnalyzer.kt +++ b/editor/src/main/java/com/itsaky/androidide/editor/language/kotlin/KotlinAnalyzer.kt @@ -15,11 +15,11 @@ * along with AndroidIDE. If not, see . */ -package com.itsaky.androidide.language.kotlin +package com.itsaky.androidide.editor.language.kotlin -import com.itsaky.androidide.language.incremental.BaseIncrementalAnalyzeManager -import com.itsaky.androidide.language.incremental.IncrementalToken -import com.itsaky.androidide.language.incremental.LineState +import com.itsaky.androidide.editor.language.incremental.BaseIncrementalAnalyzeManager +import com.itsaky.androidide.editor.language.incremental.IncrementalToken +import com.itsaky.androidide.editor.language.incremental.LineState import com.itsaky.androidide.lexers.kotlin.KotlinLexer import com.itsaky.androidide.syntax.colorschemes.SchemeAndroidIDE.ANNOTATION import com.itsaky.androidide.syntax.colorschemes.SchemeAndroidIDE.LITERAL diff --git a/editor-languages/src/main/java/com/itsaky/androidide/language/kotlin/KotlinLanguage.java b/editor/src/main/java/com/itsaky/androidide/editor/language/kotlin/KotlinLanguage.java similarity index 71% rename from editor-languages/src/main/java/com/itsaky/androidide/language/kotlin/KotlinLanguage.java rename to editor/src/main/java/com/itsaky/androidide/editor/language/kotlin/KotlinLanguage.java index be332db8a..f506e31e5 100644 --- a/editor-languages/src/main/java/com/itsaky/androidide/language/kotlin/KotlinLanguage.java +++ b/editor/src/main/java/com/itsaky/androidide/editor/language/kotlin/KotlinLanguage.java @@ -1,30 +1,29 @@ -/************************************************************************************ - * This file is part of AndroidIDE. +/* + * This file is part of AndroidIDE. * - * AndroidIDE is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * AndroidIDE is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. * - * AndroidIDE is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. + * AndroidIDE is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. * - * You should have received a copy of the GNU General Public License - * along with AndroidIDE. If not, see . - * - **************************************************************************************/ -package com.itsaky.androidide.language.kotlin; + * You should have received a copy of the GNU General Public License + * along with AndroidIDE. If not, see . + */ +package com.itsaky.androidide.editor.language.kotlin; import android.os.Bundle; import androidx.annotation.NonNull; -import com.itsaky.androidide.language.BraceHandler; -import com.itsaky.androidide.language.CommonSymbolPairs; -import com.itsaky.androidide.language.IDELanguage; -import com.itsaky.androidide.language.java.JavaLanguage; +import com.itsaky.androidide.editor.language.BraceHandler; +import com.itsaky.androidide.editor.language.CommonSymbolPairs; +import com.itsaky.androidide.editor.language.IDELanguage; +import com.itsaky.androidide.editor.language.java.JavaLanguage; import com.itsaky.androidide.lexers.kotlin.KotlinLexer; import com.itsaky.androidide.lexers.kotlin.KotlinParser; import com.itsaky.androidide.utils.ILogger; diff --git a/editor-languages/src/main/java/com/itsaky/androidide/language/log/LogLanguage.kt b/editor/src/main/java/com/itsaky/androidide/editor/language/log/LogLanguage.kt similarity index 94% rename from editor-languages/src/main/java/com/itsaky/androidide/language/log/LogLanguage.kt rename to editor/src/main/java/com/itsaky/androidide/editor/language/log/LogLanguage.kt index 1ecf73e43..cfe10105f 100644 --- a/editor-languages/src/main/java/com/itsaky/androidide/language/log/LogLanguage.kt +++ b/editor/src/main/java/com/itsaky/androidide/editor/language/log/LogLanguage.kt @@ -15,10 +15,10 @@ * along with AndroidIDE. If not, see . */ -package com.itsaky.androidide.language.log +package com.itsaky.androidide.editor.language.log import android.os.Bundle -import com.itsaky.androidide.language.IDELanguage +import com.itsaky.androidide.editor.language.IDELanguage import io.github.rosemoe.sora.lang.completion.CompletionPublisher import io.github.rosemoe.sora.lang.smartEnter.NewlineHandler import io.github.rosemoe.sora.text.CharPosition diff --git a/editor-languages/src/main/java/com/itsaky/androidide/language/log/LogLineAnalyzer.kt b/editor/src/main/java/com/itsaky/androidide/editor/language/log/LogLineAnalyzer.kt similarity index 97% rename from editor-languages/src/main/java/com/itsaky/androidide/language/log/LogLineAnalyzer.kt rename to editor/src/main/java/com/itsaky/androidide/editor/language/log/LogLineAnalyzer.kt index 5b0630eee..b92dcecfe 100644 --- a/editor-languages/src/main/java/com/itsaky/androidide/language/log/LogLineAnalyzer.kt +++ b/editor/src/main/java/com/itsaky/androidide/editor/language/log/LogLineAnalyzer.kt @@ -15,9 +15,9 @@ * along with AndroidIDE. If not, see . */ -package com.itsaky.androidide.language.log +package com.itsaky.androidide.editor.language.log -import com.itsaky.androidide.language.log.LogLineAnalyzer.LogLineState +import com.itsaky.androidide.editor.language.log.LogLineAnalyzer.LogLineState import com.itsaky.androidide.lexers.log.LogLineTokenizer import com.itsaky.androidide.lexers.log.LogToken import com.itsaky.androidide.lexers.log.LogToken.PRIORITY diff --git a/editor-languages/src/main/java/com/itsaky/androidide/language/xml/XMLAnalyzer.kt b/editor/src/main/java/com/itsaky/androidide/editor/language/xml/XMLAnalyzer.kt similarity index 96% rename from editor-languages/src/main/java/com/itsaky/androidide/language/xml/XMLAnalyzer.kt rename to editor/src/main/java/com/itsaky/androidide/editor/language/xml/XMLAnalyzer.kt index 0f620f173..59bb6ad5b 100644 --- a/editor-languages/src/main/java/com/itsaky/androidide/language/xml/XMLAnalyzer.kt +++ b/editor/src/main/java/com/itsaky/androidide/editor/language/xml/XMLAnalyzer.kt @@ -15,14 +15,14 @@ * along with AndroidIDE. If not, see . */ -package com.itsaky.androidide.language.xml +package com.itsaky.androidide.editor.language.xml import android.graphics.Color import android.graphics.Color.parseColor import com.google.common.collect.EvictingQueue -import com.itsaky.androidide.language.incremental.BaseIncrementalAnalyzeManager -import com.itsaky.androidide.language.incremental.IncrementalToken -import com.itsaky.androidide.language.incremental.LineState +import com.itsaky.androidide.editor.language.incremental.BaseIncrementalAnalyzeManager +import com.itsaky.androidide.editor.language.incremental.IncrementalToken +import com.itsaky.androidide.editor.language.incremental.LineState import com.itsaky.androidide.lexers.xml.XMLLexer import com.itsaky.androidide.lexers.xml.XMLLexer.CLOSE import com.itsaky.androidide.lexers.xml.XMLLexer.COLON diff --git a/editor-languages/src/main/java/com/itsaky/androidide/language/xml/XMLLanguage.java b/editor/src/main/java/com/itsaky/androidide/editor/language/xml/XMLLanguage.java similarity index 73% rename from editor-languages/src/main/java/com/itsaky/androidide/language/xml/XMLLanguage.java rename to editor/src/main/java/com/itsaky/androidide/editor/language/xml/XMLLanguage.java index e4095c0bf..a4e49749d 100755 --- a/editor-languages/src/main/java/com/itsaky/androidide/language/xml/XMLLanguage.java +++ b/editor/src/main/java/com/itsaky/androidide/editor/language/xml/XMLLanguage.java @@ -1,26 +1,25 @@ /* - * This file is part of AndroidIDE. + * This file is part of AndroidIDE. * - * AndroidIDE is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * AndroidIDE is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. * - * AndroidIDE is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with AndroidIDE. If not, see . + * AndroidIDE is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. * + * You should have received a copy of the GNU General Public License + * along with AndroidIDE. If not, see . */ -package com.itsaky.androidide.language.xml; +package com.itsaky.androidide.editor.language.xml; import androidx.annotation.NonNull; -import com.itsaky.androidide.language.CommonSymbolPairs; -import com.itsaky.androidide.language.IDELanguage; +import com.itsaky.androidide.editor.language.CommonSymbolPairs; +import com.itsaky.androidide.editor.language.IDELanguage; import com.itsaky.androidide.lexers.xml.XMLLexer; import com.itsaky.androidide.lsp.api.ILanguageServer; import com.itsaky.androidide.lsp.api.ILanguageServerRegistry; diff --git a/app/src/main/java/com/itsaky/androidide/ui/editor/AbstractPopupWindow.kt b/editor/src/main/java/com/itsaky/androidide/editor/ui/AbstractPopupWindow.kt similarity index 96% rename from app/src/main/java/com/itsaky/androidide/ui/editor/AbstractPopupWindow.kt rename to editor/src/main/java/com/itsaky/androidide/editor/ui/AbstractPopupWindow.kt index 4ab431473..0213efb99 100644 --- a/app/src/main/java/com/itsaky/androidide/ui/editor/AbstractPopupWindow.kt +++ b/editor/src/main/java/com/itsaky/androidide/editor/ui/AbstractPopupWindow.kt @@ -15,7 +15,7 @@ * along with AndroidIDE. If not, see . */ -package com.itsaky.androidide.ui.editor +package com.itsaky.androidide.editor.ui import io.github.rosemoe.sora.widget.CodeEditor import io.github.rosemoe.sora.widget.base.EditorPopupWindow diff --git a/app/src/main/java/com/itsaky/androidide/ui/editor/BaseEditorWindow.java b/editor/src/main/java/com/itsaky/androidide/editor/ui/BaseEditorWindow.java similarity index 97% rename from app/src/main/java/com/itsaky/androidide/ui/editor/BaseEditorWindow.java rename to editor/src/main/java/com/itsaky/androidide/editor/ui/BaseEditorWindow.java index 830ee49dc..e0b06679c 100644 --- a/app/src/main/java/com/itsaky/androidide/ui/editor/BaseEditorWindow.java +++ b/editor/src/main/java/com/itsaky/androidide/editor/ui/BaseEditorWindow.java @@ -15,11 +15,10 @@ * along with AndroidIDE. If not, see . */ -package com.itsaky.androidide.ui.editor; +package com.itsaky.androidide.editor.ui; import static android.view.View.MeasureSpec.AT_MOST; import static android.view.View.MeasureSpec.makeMeasureSpec; -import static com.itsaky.androidide.utils.ResourceUtilsKt.resolveAttr; import android.content.Context; import android.graphics.drawable.Drawable; diff --git a/app/src/main/java/com/itsaky/androidide/ui/editor/DiagnosticWindow.kt b/editor/src/main/java/com/itsaky/androidide/editor/ui/DiagnosticWindow.kt similarity index 97% rename from app/src/main/java/com/itsaky/androidide/ui/editor/DiagnosticWindow.kt rename to editor/src/main/java/com/itsaky/androidide/editor/ui/DiagnosticWindow.kt index 2be9a65f3..24b9e8e67 100644 --- a/app/src/main/java/com/itsaky/androidide/ui/editor/DiagnosticWindow.kt +++ b/editor/src/main/java/com/itsaky/androidide/editor/ui/DiagnosticWindow.kt @@ -14,7 +14,7 @@ * You should have received a copy of the GNU General Public License * along with AndroidIDE. If not, see . */ -package com.itsaky.androidide.ui.editor +package com.itsaky.androidide.editor.ui import com.itsaky.androidide.lsp.models.DiagnosticItem diff --git a/app/src/main/java/com/itsaky/androidide/ui/editor/EditorActionsMenu.kt b/editor/src/main/java/com/itsaky/androidide/editor/ui/EditorActionsMenu.kt similarity index 94% rename from app/src/main/java/com/itsaky/androidide/ui/editor/EditorActionsMenu.kt rename to editor/src/main/java/com/itsaky/androidide/editor/ui/EditorActionsMenu.kt index fb08b241d..ee75e848f 100644 --- a/app/src/main/java/com/itsaky/androidide/ui/editor/EditorActionsMenu.kt +++ b/editor/src/main/java/com/itsaky/androidide/editor/ui/EditorActionsMenu.kt @@ -15,7 +15,7 @@ * along with AndroidIDE. If not, see . */ -package com.itsaky.androidide.ui.editor +package com.itsaky.androidide.editor.ui import android.annotation.SuppressLint import android.content.Context @@ -42,12 +42,14 @@ import com.itsaky.androidide.actions.ActionItem import com.itsaky.androidide.actions.ActionsRegistry import com.itsaky.androidide.actions.ActionsRegistry.Companion.getInstance import com.itsaky.androidide.actions.EditorActionItem -import com.itsaky.androidide.databinding.LayoutPopupMenuItemBinding +import com.itsaky.androidide.editor.R.* +import com.itsaky.androidide.editor.databinding.LayoutPopupMenuItemBinding import com.itsaky.androidide.lsp.api.ILanguageServerRegistry import com.itsaky.androidide.lsp.java.JavaLanguageServer import com.itsaky.androidide.lsp.models.DiagnosticItem import com.itsaky.androidide.lsp.xml.XMLLanguageServer import com.itsaky.androidide.resources.R +import com.itsaky.androidide.editor.ui.EditorActionsMenu.ActionsListAdapter.VH import com.itsaky.androidide.utils.resolveAttr import io.github.rosemoe.sora.event.HandleStateChangeEvent import io.github.rosemoe.sora.event.ScrollEvent @@ -349,8 +351,8 @@ open class EditorActionsMenu constructor(val editor: IDEEditor) : private fun findWidestItem(): Int { var widest = 0 val text = - LayoutInflater.from(editor.context) - .inflate(com.itsaky.androidide.R.layout.layout_popup_menu_item, null) as MaterialButton + LayoutInflater.from(editor.context).inflate(layout.layout_popup_menu_item, null) + as MaterialButton val dp30 = SizeUtils.dp2px(30f) val paddingHorizontal = text.paddingStart + text.paddingEnd val drawablePadding = text.iconPadding @@ -372,7 +374,7 @@ open class EditorActionsMenu constructor(val editor: IDEEditor) : } private class ActionsListAdapter(val menu: Menu?, val forceShowTitle: Boolean = false) : - RecyclerView.Adapter() { + RecyclerView.Adapter() { override fun getItemCount(): Int { return menu?.size() ?: 0 diff --git a/app/src/main/java/com/itsaky/androidide/ui/editor/EditorCompletionWindow.kt b/editor/src/main/java/com/itsaky/androidide/editor/ui/EditorCompletionWindow.kt similarity index 99% rename from app/src/main/java/com/itsaky/androidide/ui/editor/EditorCompletionWindow.kt rename to editor/src/main/java/com/itsaky/androidide/editor/ui/EditorCompletionWindow.kt index 39e985847..45ef07ec2 100644 --- a/app/src/main/java/com/itsaky/androidide/ui/editor/EditorCompletionWindow.kt +++ b/editor/src/main/java/com/itsaky/androidide/editor/ui/EditorCompletionWindow.kt @@ -15,7 +15,7 @@ * along with AndroidIDE. If not, see . */ -package com.itsaky.androidide.ui.editor +package com.itsaky.androidide.editor.ui import android.content.Intent import android.net.Uri diff --git a/app/src/main/java/com/itsaky/androidide/ui/editor/EditorSearchLayout.kt b/editor/src/main/java/com/itsaky/androidide/editor/ui/EditorSearchLayout.kt similarity index 96% rename from app/src/main/java/com/itsaky/androidide/ui/editor/EditorSearchLayout.kt rename to editor/src/main/java/com/itsaky/androidide/editor/ui/EditorSearchLayout.kt index 4b1ddfb71..e6192c57a 100644 --- a/app/src/main/java/com/itsaky/androidide/ui/editor/EditorSearchLayout.kt +++ b/editor/src/main/java/com/itsaky/androidide/editor/ui/EditorSearchLayout.kt @@ -15,7 +15,7 @@ * along with AndroidIDE. If not, see . */ -package com.itsaky.androidide.ui.editor +package com.itsaky.androidide.editor.ui import android.annotation.SuppressLint import android.content.Context @@ -27,10 +27,10 @@ import android.view.View import android.view.inputmethod.EditorInfo import android.widget.FrameLayout import android.widget.PopupMenu +import com.itsaky.androidide.editor.databinding.LayoutFindInFileBinding import com.itsaky.androidide.resources.R -import com.itsaky.androidide.databinding.LayoutFindInFileBinding +import com.itsaky.androidide.editor.ui.ReplaceAction.doReplace import com.itsaky.androidide.utils.SingleTextWatcher -import com.itsaky.androidide.ui.editor.ReplaceAction.doReplace import io.github.rosemoe.sora.widget.EditorSearcher.SearchOptions import java.util.regex.Pattern @@ -68,7 +68,7 @@ class EditorSearchLayout(context: Context, val editor: IDEEditor) : FrameLayout( optionsMenu.setOnMenuItemClickListener { return@setOnMenuItemClickListener if (it.isCheckable) { it.isChecked = !it.isChecked - + val ignoreCase = searchOptions.ignoreCase val regex = searchOptions.useRegex searchOptions = @@ -78,7 +78,7 @@ class EditorSearchLayout(context: Context, val editor: IDEEditor) : FrameLayout( else -> searchOptions } editor.searcher?.updateSearchOptions(searchOptions) - + true } else false } diff --git a/app/src/main/java/com/itsaky/androidide/ui/editor/IDEEditor.java b/editor/src/main/java/com/itsaky/androidide/editor/ui/IDEEditor.java similarity index 92% rename from app/src/main/java/com/itsaky/androidide/ui/editor/IDEEditor.java rename to editor/src/main/java/com/itsaky/androidide/editor/ui/IDEEditor.java index a912e5f4e..9926f137d 100644 --- a/app/src/main/java/com/itsaky/androidide/ui/editor/IDEEditor.java +++ b/editor/src/main/java/com/itsaky/androidide/editor/ui/IDEEditor.java @@ -1,20 +1,20 @@ /* - * This file is part of AndroidIDE. + * This file is part of AndroidIDE. * - * AndroidIDE is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * AndroidIDE is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. * - * AndroidIDE is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. + * AndroidIDE is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. * - * You should have received a copy of the GNU General Public License - * along with AndroidIDE. If not, see . + * You should have received a copy of the GNU General Public License + * along with AndroidIDE. If not, see . */ -package com.itsaky.androidide.ui.editor; +package com.itsaky.androidide.editor.ui; import static com.itsaky.androidide.preferences.internal.EditorPreferencesKt.getVisiblePasswordFlag; import static com.itsaky.androidide.resources.R.string; @@ -32,15 +32,15 @@ import androidx.annotation.Nullable; import androidx.annotation.UiThread; import com.blankj.utilcode.util.ThreadUtils; -import com.itsaky.androidide.adapters.CompletionListAdapter; +import com.itsaky.androidide.editor.adapters.CompletionListAdapter; +import com.itsaky.androidide.editor.language.IDELanguage; import com.itsaky.androidide.eventbus.events.editor.ChangeType; import com.itsaky.androidide.eventbus.events.editor.DocumentChangeEvent; import com.itsaky.androidide.eventbus.events.editor.DocumentCloseEvent; import com.itsaky.androidide.eventbus.events.editor.DocumentOpenEvent; import com.itsaky.androidide.eventbus.events.editor.DocumentSaveEvent; import com.itsaky.androidide.eventbus.events.editor.DocumentSelectedEvent; -import com.itsaky.androidide.language.IDELanguage; -import com.itsaky.androidide.lsp.IDELanguageClientImpl; +import com.itsaky.androidide.lsp.api.ILanguageClient; import com.itsaky.androidide.lsp.api.ILanguageServer; import com.itsaky.androidide.lsp.models.Command; import com.itsaky.androidide.lsp.models.DefinitionResult; @@ -71,7 +71,7 @@ import io.github.rosemoe.sora.widget.component.EditorAutoCompletion; import io.github.rosemoe.sora.widget.component.EditorTextActionWindow; public class IDEEditor extends CodeEditor implements com.itsaky.androidide.editor.IEditor { - + private static final ILogger LOG = ILogger.newInstance("IDEEditor"); private final EditorActionsMenu actionsMenu; private IDEEditorSearcher searcher; @@ -81,7 +81,7 @@ public class IDEEditor extends CodeEditor implements com.itsaky.androidide.edito private ILanguageServer languageServer; private SignatureHelpWindow signatureHelpWindow; private DiagnosticWindow diagnosticWindow; - IDELanguageClientImpl languageClient; + ILanguageClient languageClient; public IDEEditor(Context context) { this(context, null); @@ -404,7 +404,7 @@ public class IDEEditor extends CodeEditor implements com.itsaky.androidide.edito /** * Set the language server that this editor will connect with. If the language client is not set, - * it'll be set to {@link IDELanguageClientImpl}. + * it'll be set to {@link ILanguageClient} set in the language server. * * @param server The server to set. Provide null to disable all the language server * features. @@ -412,10 +412,7 @@ public class IDEEditor extends CodeEditor implements com.itsaky.androidide.edito @Override public void setLanguageServer(ILanguageServer server) { this.languageServer = server; - - if (languageClient == null && IDELanguageClientImpl.isInitialized()) { - languageClient = IDELanguageClientImpl.getInstance(); - } + this.languageClient = server.getClient(); } /** @@ -549,7 +546,7 @@ public class IDEEditor extends CodeEditor implements com.itsaky.androidide.edito * cursor position. * *

If the server returns a valid response, that response is forwarded to the {@link - * IDELanguageClientImpl}. + * ILanguageClient}. */ @Override @SuppressWarnings("unused") @@ -875,7 +872,7 @@ public class IDEEditor extends CodeEditor implements com.itsaky.androidide.edito "Search ActionMode is not supported. Use CodeEditorView.beginSearch() instead."); } - protected void dispatchDocumentSaveEvent() { + public void dispatchDocumentSaveEvent() { if (getFile() == null) { return; } diff --git a/app/src/main/java/com/itsaky/androidide/ui/editor/ReplaceAction.kt b/editor/src/main/java/com/itsaky/androidide/editor/ui/ReplaceAction.kt similarity index 95% rename from app/src/main/java/com/itsaky/androidide/ui/editor/ReplaceAction.kt rename to editor/src/main/java/com/itsaky/androidide/editor/ui/ReplaceAction.kt index 4a1aa74bd..1526161ea 100644 --- a/app/src/main/java/com/itsaky/androidide/ui/editor/ReplaceAction.kt +++ b/editor/src/main/java/com/itsaky/androidide/editor/ui/ReplaceAction.kt @@ -15,11 +15,11 @@ * along with AndroidIDE. If not, see . */ -package com.itsaky.androidide.ui.editor +package com.itsaky.androidide.editor.ui import android.view.LayoutInflater +import com.itsaky.androidide.editor.databinding.LayoutEditorFindReplaceBinding import com.itsaky.androidide.resources.R -import com.itsaky.androidide.databinding.LayoutEditorFindReplaceBinding import com.itsaky.androidide.utils.DialogUtils import com.itsaky.androidide.utils.ILogger diff --git a/app/src/main/java/com/itsaky/androidide/ui/editor/SignatureHelpWindow.java b/editor/src/main/java/com/itsaky/androidide/editor/ui/SignatureHelpWindow.java similarity index 99% rename from app/src/main/java/com/itsaky/androidide/ui/editor/SignatureHelpWindow.java rename to editor/src/main/java/com/itsaky/androidide/editor/ui/SignatureHelpWindow.java index 858943a59..2fc522f5c 100644 --- a/app/src/main/java/com/itsaky/androidide/ui/editor/SignatureHelpWindow.java +++ b/editor/src/main/java/com/itsaky/androidide/editor/ui/SignatureHelpWindow.java @@ -15,7 +15,7 @@ * along with AndroidIDE. If not, see . */ -package com.itsaky.androidide.ui.editor; +package com.itsaky.androidide.editor.ui; import android.text.SpannableStringBuilder; import android.text.style.BackgroundColorSpan; diff --git a/app/src/main/java/io/github/rosemoe/sora/widget/IDEEditorSearcher.kt b/editor/src/main/java/io/github/rosemoe/sora/widget/IDEEditorSearcher.kt similarity index 95% rename from app/src/main/java/io/github/rosemoe/sora/widget/IDEEditorSearcher.kt rename to editor/src/main/java/io/github/rosemoe/sora/widget/IDEEditorSearcher.kt index f7d283962..3b061cdd4 100644 --- a/app/src/main/java/io/github/rosemoe/sora/widget/IDEEditorSearcher.kt +++ b/editor/src/main/java/io/github/rosemoe/sora/widget/IDEEditorSearcher.kt @@ -23,7 +23,7 @@ import android.app.ProgressDialog import android.widget.Toast import com.itsaky.androidide.resources.R.string import com.itsaky.androidide.utils.ILogger -import com.itsaky.androidide.ui.editor.IDEEditor +import com.itsaky.androidide.editor.ui.IDEEditor import io.github.rosemoe.sora.text.TextUtils import io.github.rosemoe.sora.util.IntPair import java.util.concurrent.CompletableFuture diff --git a/app/src/main/res/layout/layout_code_editor.xml b/editor/src/main/res/layout/layout_code_editor.xml similarity index 57% rename from app/src/main/res/layout/layout_code_editor.xml rename to editor/src/main/res/layout/layout_code_editor.xml index f28189625..57100ee1d 100644 --- a/app/src/main/res/layout/layout_code_editor.xml +++ b/editor/src/main/res/layout/layout_code_editor.xml @@ -1,10 +1,27 @@ + + - locations); } diff --git a/settings.gradle b/settings.gradle index fa16347f8..a0ad43071 100755 --- a/settings.gradle +++ b/settings.gradle @@ -48,4 +48,3 @@ include ':preferences' include ':resources' include ':uidesigner' include ':xml-inflater' -include ':editor-languages' diff --git a/tests/test-home/.androidide/init/model.jar b/tests/test-home/.androidide/init/model.jar index a0e9ea3cc869e49339851b56e65b322720da278f..bafa0d862f942afcae82bed9df05c62b706a4e5a 100644 GIT binary patch delta 698 zcmaF+m-+2qX5IjAW)?061`ZAe7uzWldDWOfl$jTpYE}eO%QXanf}spRzyun@3SvNAB-=VoAV2HK{#*-tf_6|8%YmMd5ji?$C7m=Ub+1z{{O z=72C(o9}|C&9DV~W%E|s$9!P5vwa%%!3_DD?GU?fwoHL&D(KXKxO;w&7#mp4j!D%J zDYNNoz&_dhbmnqluvGurE?zK0X7>ZIRh$1Gu!1PIISO@G_sM?{1AER!LKrVDoRxx@ z{CW{sWOD3#6Oh2Fnq|Cj)# zAAJl4(-xn?!1TmVv0(b+r(!Uj{<#oL-~La_oB(P>@fa@*W&`ldru8J8v?_2Q!eu$&Mc!!F1~fPcVJ)gD;p? z{1^?U>pv!d=|>-f!L-GvFfcvwQ!JSN_^B97r++R4)3-mDfa#zwd0_hR7l=N|uam+2 z^