Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
硅谷海盗
kotlin
提交
75092449
K
kotlin
项目概览
硅谷海盗
/
kotlin
与 Fork 源项目一致
从无法访问的项目Fork
通知
2
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
K
kotlin
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
75092449
编写于
6月 15, 2011
作者:
D
Dmitry Jemerov
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
action to show type of selected expression or expression under caret
上级
8786c6a6
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
66 addition
and
1 deletion
+66
-1
idea/src/META-INF/plugin.xml
idea/src/META-INF/plugin.xml
+5
-1
idea/src/org/jetbrains/jet/plugin/actions/ShowExpressionTypeAction.java
...etbrains/jet/plugin/actions/ShowExpressionTypeAction.java
+61
-0
未找到文件。
idea/src/META-INF/plugin.xml
浏览文件 @
75092449
...
@@ -14,7 +14,11 @@
...
@@ -14,7 +14,11 @@
</project-components>
</project-components>
<actions>
<actions>
<!-- Add your actions here -->
<action
id=
"ShowJetExpressionType"
class=
"org.jetbrains.jet.plugin.actions.ShowExpressionTypeAction"
text=
"Show Expression Type"
>
<keyboard-shortcut
keymap=
"$default"
first-keystroke=
"control shift Q"
/>
<add-to-group
group-id=
"CodeMenu"
anchor=
"last"
/>
</action>
</actions>
</actions>
<extensions
defaultExtensionNs=
"com.intellij"
>
<extensions
defaultExtensionNs=
"com.intellij"
>
...
...
idea/src/org/jetbrains/jet/plugin/actions/ShowExpressionTypeAction.java
0 → 100644
浏览文件 @
75092449
package
org.jetbrains.jet.plugin.actions
;
import
com.intellij.codeInsight.CodeInsightUtilBase
;
import
com.intellij.codeInsight.hint.HintManager
;
import
com.intellij.openapi.actionSystem.AnAction
;
import
com.intellij.openapi.actionSystem.AnActionEvent
;
import
com.intellij.openapi.actionSystem.LangDataKeys
;
import
com.intellij.openapi.actionSystem.PlatformDataKeys
;
import
com.intellij.openapi.editor.Editor
;
import
com.intellij.psi.PsiFile
;
import
com.intellij.psi.util.PsiTreeUtil
;
import
org.jetbrains.jet.lang.psi.JetExpression
;
import
org.jetbrains.jet.lang.psi.JetFile
;
import
org.jetbrains.jet.lang.resolve.AnalyzingUtils
;
import
org.jetbrains.jet.lang.resolve.BindingContext
;
import
org.jetbrains.jet.lang.types.JetType
;
import
org.jetbrains.jet.plugin.JetLanguage
;
/**
* @author yole
*/
public
class
ShowExpressionTypeAction
extends
AnAction
{
@Override
public
void
actionPerformed
(
AnActionEvent
e
)
{
Editor
editor
=
e
.
getData
(
PlatformDataKeys
.
EDITOR
);
PsiFile
psiFile
=
e
.
getData
(
LangDataKeys
.
PSI_FILE
);
assert
editor
!=
null
&&
psiFile
!=
null
;
JetExpression
expression
;
BindingContext
bindingContext
=
AnalyzingUtils
.
analyzeFileWithCache
((
JetFile
)
psiFile
);
if
(
editor
.
getSelectionModel
().
hasSelection
())
{
int
startOffset
=
editor
.
getSelectionModel
().
getSelectionStart
();
int
endOffset
=
editor
.
getSelectionModel
().
getSelectionEnd
();
expression
=
CodeInsightUtilBase
.
findElementInRange
(
psiFile
,
startOffset
,
endOffset
,
JetExpression
.
class
,
JetLanguage
.
INSTANCE
);
}
else
{
int
offset
=
editor
.
getCaretModel
().
getOffset
();
expression
=
PsiTreeUtil
.
getParentOfType
(
psiFile
.
findElementAt
(
offset
),
JetExpression
.
class
);
while
(
expression
!=
null
&&
bindingContext
.
getExpressionType
(
expression
)
==
null
)
{
expression
=
PsiTreeUtil
.
getParentOfType
(
expression
,
JetExpression
.
class
);
}
if
(
expression
!=
null
)
{
editor
.
getSelectionModel
().
setSelection
(
expression
.
getTextRange
().
getStartOffset
(),
expression
.
getTextRange
().
getEndOffset
());
}
}
if
(
expression
!=
null
)
{
JetType
type
=
bindingContext
.
getExpressionType
(
expression
);
if
(
type
!=
null
)
{
HintManager
.
getInstance
().
showInformationHint
(
editor
,
type
.
toString
());
}
}
}
@Override
public
void
update
(
AnActionEvent
e
)
{
Editor
editor
=
e
.
getData
(
PlatformDataKeys
.
EDITOR
);
PsiFile
psiFile
=
e
.
getData
(
LangDataKeys
.
PSI_FILE
);
e
.
getPresentation
().
setEnabled
(
editor
!=
null
&&
psiFile
instanceof
JetFile
);
}
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录