diff --git a/src/plugins/texteditor/basetexteditor.cpp b/src/plugins/texteditor/basetexteditor.cpp
index dc9f9282c1abb53a72d118f98aca8a20cb6bae9e..4dda8f7b952265305a7198a9d2ffd8dd1f1417ee 100644
--- a/src/plugins/texteditor/basetexteditor.cpp
+++ b/src/plugins/texteditor/basetexteditor.cpp
@@ -79,6 +79,7 @@
 #include <QtGui/QToolBar>
 #include <QtGui/QToolTip>
 #include <QtGui/QInputDialog>
+#include <QtGui/QMenu>
 
 using namespace TextEditor;
 using namespace TextEditor::Internal;
@@ -2430,6 +2431,11 @@ void BaseTextEditor::extraAreaMouseEvent(QMouseEvent *e)
             } else {
                 d->extraAreaToggleMarkBlockNumber = cursor.blockNumber();
             }
+        } else if (e->button() == Qt::RightButton) {
+            QMenu * contextMenu = new QMenu(this);
+            emit lineContextMenuRequested(editableInterface(), cursor.blockNumber(), contextMenu);
+            if (!contextMenu->isEmpty())
+                contextMenu->exec(e->globalPos());
         }
     } else if (d->extraAreaSelectionAnchorBlockNumber >= 0) {
         QTextCursor selection = cursor;
diff --git a/src/plugins/texteditor/basetexteditor.h b/src/plugins/texteditor/basetexteditor.h
index 23b9951ccb055bc97b2f30c7f29c61847a1a343a..a6cc14f36e40b0f79cd7aab7e9905a8f45214a29 100644
--- a/src/plugins/texteditor/basetexteditor.h
+++ b/src/plugins/texteditor/basetexteditor.h
@@ -432,6 +432,7 @@ protected slots:
 
 signals:
     void markRequested(TextEditor::ITextEditor *editor, int line);
+    void lineContextMenuRequested(TextEditor::ITextEditor *editor, int line, QMenu *menu);
     void requestBlockUpdate(const QTextBlock &);
     void requestAutoCompletion(ITextEditable *editor, bool forced);