diff --git a/ivette/src/renderer/ASTview.tsx b/ivette/src/renderer/ASTview.tsx
index d21a73b27ea2376869a9a98478ea912595337a74..b308be9465aefd90b98f33c650385668cda022e9 100644
--- a/ivette/src/renderer/ASTview.tsx
+++ b/ivette/src/renderer/ASTview.tsx
@@ -89,6 +89,7 @@ const ASTview = () => {
   const [theme, setTheme] = Dome.useGlobalSetting('ASTview.theme', 'default');
   const [fontSize, setFontSize] = Dome.useGlobalSetting('ASTview.fontSize', 12);
   const [wrapText, setWrapText] = Dome.useSwitch('ASTview.wrapText', false);
+  const markers = States.useSyncArray('kernel.ast.markerKind');
 
   const theFunction = select && select.function;
   const theMarker = select && select.marker;
@@ -111,6 +112,17 @@ const ASTview = () => {
   const zoomOut = () => fontSize > 4 && setFontSize(fontSize - 2);
   const onSelection = (marker: any) => setSelect({ marker });
 
+  function contextMenu(id: string) {
+    const marker = markers[id];
+    if (marker && marker.kind === 'function') {
+      const item1 = {
+        label: `Go to definition of ${marker.name}`,
+        onClick: () => setSelect({ function: marker.name }),
+      };
+      Dome.popupMenu([item1]);
+    }
+  }
+
   // Theme Popup
 
   const selectTheme = (id?: string) => id && setTheme(id);
@@ -155,6 +167,7 @@ const ASTview = () => {
         lineWrapping={wrapText}
         selection={theMarker}
         onSelection={onSelection}
+        onContextMenu={contextMenu}
         readOnly
       />
     </>