Skip to content

Commit 705a64b

Browse files
Merge branch 'main' into chengora/url-expire
2 parents d58ee52 + 6afc927 commit 705a64b

File tree

25 files changed

+563
-151
lines changed

25 files changed

+563
-151
lines changed
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
{
2+
"type" : "bugfix",
3+
"description" : "Fix error occuring when Amazon Q attempts to show UI hints on manually triggerred inline suggestion (#4929)"
4+
}
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
{
2+
"type" : "feature",
3+
"description" : "Loosen inline completion support limitations for YAML/JSON"
4+
}

plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/editor/CodeWhispererEditorUtil.kt

Lines changed: 8 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -12,13 +12,14 @@ import com.intellij.openapi.util.TextRange
1212
import com.intellij.openapi.vfs.VfsUtilCore
1313
import com.intellij.psi.PsiFile
1414
import com.intellij.ui.popup.AbstractPopup
15-
import software.aws.toolkits.jetbrains.services.codewhisperer.language.languages.CodeWhispererJson
16-
import software.aws.toolkits.jetbrains.services.codewhisperer.language.languages.CodeWhispererYaml
1715
import software.aws.toolkits.jetbrains.services.codewhisperer.language.programmingLanguage
1816
import software.aws.toolkits.jetbrains.services.codewhisperer.model.CaretContext
1917
import software.aws.toolkits.jetbrains.services.codewhisperer.model.CaretPosition
2018
import software.aws.toolkits.jetbrains.services.codewhisperer.model.FileContextInfo
2119
import software.aws.toolkits.jetbrains.services.codewhisperer.util.CodeWhispererConstants
20+
import software.aws.toolkits.jetbrains.services.codewhisperer.util.CodeWhispererConstants.AWSTemplateCaseInsensitiveKeyWordsRegex
21+
import software.aws.toolkits.jetbrains.services.codewhisperer.util.CodeWhispererConstants.AWSTemplateKeyWordsRegex
22+
import software.aws.toolkits.jetbrains.services.codewhisperer.util.CodeWhispererConstants.JsonConfigFileNamingConvention
2223
import software.aws.toolkits.jetbrains.services.codewhisperer.util.CodeWhispererConstants.LEFT_CONTEXT_ON_CURRENT_LINE
2324
import java.awt.Point
2425
import java.util.Locale
@@ -106,16 +107,12 @@ object CodeWhispererEditorUtil {
106107
}
107108

108109
/**
109-
* Checks if the language is json or yaml and checks if left context contains keywords
110+
* Check if left context contains keywords or file name follow config json file naming pattern
110111
*/
111-
fun checkLeftContextKeywordsForJsonAndYaml(leftContext: String, language: String): Boolean = (
112-
(language == CodeWhispererJson.INSTANCE.languageId) ||
113-
(language == CodeWhispererYaml.INSTANCE.languageId)
114-
) &&
115-
(
116-
(!CodeWhispererConstants.AWSTemplateKeyWordsRegex.containsMatchIn(leftContext)) &&
117-
(!CodeWhispererConstants.AWSTemplateCaseInsensitiveKeyWordsRegex.containsMatchIn(leftContext.lowercase(Locale.getDefault())))
118-
)
112+
fun isSupportedJsonFormat(fileName: String, leftContext: String): Boolean =
113+
JsonConfigFileNamingConvention.contains(fileName.lowercase()) ||
114+
AWSTemplateKeyWordsRegex.containsMatchIn(leftContext) ||
115+
AWSTemplateCaseInsensitiveKeyWordsRegex.containsMatchIn(leftContext.lowercase(Locale.getDefault()))
119116

120117
/**
121118
* Checks if the [otherRange] overlaps this TextRange. Note that the comparison is `<` because the endOffset of TextRange is exclusive.

plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/language/CodeWhispererLanguageManager.kt

Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,24 +10,31 @@ import com.intellij.psi.PsiFile
1010
import software.aws.toolkits.jetbrains.services.codewhisperer.language.languages.CodeWhispererC
1111
import software.aws.toolkits.jetbrains.services.codewhisperer.language.languages.CodeWhispererCpp
1212
import software.aws.toolkits.jetbrains.services.codewhisperer.language.languages.CodeWhispererCsharp
13+
import software.aws.toolkits.jetbrains.services.codewhisperer.language.languages.CodeWhispererDart
1314
import software.aws.toolkits.jetbrains.services.codewhisperer.language.languages.CodeWhispererGo
1415
import software.aws.toolkits.jetbrains.services.codewhisperer.language.languages.CodeWhispererJava
1516
import software.aws.toolkits.jetbrains.services.codewhisperer.language.languages.CodeWhispererJavaScript
1617
import software.aws.toolkits.jetbrains.services.codewhisperer.language.languages.CodeWhispererJson
1718
import software.aws.toolkits.jetbrains.services.codewhisperer.language.languages.CodeWhispererJsx
1819
import software.aws.toolkits.jetbrains.services.codewhisperer.language.languages.CodeWhispererKotlin
20+
import software.aws.toolkits.jetbrains.services.codewhisperer.language.languages.CodeWhispererLua
1921
import software.aws.toolkits.jetbrains.services.codewhisperer.language.languages.CodeWhispererPhp
2022
import software.aws.toolkits.jetbrains.services.codewhisperer.language.languages.CodeWhispererPlainText
23+
import software.aws.toolkits.jetbrains.services.codewhisperer.language.languages.CodeWhispererPowershell
2124
import software.aws.toolkits.jetbrains.services.codewhisperer.language.languages.CodeWhispererPython
25+
import software.aws.toolkits.jetbrains.services.codewhisperer.language.languages.CodeWhispererR
2226
import software.aws.toolkits.jetbrains.services.codewhisperer.language.languages.CodeWhispererRuby
2327
import software.aws.toolkits.jetbrains.services.codewhisperer.language.languages.CodeWhispererRust
2428
import software.aws.toolkits.jetbrains.services.codewhisperer.language.languages.CodeWhispererScala
2529
import software.aws.toolkits.jetbrains.services.codewhisperer.language.languages.CodeWhispererShell
2630
import software.aws.toolkits.jetbrains.services.codewhisperer.language.languages.CodeWhispererSql
31+
import software.aws.toolkits.jetbrains.services.codewhisperer.language.languages.CodeWhispererSwift
32+
import software.aws.toolkits.jetbrains.services.codewhisperer.language.languages.CodeWhispererSystemVerilog
2733
import software.aws.toolkits.jetbrains.services.codewhisperer.language.languages.CodeWhispererTf
2834
import software.aws.toolkits.jetbrains.services.codewhisperer.language.languages.CodeWhispererTsx
2935
import software.aws.toolkits.jetbrains.services.codewhisperer.language.languages.CodeWhispererTypeScript
3036
import software.aws.toolkits.jetbrains.services.codewhisperer.language.languages.CodeWhispererUnknownLanguage
37+
import software.aws.toolkits.jetbrains.services.codewhisperer.language.languages.CodeWhispererVue
3138
import software.aws.toolkits.jetbrains.services.codewhisperer.language.languages.CodeWhispererYaml
3239

3340
@Service
@@ -73,8 +80,15 @@ class CodeWhispererLanguageManager {
7380
fileTypeName.contains("php") -> CodeWhispererPhp.INSTANCE
7481
fileTypeName.contains("sql") -> CodeWhispererSql.INSTANCE
7582
fileTypeName.contains("go") -> CodeWhispererGo.INSTANCE
76-
fileTypeName.contains("shell") -> CodeWhispererShell.INSTANCE
7783
fileTypeName.contains("rust") -> CodeWhispererRust.INSTANCE
84+
fileTypeName.contains("swift") -> CodeWhispererSwift.INSTANCE
85+
fileTypeName.contains("lua") -> CodeWhispererLua.INSTANCE
86+
fileTypeName.contains("dart") -> CodeWhispererDart.INSTANCE
87+
fileTypeName.contains("vue") -> CodeWhispererVue.INSTANCE
88+
fileTypeName.contains("systemverilog") -> CodeWhispererSystemVerilog.INSTANCE
89+
fileTypeName.contains("powershell") -> CodeWhispererPowershell.INSTANCE
90+
fileTypeName.contains("shell") -> CodeWhispererShell.INSTANCE
91+
fileTypeName == "r" -> CodeWhispererR.INSTANCE
7892
// fileTypeName.contains("plain_text") -> CodeWhispererPlainText.INSTANCE // This needs to be removed because Hcl files are recognised as plain_text by JB
7993
else -> null
8094
}
@@ -125,7 +139,14 @@ class CodeWhispererLanguageManager {
125139
listOf("go") to CodeWhispererGo.INSTANCE,
126140
listOf("php") to CodeWhispererPhp.INSTANCE,
127141
listOf("sql") to CodeWhispererSql.INSTANCE,
128-
listOf("txt") to CodeWhispererPlainText.INSTANCE
142+
listOf("txt") to CodeWhispererPlainText.INSTANCE,
143+
listOf("sv", "svh", "vh") to CodeWhispererSystemVerilog.INSTANCE,
144+
listOf("dart") to CodeWhispererDart.INSTANCE,
145+
listOf("lua", "wlua") to CodeWhispererLua.INSTANCE,
146+
listOf("swift") to CodeWhispererSwift.INSTANCE,
147+
listOf("vue") to CodeWhispererVue.INSTANCE,
148+
listOf("ps1", "psm1") to CodeWhispererPowershell.INSTANCE,
149+
listOf("r") to CodeWhispererR.INSTANCE,
129150
).map {
130151
val exts = it.first
131152
val lang = it.second
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
// Copyright 2024 Amazon.com, Inc. or its affiliates. All Rights Reserved.
2+
// SPDX-License-Identifier: Apache-2.0
3+
4+
package software.aws.toolkits.jetbrains.services.codewhisperer.language.languages
5+
6+
import software.aws.toolkits.jetbrains.services.codewhisperer.language.CodeWhispererProgrammingLanguage
7+
import software.aws.toolkits.telemetry.CodewhispererLanguage
8+
9+
class CodeWhispererDart private constructor() : CodeWhispererProgrammingLanguage() {
10+
override val languageId: String = ID
11+
12+
override fun toTelemetryType(): CodewhispererLanguage = CodewhispererLanguage.Dart
13+
14+
override fun isCodeCompletionSupported(): Boolean = true
15+
16+
companion object {
17+
// TODO: confirm with service team language id
18+
const val ID = "dart"
19+
20+
val INSTANCE = CodeWhispererDart()
21+
}
22+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
// Copyright 2024 Amazon.com, Inc. or its affiliates. All Rights Reserved.
2+
// SPDX-License-Identifier: Apache-2.0
3+
4+
package software.aws.toolkits.jetbrains.services.codewhisperer.language.languages
5+
6+
import software.aws.toolkits.jetbrains.services.codewhisperer.language.CodeWhispererProgrammingLanguage
7+
import software.aws.toolkits.telemetry.CodewhispererLanguage
8+
9+
class CodeWhispererLua private constructor() : CodeWhispererProgrammingLanguage() {
10+
override val languageId: String = ID
11+
12+
override fun toTelemetryType(): CodewhispererLanguage = CodewhispererLanguage.Lua
13+
14+
override fun isCodeCompletionSupported(): Boolean = true
15+
16+
companion object {
17+
// TODO: confirm with service team language id
18+
const val ID = "lua"
19+
20+
val INSTANCE = CodeWhispererLua()
21+
}
22+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
// Copyright 2024 Amazon.com, Inc. or its affiliates. All Rights Reserved.
2+
// SPDX-License-Identifier: Apache-2.0
3+
4+
package software.aws.toolkits.jetbrains.services.codewhisperer.language.languages
5+
6+
import software.aws.toolkits.jetbrains.services.codewhisperer.language.CodeWhispererProgrammingLanguage
7+
import software.aws.toolkits.telemetry.CodewhispererLanguage
8+
9+
class CodeWhispererPowershell private constructor() : CodeWhispererProgrammingLanguage() {
10+
override val languageId: String = ID
11+
12+
override fun toTelemetryType(): CodewhispererLanguage = CodewhispererLanguage.Powershell
13+
14+
override fun isCodeCompletionSupported(): Boolean = true
15+
16+
companion object {
17+
// TODO: confirm with service team language id
18+
const val ID = "powershell"
19+
20+
val INSTANCE = CodeWhispererPowershell()
21+
}
22+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
// Copyright 2024 Amazon.com, Inc. or its affiliates. All Rights Reserved.
2+
// SPDX-License-Identifier: Apache-2.0
3+
4+
package software.aws.toolkits.jetbrains.services.codewhisperer.language.languages
5+
6+
import software.aws.toolkits.jetbrains.services.codewhisperer.language.CodeWhispererProgrammingLanguage
7+
import software.aws.toolkits.telemetry.CodewhispererLanguage
8+
9+
class CodeWhispererR private constructor() : CodeWhispererProgrammingLanguage() {
10+
override val languageId: String = ID
11+
12+
override fun toTelemetryType(): CodewhispererLanguage = CodewhispererLanguage.R
13+
14+
override fun isCodeCompletionSupported(): Boolean = true
15+
16+
companion object {
17+
// TODO: confirm with service team language id
18+
const val ID = "r"
19+
20+
val INSTANCE = CodeWhispererR()
21+
}
22+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
// Copyright 2024 Amazon.com, Inc. or its affiliates. All Rights Reserved.
2+
// SPDX-License-Identifier: Apache-2.0
3+
4+
package software.aws.toolkits.jetbrains.services.codewhisperer.language.languages
5+
6+
import software.aws.toolkits.jetbrains.services.codewhisperer.language.CodeWhispererProgrammingLanguage
7+
import software.aws.toolkits.telemetry.CodewhispererLanguage
8+
9+
class CodeWhispererSwift private constructor() : CodeWhispererProgrammingLanguage() {
10+
override val languageId: String = ID
11+
12+
override fun toTelemetryType(): CodewhispererLanguage = CodewhispererLanguage.Swift
13+
14+
override fun isCodeCompletionSupported(): Boolean = true
15+
16+
companion object {
17+
// TODO: confirm with service team language id
18+
const val ID = "swift"
19+
20+
val INSTANCE = CodeWhispererSwift()
21+
}
22+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
// Copyright 2024 Amazon.com, Inc. or its affiliates. All Rights Reserved.
2+
// SPDX-License-Identifier: Apache-2.0
3+
4+
package software.aws.toolkits.jetbrains.services.codewhisperer.language.languages
5+
6+
import software.aws.toolkits.jetbrains.services.codewhisperer.language.CodeWhispererProgrammingLanguage
7+
import software.aws.toolkits.telemetry.CodewhispererLanguage
8+
9+
class CodeWhispererSystemVerilog private constructor() : CodeWhispererProgrammingLanguage() {
10+
override val languageId: String = ID
11+
12+
override fun toTelemetryType(): CodewhispererLanguage = CodewhispererLanguage.SystemVerilog
13+
14+
override fun isCodeCompletionSupported(): Boolean = true
15+
16+
companion object {
17+
// TODO: confirm with service team language id
18+
const val ID = "systemverilog"
19+
20+
val INSTANCE = CodeWhispererSystemVerilog()
21+
}
22+
}

0 commit comments

Comments
 (0)