How to have multiple fill column indicator emacs - emacs

I want to have line ruler at 80 chars and 72 chars in emacs. I am using emacs 24. I know there is fill-column-indicator but it has provision only for one line ruler.
Thanks

Related

Why is my 80 character ruler between Sublime Text3 and VS Code so different?

I have my ruler settings in Sublime Text 3 and VS Code at 80. In my sublime image I separate my functions using "#---#" which is as wide as the 80 character ruler. When I open the same file in VS code the ruler is nowhere near the 80 character limit, its somewhere in the hundreds. Does anybody know what's going on?
Below is a screenshot from Sublime Text 3
Below is a screenshot from VS Code:
Notice the different placement of the 80 character ruler.
It looks as though you're not using the same font in both cases, and in fact the font in Sublime is Fixed Width while the font in VSC is Proportional.
This is visible not only in the rulers, but in the code itself. For example, presuming it's the same file in both screen shots, the indent looks to be 4 characters in Sublime and 3 in VSC.
Both things are a symptom of a Proportional font; a font in which the width of each character is potentially distinct, unlike a Fixed Width font in which every character is the same width.
In a Fixed Width font, an X and a dash are the same width (for example), but in a Proportional font a dash is usually narrower (and a space much more so). As a result the ruler being at character position 80 doesn't line up with the actual character at position 80 because the text isn't long enough.

checking how long are comments in a file

I just finished an assingment and according to the instructions I can't have a line of code or comment longer than 120 chars. is there a quick way to check that?
I'm using VSCODE on windows 10. I saw somewhere that I can make a verticle line in the editor to see if a row is too long but I can't find it now.
for example :
// return stack->size since stack->size holds the number of values that can be stored inside the array at a given time.
this comment is 119 chars so it is ok but anything bigger will cause me to lose points.
I know I can hold the last char in the sentence and see the 'col' number in VSCODE, I was hoping for something better.
thanks
"editor.rulers": [120]
Look at the Editor: Rulers setting:
Render vertical rulers after a certain number of monospace characters.
Use multiple values for multiple rulers. No rulers are drawn if array
is empty.
You can change its color or opacity like so (in your settings.json):
"workbench.colorCustomizations": {
"editorRuler.foreground": "#ff0000ff",
}
That changes the color to red, the last two hex digits are opacity. ff is 100% opaque. So you could try more transparent with #ff000080 for example. Color and transparency are the only two modifications you can make to rulers.

Enlarging text while having line numbers enabled covers the view of the numbers?

Enlarging text while having line numbers enabled covers the view of the numbers?
I've enabled line numbers globally by adding (global-linum-mode t) to init.el.
Zooming in on text using the C-x C-+ keybinding results in the behavior seen below, which is not satisfactory.
What can I do to fix this? Are their working alternatives?
I don't see this problem, using library zoom-frm.el (see also Emacs Wiki page Set Fonts).
But vanilla Emacs clearly has another bug, in that enlarging the text by scaling enlarges the horizontal space used for the line numbers (good), but shrinking the text then does not shrink that space used for line numbers (bad). I've just now filed Emacs bug #24164 for this.

Hide/change Emacs fringe bent arrows due to word wrapping?

I would like to change (or hide entirely) the "bent arrow" character that appears in the Emacs fringe (both on the left and right hand side). I'm using Emacs 24 on a Mac, installed via homebrew. I find it to be visually distracting. A smaller character, like a center dot, might work well.
For context, this is an official description of the small bent arrows (from http://www.gnu.org/software/emacs/manual/html_node/emacs/Continuation-Lines.html):
Sometimes, a line of text in the buffer—a logical line—is too long to fit in the window, and Emacs displays it as two or more screen lines. This is called line wrapping or continuation, and the long logical line is called a continued line. On a graphical display, Emacs indicates line wrapping with small bent arrows in the left and right window fringes. On a text terminal, Emacs indicates line wrapping by displaying a ‘\’ character at the right margin.
The Emacs LineWrap Wiki page does not address my question.
The best information I've found so far is contained in this StackOverflow answer:
When word-wrap is set to nil in a text terminal (-nw) Emacs, the backslash character appears on the right margin.
When word-wrap is set to t in a text terminal Emacs, the backslash character is not shown. Setting visual-line-mode also sets word-wrap to true.
This does not apply when Emacs is running as a GUI window: the small bent arrow appears on the right margin regardless of the value of word-wrap.
Is hiding or changing the bent arrows possible? If not, an answer that says, more or less, "I've looked at X and concluded that it is impossible" is ok too.
Update: Although it is not a terrible work-around, changing the fringes is not what I'm looking for: I want to customize the "bent arrow" character or bitmap.
First, some quick context. From Emacs Fringe Bitmaps: "Fringe indicators are tiny icons displayed in the window fringe to indicate truncated or continued lines, buffer boundaries, etc."
You cannot replace the curly arrow with arbitrary text. According to lunaryorn's answer to "Is It Possible To Replace Fringe Bitmaps With Text in Emacs?":
No, it is not. Fringe “bitmaps” are really bitmaps, that is vectors of 0/1 bits, overlayed over the fringe. There is no way to directly render arbitrary unicode characters onto the fringe. [...] What you can do, is to render a unicode character into a 0/1 bitmap yourself.
Like it says, you can change the bitmap. Fringe Bitmaps contains a list of fringe bitmaps; left-curly-arrow and right-curly-arrow are the ones relevant for this question.
Here is what I drew up. Adjust to your liking. Put this in your Emacs init file.
(define-fringe-bitmap 'right-curly-arrow
[#b00000000
#b00000000
#b00000000
#b00000000
#b01110000
#b00010000
#b00010000
#b00000000])
(define-fringe-bitmap 'left-curly-arrow
[#b00000000
#b00001000
#b00001000
#b00001110
#b00000000
#b00000000
#b00000000
#b00000000])
More documentation is available at Customizing Bitmaps, including set-fringe-bitmap-face which "sets the face for the fringe. If face is nil, it selects the fringe face. The bitmap's face controls the color to draw it in".

How to determine the visible buffer width in characters

I'm using a custom modeline and I'm starting to get how to configure it but here I'm stuck as to how to get the info I want: I'd like to show, in each buffer's modeline, the width in characters of the buffer.
I'm also using linum-mode (with always at least two columns used) and ideally I'd like to deduce the number of characters used by linum from the width.
The function (window-width) is what you're looking for, this doesn't include the characters used by linum-mode however you can get their width from (window-margins)