pub struct BufferScopeDir(pub PathBuf);Expand description
The directory a buffer is about, when that is not its own path.
A magit status buffer, an oil listing, a file tree, a search or agenda
view — none of them is a file, so none has a path, and every one of them
still belongs somewhere. Without this the editor’s project resolution
takes its only other branch and answers with the process working
directory, so :files in a magit buffer for ~/work/api listed
whatever tree the editor happened to be launched in.
§A directory, not a project root
The writer records where the buffer is; the host resolves that to a
project through the ordinary ProjectResolverHandle. So an oil buffer on
/repo/src records /repo/src and :files still lists /repo — the
provider does not have to know what a project is, and the two notions
cannot drift apart by being recorded twice.
§Universal, hence text-mode
Owned by no single mode, like text-mode.extra-highlights: any buffer may
have one and most do not. Written through
ModeActivator::set_buffer_scope_dir
so a provider sets it from its trigger, where it already knows the answer.
Tuple Fields§
§0: PathBufTrait Implementations§
Source§impl BufferLocal for BufferScopeDir
impl BufferLocal for BufferScopeDir
Source§const NAME: &'static str = "text-mode.scope-dir"
const NAME: &'static str = "text-mode.scope-dir"
:describe-buffer row label,
debug logs). Convention: <owner-mode-name>.<key>,
e.g. "file-tree.entries". Not a registry key — locals
aren’t registered globally; the name is metadata for
inspection.Source§const DOC: &'static str = "The directory this buffer is about, for a buffer that is not \
itself a file — a magit repository, an oil listing's directory, a \
file tree's root, a search or agenda view's scan root. Project \
resolution (`:files`, `:search`) reads it before falling back to \
the buffer's own path, and then to the working directory."
const DOC: &'static str = "The directory this buffer is about, for a buffer that is not \ itself a file — a magit repository, an oil listing's directory, a \ file tree's root, a search or agenda view's scan root. Project \ resolution (`:files`, `:search`) reads it before falling back to \ the buffer's own path, and then to the working directory."
:describe-buffer when the user
expands a local for detail.Source§const OWNER_MODE: &'static str = "text-mode"
const OWNER_MODE: &'static str = "text-mode"
:describe-buffer; the write-time check the design calls for
(a ModeContext::set_local::<T> that rejects a non-owner) is not
implemented, so nothing enforces it today (see the module docs).Source§impl Clone for BufferScopeDir
impl Clone for BufferScopeDir
Source§fn clone(&self) -> BufferScopeDir
fn clone(&self) -> BufferScopeDir
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for BufferScopeDir
impl Debug for BufferScopeDir
impl Eq for BufferScopeDir
Source§impl PartialEq for BufferScopeDir
impl PartialEq for BufferScopeDir
impl StructuralPartialEq for BufferScopeDir
Auto Trait Implementations§
impl Freeze for BufferScopeDir
impl RefUnwindSafe for BufferScopeDir
impl Send for BufferScopeDir
impl Sync for BufferScopeDir
impl Unpin for BufferScopeDir
impl UnsafeUnpin for BufferScopeDir
impl UnwindSafe for BufferScopeDir
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.