关于Eclipse的自动补全快捷键提示no completions available

我的电脑环境比较乱,因为某些原因,原来的jdk是装在c盘的,然后重新装过系统,但是原来的eclipse是没有重新安装的。

当重新安装系统后是可以继续使用的,并且以前我也这样干过。的确可以使用。

但是这次我重新安装好了系统后,安装了下jdk1.7,并且发现jdk1.7个人安装失败。

比较急用jdk,于是卸载了jdk1.7,重新安装了jdk1.6,于是问题就出现了,当jdk1.6安装好了后,发现我设置的ctrl+space快捷键不能用了。

在网络上看到一个解决方法,是重新建立个工作空间,本人亲试过,的确可以出现快捷键自动补全的功能。


从本质上看,这种方法仍然没有很好的解决问题,因为在原来的工作区间,自动补全快捷键,还是不能使用。

在网络上看到了一些资料,采用其中的一条,的确解决了问题。网址如下:

http://cache.baidu.com/c?m=9f65cb4a8c8507ed4fece7631046893b4c4380143fd3d1027fa3c215cc790f06063cb0e679794c13d5c77f6705b21902b7a52b33715066eccad58b4edcbd912d2f8e2734721f854011d218abc84c22c4248d4eacf259b1b5ac6f84aea382820b1194044321ddacca4d0065992ba34f6fb0f6c71f&p=906d8f0d85cc42ac46f7c4710e17d034&user=baidu&fm=sc&query=no+completions+available&qid=e9b40f0505a200b4&p1=2

受到这篇文章的启发,我的做法如下,打开新的工作区间和旧的工作区间,两者都打开同一目录:window->Preferences->Java->Editor->Content Assist->Advanced ,在这个目录中,比较两者不同,将旧工作区间和新工作区间保持一致即可。

在这个目录下,可以分为上下两个可选框区域,上面的那个,我的新工作空间里面所打钩的选项是1,3,5,6,7,8,9,10.下面的打钩的选项为1,2,7,8,9,10.

通过将旧的工作空间更改为与新工作空间保持一致,发现在旧的工作空间解决问题

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实现支持自动补全的Python IDE,可以借助PyQt5和Jedi库。 PyQt5是一个Python的GUI框架,可以用来创建各种不同的GUI应用程序,Jedi是一个Python库,用于自动补全、函数签名和代码分析。 以下是一些步骤来实现支持自动补全的Python IDE: 1.安装PyQt5和Jedi库: ``` pip install PyQt5 pip install jedi ``` 2.创建一个主窗口,并添加一个代码编辑器和一个自动补全控件: ```python from PyQt5.QtWidgets import QMainWindow, QTextEdit, QDockWidget, QListWidget class MainWindow(QMainWindow): def __init__(self): super().__init__() # 创建代码编辑器 self.editor = QTextEdit() self.setCentralWidget(self.editor) # 创建自动补全控件 self.completer = QListWidget() self.completer.setWindowFlags(Qt.Popup) self.completer.hide() self.completer.currentRowChanged.connect(self.insert_completion) dock = QDockWidget('Autocomplete', self) dock.setWidget(self.completer) self.addDockWidget(Qt.RightDockWidgetArea, dock) ``` 3.监听代码编辑器的文本变化事件,并在每次文本变化时更新自动补全控件的内容: ```python from PyQt5.QtCore import Qt, QEvent class TextEdit(QTextEdit): def __init__(self, parent=None): super().__init__(parent) def event(self, event): if event.type() == QEvent.KeyPress and event.key() == Qt.Key_Tab: self.parent().complete() return True return super().event(event) class MainWindow(QMainWindow): def __init__(self): super().__init__() # 创建代码编辑器 self.editor = TextEdit() self.setCentralWidget(self.editor) # 创建自动补全控件 self.completer = QListWidget() self.completer.setWindowFlags(Qt.Popup) self.completer.hide() self.completer.currentRowChanged.connect(self.insert_completion) dock = QDockWidget('Autocomplete', self) dock.setWidget(self.completer) self.addDockWidget(Qt.RightDockWidgetArea, dock) # 监听文本变化事件 self.editor.textChanged.connect(self.update_completer) ``` 4.使用Jedi库进行自动补全: ```python import jedi class MainWindow(QMainWindow): def __init__(self): super().__init__() # 创建代码编辑器 self.editor = TextEdit() self.setCentralWidget(self.editor) # 创建自动补全控件 self.completer = QListWidget() self.completer.setWindowFlags(Qt.Popup) self.completer.hide() self.completer.currentRowChanged.connect(self.insert_completion) dock = QDockWidget('Autocomplete', self) dock.setWidget(self.completer) self.addDockWidget(Qt.RightDockWidgetArea, dock) # 监听文本变化事件 self.editor.textChanged.connect(self.update_completer) def update_completer(self): # 获取当前光标位置 cursor = self.editor.textCursor() pos = cursor.position() # 获取代码内容 code = self.editor.toPlainText() # 获取当前行的代码 current_line = code.split('\n')[cursor.blockNumber()] # 获取当前行的所有单词 current_words = current_line[:pos].split()[-1] # 获取自动补全的内容 completions = jedi.Script(code, path='example.py', line=cursor.blockNumber()+1, column=len(current_words)).completions() # 显示自动补全内容 self.completer.clear() for c in completions: self.completer.addItem(c.name) if completions: self.completer.setCurrentRow(0) self.completer.show() else: self.completer.hide() def complete(self): # 获取当前光标位置 cursor = self.editor.textCursor() pos = cursor.position() # 获取代码内容 code = self.editor.toPlainText() # 获取当前行的代码 current_line = code.split('\n')[cursor.blockNumber()] # 获取当前行的所有单词 current_words = current_line[:pos].split()[-1] # 获取自动补全的内容 completions = jedi.Script(code, path='example.py', line=cursor.blockNumber()+1, column=len(current_words)).completions() # 插入自动补全内容 if completions: self.insert_completion(completions[0]) def insert_completion(self, completion): # 获取当前光标位置 cursor = self.editor.textCursor() # 获取代码内容 code = self.editor.toPlainText() # 获取当前行的代码 current_line = code.split('\n')[cursor.blockNumber()] # 获取当前行的所有单词 current_words = current_line[:cursor.positionInBlock()].split()[-1] # 计算需要替换的文本 replace_text = completion.text[len(current_words):] # 替换文本 cursor.movePosition(QTextCursor.Left) cursor.movePosition(QTextCursor.EndOfWord) cursor.insertText(replace_text) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值