parent
93ca1881bf
commit
2953f52068
|
@ -3,7 +3,7 @@ import curses, curses.ascii, getpass, os, re, string, sys, termios, time
|
||||||
import traceback
|
import traceback
|
||||||
from subprocess import Popen, PIPE, STDOUT
|
from subprocess import Popen, PIPE, STDOUT
|
||||||
|
|
||||||
import buffer, buffer.about, buffer.color
|
import buffer, buffer.about, buffer.color, buffer.console, buffer.data, buffer.fs
|
||||||
import bufferlist, color, completer, keyinput, method, minibuffer, mode
|
import bufferlist, color, completer, keyinput, method, minibuffer, mode
|
||||||
import util, window
|
import util, window
|
||||||
from point import Point
|
from point import Point
|
||||||
|
@ -163,10 +163,10 @@ class Application(object):
|
||||||
# initialize our buffers
|
# initialize our buffers
|
||||||
# note that the first buffer in buffers will be initially visible
|
# note that the first buffer in buffers will be initially visible
|
||||||
buffers.append(buffer.about.AboutBuffer())
|
buffers.append(buffer.about.AboutBuffer())
|
||||||
buffers.append(buffer.ConsoleBuffer())
|
buffers.append(buffer.console.ConsoleBuffer())
|
||||||
|
|
||||||
if self.rcerror:
|
if self.rcerror:
|
||||||
buffers.insert(0, buffer.DataBuffer('*RcError*', self.rcerror))
|
buffers.insert(0, buffer.data.DataBuffer('*RcError*', self.rcerror))
|
||||||
|
|
||||||
# build windows for our buffers
|
# build windows for our buffers
|
||||||
for b in buffers:
|
for b in buffers:
|
||||||
|
@ -368,7 +368,7 @@ class Application(object):
|
||||||
else:
|
else:
|
||||||
b = buffer.FileBuffer(path, name=name)
|
b = buffer.FileBuffer(path, name=name)
|
||||||
elif os.path.isdir(path):
|
elif os.path.isdir(path):
|
||||||
b = buffer.DirBuffer(path, name=name)
|
b = buffer.fs.DirBuffer(path, name=name)
|
||||||
mode_name = 'dir'
|
mode_name = 'dir'
|
||||||
else:
|
else:
|
||||||
raise Exception, "not a file or dir: %r" % path
|
raise Exception, "not a file or dir: %r" % path
|
||||||
|
@ -466,7 +466,7 @@ class Application(object):
|
||||||
if self.has_buffer_name(name):
|
if self.has_buffer_name(name):
|
||||||
b = self.bufferlist.buffer_names[name]
|
b = self.bufferlist.buffer_names[name]
|
||||||
self.remove_buffer(b)
|
self.remove_buffer(b)
|
||||||
b = buffer.DataBuffer(name, data)
|
b = buffer.data.DataBuffer(name, data)
|
||||||
if modename is not None:
|
if modename is not None:
|
||||||
b.modename = modename
|
b.modename = modename
|
||||||
window.Window(b, self, height=0, width=0)
|
window.Window(b, self, height=0, width=0)
|
||||||
|
@ -892,7 +892,7 @@ def open_plain_file(path, name=None, binary=False):
|
||||||
else:
|
else:
|
||||||
return buffer.FileBuffer(path, name)
|
return buffer.FileBuffer(path, name)
|
||||||
elif os.path.isdir(path):
|
elif os.path.isdir(path):
|
||||||
return buffer.DirBuffer(path, name)
|
return buffer.fs.DirBuffer(path, name)
|
||||||
else:
|
else:
|
||||||
raise Exception, "can't open %r; unsupported file type" % path
|
raise Exception, "can't open %r; unsupported file type" % path
|
||||||
|
|
||||||
|
|
|
@ -354,48 +354,6 @@ class Buffer(object):
|
||||||
# should not happen
|
# should not happen
|
||||||
raise Exception, "iiiijjjj"
|
raise Exception, "iiiijjjj"
|
||||||
|
|
||||||
class DataBuffer(Buffer):
|
|
||||||
btype = 'data'
|
|
||||||
def __init__(self, name, data):
|
|
||||||
Buffer.__init__(self)
|
|
||||||
self._name = name
|
|
||||||
self.lines = data.split("\n")
|
|
||||||
def name(self):
|
|
||||||
return self._name
|
|
||||||
def close(self):
|
|
||||||
pass
|
|
||||||
def readonly(self):
|
|
||||||
return True
|
|
||||||
|
|
||||||
# console is another singleton
|
|
||||||
console = None
|
|
||||||
class ConsoleBuffer(Buffer):
|
|
||||||
btype = 'console'
|
|
||||||
modename = 'console'
|
|
||||||
def __new__(cls, *args, **kwargs):
|
|
||||||
global console
|
|
||||||
if console is None:
|
|
||||||
b = object.__new__(ConsoleBuffer, *args, **kwargs)
|
|
||||||
console = b
|
|
||||||
return console
|
|
||||||
def __init__(self):
|
|
||||||
Buffer.__init__(self)
|
|
||||||
self.clear()
|
|
||||||
def clear(self):
|
|
||||||
lines = ['Python Console\n',
|
|
||||||
"Evaluate python expressions in the editor's context (self)\n",
|
|
||||||
'Press Control-] to exit\n']
|
|
||||||
console.set_data(''.join(lines), force=True)
|
|
||||||
def name(self):
|
|
||||||
return '*Console*'
|
|
||||||
def changed(self):
|
|
||||||
return False
|
|
||||||
def close(self):
|
|
||||||
global console
|
|
||||||
console = None
|
|
||||||
def readonly(self):
|
|
||||||
return True
|
|
||||||
|
|
||||||
class InterpreterPipeError(Exception):
|
class InterpreterPipeError(Exception):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
@ -738,80 +696,3 @@ class Binary32Buffer(FileBuffer):
|
||||||
return '\n'.join(lines)
|
return '\n'.join(lines)
|
||||||
def write_filter(self, data):
|
def write_filter(self, data):
|
||||||
return ''.join(self.rawdata)
|
return ''.join(self.rawdata)
|
||||||
|
|
||||||
class DirBuffer(Buffer):
|
|
||||||
btype = 'dir'
|
|
||||||
def __init__(self, path, name=None):
|
|
||||||
Buffer.__init__(self)
|
|
||||||
self.path = os.path.realpath(path)
|
|
||||||
def changed(self):
|
|
||||||
return False
|
|
||||||
def readonly(self):
|
|
||||||
return True
|
|
||||||
def name(self):
|
|
||||||
return self.path
|
|
||||||
def path_exists(self):
|
|
||||||
return os.path.exists(self.path)
|
|
||||||
|
|
||||||
def _get_names(self):
|
|
||||||
if not self.path_exists():
|
|
||||||
raise Exception, "directory %r does not exists" % self.path
|
|
||||||
names = os.listdir(self.path)
|
|
||||||
if self.path != '/':
|
|
||||||
names.insert(0, '..')
|
|
||||||
names.insert(0, '.')
|
|
||||||
return names
|
|
||||||
def _make_path(self, name):
|
|
||||||
return os.path.join(self.path, name)
|
|
||||||
def _get_lines(self):
|
|
||||||
names = self._get_names()
|
|
||||||
|
|
||||||
fieldlines = []
|
|
||||||
maxlens = [0] * 5
|
|
||||||
for name in names:
|
|
||||||
path = self._make_path(name)
|
|
||||||
fields = dirutil.path_fields(path, name)
|
|
||||||
for i in range(0, 5):
|
|
||||||
try:
|
|
||||||
maxlens[i] = max(maxlens[i], len(fields[i]))
|
|
||||||
except:
|
|
||||||
raise Exception, '%d %r' % (i, fields[i])
|
|
||||||
fieldlines.append(fields)
|
|
||||||
|
|
||||||
fieldlines.sort(cmp=dirutil.path_sort)
|
|
||||||
fmt = '%%%ds %%-%ds %%-%ds %%%ds %%%ds %%s' % tuple(maxlens)
|
|
||||||
|
|
||||||
lines = []
|
|
||||||
for fields in fieldlines:
|
|
||||||
s = fmt % fields
|
|
||||||
lines.append(s)
|
|
||||||
return lines
|
|
||||||
def open(self):
|
|
||||||
self.lines = self._get_lines()
|
|
||||||
def reload(self):
|
|
||||||
lines = self._get_lines()
|
|
||||||
self.set_lines(lines, force=True)
|
|
||||||
def save(self, force=False):
|
|
||||||
raise Exception, "can't save a directory buffer"
|
|
||||||
def save_as(self, path):
|
|
||||||
raise Exception, "can't save a directory buffer"
|
|
||||||
|
|
||||||
class PathListBuffer(DirBuffer):
|
|
||||||
btype = 'pathlist'
|
|
||||||
def __init__(self, name, paths):
|
|
||||||
Buffer.__init__(self)
|
|
||||||
self.paths = list(paths)
|
|
||||||
self.path = os.getcwd()
|
|
||||||
self._name = name
|
|
||||||
def path_exists(self):
|
|
||||||
raise Exception
|
|
||||||
def _get_names(self):
|
|
||||||
cwd = os.getcwd()
|
|
||||||
return [x.replace(cwd, '.', 1) for x in self.paths]
|
|
||||||
def _make_path(self, name):
|
|
||||||
if name.startswith('.'):
|
|
||||||
return name.replace('.', os.getcwd(), 1)
|
|
||||||
else:
|
|
||||||
return name
|
|
||||||
def name(self):
|
|
||||||
return self._name
|
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
import re
|
import re
|
||||||
import lex
|
import lex
|
||||||
from buffer import Buffer, DataBuffer
|
from buffer import Buffer
|
||||||
|
from buffer.data import DataBuffer
|
||||||
from highlight import Highlighter
|
from highlight import Highlighter
|
||||||
|
|
||||||
# NOTE: this highlighter will not reprocess the data given. it is intended to
|
# NOTE: this highlighter will not reprocess the data given. it is intended to
|
||||||
|
|
|
@ -0,0 +1,30 @@
|
||||||
|
from buffer import Buffer
|
||||||
|
|
||||||
|
# console is another singleton
|
||||||
|
console = None
|
||||||
|
class ConsoleBuffer(Buffer):
|
||||||
|
btype = 'console'
|
||||||
|
modename = 'console'
|
||||||
|
def __new__(cls, *args, **kwargs):
|
||||||
|
global console
|
||||||
|
if console is None:
|
||||||
|
b = object.__new__(ConsoleBuffer, *args, **kwargs)
|
||||||
|
console = b
|
||||||
|
return console
|
||||||
|
def __init__(self):
|
||||||
|
Buffer.__init__(self)
|
||||||
|
self.clear()
|
||||||
|
def clear(self):
|
||||||
|
lines = ['Python Console\n',
|
||||||
|
"Evaluate python expressions in the editor's context (self)\n",
|
||||||
|
'Press Control-] to exit\n']
|
||||||
|
console.set_data(''.join(lines), force=True)
|
||||||
|
def name(self):
|
||||||
|
return '*Console*'
|
||||||
|
def changed(self):
|
||||||
|
return False
|
||||||
|
def close(self):
|
||||||
|
global console
|
||||||
|
console = None
|
||||||
|
def readonly(self):
|
||||||
|
return True
|
|
@ -0,0 +1,14 @@
|
||||||
|
from buffer import Buffer
|
||||||
|
|
||||||
|
class DataBuffer(Buffer):
|
||||||
|
btype = 'data'
|
||||||
|
def __init__(self, name, data):
|
||||||
|
Buffer.__init__(self)
|
||||||
|
self._name = name
|
||||||
|
self.lines = data.split("\n")
|
||||||
|
def name(self):
|
||||||
|
return self._name
|
||||||
|
def close(self):
|
||||||
|
pass
|
||||||
|
def readonly(self):
|
||||||
|
return True
|
|
@ -0,0 +1,79 @@
|
||||||
|
import dirutil, os
|
||||||
|
from buffer import Buffer
|
||||||
|
|
||||||
|
class DirBuffer(Buffer):
|
||||||
|
btype = 'dir'
|
||||||
|
def __init__(self, path, name=None):
|
||||||
|
Buffer.__init__(self)
|
||||||
|
self.path = os.path.realpath(path)
|
||||||
|
def changed(self):
|
||||||
|
return False
|
||||||
|
def readonly(self):
|
||||||
|
return True
|
||||||
|
def name(self):
|
||||||
|
return self.path
|
||||||
|
def path_exists(self):
|
||||||
|
return os.path.exists(self.path)
|
||||||
|
|
||||||
|
def _get_names(self):
|
||||||
|
if not self.path_exists():
|
||||||
|
raise Exception, "directory %r does not exists" % self.path
|
||||||
|
names = os.listdir(self.path)
|
||||||
|
if self.path != '/':
|
||||||
|
names.insert(0, '..')
|
||||||
|
names.insert(0, '.')
|
||||||
|
return names
|
||||||
|
def _make_path(self, name):
|
||||||
|
return os.path.join(self.path, name)
|
||||||
|
def _get_lines(self):
|
||||||
|
names = self._get_names()
|
||||||
|
|
||||||
|
fieldlines = []
|
||||||
|
maxlens = [0] * 5
|
||||||
|
for name in names:
|
||||||
|
path = self._make_path(name)
|
||||||
|
fields = dirutil.path_fields(path, name)
|
||||||
|
for i in range(0, 5):
|
||||||
|
try:
|
||||||
|
maxlens[i] = max(maxlens[i], len(fields[i]))
|
||||||
|
except:
|
||||||
|
raise Exception, '%d %r' % (i, fields[i])
|
||||||
|
fieldlines.append(fields)
|
||||||
|
|
||||||
|
fieldlines.sort(cmp=dirutil.path_sort)
|
||||||
|
fmt = '%%%ds %%-%ds %%-%ds %%%ds %%%ds %%s' % tuple(maxlens)
|
||||||
|
|
||||||
|
lines = []
|
||||||
|
for fields in fieldlines:
|
||||||
|
s = fmt % fields
|
||||||
|
lines.append(s)
|
||||||
|
return lines
|
||||||
|
def open(self):
|
||||||
|
self.lines = self._get_lines()
|
||||||
|
def reload(self):
|
||||||
|
lines = self._get_lines()
|
||||||
|
self.set_lines(lines, force=True)
|
||||||
|
def save(self, force=False):
|
||||||
|
raise Exception, "can't save a directory buffer"
|
||||||
|
def save_as(self, path):
|
||||||
|
raise Exception, "can't save a directory buffer"
|
||||||
|
|
||||||
|
class PathListBuffer(DirBuffer):
|
||||||
|
btype = 'pathlist'
|
||||||
|
def __init__(self, name, paths):
|
||||||
|
Buffer.__init__(self)
|
||||||
|
self.paths = list(paths)
|
||||||
|
self.path = os.getcwd()
|
||||||
|
self._name = name
|
||||||
|
def path_exists(self):
|
||||||
|
raise Exception
|
||||||
|
def _get_names(self):
|
||||||
|
cwd = os.getcwd()
|
||||||
|
return [x.replace(cwd, '.', 1) for x in self.paths]
|
||||||
|
def _make_path(self, name):
|
||||||
|
if name.startswith('.'):
|
||||||
|
return name.replace('.', os.getcwd(), 1)
|
||||||
|
else:
|
||||||
|
return name
|
||||||
|
def name(self):
|
||||||
|
return self._name
|
|
@ -1,7 +1,8 @@
|
||||||
import os, commands, re, sets, tempfile
|
import os, commands, re, sets, tempfile
|
||||||
from subprocess import Popen, PIPE, STDOUT
|
from subprocess import Popen, PIPE, STDOUT
|
||||||
|
|
||||||
import buffer, completer, default, dirutil, regex, util, window
|
import buffer, buffer.console
|
||||||
|
import completer, default, dirutil, regex, util, window
|
||||||
import mode.mini
|
import mode.mini
|
||||||
from point import Point
|
from point import Point
|
||||||
|
|
||||||
|
@ -144,7 +145,7 @@ class OpenConsole(Method):
|
||||||
def execute(self, w, **vargs):
|
def execute(self, w, **vargs):
|
||||||
a = w.application
|
a = w.application
|
||||||
if not a.has_buffer_name('*Console*'):
|
if not a.has_buffer_name('*Console*'):
|
||||||
b = buffer.ConsoleBuffer()
|
b = buffer.console.ConsoleBuffer()
|
||||||
a.add_buffer(b)
|
a.add_buffer(b)
|
||||||
window.Window(b, a)
|
window.Window(b, a)
|
||||||
b = a.bufferlist.get_buffer_by_name('*Console*')
|
b = a.bufferlist.get_buffer_by_name('*Console*')
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
import commands, dirutil, grp, method, mode, os.path, pwd, re
|
import commands, dirutil, grp, method, mode, os.path, pwd, re
|
||||||
import buffer, window
|
import buffer, buffer.fs
|
||||||
|
import window
|
||||||
from lex import Grammar, PatternRule, RegionRule, PatternGroupRule
|
from lex import Grammar, PatternRule, RegionRule, PatternGroupRule
|
||||||
from point import Point
|
from point import Point
|
||||||
from method import Method, Argument
|
from method import Method, Argument
|
||||||
|
@ -56,7 +57,7 @@ class DirGrep(Method):
|
||||||
(status, output) = commands.getstatusoutput(cmd)
|
(status, output) = commands.getstatusoutput(cmd)
|
||||||
paths = [x for x in output.split('\n') if x]
|
paths = [x for x in output.split('\n') if x]
|
||||||
bufname = '*%s*' % self.name.title()
|
bufname = '*%s*' % self.name.title()
|
||||||
b = buffer.PathListBuffer(bufname, paths)
|
b = buffer.fs.PathListBuffer(bufname, paths)
|
||||||
b.modename = 'dir'
|
b.modename = 'dir'
|
||||||
b.open()
|
b.open()
|
||||||
window.Window(b, w.application, height=0, width=0)
|
window.Window(b, w.application, height=0, width=0)
|
||||||
|
|
Loading…
Reference in New Issue