External Programs and Filters: Difference between revisions
No edit summary |
|||
Line 191: | Line 191: | ||
|} | |} | ||
=== Using a Python programme as external filter === | === Using a Python programme as an external filter === | ||
For this example we'll use a simplified programme to create a filename out of a short chunk of text like a title or a headline. Due to we'll have an input as well an output as pipes, we need the following basic structure: | For this example we'll use a simplified programme to create a filename out of a short chunk of text like a title or a headline. Due to we'll have an input as well an output as pipes, we need the following basic structure: | ||
Latest revision as of 08:37, 9 April 2021
External programmes can be called from within Bluefish. The currently opened file can be given as a parameter. External programmes are divided into three parts:
- external commands: With an external command you can just open a file in an other programme, e.g. a browser. If that programme changed the file, Bluefish will warn you some moments later.
- external filters: In contrast to external commands, external filters give a return value.
- output box: Programmes in that category opens also the output box at the bottom of Bluefish.
By default, for all three are already defined commands.
|
External commands[edit]
External commands are mostly browsers. The external commands can be reached through Tools → Commands. With the Preview in Browser button on the toolbar you can open the default browser, which is also an external programme.
Customising external commands[edit]
For customising external commands you have to open the Preferences dialog either through Edit → Preferences or the Preferences button on the toolbar. Select External commands in the left panel.
There are four columns for editing external commands:
- Enabled: If this is checked, you are able to reach that command through Tools → Commands.
- Label: The name of the command in menu.
- Command: Here is the command.
- Default browser: The checked programme can accessed through the Preview in Browser button at the toolbar.
These are the options for external commands:
Input options | |
| | start with a | to send the input to the standard input |
%f | local file name (available for local files) |
%i | temporary file name for input, equals %f if the document is not modified and local |
Other options | |
%a | additional arguments that will be asked when this filter is activated |
%c | local directory of file (available for local files) |
%n | file name without path (available for all titled files) |
%u | URL (available for all titled files) |
%p | preview URL if basedir and preview dir are set in project settings, else identical to %u |
Predefined external commands[edit]
Name | Command | Description |
chmod a+x | chmod a+x %f | File f will be executable for all users on Unix-like system. |
Firefox | firefox 'firefox '%p'& | |
Chromium | chromium-browser '%p'& | The open source base for the Chrome browser. |
Opera | opera -remote 'openURL(%p)' || opera '%p'& | |
Konqueror | konqueror '%p'& | Browser for the KDE desktop environment |
Links2 | links2 -g '%p'& | A text based browser |
Epiphany | epiphany-browser -n '%p'& | Browser created by the GNOME project |
External filters[edit]
The external commands can be reached through Tools → Filters.
Customising external filters[edit]
For customising external commands you have to open the Preferences dialog either through Edit → Preferences or the Preferences button on the toolbar. Select External filters in the left panel.
There are three columns for editing external filters:
- Enabled: If this is checked, you are able to reach that filter through Tools → Filters.
- Label: The name of the filter in menu.
- Command: Here is the filter itself.
These are the options for external filters:
Input options | |
| | start with a | to send the input to the standard input |
%f | local file name (requires local file, cannot operate on selection) |
%i | temporary file name for input |
Output options | |
| | end with a | to read the output from the standard output |
%o | temporary file name |
%t | temporary file name for both input and output (for in-place-editing filters, cannot operate on selection) |
Other options | |
%a | additional arguments that will be asked when this filter is activated |
%c | local directory of file (requires local file) |
%n | file name without path (available for all titled files) |
%u | URL (available for all titled files) |
%p | preview URL if basedir and preview dir are set in project settings, else identical to %u |
Using a Python programme as an external filter[edit]
For this example we'll use a simplified programme to create a filename out of a short chunk of text like a title or a headline. Due to we'll have an input as well an output as pipes, we need the following basic structure:
import sys a = sys.stdin.read() sys.stdout.write(a)
Within that basic structure we include the replacements for our task:
import sys filename = sys.stdin.read() filename = filename.replace(" ", "-").lower() filename = filename.replace("/", "-") #Further replacements for e. g. 'ä' sys.stdout.write(filename)
Save this script at a suitable place and open Preferences and select External filters in the left panel to add the script to the filters list. Give the entry a suitable name like toFileName and as command
|python3 /path/to/scripts/toFileName.py|
Predefined external filters[edit]
Name | Command | Description |
Sort | |sort| | sort is a sorting program for Unix-like systems. |
Sort/Uniq | |sort|uniq| | uniq removes duplicates after the input is sorted by sort. It is also a program for Unix-like systems included in mysys. |
Reverse lines | |tac| | |
Dos2unix | |dos2unix| | Converts DOS line breaks to Unix line breaks. It is also a program for Unix-like systems included in mysys. |
Tidy HTML | |tidy -utf8| | Improves the HTML with tidy program. |
Tidy convert in XHTML | |tidy -utf8 -i -w 80 -c -q -asxhtml| | Converts HTML to XHTML with tidy. |
Tidy HTML (perltidy) | |perltidy -b| | (strawberry) |
Strip empty lines | |egrep -v '^[ ]*$'| | Deleting empty lines using regular expressions with egrep. |
Render HTML in Text | lynx -force_html -dump %i | | |
PHP Beautifier | |php_beautifier -t| | Improves PHP code with indentation of one tab. |
Javascript Minify with jsmin | |/usr/share/bluefish/jsmin.py| | Minifies Javascript code with a Python script, which is provided by bluefish. |
CSS Minify with cssmin | |/usr/share/bluefish/cssmin.py| | Minifies CSS code with a Python script, which is provided by bluefish. |
CSS tidy | |csstidy --preserve_css=true -| | Optimises CSS code. |
Output box[edit]
The external commands can be reached through Tools → Outputbox.
Customising output box[edit]
For customising external commands you have to open the Preferences dialog either through Edit → Preferences or the Preferences button on the toolbar. Select Output parsers in the left panel.
There are seven columns for editing external filters:
- Enabled: If this is checked, you are able to reach that command through Tools → Filters.
- Name: The name of the command in menu.
- Pattern: Here is a regexp pattern send with the command.
- File #
- Line #
- Output #
- Command: Here is the command.
These are the options for the output box:
Input options | |
| | start with a | to send the input to the standard input |
%f | local file name (requires local file, cannot operate on selection) |
%i | temporary file name for input |
Output options | |
| | end with a | to read the output from the standard output |
%o | temporary file name |
%t | temporary file name for both input and output (for in-place-editing "filters, cannot operate on selection) |
Other options | |
%a | additional arguments that will be asked when this filter is activated |
%c | local directory of file (requires local file) |
%n | file name without path (available for all titled files) |
%u | URL (available for all titled files) |
%p | preview URL if basedir and preview dir are set in project settings, else identical to %u |
Predefined output parsers[edit]
Name | Command | Description |
make | |cd %c && make| | Runs the make build tool. |
weblint HTML-Check | |weblint '%f'| | |
tidy HTML-Check | |tidy -qe '%i'| | |
javac | |javac '%f'| | Compiles Java code. A JDK has to be installed. |
xmllint XML-Check | |xmllint --noout --valid '%f'| | |
PHP | |php '%f'| | Runs a PHP script. |
PHP syntax check | |php -l -q -f '%f'| | Cecks syntax and runs the PHP script. |
Perl syntax check | |perl -c '%f'| | Checks only the syntax of the Perl script. |
PHP Codesniffer | |phpcs --report=emacs '%f'| | |
pylint | |pylint '%f'| |