• Login
Community
  • Login

Calculator on line

Scheduled Pinned Locked Moved Help wanted · · · – – – · · ·
4 Posts 4 Posters 7.6k Views
Loading More Posts
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • M
    Monu Kashyap
    last edited by Mar 24, 2021, 11:30 AM

    A little suggestion for Notepad++,
    If notepad++ can do ontime calculation of selected numbers, That would be Amazing !!
    for example if I selected a simple line of text like :
    250+150+100+500
    The result of the calculation will show in status bar…
    (If possible)

    And,
    Thanks for the Amazing software Notepad++
    Regards,
    Monu Kashyap
    (India)

    M A 2 Replies Last reply Mar 24, 2021, 11:37 AM Reply Quote 0
    • M
      Michael Vincent @Monu Kashyap
      last edited by Mar 24, 2021, 11:37 AM

      @Monu-Kashyap said in Calculator on line:

      If notepad++ can do ontime calculation of selected numbers, That would be Amazing !!

      NppCalc
      MathPad

      Though I think they’re both 32-bit only.

      You can use NppExec with a simple “script”:

      ::=
      SET LOCAL ANS ~ $(ARGV)
      ECHO $(ANS)
      

      Then:

      e321963e-872e-4883-b800-14c70606535f-image.png

      Cheers.

      1 Reply Last reply Reply Quote 3
      • A
        Alan Kilborn @Monu Kashyap
        last edited by Alan Kilborn Mar 24, 2021, 11:59 AM Mar 24, 2021, 11:59 AM

        @Monu-Kashyap said in Calculator on line:

        if I selected a simple line of text like :
        250+150+100+500

        Add an = at the end and select the text of the “equation” in Notepad++ to obtain:

        691d0e05-53af-474f-9724-c0400b5dcd70-image.png

        Press Ctrl+c to copy it to the clipboard.

        Go to the Run menu and choose Run… and specify something similar to this:

        3f92834b-f9b3-4ac1-9468-7dbf5e45ccde-image.png

        Press the Run button.

        When Calculator starts, press Ctrl+v; results:

        5b957f03-043e-4dd1-93e1-1dd6118c2fac-image.png

        Save the Run menu entry and bind it to a keycombo if you do this sort of thing frequently.

        EDIT: Not sure why I didn’t use your exact numbers in the example! :-)

        1 Reply Last reply Reply Quote 4
        • G
          guy038
          last edited by guy038 Mar 25, 2021, 7:50 PM Mar 25, 2021, 5:08 PM

          Hello @monu-kashyap, @Michael-vincent, @alan-kilborn, and All,

          Here is an other solution which uses a batch file and the DOS command set /a

          • Open a new N++ tab ( Ctrl + N )

          • Run the menu command Encoding > Convert to ANSI

          • Select all the batch file contents, below, and copy them in this new empty file

          • Save it, in the system folder C:\Windows\System32, as cal.bat

          @echo OFF
          
          REM ***************************************************************
          REM *  BATCH file "Cal.bat" for MULTIPLE calculations in ONE go   *
          REM *                                                             *
          REM *  Type 'cal' WITHOUT parameter or 'cal /?' for EXPLANATIONS  *
          REM ***************************************************************
          
          
          REM ************************************************************************
          REM *  The TITLE of the DOS windows is changed as "MULTIPLE calculations"  *
          REM ************************************************************************
          title MULTIPLES calculations
          
          REM ***************************************************************************
          REM *  color <HEX Background><HEX Foreground> sets the COLORS of the CONSOLE  *
          REM *                                                                         *
          REM *          0  =  Black                     8  =  Grey                     *
          REM *          1  =  Dark Blue                 9  =  Blue                     *
          REM *          2  =  Forest Green              A  =  Lime                     *
          REM *          3  =  Dark Cyan                 B  =  Cyan                     *
          REM *          4  =  Dark Red                  C  =  Red                      *
          REM *          5  =  Purple                    D  =  Magenta                  *
          REM *          6  =  Olive                     E  =  Yellow                   *
          REM *          7  =  Light Grey                F  =  White                    *
          REM *                                                                         *
          REM *  You may DELETE this command ( DEFAULT values of CONSOLE are '07' )     *
          REM ***************************************************************************
          color 70
          
          REM **************************************************************************
          REM *  IF call WITHOUT any PARAMETER, JUMP to label "Help" for EXPLANATIONS  *
          REM *                                                                        *
          REM *  DON'T write "%1"=="" as the PARAMETER may contain DOUBLE quotes       *
          REM *  DON'T write !%1==!   as, if PARAMETER = /?, it DOESN't work, too      *
          REM **************************************************************************
          if %1!==! goto Help
          
          REM ************************************************************************
          REM *  IF PARAMETER = '/?', JUMP to label "Help" for EXPLANATIONS          *
          REM *                                                                      *
          REM *  DON'T write "%1"=="/?" as the PARAMETER may contain DOUBLE quotes   *
          REM *  DON'T write !%1==!/?   as, if PARAMETER = /?, it DOESN't work, too  *
          REM ************************************************************************
          if %1!==/?! goto Help
          
          echo.
          
          REM *************************************************************
          REM *  The DECLARED variables are LOCAL during BATCH execution  *
          REM *************************************************************
          setlocal
          
          :Deb
          
          REM ***********************************************************************************
          REM *  The CURRENT operation in %1 is EVALUATED and RESULT is STORED in VARIABLE %r%  *
          REM ***********************************************************************************
          SET /a r=%1
          
          REM **********************************************************************************
          REM *  The CURRENT operation %1 and its RESULT are displayed, with 10 LEADING Spaces *
          REM **********************************************************************************
          echo. && echo          %1 = %r%
          
          REM ***********************************************************
          REM *  The NEXT typed PARAMETER becomes the FIRST one ( %1 )  *
          REM ***********************************************************
          shift
          
          REM *********************************************************************
          REM *  LOOP to the :Deb LABEL for a NEXT calculation if %1 is DEFINED   *
          REM *  JUMP to the END of the BATCH, if NO MORE calculation             *
          REM *                                                                   *
          REM *  DON'T write "%1"=="" as the PARAMETER may contain DOUBLE quotes  *
          REM *  DON'T write this SYNTAX !%1==!? as well                          *
          REM *********************************************************************
          if NOT %1!==! goto Deb
          
          echo. && goto :EOF
          
          :Help
          
          REM ***************
          REM *  HELP menu  *
          REM ***************
          
          cls
          echo.
          echo.
          echo *******************************************************************************
          echo *                               BATCH file : CAL.BAT                          *
          echo *                                                                             *
          echo * SYNTAX : cal[ Op_1[ Op_2[ Op_3[...[ Op_N]]]]]  where Op_N = ONE or SEVERAL  *
          echo * ~~~~~~     of the 18 OPERATIONS, below, by DECREASING order of PRIORITY :   *
          echo *                                             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~    *
          echo *                                                                             *
          echo *  ()          PARENTHESES Grouping                                           *
          echo *                                                                             *
          echo *  a           DECIMAL value of the DECIMAL         number a =  a             *
          echo *  0a          DECIMAL value of the OCTAL           number a =  a             *
          echo *  0xa         DECIMAL value of the HEXADECIMAL     number a =  a             *
          echo *                                                                             *
          echo *  -a          OPPOSITE number                   of number a                  *
          echo *  ~a          Bitwise COMPLEMENT                of number a = -a - 1         *
          echo *  !a          LOGICAL NEGATION                  of number a = 0  if a ^<^> 0   *
          echo *                                                            = 1  if a = 0    *
          echo *                                                                             *
          echo *  a*b         MULTIPLICATION                    of a by b    =  a*b          *
          echo *  a/b         INTEGER QUOTIENT of the DIVISION  of a by b    =  INT (a/b)    *
          echo *  a%%b         REMAINDER        of the DIVISION  of a by b    =  a MOD b      *
          echo *                                                                             *
          echo *  a+b         ADDITION                          of a to b    =  a+b          *
          echo *  a-b         SUBTRACTION                       of b from a  =  a-b          *
          echo *                                                                             *
          echo *  "a<<b"      LEFT Shift  of b POSITIONS        of a         =  a * 2^^b      *
          echo *  "a>>b"      RIGHT Shift of b POSITIONS        of a         =  a / 2^^b      *
          echo *                                                                             *
          echo *  "a&b"       Bitwise AND                       between a and b              *
          echo *  "a^b"       Bitwise EXCLUSIVE OR              between a and b              *
          echo *  "a|b"       Bitwise OR                        between a and b              *
          echo *                                                                             *
          echo *  "var=a"     ASSIGNATION of var                to a     var = a             *
          echo *  "varOp=a"   ASSIGNATION of (var BINARY Op. a) to a     var = var  Op.  a   *
          echo *                  ( Ex :  x*=7 means  x = x * 7  )                           *
          echo *                                                                             *
          echo *                                                                             *
          echo * a, b, r = INTEGER, in range [-2,147,483,648 +2,147,483,647], with NOTATION  *
          echo *                                                                             *
          echo *  - DECIMAL     : the DIGITS of a NUMBER belong to INTERVAL [0-9]            *
          echo *  - HEXADECIMAL : the DIGITS of a NUMBER belong to INTERVAL [0-9] or [A-F]   *
          echo *  - OCTAL       : the DIGITS of a NUMBER belong to INTERVAL [0-7]            *
          echo *                                                                             *
          echo *                                                                             *
          echo * NOTES :  - The VARIABLE r is the RESULT of the LAST calculation PERFORMED   *
          echo * ~~~~~                                          ~~~~                         *
          echo *             ==) cal a r*r*r...*r  ( b TIMES the VARIABLE r )  =  a POWER b  *
          echo *                                                                             *
          echo *         - If an EXPRESSION contains some SPACES, surround it with "......"  *
          echo *                                                                             *
          echo * Ex :                                                                        *
          echo *                                                                             *
          echo *    cal "-9 +3" 011*9 "17|22" "12<<5-1" "v=r*=4" (0xba+v)/6 "17&22" "17^22"  *
          echo *                                                                             *
          echo *******************************************************************************
          
          • Now, in your active shortcuts.xml file, add the line, below, before the end of the </UserDefinedCommands> ••• </UserDefinedCommands> node
                  <Command name="Multiple Calculations" Ctrl="no" Alt="no" Shift="no" Key="0">cmd /c cal.bat $(CURRENT_WORD) && pause>NUL</Command>
          
          • Close and re-start Notepad++

          • Make a normal selection of that example line "-9 +3" 011*9 "17|22" "12<<5-1" "v=r*=4" (0xba+v)/6 "17&22" "17^22"

          • Execute the menu command Run > Multiple calculations

          Et voilà !!


          Notes :

          • Once the results read and, possibly copied in the clipboard, just hit any key to close the MULTIPLE calculations window

          • If you don’t like the color of the DOS console, just change the parameters of the color command or delete it, in the batch file !

          • To copy the results to the clipboard :

            • Click anywhere, in that DOS window, with the right mouse button and choose the Select option

            • Now, by clicking and moving around the pointer you should define a rectangular block, in the same way as a rectangular N++ selection

            • Hit the Enter key to copy the contents of this block in the clipboard

            • Paste these contents anywhere, in Notepad++ !

          • Any selection must contain an even number of double quotes, if any. For instance, the selection 3+4 "5 - 9" 3*5 is correct, where as the selection of 3+4 "5 - 9 3*5 or 3+4 "5 - 9 are incorrect !

          • Note that a single shift, logical bitwise and assignation operation, as well as any expression containing space chars, needs to be surrounded with double quotes

          • Remark that the variable r always contains the result of the last performed operation !


          Just test it. I hope you’ll like it !

          Best Regards,

          guy038

          P.S. :

          I finally don’t think that the conversion to ANSI is needed, as no character of this batch file is over \x{007f}, anyway !

          1 Reply Last reply Reply Quote 1
          3 out of 4
          • First post
            3/4
            Last post
          The Community of users of the Notepad++ text editor.
          Powered by NodeBB | Contributors