Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'release/scripts/textplugin_functiondocs.py')
-rw-r--r--release/scripts/textplugin_functiondocs.py64
1 files changed, 64 insertions, 0 deletions
diff --git a/release/scripts/textplugin_functiondocs.py b/release/scripts/textplugin_functiondocs.py
new file mode 100644
index 00000000000..41c8d4842a0
--- /dev/null
+++ b/release/scripts/textplugin_functiondocs.py
@@ -0,0 +1,64 @@
+#!BPY
+"""
+Name: 'Function Documentation | Ctrl I'
+Blender: 246
+Group: 'TextPlugin'
+Shortcut: 'Ctrl+I'
+Tooltip: 'Attempts to display documentation about the function preceding the cursor.'
+"""
+
+# Only run if we have the required modules
+try:
+ import bpy
+ from BPyTextPlugin import *
+except ImportError:
+ OK = False
+else:
+ OK = True
+
+def main():
+ txt = bpy.data.texts.active
+ if not txt:
+ return
+
+ (line, c) = current_line(txt)
+
+ # Check we are in a normal context
+ if get_context(txt) != CTX_NORMAL:
+ return
+
+ # Identify the name under the cursor
+ llen = len(line)
+ while c<llen and (line[c].isalnum() or line[c]=='_'):
+ c += 1
+
+ targets = get_targets(line, c)
+
+ # If no name under cursor, look backward to see if we're in function parens
+ if len(targets) == 0 or targets[0] == '':
+ # Look backwards for first '(' without ')'
+ b = 0
+ found = False
+ for i in range(c-1, -1, -1):
+ if line[i] == ')': b += 1
+ elif line[i] == '(':
+ b -= 1
+ if b < 0:
+ found = True
+ c = i
+ break
+ if found: targets = get_targets(line, c)
+ if len(targets) == 0 or targets[0] == '':
+ return
+
+ obj = resolve_targets(txt, targets)
+ if not obj: return
+
+ if isinstance(obj, Definition): # Local definition
+ txt.showDocs(obj.doc)
+ elif hasattr(obj, '__doc__') and obj.__doc__:
+ txt.showDocs(obj.__doc__)
+
+# Check we are running as a script and not imported as a module
+if __name__ == "__main__" and OK:
+ main()