move absolute path logic to Buffer class
This commit is contained in:
parent
58caeaa8a8
commit
9429b662ca
|
@ -5,6 +5,7 @@
|
||||||
#include "assert.hh"
|
#include "assert.hh"
|
||||||
#include "utils.hh"
|
#include "utils.hh"
|
||||||
#include "context.hh"
|
#include "context.hh"
|
||||||
|
#include "file.hh"
|
||||||
|
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
|
|
||||||
|
@ -21,6 +22,9 @@ Buffer::Buffer(String name, Flags flags, std::vector<String> lines)
|
||||||
{
|
{
|
||||||
BufferManager::instance().register_buffer(*this);
|
BufferManager::instance().register_buffer(*this);
|
||||||
|
|
||||||
|
if (flags & Flags::File)
|
||||||
|
m_name = real_path(m_name);
|
||||||
|
|
||||||
if (lines.empty())
|
if (lines.empty())
|
||||||
lines.emplace_back("\n");
|
lines.emplace_back("\n");
|
||||||
|
|
||||||
|
@ -58,6 +62,13 @@ Buffer::~Buffer()
|
||||||
assert(m_change_listeners.empty());
|
assert(m_change_listeners.empty());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
String Buffer::display_name() const
|
||||||
|
{
|
||||||
|
if (m_flags & Flags::File)
|
||||||
|
return compact_path(m_name);
|
||||||
|
return m_name;
|
||||||
|
}
|
||||||
|
|
||||||
BufferIterator Buffer::iterator_at(const BufferCoord& line_and_column,
|
BufferIterator Buffer::iterator_at(const BufferCoord& line_and_column,
|
||||||
bool avoid_eol) const
|
bool avoid_eol) const
|
||||||
{
|
{
|
||||||
|
|
|
@ -153,6 +153,7 @@ public:
|
||||||
BufferIterator iterator_at_line_end(LineCount line) const;
|
BufferIterator iterator_at_line_end(LineCount line) const;
|
||||||
|
|
||||||
const String& name() const { return m_name; }
|
const String& name() const { return m_name; }
|
||||||
|
String display_name() const;
|
||||||
|
|
||||||
// returns true if the buffer is in a different state than
|
// returns true if the buffer is in a different state than
|
||||||
// the last time it was saved
|
// the last time it was saved
|
||||||
|
|
|
@ -5,6 +5,7 @@
|
||||||
#include "exception.hh"
|
#include "exception.hh"
|
||||||
#include "string.hh"
|
#include "string.hh"
|
||||||
#include "client_manager.hh"
|
#include "client_manager.hh"
|
||||||
|
#include "file.hh"
|
||||||
|
|
||||||
namespace Kakoune
|
namespace Kakoune
|
||||||
{
|
{
|
||||||
|
@ -49,7 +50,9 @@ Buffer* BufferManager::get_buffer_ifp(const String& name)
|
||||||
{
|
{
|
||||||
for (auto& buf : m_buffers)
|
for (auto& buf : m_buffers)
|
||||||
{
|
{
|
||||||
if (buf->name() == name)
|
if (buf->name() == name or
|
||||||
|
(buf->flags() & Buffer::Flags::File and
|
||||||
|
real_path(buf->name()) == real_path(parse_filename(name))))
|
||||||
return buf.get();
|
return buf.get();
|
||||||
}
|
}
|
||||||
return nullptr;
|
return nullptr;
|
||||||
|
@ -80,7 +83,7 @@ CandidateList BufferManager::complete_buffername(const String& prefix,
|
||||||
CandidateList result;
|
CandidateList result;
|
||||||
for (auto& buffer : m_buffers)
|
for (auto& buffer : m_buffers)
|
||||||
{
|
{
|
||||||
const String& name = buffer->name();
|
String name = buffer->display_name();
|
||||||
if (name.substr(0, real_prefix.length()) == real_prefix)
|
if (name.substr(0, real_prefix.length()) == real_prefix)
|
||||||
result.push_back(escape(name));
|
result.push_back(escape(name));
|
||||||
}
|
}
|
||||||
|
@ -92,7 +95,7 @@ CandidateList BufferManager::complete_buffername(const String& prefix,
|
||||||
Regex ex(real_prefix.begin(), real_prefix.end());
|
Regex ex(real_prefix.begin(), real_prefix.end());
|
||||||
for (auto& buffer : m_buffers)
|
for (auto& buffer : m_buffers)
|
||||||
{
|
{
|
||||||
const String& name = buffer->name();
|
String name = buffer->display_name();
|
||||||
if (boost::regex_search(name.begin(), name.end(), ex))
|
if (boost::regex_search(name.begin(), name.end(), ex))
|
||||||
result.push_back(escape(name));
|
result.push_back(escape(name));
|
||||||
}
|
}
|
||||||
|
|
|
@ -195,11 +195,9 @@ static String generate_status_line(const Context& context)
|
||||||
{
|
{
|
||||||
BufferCoord cursor = context.editor().main_selection().last().coord();
|
BufferCoord cursor = context.editor().main_selection().last().coord();
|
||||||
std::ostringstream oss;
|
std::ostringstream oss;
|
||||||
String name = context.buffer().name();
|
|
||||||
if (context.buffer().flags() & Buffer::Flags::File)
|
|
||||||
name = compact_path(name);
|
|
||||||
|
|
||||||
oss << name << " " << (int)cursor.line+1 << "," << (int)cursor.column+1;
|
oss << context.buffer().display_name()
|
||||||
|
<< " " << (int)cursor.line+1 << "," << (int)cursor.column+1;
|
||||||
if (context.buffer().is_modified())
|
if (context.buffer().is_modified())
|
||||||
oss << " [+]";
|
oss << " [+]";
|
||||||
if (context.input_handler().is_recording())
|
if (context.input_handler().is_recording())
|
||||||
|
|
|
@ -97,8 +97,7 @@ void edit(const CommandParameters& params, Context& context)
|
||||||
if (param_count == 0 or param_count > 3)
|
if (param_count == 0 or param_count > 3)
|
||||||
throw wrong_argument_count();
|
throw wrong_argument_count();
|
||||||
|
|
||||||
const bool file = not parser.has_option("scratch") and not parser.has_option("fifo");
|
const String name = parser[0];
|
||||||
String name = file ? real_path(parse_filename(parser[0])) : parser[0];
|
|
||||||
|
|
||||||
Buffer* buffer = nullptr;
|
Buffer* buffer = nullptr;
|
||||||
if (not force_reload)
|
if (not force_reload)
|
||||||
|
|
Loading…
Reference in New Issue
Block a user