@@ -8,6 +8,7 @@ import renameView = require("../views/renameView");
88import contextView = require( "../views/contextView" ) ;
99import fileSymbolsView = require( "../views/fileSymbolsView" ) ;
1010import projectSymbolsView = require( "../views/projectSymbolsView" ) ;
11+ import { create as createTypeOverlay } from "../views/typeOverlayView" ;
1112import gotoHistory = require( "../gotoHistory" ) ;
1213import utils = require( "../../lang/utils" ) ;
1314import { panelView } from "../views/mainPanelView" ;
@@ -320,6 +321,38 @@ export function registerCommands() {
320321 }
321322 } ) ;
322323
324+ atom . commands . add ( 'atom-workspace' , 'typescript:show-type' , ( e ) => {
325+ var editor = atom . workspace . getActiveTextEditor ( ) ;
326+ var editorView = atom . views . getView ( editor ) ;
327+ var cursor = editor . getLastCursor ( )
328+ var position = atomUtils . getEditorPositionForBufferPosition ( editor , cursor . getBufferPosition ( ) ) ;
329+ var filePath = editor . getPath ( ) ;
330+ parent . quickInfo ( { filePath, position } ) . then ( ( resp ) => {
331+ if ( resp . valid ) {
332+ var decoration = editor . decorateMarker ( cursor . getMarker ( ) , {
333+ type : 'overlay' ,
334+ item : createTypeOverlay ( resp . name , resp . comment )
335+ } ) ;
336+
337+ var onKeydown = ( e ) => {
338+ if ( e . keyCode == 27 ) { // esc
339+ destroyTypeOverlay ( ) ;
340+ }
341+ } ;
342+ var destroyTypeOverlay = ( ) => {
343+ decoration . destroy ( ) ;
344+ cursorListener . dispose ( ) ;
345+ editorView . removeEventListener ( 'blur' , destroyTypeOverlay ) ;
346+ editorView . removeEventListener ( 'keydown' , onKeydown ) ;
347+ } ;
348+
349+ var cursorListener = editor . onDidChangeCursorPosition ( destroyTypeOverlay ) ;
350+ editorView . addEventListener ( 'blur' , destroyTypeOverlay ) ;
351+ editorView . addEventListener ( 'keydown' , onKeydown ) ;
352+ }
353+ } ) ;
354+ } ) ;
355+
323356 atom . commands . add ( 'atom-workspace' , 'typescript:go-to-next' , ( e ) => {
324357 gotoHistory . gotoNext ( ) ;
325358 } ) ;
0 commit comments