Then, from the root of your new project repository, link it:
```bash
-cd shared/third_party
+cd shared/linked-project
ln -s ../../../RT-style-JS_public RT-style-JS_public
```
-Find an introductory document at `document/Introduction_to_Harmony.html'. After the style library is installed, clicking on it in file navigator should open it in a browser.
+Find an introductory document at `document/introduction_Harmony.html'. After the style library is installed, clicking on it in file navigator should open it in a browser.
window.RT_REPO_ROOT = "../../";
-document.write('<script src="' + window.RT_REPO_ROOT + 'shared/style_directory_dict.js"></script>');
-document.write('<script src="' + window.RT_REPO_ROOT + 'shared/third_party/RT-style-JS_public/consumer/release/RT/core/loader.js"></script>');
-document.write('<script src="' + window.RT_REPO_ROOT + 'shared/third_party/RT-style-JS_public/consumer/release/RT/core/body_visibility_hidden.js"></script>');
+document.write('<script src="' + window.RT_REPO_ROOT + 'shared/dictionary_style-directory.js"></script>');
+document.write('<script src="' + window.RT_REPO_ROOT + 'shared/linked-project/RT-style-JS_public/consumer/release/RT/core/loader.js"></script>');
+document.write('<script src="' + window.RT_REPO_ROOT + 'shared/linked-project/RT-style-JS_public/consumer/release/RT/core/body_visibility_hidden.js"></script>');
</p>
<ul>
<li><RT-code>RTfmt write <file...></RT-code> : Formats files in place. It performs a content comparison before writing, leaving the file modification timestamp untouched if the file is already compliant.</li>
- <li><RT-code>RTfmt pipe</RT-code> : Reads from standard input and writes to standard output, making it ideal for editor integration.</li>
+ <li><RT-code>RT-formatter pipe</RT-code> : Reads from standard input and writes to standard output, making it ideal for editor integration.</li>
<li><RT-code>--lisp</RT-code> : A flag that instructs the formatter to skip the outermost enclosure padding rule, honoring the Lisp function call exception.</li>
</ul>
<h2>Emacs integration</h2>
<p>
- For Emacs users, the <RT-code>RTfmt.el</RT-code> file provides the <RT-code>RTfmt-buffer</RT-code> interactive command.
+ For Emacs users, the <RT-code>RT-formatter.el</RT-code> file provides the <RT-code>RT-formatter-buffer</RT-code> interactive command.
</p>
<p>
- This wrapper passes the current buffer through the <RT-code>RTfmt pipe</RT-code> command. It automatically detects Lisp-derived modes to append the <RT-code>--lisp</RT-code> flag. Furthermore, it utilizes a non-destructive buffer replacement strategy. This ensures that a programmer's cursor position, selection marks, and window scroll state remain anchored exactly where they were before the formatting occurred.
+ This wrapper passes the current buffer through the <RT-code>RT-formatter pipe</RT-code> command. It automatically detects Lisp-derived modes to append the <RT-code>--lisp</RT-code> flag. Furthermore, it utilizes a non-destructive buffer replacement strategy. This ensures that a programmer's cursor position, selection marks, and window scroll state remain anchored exactly where they were before the formatting occurred.
</p>
<h1>Exercises</h1>
</p>
<p>
- If a file represents a module or name space, follow the same naming conventions specified for classes and name spaces in the <RT-code>RT_code_format.html</RT-code> document.
+ If a file represents a module or name space, follow the same naming conventions specified for classes and name spaces in the <RT-code>format_RT-code.html</RT-code> document.
</p>
<p>
- Other program files follow the same naming conventions specified in the <RT-code>RT_code_format.html</RT-code> document for an identifier of the
+ Other program files follow the same naming conventions specified in the <RT-code>format_RT-code.html</RT-code> document for an identifier of the
contained or related language.
</p>
window.RT_REPO_ROOT = "../../";
-document.write('<script src="' + window.RT_REPO_ROOT + 'shared/style_directory_dict.js"></script>');
-document.write('<script src="' + window.RT_REPO_ROOT + 'shared/third_party/RT-style-JS_public/consumer/release/RT/core/loader.js"></script>');
-document.write('<script src="' + window.RT_REPO_ROOT + 'shared/third_party/RT-style-JS_public/consumer/release/RT/core/body_visibility_hidden.js"></script>');
+document.write('<script src="' + window.RT_REPO_ROOT + 'shared/dictionary_style-directory.js"></script>');
+document.write('<script src="' + window.RT_REPO_ROOT + 'shared/linked-project/RT-style-JS_public/consumer/release/RT/core/loader.js"></script>');
+document.write('<script src="' + window.RT_REPO_ROOT + 'shared/linked-project/RT-style-JS_public/consumer/release/RT/core/body_visibility_hidden.js"></script>');
@echo tool/makefile version 2.0
@printf "Harmony.mk ----------------------------------------\n"
@$(MAKE) -f $(RT_MAKEFILE_DP)/Harmony.mk version
- @printf "target_kmod.mk ----------------------------------------\n"
- @$(MAKE) -f $(RT_MAKEFILE_DP)/target_kmod.mk version
+ @printf "target_kernel-module.mk ----------------------------------------\n"
+ @$(MAKE) -f $(RT_MAKEFILE_DP)/target_kernel-module.mk version
.PHONY: information
information:
@echo CURDIR="$(CURDIR)"
@printf "Harmony.mk ----------------------------------------\n"
@$(MAKE) -f $(RT_MAKEFILE_DP)/Harmony.mk information
- @printf "target_kmod.mk ----------------------------------------\n"
- @$(MAKE) -f $(RT_MAKEFILE_DP)/target_kmod.mk information
+ @printf "target_kernel-module.mk ----------------------------------------\n"
+ @$(MAKE) -f $(RT_MAKEFILE_DP)/target_kernel-module.mk information
.PHONY: all
all: library CLI kmod
.PHONY: kmod
kmod:
- @$(MAKE) -f $(RT_MAKEFILE_DP)/target_kmod.mk kmod
+ @$(MAKE) -f $(RT_MAKEFILE_DP)/target_kernel-module.mk kmod
.PHONY: clean
clean:
@printf "local ----------------------------------------\n"
@printf "Harmony.mk ----------------------------------------\n"
@$(MAKE) -f $(RT_MAKEFILE_DP)/Harmony.mk clean
- @printf "target_kmod.mk ----------------------------------------\n"
- @$(MAKE) -f $(RT_MAKEFILE_DP)/target_kmod.mk clean
+ @printf "target_kernel-module.mk ----------------------------------------\n"
+ @$(MAKE) -f $(RT_MAKEFILE_DP)/target_kernel-module.mk clean
<h1>After git clone</h1>
<p>
- Because git does not track certain directories (such as <RT-code>shared/third_party/</RT-code> and <RT-code>consumer/made/</RT-code>), a freshly cloned repository lacks external dependencies and consumable products. Team members must perform a few steps to populate these areas.
+ Because git does not track certain directories (such as <RT-code>shared/linked-project/</RT-code> and <RT-code>consumer/made/</RT-code>), a freshly cloned repository lacks external dependencies and consumable products. Team members must perform a few steps to populate these areas.
</p>
<h2>Third-party tools</h2>
<p>
- Harmony is language agnostic. When a project makes use of project-specific C, Python, NodeJS, Java, or other tools, the project administrator configures the project to expect these tools in the <RT-code>shared/third_party</RT-code> directory.
+ Harmony is language agnostic. When a project makes use of project-specific C, Python, NodeJS, Java, or other tools, the project administrator configures the project to expect these tools in the <RT-code>shared/linked-project</RT-code> directory.
</p>
<p>
- Because multiple team members will have to repeat the third-party install process after cloning a project, the administrator should carefully document the third party tools installation steps and place the resulting documents in the <RT-code>shared/document</RT-code> directory. (The most common installation method is to clone the third party tool next to the project, then to symbolic link it under <RT-code>shared/third_party/</RT-code>.)
+ Because multiple team members will have to repeat the third-party install process after cloning a project, the administrator should carefully document the third party tools installation steps and place the resulting documents in the <RT-code>shared/document</RT-code> directory. (The most common installation method is to clone the third party tool next to the project, then to symbolic link it under <RT-code>shared/linked-project/</RT-code>.)
</p>
<p>
If a person clones the project and does not set up third-party tools, commands will fall through the search path and perhaps find system-installed tools. Using system default tools is generally undesirable because each person who clones the project might be running different versions. This variation makes it harder for team members to coordinate and for consumers of the project work product to build functioning tools.
Files found in a directory named <RT-code>scratchpad</RT-code> are not tracked. Hence, a <RT-code>git clone</RT-code> will always return empty <RT-code>scratchpad</RT-code> directories. It is common for tools to place intermediate files on a scratchpad. It is also common for files to be staged on a scratchpad. Tools play nice and use subdirectories on the pad, so a person who is aware of those subdirectory names can use a scratchpad as a temporary directory. There is a scratchpad maintenance tool that comes with the Harmony, called unimaginatively, <RT-code>scratchpad</RT-code>. Pay attention as one of its commands is <RT-code>clear</RT-code>, and that deletes everything on the current directory's scratchpad.
</p>
<p>
- Third party software is installed under <RT-code>shared/third_party</RT-code>. Other files are said to be <RT-term>inherited</RT-term>, or to be <RT-term>customizations</RT-term>.
+ Third party software is installed under <RT-code>shared/linked-project</RT-code>. Other files are said to be <RT-term>inherited</RT-term>, or to be <RT-term>customizations</RT-term>.
</p>
<h1>Top-level repository layout</h1>
<h2>Untracked directories</h2>
<ol>
<li><RT-code>consumer/made/</RT-code></li>
- <li><RT-code>shared/third_party/</RT-code></li>
+ <li><RT-code>shared/linked-project/</RT-code></li>
<li><RT-code>**/scratchpad/</RT-code></li>
</ol>
│ ├── promote
│ └── setup
├── document
- │ ├── Introduction_to_Harmony.html
- │ ├── Product_Development_Roles_and_Workflow.html
+ │ ├── introduction_Harmony.html
+ │ ├── role-and-workflow_product-development.html
│ └── setup.js
├── LICENSE
</RT-code>
├── shared
│ ├── authored
│ ├── document
- │ │ ├── install_generic.org
- │ │ ├── install_Python.org
+ │ │ ├── installation_generic.org
+ │ │ ├── installation_Python.org
│ │ └── setup.js
│ ├── made
- │ ├── style_directory_dict.js
+ │ ├── dictionary_style-directory.js
│ ├── third_party
│ │ ├── RT-style-JS_public -> ../../../RT-style-JS_public/
│ │ └── upstream
│ └── test_routine.sh
├── RT_Format
│ ├── RT_Format
- │ ├── RT_Format.el
- │ ├── test_0_data.c
- │ └── test_1_data.py
+ │ ├── RT-formatter.el
+ │ ├── data_test-0.c
+ │ └── data_test-1.py
└── tool
└── setup
window.RT_REPO_ROOT = "../";
-document.write('<script src="' + window.RT_REPO_ROOT + 'shared/style_directory_dict.js"></script>');
-document.write('<script src="' + window.RT_REPO_ROOT + 'shared/third_party/RT-style-JS_public/consumer/release/RT/core/loader.js"></script>');
-document.write('<script src="' + window.RT_REPO_ROOT + 'shared/third_party/RT-style-JS_public/consumer/release/RT/core/body_visibility_hidden.js"></script>');
+document.write('<script src="' + window.RT_REPO_ROOT + 'shared/dictionary_style-directory.js"></script>');
+document.write('<script src="' + window.RT_REPO_ROOT + 'shared/linked-project/RT-style-JS_public/consumer/release/RT/core/loader.js"></script>');
+document.write('<script src="' + window.RT_REPO_ROOT + 'shared/linked-project/RT-style-JS_public/consumer/release/RT/core/body_visibility_hidden.js"></script>');
--- /dev/null
+#!/usr/bin/env python3
+# -*- mode: python; coding: utf-8; python-indent-offset: 2; indent-tabs-mode: nil -*-
+
+import os ,sys
+
+def process_file(file_path ,replacements) -> bool:
+ try:
+ with open(file_path ,"r" ,encoding="utf-8") as f:
+ content = f.read()
+ except UnicodeDecodeError:
+ return False
+
+ new_content = content
+ for old_str ,new_str in replacements:
+ new_content = new_content.replace(old_str ,new_str)
+
+ if new_content != content:
+ with open(file_path ,"w" ,encoding="utf-8") as f:
+ f.write(new_content)
+ return True
+ return False
+
+def work(root_dir: str) -> list[str]:
+ replacements = [
+ ("shared/linked-project" ,"shared/linked-project")
+ ,("linked-project/" ,"linked-project/")
+ ,("how-to_release.html" ,"how-to_release.html")
+ ,("naming_file-and-directory.html" ,"naming_file-and-directory.html")
+ ,("format_RT-code.html" ,"format_RT-code.html")
+ ,("format_RT-code.html" ,"format_RT-code.html")
+ ,("format_RT-code-Lisp.html" ,"format_RT-code-Lisp.html")
+ ,("single-file_C-module-and-namespace.html" ,"single-file_C-module-and-namespace.html")
+ ,("developer/tool/do-all" ,"developer/tool/do-all")
+ ,("introduction_Harmony.html" ,"introduction_Harmony.html")
+ ,("role-and-workflow_product-development.html" ,"role-and-workflow_product-development.html")
+ ,("role-and-workflow_product-development.html" ,"role-and-workflow_product-development.html")
+ ,("role-and-workflow_product-maintenance.html" ,"role-and-workflow_product-maintenance.html")
+ ,("installation_Python.org" ,"installation_Python.org")
+ ,("installation_generic.org" ,"installation_generic.org")
+ ,("dictionary_style-directory.js" ,"dictionary_style-directory.js")
+ ,("target_kernel-module.mk" ,"target_kernel-module.mk")
+ ,("tester/RT-formatter" ,"tester/RT-formatter")
+ ,("RT-formatter pipe" ,"RT-formatter pipe")
+ ,("RT-formatter pipe" ,"RT-formatter pipe")
+ ,("RT-formatter-buffer" ,"RT-formatter-buffer")
+ ,("RT-formatter-buffer" ,"RT-formatter-buffer")
+ ,("RT-formatter-buffer" ,"RT-formatter-buffer")
+ ,("RT-formatter-buffer" ,"RT-formatter-buffer")
+ ,("\"RTfmt\"" ,"\"RT-formatter\"")
+ ,("\"RTfmt0\"" ,"\"RT-formatter\"")
+ ,("\"RT_format\"" ,"\"RT-formatter\"")
+ ,("RT-formatter formatting" ,"RT-formatter formatting")
+ ,("RT-formatter failed" ,"RT-formatter failed")
+ ,("RT-formatter formatting" ,"RT-formatter formatting")
+ ,("RT-formatter failed" ,"RT-formatter failed")
+ ,("data_test-0.c" ,"data_test-0.c")
+ ,("data_test-1.py" ,"data_test-1.py")
+ ,("RT-formatter.el" ,"RT-formatter.el")
+ ,("RT-formatter.el" ,"RT-formatter.el")
+ ,("RT-formatter.el" ,"RT-formatter.el")
+ ]
+
+ changed_files = []
+
+ for dirpath ,dirnames ,filenames in os.walk(root_dir):
+ path_parts = dirpath.split(os.sep)
+ if ".git" in path_parts or "scratchpad" in path_parts:
+ continue
+
+ for fn in filenames:
+ if fn.endswith(".tar") or fn.endswith(".tar.gz") or fn.endswith(".zip"):
+ continue
+
+ fp = os.path.join(dirpath ,fn)
+ if process_file(fp ,replacements):
+ changed_files.append(fp)
+
+ return changed_files
+
+def CLI(argv=None) -> int:
+ root_dir = "."
+ print(f"Scanning '{root_dir}' for outdated internal references...")
+ changed = work(root_dir)
+
+ if not changed:
+ print("No references needed updating.")
+ else:
+ print(f"Updated internal references in {len(changed)} files:")
+ for fp in changed:
+ print(f" {fp}")
+
+ return 0
+
+if __name__ == "__main__":
+ sys.exit(CLI())
# Ordered list of renames: files first, then directories to preserve paths
substitutions = [
# Administrator
- ("administrator/document/Release_howto.html" ,"administrator/document/how-to_release.html")
+ ("administrator/document/how-to_release.html" ,"administrator/document/how-to_release.html")
# Developer
- ,("developer/document/File_directory_naming.html" ,"developer/document/naming_file-and-directory.html")
- ,("developer/document/RT_code_format.html" ,"developer/document/format_RT-code.html")
- ,("developer/document/Single-file_C_modules_and_namespaces.html" ,"developer/document/single-file_C-module-and-namespace.html")
- ,("developer/tool/do_all" ,"developer/tool/do-all")
+ ,("developer/document/naming_file-and-directory.html" ,"developer/document/naming_file-and-directory.html")
+ ,("developer/document/format_RT-code.html" ,"developer/document/format_RT-code.html")
+ ,("developer/document/single-file_C-module-and-namespace.html" ,"developer/document/single-file_C-module-and-namespace.html")
+ ,("developer/tool/do-all" ,"developer/tool/do-all")
# Top-level documents
- ,("document/Introduction_to_Harmony.html" ,"document/introduction_Harmony.html")
- ,("document/Product-development_roles-and-workflow.html" ,"document/role-and-workflow_product-development.html")
- ,("document/Product-maintenance_roles-and-workflow.html" ,"document/role-and-workflow_product-maintenance.html")
+ ,("document/introduction_Harmony.html" ,"document/introduction_Harmony.html")
+ ,("document/role-and-workflow_product-development.html" ,"document/role-and-workflow_product-development.html")
+ ,("document/role-and-workflow_product-maintenance.html" ,"document/role-and-workflow_product-maintenance.html")
# Shared tools and documents
- ,("shared/document/install_Python.org" ,"shared/document/installation_Python.org")
- ,("shared/document/install_generic.org" ,"shared/document/installation_generic.org")
- ,("shared/style_directory_dict.js" ,"shared/dictionary_style-directory.js")
+ ,("shared/document/installation_Python.org" ,"shared/document/installation_Python.org")
+ ,("shared/document/installation_generic.org" ,"shared/document/installation_generic.org")
+ ,("shared/dictionary_style-directory.js" ,"shared/dictionary_style-directory.js")
,("shared/tool/RTfmt" ,"shared/tool/RT-formatter")
- ,("shared/tool/RTfmt.el" ,"shared/tool/RT-formatter.el")
- ,("shared/tool/makefile/target_kmod.mk" ,"shared/tool/makefile/target_kernel-module.mk")
+ ,("shared/tool/RT-formatter.el" ,"shared/tool/RT-formatter.el")
+ ,("shared/tool/makefile/target_kernel-module.mk" ,"shared/tool/makefile/target_kernel-module.mk")
# Tester files (referenced by the old directory name before it is renamed)
- ,("tester/RT_format/RT_Format.el" ,"tester/RT_format/RT-formatter.el")
- ,("tester/RT_format/RT_format.el" ,"tester/RT_format/RT-formatter_alt.el")
- ,("tester/RT_format/RTfmt" ,"tester/RT_format/RT-formatter")
- ,("tester/RT_format/RTfmt.el" ,"tester/RT_format/RT-formatter_script.el")
- ,("tester/RT_format/RTfmt_with_compare" ,"tester/RT_format/RT-formatter_with-compare")
- ,("tester/RT_format/RTfmt_with_compare.el" ,"tester/RT_format/RT-formatter_with-compare.el")
- ,("tester/RT_format/test_0_data.c" ,"tester/RT_format/data_test-0.c")
- ,("tester/RT_format/test_1_data.py" ,"tester/RT_format/data_test-1.py")
+ ,("tester/RT-formatter/RT-formatter.el" ,"tester/RT-formatter/RT-formatter.el")
+ ,("tester/RT-formatter/RT-formatter.el" ,"tester/RT-formatter/RT-formatter_alt.el")
+ ,("tester/RT-formatter/RTfmt" ,"tester/RT-formatter/RT-formatter")
+ ,("tester/RT-formatter/RT-formatter.el" ,"tester/RT-formatter/RT-formatter_script.el")
+ ,("tester/RT-formatter/RTfmt_with_compare" ,"tester/RT-formatter/RT-formatter_with-compare")
+ ,("tester/RT-formatter/RTfmt_with_compare.el" ,"tester/RT-formatter/RT-formatter_with-compare.el")
+ ,("tester/RT-formatter/data_test-0.c" ,"tester/RT-formatter/data_test-0.c")
+ ,("tester/RT-formatter/data_test-1.py" ,"tester/RT-formatter/data_test-1.py")
# Directories
- ,("shared/third_party" ,"shared/linked-project")
- ,("tester/RT_format" ,"tester/RT-formatter")
+ ,("shared/linked-project" ,"shared/linked-project")
+ ,("tester/RT-formatter" ,"tester/RT-formatter")
]
for src ,dst in substitutions:
# setup tools
#
- export PYTHON_HOME="${REPO_HOME}/shared/third_party/Python"
+ export PYTHON_HOME="${REPO_HOME}/shared/linked-project/Python"
if [[ ":${PATH}:" != *":${PYTHON_HOME}/bin:"* ]]; then
export PATH="${PYTHON_HOME}/bin:${PATH}"
fi
- RT_gcc="${REPO_HOME}/shared/third_party/RT_gcc/release"
+ RT_gcc="${REPO_HOME}/shared/linked-project/RT_gcc/release"
if [[ ":${PATH}:" != *":${RT_gcc}:"* ]]; then
export PATH="${RT_gcc}:${PATH}"
fi
window.StyleRT_namespaces = {
- "RT": window.RT_REPO_ROOT + "shared/third_party/RT-style-JS_public/consumer/release/RT"
+ "RT": window.RT_REPO_ROOT + "shared/linked-project/RT-style-JS_public/consumer/release/RT"
,"Project": window.RT_REPO_ROOT + "shared/authored/style"
};
This document describes how to install a project-local Python environment under:
#+begin_src bash
-shared/third_party/Python
+shared/linked-project/Python
#+end_src
* Precondition
2. Create the virtual environment:
#+begin_src bash
- python3 -m venv "$REPO_HOME/shared/third_party/Python"
+ python3 -m venv "$REPO_HOME/shared/linked-project/Python"
#+end_src
3. Activate it temporarily to install required packages:
#+begin_src bash
- source "$REPO_HOME/shared/third_party/Python/bin/activate"
+ source "$REPO_HOME/shared/linked-project/Python/bin/activate"
pip install --upgrade pip
pip install pytest # Add any shared packages here
deactivate
Disable the default scripts by renaming them:
#+begin_src bash
- mv "$REPO_HOME/shared/third_party/Python/bin/activate" \
- "$REPO_HOME/shared/third_party/Python/bin/activate_deprecated"
+ mv "$REPO_HOME/shared/linked-project/Python/bin/activate" \
+ "$REPO_HOME/shared/linked-project/Python/bin/activate_deprecated"
#+end_src
This ensures that accidental sourcing of Python’s =activate= script won't override Harmony's environment setup.
5. Verify installation:
#+begin_src bash
- ls "$REPO_HOME/shared/third_party/Python/bin/python3"
+ ls "$REPO_HOME/shared/linked-project/Python/bin/python3"
#+end_src
The binary should exist and report a working Python interpreter when run.
This is the generic install.org doc that comes with the skeleton.
-1. $REPO_HOME/shared/third_party/.gitignore:
+1. $REPO_HOME/shared/linked-project/.gitignore:
*
!/.gitignore
3. for the base install
- cd $REPO_HOME/shared/third_party
+ cd $REPO_HOME/shared/linked-project
do whatever it takes to install tool, as examples:
git clone <tool_path>
tar -xzf ../upstream/tar
# example tool names: 'RT_gcc' 'RT-project share` etc.
tool=<tool-name>
- tool_dpath="$REPO_HOME/shared/third_party/$tool"
+ tool_dpath="$REPO_HOME/shared/linked-project/$tool"
patch_dpath="$REPO_HOME/shared/patch/"
window.RT_REPO_ROOT = "../../";
-document.write('<script src="' + window.RT_REPO_ROOT + 'shared/style_directory_dict.js"></script>');
-document.write('<script src="' + window.RT_REPO_ROOT + 'shared/third_party/RT-style-JS_public/consumer/release/RT/core/loader.js"></script>');
-document.write('<script src="' + window.RT_REPO_ROOT + 'shared/third_party/RT-style-JS_public/consumer/release/RT/core/body_visibility_hidden.js"></script>');
+document.write('<script src="' + window.RT_REPO_ROOT + 'shared/dictionary_style-directory.js"></script>');
+document.write('<script src="' + window.RT_REPO_ROOT + 'shared/linked-project/RT-style-JS_public/consumer/release/RT/core/loader.js"></script>');
+document.write('<script src="' + window.RT_REPO_ROOT + 'shared/linked-project/RT-style-JS_public/consumer/release/RT/core/body_visibility_hidden.js"></script>');
Commands:
RTfmt write [--lisp] <file ...> Format files in place (rewrite originals)
RTfmt copy [--lisp] <file ...> Save backups as <file>~ then format originals
- RTfmt pipe [--lisp] Read from stdin, write to stdout
+ RT-formatter pipe [--lisp] Read from stdin, write to stdout
RTfmt self_test Run built-in tests
RTfmt version Show tool version
RTfmt help | --help Show usage
-(defun RTfmt0-buffer ()
+(defun RT-formatter-buffer ()
"Format the current buffer using RTfmt0."
(interactive)
- (if (not (executable-find "RTfmt0"))
+ (if (not (executable-find "RT-formatter"))
(message "Error: RTfmt0 executable not found in PATH.")
(let ((temp-buffer (generate-new-buffer " *RTfmt0*"))
(args (list "pipe")))
(unwind-protect
(let ((exit-code (apply #'call-process-region
(point-min) (point-max)
- "RTfmt0"
+ "RT-formatter"
nil temp-buffer nil
args)))
(if (zerop exit-code)
(progn
;; Applies a non-destructive diff, preserving point and markers natively
(replace-buffer-contents temp-buffer)
- (message "RTfmt0 formatting successful."))
- (message "RTfmt0 failed with exit code %s. Buffer unchanged." exit-code)))
+ (message "RT-formatter formatting successful."))
+ (message "RT-formatter failed with exit code %s. Buffer unchanged." exit-code)))
(kill-buffer temp-buffer)))))
-# make/target_kmod.mk — build *.kmod.c as kernel modules (single-pass, kmod-only)
+# make/target_kernel-module.mk — build *.kmod.c as kernel modules (single-pass, kmod-only)
# invoked from $REPO_HOME/<role>
# version 1.4
# Project wide Tool setup
#
-export VIRTUAL_ENV="$REPO_HOME/shared/third_party/Python"
+export VIRTUAL_ENV="$REPO_HOME/shared/linked-project/Python"
export PYTHON_HOME="$VIRTUAL_ENV"
unset PYTHONHOME
(interactive)
(save-excursion
( shell-command-on-region(point-min)(point-max)
- "RT_format pipe" t t)) )
+ "RT-formatter pipe" t t)) )
-(defun RTfmtt-buffer ()
+(defun RT-formatter-buffer ()
"Format the current buffer using RTfmt."
(interactive)
- (if (not (executable-find "RTfmt"))
+ (if (not (executable-find "RT-formatter"))
(message "Error: RTfmt executable not found in PATH.")
(let ((temp-buffer (generate-new-buffer " *RTfmt*"))
(args (list "pipe")))
(unwind-protect
(let ((exit-code (apply #'call-process-region
(point-min) (point-max)
- "RTfmt"
+ "RT-formatter"
nil temp-buffer nil
args)))
(if (zerop exit-code)
(save-excursion
(delete-region (point-min) (point-max))
(insert formatted-text))
- (message "RTfmt formatting successful."))
- (message "RTfmt failed with exit code %s. Buffer unchanged." exit-code)))
+ (message "RT-formatter formatting successful."))
+ (message "RT-formatter failed with exit code %s. Buffer unchanged." exit-code)))
(kill-buffer temp-buffer)))))
;; ( defun RT-format-buffer()
;; (interactive)
;; (save-excursion
;; ( shell-command-on-region(point-min)(point-max)
-;; "RTfmt pipe" t t)) )
+;; "RT-formatter pipe" t t)) )
-(defun RTfmt-buffer ()
+(defun RT-formatter-buffer ()
"Format the current buffer using RTfmt."
(interactive)
- (if (not (executable-find "RTfmt"))
+ (if (not (executable-find "RT-formatter"))
(message "Error: RTfmt executable not found in PATH.")
(let ((temp-buffer (generate-new-buffer " *RTfmt*"))
(args (list "pipe")))
(unwind-protect
(let ((exit-code (apply #'call-process-region
(point-min) (point-max)
- "RTfmt"
+ "RT-formatter"
nil temp-buffer nil
args)))
(if (zerop exit-code)
(progn
;; Applies a non-destructive diff, preserving point and markers natively
(replace-buffer-contents temp-buffer)
- (message "RTfmt formatting successful."))
- (message "RTfmt failed with exit code %s. Buffer unchanged." exit-code)))
+ (message "RT-formatter formatting successful."))
+ (message "RT-formatter failed with exit code %s. Buffer unchanged." exit-code)))
(kill-buffer temp-buffer)))))
Commands:
RTfmt write [--lisp] <file ...> Format files in place (rewrite originals)
RTfmt copy [--lisp] <file ...> Save backups as <file>~ then format originals
- RTfmt pipe [--lisp] Read from stdin, write to stdout
+ RT-formatter pipe [--lisp] Read from stdin, write to stdout
RTfmt self_test Run built-in tests
RTfmt version Show tool version
RTfmt help | --help Show usage
-(defun RTfmt-buffer ()
+(defun RT-formatter-buffer ()
"Format the current buffer using RTfmt."
(interactive)
- (if (not (executable-find "RTfmt"))
+ (if (not (executable-find "RT-formatter"))
(message "Error: RTfmt executable not found in PATH.")
(let ((temp-buffer (generate-new-buffer " *RTfmt*"))
(args (list "pipe")))
(unwind-protect
(let ((exit-code (apply #'call-process-region
(point-min) (point-max)
- "RTfmt"
+ "RT-formatter"
nil temp-buffer nil
args)))
(if (zerop exit-code)
(if (= (compare-buffer-substrings nil nil nil temp-buffer nil nil) 0)
(message "RTfmt: Already perfectly formatted.")
(replace-buffer-contents temp-buffer)
- (message "RTfmt formatting successful."))
- (message "RTfmt failed with exit code %s. Buffer unchanged." exit-code)))
+ (message "RT-formatter formatting successful."))
+ (message "RT-formatter failed with exit code %s. Buffer unchanged." exit-code)))
(kill-buffer temp-buffer)))))