Emacs Lisp: stockpile.el calculates volumes of stockpiles, heaps, piles, mounds
This set of function is calculating stockpile volumes depending of sizes of piles, mounds, or heaps. Engineers may be able to dissect various parts of stockpiles and then calculate their volumes by using these functions.
We use those functions in the business consulting program Start Your Own Gold Mine that is as of 2019 provided mostly in East African countries Uganda, Rwanda, Kenya and Tanzania. Many piles and heaps of gold bearing ores are standing around and their volumes need to be calculated to estimate the profitability. Gold prospecting and sampling of the heap and accurate determination of its specific density is also used to calculate estimates of gold in such stockpiles. Yet, these Emacs Lisp functions could be used for other engineering purposes.
;;; stockpile.el --- Stockpile volume calculations
;; Copyright (C) 2016-2020 by Jean Louis
;; Author: Jean Louis <bugs@gnu.support>
;; Version: 1.3
;; Package-Requires: ((rcd-utilities))
;; Keywords: convenience
;; URL: https://www.startyourowngoldmine.com/
;; This file is not part of GNU Emacs.
;; This program is free software: you can redistribute it and/or
;; modify it under the terms of the GNU General Public License as
;; published by the Free Software Foundation, either version 3 of the
;; License, or (at your option) any later version.
;;
;; This program is distributed in the hope that it will be useful, but
;; WITHOUT ANY WARRANTY; without even the implied warranty of
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
;; General Public License for more details.
;;
;; You should have received a copy of the GNU General Public License
;; along with this program. If not, see <http://www.gnu.org/licenses/>.
;;; Commentary:
;;
;; This program is useful to calculate volumes stock piles of sand,
;; gravel, possibly timber, bricks or other goods. It helps engineers
;; to sell the tailings
;;
;; References:
;; <https://depts.washington.edu/nwfire/piles/support/pile_proc.pdf>
;; <https://www.aqua-calc.com/calculate/volume-truncated-pyramid>
;; <https://www.calculatorsoup.com/calculators/geometry-solids/surfacearea.php#calculationImage>
;;
;; The abbreviation spv relates to Stockpile Volume
;;
;; TODO: For each stockpile shape to make SVG files.
;;; Change Log:
;; 2020-10-25 Jean Louis <bugs@gnu.support>
;;
;; * stockpile.el: improved several docstrings
;;; Code:
(require 'rcd-utilities)
(defun spv-half-sphere (height)
"Return volume for proper half-sphere stockpile.
HEIGHT represents the height or radius of the half-sphere of a
stockpile or part of stockpile. It is also known as hemisphere
shape."
(let ((volume (/ (* 2 float-pi (expt height 3)) 3)))
volume))
(defun spv-half-sphere-i (height)
"Return calculation for proper half-sphere stockpile interactively.
HEIGHT represents the height or radius of the half-sphere shapes
stockpile.
Message is displayed in the minibuffer and copied in memory for
easy insertion."
(interactive "nHeight of half-sphere: ")
(let* ((volume (spv-half-sphere height))
(volume (format "%.2f" volume))
(message (format "Volume of half-sphere stockpile with height of %s m is %s ㎥." height volume)))
(kill-new message)
(message message)))
(defun spv-paraboloid (height width)
"Return volume for paraboloid stockpile for WIDTH and HEIGHT."
(let ((volume (/ (* float-pi height (expt width 2)) 8)))
volume))
(defun spv-paraboloid-i (height width)
"Return volume for paraboloid stockpile for WIDTH and HEIGHT.
This is interactive function. A message with the calculation
statement is displayed in the minibuffer and copied in memory for
easy insertion."
(interactive "nHeight of paraboloid: \nnWidth of paraboloid: ")
(let* ((volume (spv-paraboloid height width))
(volume (format "%.2f" volume))
(message (format "Volume of paraboloid stockpile with height of %s m and width of %s m is %s ㎥." height width volume)))
(kill-new message)
(message message)))
(defun spv-half-cylinder (height width length)
"Return the volume of half-cylinder stockpile.
It requires HEIGHT, WIDTH and LENGTH of a stockpile."
(let ((volume (/ (* float-pi height width length) 4)))
volume))
(defun spv-half-cylinder-i (height width length)
"Return the volume of half-cylinder stockpile interactively.
It requires HEIGHT, WIDTH and LENGTH of the stockpile. A message
with the calculation statement is displayed in the minibuffer and
copied in memory for easy insertion."
(interactive "nHeight of half-cylinder: \nnWidth of half-cylinder: \nnLength of half-cylinder: ")
(let* ((volume (spv-half-cylinder height width length))
(volume (format "%.2f" volume))
(message (format "Volume of half-cylinder stockpile with height of %s m, width of %s m and length of %s m is %s ㎥." height width length volume)))
(kill-new message)
(message message)))
(defun spv-half-frustum-of-a-cone-1 (height-1 height-2 length)
"Return volume of half frustum of a cone stockpile, version 1.
Requires arguments HEIGHT-1 as first height of the stockpile,
HEIGHT-2 as second height and LENGTH of the stockpile."
(let* ((heights (+ (expt height-1 2) (expt height-2 2) (* height-1 height-2)))
(volume (/ (* float-pi length heights) 6)))
volume))
(defun spv-half-frustum-of-a-cone-1-i (height-1 height-2 length)
"Return volume of half frustum of a cone stockpile, version 1.
This is interactive function that will ask user for first
HEIGHT-1 and second HEIGHT-2 and LENGTH of the stockpile.
A message with the calculation statement is displayed in the
minibuffer and copied in memory for easy insertion."
(interactive "nFirst height of half-frustum of a cone: \nnSecond height of half-frustum of a cone: \nnLength of half-frustum of a cone: ")
(let* ((volume (spv-half-frustum-of-a-cone-1 height-1 height-2 length))
(volume (format "%.2f" volume))
(message (format "Volume of half-frustum of a cone stockpile with first height of %s m, second height of %s m and length of %s m is %s ㎥." height-1 height-2 length volume)))
(kill-new message)
(message message)))
(defun spv-half-frustum-of-a-cone-2 (width-1 width-2 length)
"Return volume of half frustum of a cone stockpile, version 2.
Requires arguments WIDTH-1 and WIDTH-2 with the LENGTH of the
stockpile. See references"
(let* ((widths (+ (expt width-1 2) (expt width-2 2) (* width-1 width-2)))
(volume (/ (* float-pi length widths) 24)))
volume))
(defun spv-half-frustum-of-a-cone-2-i (width-1 width-2 length)
"Return volume of half frustum of a cone stockpile, version 2.
It asks user for first WIDTH-1 and second WIDTH-2 with the LENGTH
of the stockpile. See references. A message with the
calculation statement is displayed in the minibuffer and copied
in memory for easy insertion."
(interactive "nFirst width of half-frustum of a cone: \nnSecond width of half-frustum of a cone: \nnLength of half-frustum of a cone: ")
(let* ((volume (spv-half-frustum-of-a-cone-2 width-1 width-2 length))
(volume (format "%.2f" volume))
(message (format "Volume of half-frustum of a cone stockpile with first width of %s m, second width of %s m and length of %s m is %s ㎥." width-1 width-2 length volume)))
(kill-new message)
(message message)))
(defun spv-half-frustum-of-a-cone-with-rounded-ends (width-1 width-2 length)
"Return volume of half frustum of a cone stockpile with rounded ends.
Requires arguments WIDTH-1 and WIDTH-2 with the LENGTH of the
stockpile."
(let* ((widths (+ (expt width-1 2) (expt width-2 2) (* width-1 width-2)))
(volume (* float-pi (/ (+ (* length widths) width-1 width-2) 24))))
volume))
(defun spv-half-frustum-of-a-cone-with-rounded-ends-i (width-1 width-2 length)
"Return volume of half frustum of a cone stockpile with rounded end.
The interactive function asks users for the first WIDTH-1 and
second WIDTH-2 with the LENGTH of the stockpile. A message with
the calculation statement is displayed in the minibuffer and
copied in memory for easy insertion."
(interactive "nFirst width of half-frustum of a cone with rounded ends: \nnSecond width of half-frustum of a cone with rounded ends: \nnLength of half-frustum of a cone with rounded ends: ")
(let* ((volume (spv-half-frustum-of-a-cone-with-rounded-ends width-1 width-2 length))
(volume (format "%.2f" volume))
(message (format "Volume of half-frustum of a cone with rounded ends stockpile with first width of %s m, second width of %s m and length of %s m is %s ㎥." width-1 width-2 length volume)))
(kill-new message)
(message message)))
(defun spv-half-ellipsoid (height width length)
"Return volume of half ellipsoid stockpile.
Argument HEIGHT is height of stockpile.
Argument WIDTH represents width of the stockpile.
Argument LENGTH represents length of the stockpile."
(let ((volume (/ (* float-pi height width length) 6)))
volume))
(defun spv-half-ellipsoid-i (height width length)
"Return calculation statement for volume of half ellipsoid stockpile.
User enters HEIGHT, WIDTH and LENGTH of the ellipsoid shaped
stockpile. A message with the calculation statement is displayed
in the minibuffer and copied in memory for easy insertion."
(interactive "nHeight of half-ellipsoid stockpile: \nnWidth of half-ellipsoid stockpile: \nnLength of half-ellipsoid stockpile: ")
(let* ((volume (spv-half-ellipsoid height width length))
(volume (format "%.2f" volume))
(message (format "Volume of half-ellipsoid stockpile with height of %s m, width of %s m and length of %s m is %s ㎥." height width length volume)))
(kill-new message)
(message message)))
(defun spv-irregular-solid (height-1 height-2 width-1 width-2 length-1 length-2)
"Return volume of irregular solid stockpil
Argument HEIGHT-1 is first height.e."
(let* ((volume (/ (* (+ length-1 length-2) (+ width-1 width-2) (+ height-1 height-2)) 8)))
volume))
(defun spv-irregular-solid-i (height-1 height-2 width-1 width-2 length-1 length-2)
"Return volume of irregular solid stockpile.
User interactively enters first HEIGHT-1 and WIDTH-1, then second
HEIGHT-2 and WIDTH-2 with LENGTH-1 and LENGTH-2.
A message with the calculation statement is displayed in the
minibuffer and copied in memory for easy insertion."
(interactive "nFirst height of irregular solid stockpile: \nnSecond height of irregular solid stockpile: \nnFirst width of irregular solid stockpile: \nnSecond width of irregular solid stockpile: \nnFirst length of irregular solid stockpile: \nnSecond length of irregular solid stockpile: ")
(let* ((volume (spv-irregular-solid height-1 height-2 width-1 width-2 length-1 length-2))
(volume (format "%.2f" volume))
(message (format "Volume of irregular solid stockpile with first height of %s m and width of %s m, and second height of %s m and width of %s m, and first length of %s and second length of %s m is %s ㎥." height-1 width-1 height-2 width-2 length-1 length-2 volume)))
(kill-new message)
(message message)))
(defun spv-truncated-pyramid (bottom-width bottom-length top-width top-length height)
"Return volume of a truncated pyramid.
Truncated pyramid or frustum of a pyramid is a pyramid whose
vertex is cut away by a plane parallel to the base. Formula
obtained from:
https://www.aqua-calc.com/calculate/volume-truncated-pyramid
Argument BOTTOM-WIDTH refers to bottom width of the stockpile."
(let* ((base (* bottom-width bottom-length))
(top (* top-width top-length))
(volume (* (/ 1 6.0) height (+ base (* (+ bottom-width top-width) (+ bottom-length top-length)) top))))
volume))
(defun spv-truncated-pyramid-i (bottom-width bottom-length top-width top-length height)
"Return volume of a truncated pyramid.
Truncated pyramid or frustum of a pyramid is a pyramid whose
vertex is cut away by a plane parallel to the base. Formula
obtained from:
https://www.aqua-calc.com/calculate/volume-truncated-pyramid.
User enters interactively BOTTOM-WIDTH, BOTTOM-LENGTH, TOP-WIDTH
and TOP-LENGTH with the HEIGHT of stockpile. A message with the
calculation statement is displayed in the minibuffer and copied
in memory for easy insertion."
(interactive "nBottom width: \nnBottom length: \nnTop width: \nnTop Length: \nnHeight: ")
(let* ((volume (spv-truncated-pyramid bottom-width bottom-length top-width top-length height))
(volume (format "%.2f" volume))
(message (format "Volume of truncated pyramid or frustum of a pyramid with bottom width of %s m and bottom length of %s m, with top width of %s m and top length of %s m and height of %s m is %s ㎥." bottom-width bottom-length top-width top-length height volume)))
(kill-new message)
(message message)))
(defun spv-conical-frustum (bottom-radius top-radius central-height)
"Return volume of a conical frustum shape.
From:
https://www.calculatorsoup.com/calculators/geometry-solids/surfacearea.php#calculationImage
Argument BOTTOM-RADIUS is radius at the bottom of the stockpile."
(let ((volume (* (/ 1 3.0) float-pi central-height (+ (expt top-radius 2) (expt bottom-radius 2) (* bottom-radius top-radius)))))
volume))
(defun spv-conical-frustum-i (bottom-radius top-radius central-height)
"Insert the snippet of volume calculation of of a conical frustum shape.
From:
https://www.calculatorsoup.com/calculators/geometry-solids/surfacearea.php#calculationImage
Argument BOTTOM-RADIUS is radius at the bottom of the stockpile."
(interactive "nBottom radius: \nnTop radius: \nnCentral height: ")
(let* ((volume (spv-conical-frustum bottom-radius top-radius central-height))
(volume (format "%.2f" volume))
(message (format "Volume of conical frustum with the bottom radius being %s m, top radius being %s m and central height of %s m is %s ㎥." bottom-radius top-radius central-height volume)))
(kill-new message)
(message message)))
(defun spv-cone (radius height)
"Return the volume of a cone.
From:
https://www.calculatorsoup.com/calculators/geometry-solids/volume.php
Argument RADIUS is radius at the bottom of the stockpile."
(let ((volume (* (/ 1 3.0) float-pi (expt radius 2) height)))
volume))
(defun spv-cone-i (radius height)
"Insert the snippet with the calculation of a cone volum
Argument RADIUS is radius at the bottom of the stockpile.e."
(interactive "nRadius of a cone: \nnHeight of a cone: ")
(let* ((volume (spv-cone radius height))
(volume (format "%.2f" volume))
(message (format "Volume of a cone with radius of %s m and height of %s m is %s ㎥." radius height volume)))
(kill-new message)
(message message)))
(defun spv-cylinder (radius height)
"Return the volume of a cylinder by using RADIUS and HEIGHT.
Argument RADIUS refers to the bottom radius of the stockpile."
(let ((volume (* float-pi (expt radius 2) height)))
volume))
(defun spv-cylinder-i (radius height)
"Insert the volume of a cylinder by providing its radius
and height"
(interactive "nRadius of cylinder: \nnHeight of cylinder: ")
(let* ((volume (spv-cylinder radius height))
(volume (format "%.2f" volume))
(message (format "Volume of a cylinder with radius of %s m and height of %s m is %s ㎥." radius height volume)))
(kill-new message)
(message message)))
;;;###autoload
(defun stockpile ()
"Interactively chooses one of stockpile volume calculation functions.
User interactively enters specific parameters of the selected
stockpile shape such as its widths, heights or lenghts and then
receives a message with the stockpile volume calculation.
Message is stored or killed in the temporary memory for easy
insertion or yanking into the buffer."
(interactive)
(let ((list '(("Halph sphere" . 'spv-half-sphere-i)
("Paraboloid" . 'spv-paraboloid-i)
("Half cylinder" . 'spv-half-cylinder-i)
("Half frustum of a cone (1)" . 'spv-half-frustum-of-a-cone-1-i)
("Half frustum of a cone (2)" . 'spv-half-frustum-of-a-cone-2-i)
("Half frustum of a cone with rounded ends" . 'spv-half-frustum-of-a-cone-with-rounded-ends-i)
("Half ellipsoid" . 'spv-half-ellipsoid-i)
("Irregular solid" . 'spv-irregular-solid-i)
("Truncated pyramid" . 'spv-truncated-pyramid-i)
("Conical frustum" . 'spv-conical-frustum-i)
("Cone" . 'spv-cone-i)
("Cylinder" . 'spv-cylinder))))
(let ((choice (caddr (assoc (completing-read "Choose stockpile formula: " list nil t) list))))
(call-interactively choice))))
(provide 'stockpile)
;;; stockpile.el ends hereLet me know if you see any error or problem with these functions.
Related pages
- GNU Emacs and Emacs Lisp ResourcesThis category is about the GNU Emacs powerful piece of software and resources relating to handling business tasks and processes with GNU Emacs an Emacs Lisp.
- Emacs LispVarious Emacs Lisp functions and resources that show how business processes and communication may be supported with programming within the GNU Emacs editor and programming lanugage.
- Emacs Lisp: how to read file into a string?GNU Emacs is the extensible, customizable, self-documenting real-time display editor with full programming language Emacs Lisp. This function file-to-string will show you how to quickly read file.
- Emacs Lisp: quick publishing of Emacs Lisp function to InternetThis is new Emacs Lisp function invented on 2019-07-15 that I am using to publish Emacs Lisp functions to Internet on my gnu.support website. It may not mean much to you as you are not using the PostgreSQL database for WRS or Website Revision System. If you do have a website, you could adapt this function to your own needs and quickly publish functions to Internet without thinking. Forget about those third party websites, just host yourself web pages.
- Emacs Lisp: use speech on your computer by using festival.el and Festival Speech systemFestival already has its GNU Emacs Support, just install festival package in your GNU/Linux distribution and you will gain soon functions to output speech. Yes, instead of messages in your Emacs minibuffer, now you can hear the real speech and in several languages. Emacs could thus remind you of new emails or new messages coming and it could tell you about finished tasks or commands. Sounds nice?
- Emacs Lisp: read-from-buffer versus read-from-minibuffer, returns string from editingAs I am often editing database fields, and such fields could represent Org Mode or Markdown documents, this function is handy to quickly edit the string and return it back. It has no version control, thus I must take care what I am doing and how I am editing the string. As if something is lost, is lost forever. Unlike the read-from-minibuffer function, this one will open full editing buffer. If I switch the mode I have to use C-M-c option to return back.
- Emacs Lisp: file-to-list function reads file line by line into a listThis Emacs Lisp function reads file line by line and returns list of lines. This may be handy when lines of the file need to be processed.
- Emacs Lisp: string-to-file-force function writes string to file forcefullyI often need to write strings to file, and without looking if the file exists or not, this handy function is doing exactly that.
- Emacs Lisp: join-lines functionWhen there is need to join the lines, this handy function helps me in editing those formatted and wrapped lines into one single joined line.
- Emacs Lisp: strip-html by Sacha Chua, remove those tags!Sacha Chua is wonderful woman that likes GNU Emacs, notes, she has her thoughts well organized and lives a happy life. Once I had to find the strip-html function and it was just there, on her website, thank you Sacha!
- Emacs Lisp: Get ATTENTION in those emails by using heading-underlined functionSometimes you wish to really put attention in emails to certain facts or paragraphs of text. Using the heading-underlined function you quickly get upcased heading underlined that your reader cannot miss it!
-
Emacs
Lisp: produce speech by using espeak shell commandEspeak shell
command is often faster then using Festival Speech. This function may be
used to quickly produce some speach. Global variables such as
*espeak-amplitude*and*espeak-voice*can help you set it up for your own language and volume. - Emacs Lisp: mkdatedir works in Dired and quickly creates directory by dateSorting files is one of tedious jobs we all do on the computer. Sorting is often best done chronologically by dates. Thus function creates directory within GNU Emacs Lisp, usually within Dired listings. Sort files by groups, people, and dates.
- Emacs Lisp: quickly remove menu items from GNU Emacs menusThis shows how one can quickly remove some items from GNU Emacs menus
- Emacs Lisp: quickly insert Openstreetmap location linkThis function asks the user for location, opens the Openstreetmap and inserts the link into buffer. Imagine you wish to tell your friends where you are located, so you need to give them some pointers.
- Emacs Lisp: emacs-org-to-html.el on command line, convert your Org files on command line to HTML outputThis is one way of converting the Org files on command line to HTML output. This is script that shall be made executable with chmod +x and it runs on command line. It may be used in website revision systems to feed Org input and get the HTML output. It could redirect to HTML file quickly, without launching full GNU Emacs. You may see inside that one function is to output full HTML and other only the body of the HTML. This is for those people who need to use templates.
- Emacs Lisp: Common Lisp solution to accept Org files from standard input and emit markdown outputThis was my previous Common Lisp solution, using CLISP implementation, to accept the Org files on standard input and emit markdown export from Org files. This is still working well, but the new solution by using GNU Emacs directly is more elegant.
-
Emacs
Lisp: using mutt within GNU Emacs under ansi-termThis function
requires some modifications for your own usage. As small script has to
be setup to run the mutt directly with the
ansi-termfunction. The script namedemacs-mutt.shis executed under ansi-term emulation within GNU Emacs. Editor is set to emacsclient so that all editing takes place within the GNU Emacs. Configuration files without special colors are chosen. -
Emacs
Lisp: switch-to-scratch and return back to previous bufferThis
function is using register 100 to
switch-to-scratchand remembers where to return back. Global key binding is Hyper key and 8 and once in the*scratch*buffer, the local key binding is to return back to previous buffer. -
Emacs
Lisp: take a screenshot withing GNU Emacs and
maimmaimis small shell utility that takes screenshots, and with the option-sit allows cropping of a screenshot. This makes it handy to bind the<print>key toscreenshotfunction. After taking screenshot, Emacs is to open the Dired buffer with list of screenshots. From there you may send them by email or do whatever you want. If you are giving it the universal argumentC-uit will crop the rectangle on the screen. - Emacs Lisp: mark HTML on the web page and convert it quickly to Markdown formatEmacs Lisp: mark HTML on the web page and convert it quickly to Markdown format. This function needs your own customizations. You would mark the HTML on a web page within your browser. Then you run the Emacs Lisp function and the clipboard is converted into Markdown file. The file is opened for further editing and saved for future just as a note.
- Emacs Lisp: opening media files straight from GNU Emacs Dired mode by using xdg-openThis is my personal GNU Emacs Dired setup on the V key that helps me to quickly open media files or external viewers by using xdg-open and EMMS the Emacs Multimedia System.
-
Emacs
Lisp: duden-lookup opens up https://www.duden.de German dictionary to
lookup definitionsThis example demonstrates how easy it is to
advise your GNU Emacs to query the word on any website. In this case it
is https://www.duden.de/ German dictionary. To find a definition of a
German word in German language, place your cursor on the word and run
M-x duden-lookup. Adapt the function for your needs to open up any other website in similar fashion straight from Emacs. -
Emacs
Lisp: dig-txt and dig-txt-short as small extensions
digfunctionExtending the GNU Emacs built-indigfunction is very easy withC-h fand function name and then inspecting how to make your extension. In this casedigis looking for text records which may be suitable to inspect SPF and other related DNS records. - Emacs Lisp: avoiding repetition in writing Nginx web server configurationsImagine you are handling hundreds of domains, and each time you need to write pretty similar web server configuration for each new domain. GNU Emacs is extensible text editor and operating environment that helps you to speed up your editing. Nginx is a web server with pretty complex configuration syntax. Yet directives for each doman may be similar to each other. By adapting these functions to your own needs you may get some speed in preparation of Nginx configuration.
-
Emacs
Lisp: Send Status to your GNU Social instance via XMPP or Jabber
protocolThis is simple customization that helps the user to
send status to GNU Social instance by using XMPP protocol. It means you
could get notices over messenger from GNU Social and you could send
notices over any XMPP or Jabber messenger to GNU Social instance. You
are getting connected wherever you are. XMPP is much easier to use then
web browser. The username
update@gnusocial.clubis your GNU social instance virtual friend. That is something you set up in your GNU Social profile under IM menu. Requirement is that administrator has enabled the menu and XMPP plugin for the GNU Social instance. As of now 2019-08-07 I just guess there are not so many GNU Social instances with XMPP connection. And then you need to have your own XMPP username or Jabber ID. Such need not be on GNU Social instance, it can be anywhere you wish, on any server, if you already have it, you can use your own Jabber ID to send status updates to GNU Social instance and vice versa, you can also receive messages over GNU Social instance. Change it to suit you. It is just a simplification of thejabber-send-messagefunction in the Emacs Lisp packagejabber.el. Great one! Coordinate with your team members, assign tasks directly from GNU Emacs to their messengers. Possibilities are wide to help in communication and coordination in any team. Otherwise have fun with decentralized GNU Social networks! -
Emacs
Lisp: Record voice notes within GNU EmacsSometimes you have no
time to write and maybe you are talking or maybe you simply wish to
record a voice note. Maybe you wish to send a voice message to somebody
by email. Just use the
record-voice-notefunction and it will invoke the shell commandrecfrom SOX sound tools system package. Yes, you must have it or this will not work. It will record a sound note and open it in Dired. Pressqto finish recording the sound. -
Emacs
Lisp: Record screen within GNU EmacsThe program third party
program
recordmydesktopis used for this function to invoke screen recording within GNU Emacs. You may wish to make a demonstration in video and publish such online. Record it while using few keybindings orM-x record-screen. This page is giving you the concept of a workflow. I consider workflow more important then the function itself. You please modify it to suit your own needs. Thescreen-record-commandis spitting out the actual screen recording command, customize it as you wish. - Emacs Lisp: why is programming language Emacs Lisp so comfortable?My thoughts about the programming language Emacs Lisp. Apparently and initially designed to extend the GNU Emacs Editor, Emacs Lisp has grown into fully fledged programming language. Things like CGI, database interfaces, contact management, customer relationship management, project management, and so many other features becamse possible within GNU Emacs. Here is the summary on what I think what makes GNU Emacs and Emacs Lisp so comfortable programming language.
- Emacs Lisp: The iota function for number ranges in Emacs LispThis is the iota function that I had to make today. I have shamelessly borrowed the description from Guile reference manual on iota function from SRFI-1 and tried to make it compliant. I guess this could be done more elegantly. For me is important that it gives me the same result as intended.
- Emacs Lisp: Azбukцeдa or azbukceda is a new mixture of cyrillic and latin alphabet as used in Bosnia and Herzegovina.Azбukцeдa or azbukceda is a new mixture of cyrillic and latin alphabet as used in Bosnia and Herzegovina. It is mixture that is readable by every citizen of the country. Instead of using two alphabets the members of the society Eko Kultura speak and write in one united alphabet named azbukceda. This is new Emacs Lisp input method to write Azбukцeдa.
- Emacs Lisp: input method for FULLWIDTH LATIN LETTERSThis is input method for FULLWIDTH LATIN LETTERS for easy writing whenever necessary.
- Emacs Lisp: input method for ⒸⒾⓇⒸⓁⒺⒹ lettersThis enables easy writing of ⒸⒾⓇⒸⓁⒺⒹ letters with GNU Emacs text editor.
- Emacs Lisp: 𝕸𝖆𝖙𝖍𝖊𝖒𝖆𝖙𝖎𝖈𝖆𝖑 𝕴𝖓𝖕𝖚𝖙 𝕸𝖊𝖙𝖍𝖔𝖉This is 𝖒𝖆𝖙𝖍𝖊𝖒𝖆𝖙𝖎𝖈𝖆𝖑 𝖎𝖓𝖕𝖚𝖙 𝖒𝖊𝖙𝖍𝖔𝖉 for 𝕲𝕹𝖀 𝕰𝖒𝖆𝖈𝖘. If you wish to write with 𝖙𝖍𝖆𝖙 𝖙𝖞𝖕𝖊 𝖔𝖋 𝖑𝖊𝖙𝖙𝖊𝖗𝖘, 𝖞𝖔𝖚 𝖏𝖚𝖘𝖙 𝖑𝖔𝖆𝖉 𝖙𝖍𝖎𝖘 𝖋𝖎𝖑𝖊.
- Emacs Lisp: calculate interest rates on accrued HYIP investmentsHYIP is High Yield Investment Program, a kind of a fraudulent scheme. We are not promoting such scheme rather dis-advising people who get caught by the greed and possibility to earn high income within few days. Sometimes the “yield” may be as much as 5% per week and more. And people investing into the HYIP or High Yield Investment Programs believe the nonsense. This Emacs Lisp function can demonstrate what money could the company earn would they be collecting money themselves, without asking public to receive more and more investments. Calculate yourself and compare it logically, and you will come to conclusion that a company offering that high interest rates would never ask public for new investments, they could be earning it themselves without sharing with anybody.
- Emacs Lisp: ffmpeg-cut-diredThis function is used with Dired within Emacs to cut video files from specific begin time for specific duration. Files are cut and saved in the directory. This may be handy to use your Emacs editor as movie editor application.
- Emacs Lisp: Optimize JPG images within Dired with help of ImageMagickThis Emacs Lisp function is optimizing marked JPG images within Dired and GNU Emacs editor. It is using ImageMagick and web recommendation on how images shall be optimized. The quality of images will be 70% of the original and setttings for optimization are made for Internet. Do not use this function on images which quality shall remain intact for printing or publishing purposes others but web.
- Emacs Lisp: ageReturns the age of people by using the PostgreSQL. It is very usable to find the age of children, relatives, friends.
- Emacs Lisp: kdeconnect-sms-send or sending SMS straight from Emacskdeconnect is great program to connect various mobile devices and computers. It works well between mobile devices as well. Emacs as text editor functions as advanced programmable framework that allows users to do just anything with programming language Emacs Lisp allows. Example is that Emacs could be converted into SMS gateway for marketing purposes. Only the concepts are described here.
- Emacs Lisp: remove-emails, function for mutt email client to anonymize forwarded messagesThis function is helpful when writing emails with mutt or maybe other email clients that are using Emacs editor for text or mail message composition. It removes all emails displayed from buffer. At some occasions user may want to forward email messages from other people without revealing their email addresses. The mutt email client usually displayes email addresses in this format and all such addresses may be easily removed with this interactive command.
- Emacs Lisp: renumber-files, rename bunch of file names in Dired by date and numberThis function works within Dired or Directory Editor in GNU Emacs. It will rename bunch of files and renumber them automatically by date and number of the file. It is useful when you are renaming less important images or bunch of files with irrelevant file names.
- Emacs Lisp: number-to-words-clisp and number-to-words functions using CLISP to get cardinal English numbersEmacs Lisp does not have a built in function as Common Lisp to quickly return cardinal English numbers in words, so this function uses the external program CLISP or GNU Common Lisp to get the representation. Then a number 4 can be converted to word “four”
- Emacs Lisp: Tihs is itneretsing ftuncion taht wlil scarmble the txet in scuh a manenr taht it stlil ramiens readable. This interesting Emacs Lisp function in scrambling text in such a manner that it still remains readable, so called jumbled letters. Use GNU Emacs to send funny text to your friends.
- How to insert new line in Emacs editor?Several few ways are explained here on how to insert a new line before the current line while editing text with Emacs editor.
Leave Your Comment or Contact GNU.Support
Contact GNU.Support now. There is a simple rule at GNU.Support: if we can help you, we do, whenever and wherever necessary, and it's the way we've been doing business since 2002, and the only way we know